From 14c96d05b82cd377dc3fe04944fdb4ece6176bd9 Mon Sep 17 00:00:00 2001 From: scriptis Date: Mon, 3 Oct 2022 17:09:50 -0500 Subject: [PATCH] TGUI for Techfabs II: The Great Recategorizing (AND ICONS) (AND MECHFABS) (AND AUTOLATHES) (#69990) I recategorized EVERY /datum/design/ IN THE GAME to be more UX friendly and I HATE MYSELF FOR IT I refactored techfab UI to WORK ANYWHERE for ANY MACHINE THAT USES /datum/design as a SET OF MODULAR COMPONENTS I moved a lot of DESIGNS EXCLUSIVE TO THE AUTOLATHE to also work IN PROTOLATHES I made MATERIAL ICONS animate between ICON STATES for STACKS I PUT ICONS IN ALL OF YOUR FABRICATORS I SOMEHOW DID ALL OF THIS WITHOUT LOSING ANY PERFORMANCE ALSO SUPPORTS COMPONENT PRINTERS AND MODULE DUPLICATORS Other garbage: Fixed numerous spelling and consistency issues in designs Removed Machine Design () and Computer Design () from all relevant designs All designs are now in title case Numerous designs that were formerly autolathe exclusives can now also be printed at a protolathe (but not all); this is mostly just service equipment like drinking glasses and plates and silverware Circuits components can no longer be printed at a circuit imprinter (fixes Integrated circuit components printed in the component printer/module printer cost twice as much than from an un upgraded circuit printer #67758) Designs that are not sensible for a department to have are no longer accessible to that department (read: medbay printing turbine parts) Why It's Good For The Game Improved UX for techfabs, but also for mechfabs and autolathes, and oh look it's pretty! also I spent like eight hours doing nothing but categorizing /datum/designs and I'll cry if some version of this doesn't get merged eventually Changelog cl refactor: mechfabs, autolathes, component printers, and module duplicators now use techfab tgui components refactor: every single design is now categorized and subcategorized refactor: mechfabs and autolathes are now in typescript qol: techfabs now have icons for what you're about to print qol: techfab material icons are now animated qol: techfab material icons now fade when no materials are available qol: techfab searching no longer lags like hell qol: techfab searching now searches all recipes instead of just the current category qol: techfabs now have subcategorization (stock part users rejoice) qol: techfabs now announce when new recipes are available qol: numerous other techfab ui tweaks balance: some designs that were formerly autolathe exclusive can now be printed at some departmental techfabs --- code/__DEFINES/exosuit_fab.dm | 15 - .../__DEFINES/research/research_categories.dm | 255 ++-- code/datums/components/material_container.dm | 1 + code/game/machinery/autolathe.dm | 318 ++--- code/modules/mining/lavaland/tendril_loot.dm | 6 +- code/modules/research/designs.dm | 4 +- .../research/designs/AI_module_designs.dm | 218 ++-- .../research/designs/autolathe_designs.dm | 1087 +++++++++++++---- .../research/designs/bluespace_designs.dm | 28 +- .../research/designs/comp_board_designs.dm | 242 ++-- .../research/designs/computer_part_designs.dm | 64 +- .../research/designs/electronics_designs.dm | 20 +- .../research/designs/experisci_designs.dm | 4 +- .../research/designs/limbgrower_designs.dm | 12 +- .../research/designs/machine_designs.dm | 658 ++++++---- .../modules/research/designs/mecha_designs.dm | 690 +++++++++-- .../designs/mechfabricator_designs.dm | 955 +++++++++++---- .../research/designs/medical_designs.dm | 268 ++-- .../research/designs/mining_designs.dm | 96 +- code/modules/research/designs/misc_designs.dm | 327 +++-- .../modules/research/designs/power_designs.dm | 60 +- .../research/designs/smelting_designs.dm | 41 +- .../research/designs/stock_parts_designs.dm | 127 +- .../research/designs/telecomms_designs.dm | 48 +- code/modules/research/designs/tool_designs.dm | 139 ++- .../research/designs/weapon_designs.dm | 154 ++- .../research/designs/wiremod_designs.dm | 124 +- .../modules/research/machinery/_production.dm | 26 +- code/modules/research/techweb/_techweb.dm | 12 +- code/modules/research/techweb/all_nodes.dm | 73 +- .../modules/vehicles/mecha/mech_fabricator.dm | 321 ++--- .../modules/wiremod/core/component_printer.dm | 30 +- tgui/packages/tgui/interfaces/Autolathe.js | 224 ---- tgui/packages/tgui/interfaces/Autolathe.tsx | 254 ++++ .../tgui/interfaces/ComponentPrinter.tsx | 249 ++-- .../tgui/interfaces/ExosuitFabricator.js | 529 -------- .../tgui/interfaces/ExosuitFabricator.tsx | 318 +++++ .../interfaces/Fabrication/CategoryTabs.tsx | 80 -- .../interfaces/Fabrication/DesignBrowser.tsx | 500 ++++++++ .../Fabrication/DesignCategoryTabs.tsx | 77 -- .../interfaces/Fabrication/DesignCostList.tsx | 50 - ...ralAccessBar.tsx => MaterialAccessBar.tsx} | 56 +- .../Fabrication/MaterialCostSequence.tsx | 98 ++ .../interfaces/Fabrication/MaterialIcon.tsx | 95 ++ .../tgui/interfaces/Fabrication/SearchBar.tsx | 52 +- .../tgui/interfaces/Fabrication/Types.ts | 101 +- tgui/packages/tgui/interfaces/Fabricator.tsx | 257 ++-- .../tgui/interfaces/common/Materials.tsx | 154 --- .../tgui/styles/interfaces/Fabricator.scss | 161 ++- 49 files changed, 6243 insertions(+), 3435 deletions(-) delete mode 100644 tgui/packages/tgui/interfaces/Autolathe.js create mode 100644 tgui/packages/tgui/interfaces/Autolathe.tsx delete mode 100644 tgui/packages/tgui/interfaces/ExosuitFabricator.js create mode 100644 tgui/packages/tgui/interfaces/ExosuitFabricator.tsx delete mode 100644 tgui/packages/tgui/interfaces/Fabrication/CategoryTabs.tsx create mode 100644 tgui/packages/tgui/interfaces/Fabrication/DesignBrowser.tsx delete mode 100644 tgui/packages/tgui/interfaces/Fabrication/DesignCategoryTabs.tsx delete mode 100644 tgui/packages/tgui/interfaces/Fabrication/DesignCostList.tsx rename tgui/packages/tgui/interfaces/Fabrication/{MineralAccessBar.tsx => MaterialAccessBar.tsx} (75%) create mode 100644 tgui/packages/tgui/interfaces/Fabrication/MaterialCostSequence.tsx create mode 100644 tgui/packages/tgui/interfaces/Fabrication/MaterialIcon.tsx delete mode 100644 tgui/packages/tgui/interfaces/common/Materials.tsx diff --git a/code/__DEFINES/exosuit_fab.dm b/code/__DEFINES/exosuit_fab.dm index fa0ee64ef53..2fd8aa01994 100644 --- a/code/__DEFINES/exosuit_fab.dm +++ b/code/__DEFINES/exosuit_fab.dm @@ -34,18 +34,3 @@ #define EXOSUIT_MODULE_COMBAT EXOSUIT_MODULE_GYGAX | EXOSUIT_MODULE_HONK | EXOSUIT_MODULE_DURAND | EXOSUIT_MODULE_PHAZON | EXOSUIT_MODULE_SAVANNAH | EXOSUIT_MODULE_CONCEALED_WEP_BAY /// Module is compatible with "Medical" Exosuit modelsm - Odysseus #define EXOSUIT_MODULE_MEDICAL EXOSUIT_MODULE_ODYSSEUS - -/// Module is standard in use -#define MODULE_GENERAL "General" -/// Module is preferred for engineering uses -#define MODULE_ENGINEERING "Engineering" -/// Module is preferred for medical uses -#define MODULE_MEDICAL "Medical" -/// Module is preferred for science uses -#define MODULE_SCIENCE "Science" -/// Module is preferred for security uses -#define MODULE_SECURITY "Security" -/// Module is preferred for supply uses -#define MODULE_SUPPLY "Supply" -/// Module is preferred for service uses -#define MODULE_SERVICE "Service" diff --git a/code/__DEFINES/research/research_categories.dm b/code/__DEFINES/research/research_categories.dm index 6a536f49275..137aceae867 100644 --- a/code/__DEFINES/research/research_categories.dm +++ b/code/__DEFINES/research/research_categories.dm @@ -1,87 +1,194 @@ -/** - * Research Categories - */ - -// Research Designs -#define RND_CATEGORY_TOOL_DESIGNS "Tool Designs" -#define RND_CATEGORY_MEDICAL_DESIGNS "Medical Designs" -#define RND_CATEGORY_BLUESPACE_DESIGNS "Bluespace Designs" -#define RND_CATEGORY_POWER_DESIGNS "Power Designs" -#define RND_CATEGORY_MINING_DESIGNS "Mining Designs" - // Weapon Categories -#define RND_CATEGORY_FIRING_PINS "Firing Pins" -#define RND_CATEGORY_WEAPONS "Weapons" -#define RND_CATEGORY_AMMO "Ammo" +#define RND_CATEGORY_WEAPONS "/Weaponry" +#define RND_SUBCATEGORY_WEAPONS_FIRING_PINS "/Firing Pins" +#define RND_SUBCATEGORY_WEAPONS_AMMO "/Ammunition" +#define RND_SUBCATEGORY_WEAPONS_PARTS "/Weapon Parts" +#define RND_SUBCATEGORY_WEAPONS_RANGED "/Ranged Weapons" +#define RND_SUBCATEGORY_WEAPONS_MELEE "/Melee Weapons" +#define RND_SUBCATEGORY_WEAPONS_KITS "/Weapon Fabrication Kits" // Wiremod Categories -#define RND_CATEGORY_CORE "Core" -#define RND_CATEGORY_CIRCUITRY "Circuitry" -#define RND_CATEGORY_COMPONENTS "Components" -#define RND_CATEGORY_BCI_COMPONENTS "BCI Components" -#define RND_CATEGORY_SHELLS "Shells" +#define RND_CATEGORY_CIRCUITRY "/Circuitry" +#define RND_CATEGORY_CIRCUITRY_CORE "/Core" +#define RND_SUBCATEGORY_CIRCUITRY_COMPONENTS "/Circuit Components" +#define RND_SUBCATEGORY_CIRCUITRY_BCI_COMPONENTS "/Circuit BCI Components" +#define RND_SUBCATEGORY_CIRCUITRY_SHELLS "/Circuit Shells" -// Department Categories -#define RND_CATEGORY_MEDICAL "Medical" -#define RND_CATEGORY_SECURITY "Security" -#define RND_CATEGORY_TELECOMMS "T-Comm" +// Tool Categories +#define RND_CATEGORY_TOOLS "/Tools" +#define RND_SUBCATEGORY_TOOLS_MEDICAL "/Medical Tools" +#define RND_SUBCATEGORY_TOOLS_MEDICAL_ADVANCED "/Medical Tools (Advanced)" +#define RND_SUBCATEGORY_TOOLS_MEDICAL_ALIEN "/Medical Tools (Alien)" +#define RND_SUBCATEGORY_TOOLS_ENGINEERING "/Engineering Tools" +#define RND_SUBCATEGORY_TOOLS_ENGINEERING_ADVANCED "/Engineering Tools (Advanced)" +#define RND_SUBCATEGORY_TOOLS_ENGINEERING_ALIEN "/Engineering Tools (Alien)" +#define RND_SUBCATEGORY_TOOLS_SERVICE "/Service Tools" +#define RND_SUBCATEGORY_TOOLS_BOTANY "/Botany Tools" +#define RND_SUBCATEGORY_TOOLS_BOTANY_ADVANCED "/Botany Tools (Advanced)" +#define RND_SUBCATEGORY_TOOLS_JANITORIAL "/Janitorial Tools" +#define RND_SUBCATEGORY_TOOLS_PLUMBING "/Plumbing Tools" +#define RND_SUBCATEGORY_TOOLS_ATMOSPHERICS "/Atmospherics Tools" +#define RND_SUBCATEGORY_TOOLS_MINING "/Mining Tools" +#define RND_SUBCATEGORY_TOOLS_CARGO "/Cargo Tools" +#define RND_SUBCATEGORY_TOOLS_PKA_MODS "/PKA Modkits" +#define RND_SUBCATEGORY_TOOLS_SECURITY "/Security Tools" +#define RND_SUBCATEGORY_TOOLS_MISC "/Miscellaneous Tools" -// Machinery Categories -#define RND_CATEGORY_MACHINERY "Machinery" -#define RND_CATEGORY_ENGINEERING_MACHINERY "Engineering Machinery" -#define RND_CATEGORY_SUBSPACE_TELECOMMS "Subspace Telecomms" -#define RND_CATEGORY_TELEPORTATION_MACHINERY "Teleportation Machinery" -#define RND_CATEGORY_MISC_MACHINERY "Misc. Machinery" -#define RND_CATEGORY_RESEARCH_MACHINERY "Research Machinery" -#define RND_CATEGORY_MEDICAL_MACHINERY "Medical Machinery" -#define RND_CATEGORY_HYDROPONICS_MACHINERY "Hydroponics Machinery" +#define RND_CATEGORY_CONSTRUCTION "/Construction" +#define RND_SUBCATEGORY_CONSTRUCTION_MOUNTS "/Frames & Mounts" +#define RND_SUBCATEGORY_CONSTRUCTION_ELECTRONICS "/Electronics" +#define RND_SUBCATEGORY_CONSTRUCTION_MACHINERY "/Machinery" +#define RND_SUBCATEGORY_CONSTRUCTION_MATERIALS "/Materials & Alloys" +#define RND_SUBCATEGORY_CONSTRUCTION_LIGHTING "/Lighting" +#define RND_SUBCATEGORY_CONSTRUCTION_ASSEMBLIES "/Electrical Assemblies" -// Exosuit Fabricator Categories -#define RND_CATEGORY_EXOSUIT_MODULES "Exosuit Modules" -#define RND_CATEGORY_EXOSUIT_EQUIPMENT "Exosuit Equipment" -#define RND_CATEGORY_EXOSUIT_AMMUNIATION "Exosuit Ammunition" -#define RND_CATEGORY_CYBORG "Cyborg" -#define RND_CATEGORY_RIPLEY "Ripley" -#define RND_CATEGORY_ODYSSEUS "Odysseus" -#define RND_CATEGORY_GYGAX "Gygax" -#define RND_CATEGORY_DURAND "Durand" -#define RND_CATEGORY_HONK "H.O.N.K" -#define RND_CATEGORY_PHAZON "Phazon" -#define RND_CATEGORY_SAVANNAH_IVANOV "Savannah-Ivanov" -#define RND_CATEGORY_CLARKE "Clarke" -#define RND_CATEGORY_CYBORG_UPGRADE_MODULES "Cyborg Upgrade Modules" -#define RND_CATEGORY_CONTROL_INTERFACES "Control Interfaces" -#define RND_CATEGORY_AI_MODULES "AI Modules" -#define RND_CATEGORY_IMPLANTS "Implants" -#define RND_CATEGORY_CYBERNETICS "Cybernetics" +#define RND_CATEGORY_COMPUTER "/Computer Boards" +#define RND_SUBCATEGORY_COMPUTER_ENTERTAINMENT "/Service Consoles" +#define RND_SUBCATEGORY_COMPUTER_MEDICAL "/Medical Consoles" +#define RND_SUBCATEGORY_COMPUTER_ROBOTICS "/Robotics Consoles" +#define RND_SUBCATEGORY_COMPUTER_GENETICS "/Genetics Consoles" +#define RND_SUBCATEGORY_COMPUTER_RECORDS "/Records Consoles" +#define RND_SUBCATEGORY_COMPUTER_COMMAND "/Command Consoles" +#define RND_SUBCATEGORY_COMPUTER_SECURITY "/Security Consoles" +#define RND_SUBCATEGORY_COMPUTER_RESEARCH "/Research Consoles" +#define RND_SUBCATEGORY_COMPUTER_ENGINEERING "/Engineering & Atmospherics Consoles" +#define RND_SUBCATEGORY_COMPUTER_CARGO "/Cargo Consoles" + +#define RND_CATEGORY_MACHINE "/Machine Boards" +#define RND_SUBCATEGORY_MACHINE_ATMOS "/Atmospherics Machines" +#define RND_SUBCATEGORY_MACHINE_KITCHEN "/Kitchen Machines" +#define RND_SUBCATEGORY_MACHINE_BAR "/Bar Machines" +#define RND_SUBCATEGORY_MACHINE_BOTANY "/Botany Machines" +#define RND_SUBCATEGORY_MACHINE_ENGINEERING "/Engineering Machines" +#define RND_SUBCATEGORY_MACHINE_RESEARCH "/Research Machines" +#define RND_SUBCATEGORY_MACHINE_MEDICAL "/Medical Machines" +#define RND_SUBCATEGORY_MACHINE_CHEMISTRY "/Chemistry Machines" +#define RND_SUBCATEGORY_MACHINE_SECURITY "/Security Machines" +#define RND_SUBCATEGORY_MACHINE_CARGO "/Cargo Machines" +#define RND_SUBCATEGORY_MACHINE_TELEPORT "/Teleportation Machines" +#define RND_SUBCATEGORY_MACHINE_ROBOTICS "/Robotics Machines" +#define RND_SUBCATEGORY_MACHINE_GENETICS "/Genetics Machines" +#define RND_SUBCATEGORY_MACHINE_FAB "/Fabricators" +#define RND_SUBCATEGORY_MACHINE_SERVICE "/Service Machines" +#define RND_SUBCATEGORY_MACHINE_TELECOMMS "/Telecommunications Machines" + +#define RND_CATEGORY_EQUIPMENT "/Equipment" +#define RND_SUBCATEGORY_EQUIPMENT_SERVICE "/Service Equipment" +#define RND_SUBCATEGORY_EQUIPMENT_JOKE "/Top-Secret Equipment" +#define RND_SUBCATEGORY_EQUIPMENT_CHEMISTRY "/Chemistry Equipment" +#define RND_SUBCATEGORY_EQUIPMENT_MEDICAL "/Medical Equipment" +#define RND_SUBCATEGORY_EQUIPMENT_SECURITY "/Security Equipment" +#define RND_SUBCATEGORY_EQUIPMENT_TELECOMMS "/Communications Equipment" +#define RND_SUBCATEGORY_EQUIPMENT_BLUESPACE "/Bluespace Equipment" +#define RND_SUBCATEGORY_EQUIPMENT_ENGINEERING "/Engineering Equipment" +#define RND_SUBCATEGORY_EQUIPMENT_ATMOSPHERICS "/Atmospherics Equipment" +#define RND_SUBCATEGORY_EQUIPMENT_SCIENCE "/Science Equipment" +#define RND_SUBCATEGORY_EQUIPMENT_GAS_TANKS "/Gas Tanks" +#define RND_SUBCATEGORY_EQUIPMENT_XENOBIOLOGY "/Xenobiology Equipment" +#define RND_SUBCATEGORY_EQUIPMENT_GENETICS "/Genetics Equipment" +#define RND_SUBCATEGORY_EQUIPMENT_JANITOR "/Janitorial Equipment" +#define RND_SUBCATEGORY_EQUIPMENT_KITCHEN "/Bar & Kitchen Equipment" +#define RND_SUBCATEGORY_EQUIPMENT_MISC "/Miscellaneous Equipment" + +#define RND_CATEGORY_AI "/Artificial Intelligence" +#define RND_SUBCATEGORY_AI_CORE "/AI Construction" +#define RND_SUBCATEGORY_AI_LAW_MANIPULATION "/AI Law Manipulation" +#define RND_SUBCATEGORY_AI_CORE_MODULES "/Core AI Modules" +#define RND_SUBCATEGORY_AI_DANGEROUS_MODULES "/Dangerous AI Modules" + +#define RND_CATEGORY_MODULAR_COMPUTERS "/Modular Computers" +#define RND_SUBCATEGORY_MODULAR_COMPUTERS_FRAMES "/Frames" +#define RND_SUBCATEGORY_MODULAR_COMPUTERS_PARTS "/Parts" + +#define RND_CATEGORY_STOCK_PARTS "/Stock Parts" +#define RND_SUBCATEGORY_STOCK_PARTS_MISC "/Miscellaneous Parts" +#define RND_SUBCATEGORY_STOCK_PARTS_TURBINE "/Turbine Parts" +#define RND_SUBCATEGORY_STOCK_PARTS_TELECOMMS "/Telecommunications Parts" +#define RND_SUBCATEGORY_STOCK_PARTS_1 "/Tier 1 Parts" +#define RND_SUBCATEGORY_STOCK_PARTS_2 "/Tier 2 Parts" +#define RND_SUBCATEGORY_STOCK_PARTS_3 "/Tier 3 Parts" +#define RND_SUBCATEGORY_STOCK_PARTS_4 "/Tier 4 Parts" +#define RND_SUBCATEGORY_STOCK_PARTS_EXCHANGERS "/Exchange Devices" + +#define RND_CATEGORY_SYNDICATE "/Illegal Designs" + +#define RND_CATEGORY_EXOSUIT_BOARDS "/Exosuit Boards" +#define RND_SUBCATEGORY_EXOSUIT_BOARDS_RIPLEY "/Ripley" +#define RND_SUBCATEGORY_EXOSUIT_BOARDS_ODYSSEUS "/Odysseus" +#define RND_SUBCATEGORY_EXOSUIT_BOARDS_GYGAX "/Gygax" +#define RND_SUBCATEGORY_EXOSUIT_BOARDS_DURAND "/Durand" +#define RND_SUBCATEGORY_EXOSUIT_BOARDS_HONK "/H.O.N.K." +#define RND_SUBCATEGORY_EXOSUIT_BOARDS_PHAZON "/Phazon" +#define RND_SUBCATEGORY_EXOSUIT_BOARDS_CLARKE "/Clarke" +#define RND_SUBCATEGORY_EXOSUIT_BOARDS_SAVANNAH_IVANOV "/Savannah-Ivanov" + +#define RND_CATEGORY_MECHFAB_RIPLEY "/Ripley" +#define RND_CATEGORY_MECHFAB_ODYSSEUS "/Odysseus" +#define RND_CATEGORY_MECHFAB_GYGAX "/Gygax" +#define RND_CATEGORY_MECHFAB_DURAND "/Durand" +#define RND_CATEGORY_MECHFAB_HONK "/H.O.N.K." +#define RND_CATEGORY_MECHFAB_PHAZON "/Phazon" +#define RND_CATEGORY_MECHFAB_CLARKE "/Clarke" +#define RND_CATEGORY_MECHFAB_SAVANNAH_IVANOV "/Savannah-Ivanov" +#define RND_SUBCATEGORY_MECHFAB_CHASSIS "/Chassis" +#define RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT "/Supported Equipment" +#define RND_SUBCATEGORY_MECHFAB_CONTROL_INTERFACES "/Control Interfaces" + +#define RND_CATEGORY_MECHFAB_EQUIPMENT "/Exosuit Equipment" +#define RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MINING "/Mining Equipment" +#define RND_SUBCATEGORY_MECHFAB_EQUIPMENT_WEAPONS "/Weapons & Ammunition" +#define RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MODULES "/Armor & Repair Modules" +#define RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC "/Miscellaneous" +#define RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MEDICAL "/Medical" +#define RND_SUBCATEGORY_MECHFAB_EQUIPMENT_HONK "/Clown Designs" +#define RND_SUBCATEGORY_MECHFAB_EQUIPMENT_CONTROL_INTERFACES "/Control Interfaces" + +#define RND_CATEGORY_MECHFAB_CYBORG "/Cyborg" +#define RND_SUBCATEGORY_MECHFAB_CYBORG_CHASSIS "/Cyborg Chassis" +#define RND_SUBCATEGORY_MECHFAB_CYBORG_COMPONENTS "/Components" +#define RND_SUBCATEGORY_MECHFAB_CYBORG_CELLS "/Power Cells" +#define RND_SUBCATEGORY_MECHFAB_CYBORG_CONTROL_INTERFACES "/Control Interfaces" + +#define RND_CATEGORY_MECHFAB_CYBORG_MODULES "/Cyborg Modules" +#define RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_ALL "/All Cyborgs" +#define RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_MEDICAL "/Medical Cyborgs" +#define RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_ENGINEERING "/Engineering Cyborgs" +#define RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_JANITOR "/Janitorial Cyborgs" +#define RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_SECURITY "/Security Cyborgs" +#define RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_MINING "/Mining Cyborgs" + +#define RND_CATEGORY_MODSUITS "/MOD Suits" +#define RND_SUBCATEGORY_MODUITS_CHASSIS "/Chassis" +#define RND_SUBCATEGORY_MODSUITS_PLATING "/Plating" +#define RND_SUBCATEGORY_MODSUITS_MISC "/Misc" + +#define RND_CATEGORY_MODSUIT_MODULES "/MOD Modules" +#define RND_SUBCATEGORY_MODSUIT_MODULES_GENERAL "/General Modules" +#define RND_SUBCATEGORY_MODSUIT_MODULES_ENGINEERING "/Engineering Modules" +#define RND_SUBCATEGORY_MODSUIT_MODULES_MEDICAL "/Medical Modules" +#define RND_SUBCATEGORY_MODSUIT_MODULES_SCIENCE "/Science Modules" +#define RND_SUBCATEGORY_MODSUIT_MODULES_SECURITY "/Security Modules" +#define RND_SUBCATEGORY_MODSUIT_MODULES_SUPPLY "/Supply Modules" +#define RND_SUBCATEGORY_MODSUIT_MODULES_SERVICE "/Service Modules" + + +#define RND_CATEGORY_CYBERNETICS "/Cybernetics" +#define RND_SUBCATEGORY_CYBERNETICS_ORGANS "/Cybernetic Organs" +#define RND_SUBCATEGORY_CYBERNETICS_IMPLANTS "/Cybernetic Implants" + +#define RND_SUBCATEGORY_IMPLANTS "/Implants" // Limb Categories -#define RND_CATEGORY_DIGITIGRADE "digitigrade" -#define RND_CATEGORY_OTHER "other" +#define RND_CATEGORY_LIMBS_DIGITIGRADE "Digitigrade" +#define RND_CATEGORY_LIMBS_OTHER "Other Limbs" -// Computer Categories -#define RND_CATEGORY_COMPUTER_BOARDS "Computer Boards" -#define RND_CATEGORY_COMPUTER_PARTS "Computer Parts" - -// Hacked Categories -#define RND_CATEGORY_HACKED "hacked" -#define RND_CATEGORY_EMAGGED "emagged" - -// MOD Categories -#define RND_CATEGORY_MOD_CONSTRUCTION "MOD Construction" -#define RND_CATEGORY_MOD_MODULES "MOD Modules" - -/// Misc Categories +/// Biogenerator Categories #define RND_CATEGORY_FOOD "Food" #define RND_CATEGORY_BOTANY_CHEMICALS "Botany Chemicals" #define RND_CATEGORY_ORGANIC_MATERIALS "Organic Materials" -#define RND_CATEGORY_IMPORTED "Imported" + +// Meta categories #define RND_CATEGORY_INITIAL "initial" -#define RND_CATEGORY_TOOLS "Tools" -#define RND_CATEGORY_EQUIPMENT "Equipment" -#define RND_CATEGORY_ELECTRONICS "Electronics" -#define RND_CATEGORY_MISC "Misc" -#define RND_CATEGORY_MATERIAL "Material" -#define RND_CATEGORY_STOCK_PARTS "Stock Parts" -#define RND_CATEGORY_CONSTRUCTION "Construction" -#define RND_CATEGORY_DINNERWARE "Dinnerware" +#define RND_CATEGORY_HACKED "hacked" +#define RND_CATEGORY_EMAGGED "emagged" +#define RND_CATEGORY_IMPORTED "/Imported Designs" diff --git a/code/datums/components/material_container.dm b/code/datums/components/material_container.dm index 675c4c18fea..c821164f8df 100644 --- a/code/datums/components/material_container.dm +++ b/code/datums/components/material_container.dm @@ -444,6 +444,7 @@ "amount" = amount, "sheets" = round(amount / MINERAL_MATERIAL_AMOUNT), "removable" = amount >= MINERAL_MATERIAL_AMOUNT, + "color" = material.greyscale_colors )) return data diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 6fc6541413d..1b234ce8052 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -7,48 +7,24 @@ circuit = /obj/item/circuitboard/machine/autolathe layer = BELOW_OBJ_LAYER - var/operating = FALSE - var/list/L = list() - var/list/LL = list() var/hacked = FALSE var/disabled = FALSE var/shocked = FALSE - var/hack_wire - var/disable_wire - var/shock_wire - var/busy = FALSE - ///the multiplier for how much materials the created object takes from this machines stored materials + /// Coefficient applied to consumed materials. Lower values result in lower material consumption. var/creation_efficiency = 1.6 var/datum/design/being_built var/datum/techweb/stored_research - var/list/datum/design/matching_designs - var/selected_category = "None" - var/base_price = 25 - var/hacked_price = 50 - - var/list/categories = list( - RND_CATEGORY_TOOLS, - RND_CATEGORY_EQUIPMENT, - RND_CATEGORY_CONSTRUCTION, - RND_CATEGORY_MATERIAL, - RND_CATEGORY_TELECOMMS, - RND_CATEGORY_SECURITY, - RND_CATEGORY_MACHINERY, - RND_CATEGORY_MEDICAL, - RND_CATEGORY_MISC, - RND_CATEGORY_DINNERWARE, - RND_CATEGORY_IMPORTED - ) /obj/machinery/autolathe/Initialize(mapload) AddComponent(/datum/component/material_container, SSmaterials.materials_by_category[MAT_CATEGORY_ITEM_MATERIAL], 0, MATCONTAINER_EXAMINE, _after_insert = CALLBACK(src, .proc/AfterMaterialInsert)) + . = ..() + wires = new /datum/wires/autolathe(src) stored_research = new /datum/techweb/specialized/autounlocking/autolathe - matching_designs = list() /obj/machinery/autolathe/Destroy() QDEL_NULL(wires) @@ -59,171 +35,195 @@ return if(shocked && !(machine_stat & NOPOWER)) - shock(user,50) + shock(user, 50) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) ui = new(user, src, "Autolathe") ui.open() -/obj/machinery/autolathe/ui_data(mob/user) +/obj/machinery/autolathe/ui_static_data(mob/user) var/list/data = list() - data["materials"] = list() - var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) - data["materialtotal"] = materials.total_amount - data["materialsmax"] = materials.max_amount - data["categories"] = categories - data["designs"] = list() - data["active"] = busy - for(var/mat_id in materials.materials) - var/datum/material/M = mat_id - var/mineral_count = materials.materials[mat_id] - var/list/material_data = list( - name = M.name, - mineral_amount = mineral_count, - matcolour = M.greyscale_colors, - ) - data["materials"] += list(material_data) - if(selected_category != "None" && !length(matching_designs)) - data["designs"] = handle_designs(stored_research.researched_designs, TRUE) - else - data["designs"] = handle_designs(matching_designs, FALSE) + data["designs"] = handle_designs(stored_research.researched_designs) + return data -/obj/machinery/autolathe/proc/handle_designs(list/designs, categorycheck) +/obj/machinery/autolathe/ui_data(mob/user) + var/list/data = list() + + data["materials"] = list() + + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) + + data["materialtotal"] = materials.total_amount + data["materialsmax"] = materials.max_amount + data["active"] = busy + data["materials"] = materials.ui_data() + + return data + +/obj/machinery/autolathe/proc/handle_designs(list/designs) var/list/output = list() - for(var/v in designs) - var/datum/design/D = categorycheck ? SSresearch.techweb_design_by_id(v) : v - if(categorycheck) - if(!(selected_category in D.category)) - continue + + var/datum/asset/spritesheet/research_designs/spritesheet = get_asset_datum(/datum/asset/spritesheet/research_designs) + var/size32x32 = "[spritesheet.name]32x32" + + for(var/design_id in designs) + var/datum/design/design = SSresearch.techweb_design_by_id(design_id) + var/unbuildable = FALSE // we can't build the design currently var/m10 = FALSE // 10x mult var/m25 = FALSE // 25x mult var/m50 = FALSE // 50x mult var/m5 = FALSE // 5x mult var/sheets = FALSE // sheets or no? - if(disabled || !can_build(D)) + + if(disabled || !can_build(design)) unbuildable = TRUE + var/max_multiplier = unbuildable ? 0 : 1 - if(ispath(D.build_path, /obj/item/stack)) + + if(ispath(design.build_path, /obj/item/stack)) sheets = TRUE + if(!unbuildable) var/datum/component/material_container/mats = GetComponent(/datum/component/material_container) - for(var/datum/material/mat in D.materials) - max_multiplier = min(D.maxstack, round(mats.get_material_amount(mat)/D.materials[mat])) + + for(var/datum/material/mat in design.materials) + max_multiplier = min(design.maxstack, round(mats.get_material_amount(mat) / design.materials[mat])) if (max_multiplier >= 10 && !disabled) m10 = TRUE if (max_multiplier >= 25 && !disabled) m25 = TRUE else if(!unbuildable) - if(!disabled && can_build(D, 5)) + if(!disabled && can_build(design, 5)) m5 = TRUE - if(!disabled && can_build(D, 10)) + if(!disabled && can_build(design, 10)) m10 = TRUE - var/datum/component/material_container/mats = GetComponent(/datum/component/material_container) - for(var/datum/material/mat in D.materials) - max_multiplier = min(50, round(mats.get_material_amount(mat)/(D.materials[mat] * creation_efficiency))) - var/list/design = list( - name = D.name, - id = D.id, - ref = REF(src), - cost = get_design_cost(D), - buildable = unbuildable, - mult5 = m5, - mult10 = m10, - mult25 = m25, - mult50 = m50, - sheet = sheets, - maxmult = max_multiplier, + var/datum/component/material_container/mats = GetComponent(/datum/component/material_container) + + for(var/datum/material/mat in design.materials) + max_multiplier = min(50, round(mats.get_material_amount(mat) / (design.materials[mat] * creation_efficiency))) + + var/icon_size = spritesheet.icon_size_id(design.id) + + var/list/design_data = list( + "name" = design.name, + "desc" = design.get_description(), + "cost" = get_design_cost(design), + "id" = design.id, + "categories" = design.category, + "icon" = "[icon_size == size32x32 ? "" : "[icon_size] "][design.id]", + "constructionTime" = -1, + + "buildable" = unbuildable, + "mult5" = m5, + "mult10" = m10, + "mult25" = m25, + "mult50" = m50, + "sheet" = sheets, + "maxmult" = max_multiplier, ) - output += list(design) + + output += list(design_data) + return output -/obj/machinery/autolathe/ui_act(action, params) +/obj/machinery/autolathe/ui_assets(mob/user) + return list( + get_asset_datum(/datum/asset/spritesheet/sheetmaterials), + get_asset_datum(/datum/asset/spritesheet/research_designs), + ) + +/obj/machinery/autolathe/ui_act(action, list/params) . = ..() + if(.) return - if(action == "menu") - selected_category = null - matching_designs.Cut() - . = TRUE - - if(action == "category") - selected_category = params["selectedCategory"] - matching_designs.Cut() - . = TRUE - - if(action == "search") - matching_designs.Cut() - - for(var/v in stored_research.researched_designs) - var/datum/design/D = SSresearch.techweb_design_by_id(v) - if(findtext(D.name,params["to_search"])) - matching_designs.Add(D) - . = TRUE if(action == "make") - if (!busy) - ///////////////// - //href protection - being_built = stored_research.isDesignResearchedID(params["id"]) - if(!being_built) - return + var/design_id = params["id"] - var/multiplier = text2num(params["multiplier"]) - if(!multiplier || !IS_FINITE(multiplier)) - stack_trace("Invalid multiplier value in stack creation [multiplier], [usr] is likely attempting an exploit") - return - var/is_stack = ispath(being_built.build_path, /obj/item/stack) - multiplier = clamp(round(multiplier),1,50) + if(!istext(design_id)) + return - ///////////////// + if(!stored_research.isDesignResearchedID(design_id)) + return - var/coeff = (is_stack ? 1 : creation_efficiency) //stacks are unaffected by production coefficient - var/total_amount = 0 + var/datum/design/design = SSresearch.techweb_design_by_id(design_id) - for(var/MAT in being_built.materials) - total_amount += being_built.materials[MAT] + if(!(design.build_type & AUTOLATHE) || design.id != design_id) + return - var/power = max(active_power_usage, (total_amount)*multiplier/5) //Change this to use all materials - - var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) - - var/list/materials_used = list() - var/list/custom_materials = list() //These will apply their material effect, This should usually only be one. - - for(var/MAT in being_built.materials) - var/datum/material/used_material = MAT - var/amount_needed = being_built.materials[MAT] * coeff * multiplier - if(istext(used_material)) //This means its a category - var/list/list_to_show = list() - for(var/i in SSmaterials.materials_by_category[used_material]) - if(materials.materials[i] > 0) - list_to_show += i - - used_material = tgui_input_list(usr, "Choose [used_material]", "Custom Material", sort_list(list_to_show, /proc/cmp_typepaths_asc)) - if(isnull(used_material)) - return //Didn't pick any material, so you can't build shit either. - custom_materials[used_material] += amount_needed - - materials_used[used_material] = amount_needed - - if(materials.has_materials(materials_used)) - busy = TRUE - to_chat(usr, span_notice("You print [multiplier] item(s) from the [src]")) - use_power(power) - icon_state = "autolathe_n" - var/time = is_stack ? 32 : (32 * coeff * multiplier) ** 0.8 - addtimer(CALLBACK(src, .proc/make_item, power, materials_used, custom_materials, multiplier, coeff, is_stack, usr), time) - . = TRUE - else - to_chat(usr, span_alert("Not enough materials for this operation.")) - else + if (busy) to_chat(usr, span_alert("The autolathe is busy. Please wait for completion of previous operation.")) + return + + being_built = design + + var/multiplier = round(text2num(params["multiplier"])) + + if(!multiplier || !IS_FINITE(multiplier)) + return + + var/is_stack = ispath(being_built.build_path, /obj/item/stack) + multiplier = clamp(multiplier, 1, 50) + + var/coeff = (is_stack ? 1 : creation_efficiency) // Stacks are unaffected by production coefficient + var/total_amount = 0 + + for(var/material in being_built.materials) + total_amount += being_built.materials[material] + + var/power = max(active_power_usage, (total_amount)*multiplier/5) // Change this to use all materials + + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) + + var/list/materials_used = list() + var/list/custom_materials = list() // These will apply their material effect, should usually only be one. + + for(var/mat in being_built.materials) + var/datum/material/used_material = mat + var/amount_needed = being_built.materials[mat] * coeff * multiplier + + if(istext(used_material)) // This means its a category + var/list/list_to_show = list() + + for(var/i in SSmaterials.materials_by_category[used_material]) + if(materials.materials[i] > 0) + list_to_show += i + + used_material = tgui_input_list( + usr, + "Choose [used_material]", + "Custom Material", + sort_list(list_to_show, /proc/cmp_typepaths_asc) + ) + + if(isnull(used_material)) + // Didn't pick any material, so you can't build shit either. + return + + custom_materials[used_material] += amount_needed + + materials_used[used_material] = amount_needed + + if(materials.has_materials(materials_used)) + busy = TRUE + to_chat(usr, span_notice("You print [multiplier] item(s) from the [src]")) + use_power(power) + icon_state = "autolathe_n" + var/time = is_stack ? 32 : (32 * coeff * multiplier) ** 0.8 + addtimer(CALLBACK(src, .proc/make_item, power, materials_used, custom_materials, multiplier, coeff, is_stack, usr), time) + . = TRUE + else + to_chat(usr, span_alert("Not enough materials for this operation.")) + /obj/machinery/autolathe/on_deconstruction() var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) materials.retrieve_all() @@ -264,6 +264,7 @@ if(not_imported) to_chat(user, span_warning("The following design[length(not_imported) > 1 ? "s" : ""] couldn't be imported: [english_list(not_imported)]")) busy = FALSE + update_static_data_for_all_viewers() return TRUE if(panel_open) @@ -369,16 +370,19 @@ return materials.has_materials(required_materials) -/obj/machinery/autolathe/proc/get_design_cost(datum/design/D) - var/coeff = (ispath(D.build_path, /obj/item/stack) ? 1 : creation_efficiency) - var/dat - for(var/i in D.materials) - if(istext(i)) //Category handling - dat += "[D.materials[i] * coeff] [i]" +/obj/machinery/autolathe/proc/get_design_cost(datum/design/design) + var/coeff = (ispath(design.build_path, /obj/item/stack) ? 1 : creation_efficiency) + var/list/cost = list() + + for(var/material in design.materials) + if (istext(material)) + // Wildcard materials + cost[material] = design.materials[material] * coeff else - var/datum/material/M = i - dat += "[D.materials[i] * coeff] [M.name] " - return dat + var/datum/material/cast = material + cost[cast.name] = design.materials[cast] * coeff + + return cost /obj/machinery/autolathe/proc/reset(wire) switch(wire) @@ -415,6 +419,8 @@ else stored_research.remove_design(D) + update_static_data_for_all_viewers() + /obj/machinery/autolathe/hacked/Initialize(mapload) . = ..() adjust_hacked(TRUE) diff --git a/code/modules/mining/lavaland/tendril_loot.dm b/code/modules/mining/lavaland/tendril_loot.dm index c5e2ab598aa..9898622b474 100644 --- a/code/modules/mining/lavaland/tendril_loot.dm +++ b/code/modules/mining/lavaland/tendril_loot.dm @@ -28,8 +28,10 @@ modkit_design = /datum/design/unique_modkit/bounty /datum/design/unique_modkit - category = list(RND_CATEGORY_MINING_DESIGNS, RND_CATEGORY_CYBORG_UPGRADE_MODULES) //can't be normally obtained - build_type = PROTOLATHE | AWAY_LATHE | MECHFAB + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_PKA_MODS, + ) + build_type = PROTOLATHE departmental_flags = DEPARTMENT_BITFLAG_CARGO /datum/design/unique_modkit/offensive_turf_aoe diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 3414a633850..b1eee4ba1b9 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -37,8 +37,8 @@ other types of metals and chemistry for reagents). var/build_path = null /// List of reagents produced by this design. Currently only supported by the biogenerator. var/list/make_reagents = list() - /// What category this design falls under. Used for sorting in production machines, mostly the mechfab. - var/list/category = null + /// What categories this design falls under. Used for sorting in production machines. + var/list/category = list() /// List of reagents required to create one unit of the product. var/list/reagents_list = list() /// The maximum number of units of whatever is produced by this can be produced in one go. diff --git a/code/modules/research/designs/AI_module_designs.dm b/code/modules/research/designs/AI_module_designs.dm index 52f0c1bbcf4..bfc4476810b 100644 --- a/code/modules/research/designs/AI_module_designs.dm +++ b/code/modules/research/designs/AI_module_designs.dm @@ -3,315 +3,385 @@ /////////////////////////////////// /datum/design/board/aicore - name = "AI Design (AI Core)" + name = "AI Core Board" desc = "Allows for the construction of circuit boards used to build new AI cores." id = "aicore" build_path = /obj/item/circuitboard/aicore - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_CORE + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/safeguard_module - name = "Module Design (Safeguard)" + name = "Safeguard Module" desc = "Allows for the construction of a Safeguard AI Module." id = "safeguard_module" materials = list(/datum/material/glass = 1000, /datum/material/gold = 2000, /datum/material/bluespace = 1000) build_path = /obj/item/ai_module/supplied/safeguard - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_DANGEROUS_MODULES + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/onehuman_module - name = "Module Design (OneHuman)" + name = "OneHuman Module" desc = "Allows for the construction of a OneHuman AI Module." id = "onehuman_module" materials = list(/datum/material/glass = 1000, /datum/material/diamond = 6000, /datum/material/bluespace = 1000) build_path = /obj/item/ai_module/zeroth/onehuman - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_DANGEROUS_MODULES + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/protectstation_module - name = "Module Design (ProtectStation)" + name = "ProtectStation Module" desc = "Allows for the construction of a ProtectStation AI Module." id = "protectstation_module" materials = list(/datum/material/glass = 1000, /datum/material/gold = 2000, /datum/material/bluespace = 1000) build_path = /obj/item/ai_module/supplied/protect_station - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_DANGEROUS_MODULES + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/quarantine_module - name = "Module Design (Quarantine)" + name = "Quarantine Module" desc = "Allows for the construction of a Quarantine AI Module." id = "quarantine_module" materials = list(/datum/material/glass = 1000, /datum/material/gold = 2000, /datum/material/bluespace = 1000) build_path = /obj/item/ai_module/supplied/quarantine - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_DANGEROUS_MODULES + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/oxygen_module - name = "Module Design (OxygenIsToxicToHumans)" - desc = "Allows for the construction of a Safeguard AI Module." + name = "OxygenIsToxicToHumans Module" + desc = "Allows for the construction of a OxygenIsToxicToHumans AI Module." id = "oxygen_module" materials = list(/datum/material/glass = 1000, /datum/material/gold = 2000, /datum/material/bluespace = 1000) build_path = /obj/item/ai_module/supplied/oxygen - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_DANGEROUS_MODULES + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/freeform_module - name = "Module Design (Freeform)" + name = "Freeform Module" desc = "Allows for the construction of a Freeform AI Module." id = "freeform_module" materials = list(/datum/material/glass = 1000, /datum/material/gold = 10000, /datum/material/bluespace = 2000)//Custom inputs should be more expensive to get build_path = /obj/item/ai_module/supplied/freeform - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_LAW_MANIPULATION + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/reset_module - name = "Module Design (Reset)" + name = "Reset Module" desc = "Allows for the construction of a Reset AI Module." id = "reset_module" materials = list(/datum/material/glass = 1000, /datum/material/gold = 2000) build_path = /obj/item/ai_module/reset - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_LAW_MANIPULATION + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/purge_module - name = "Module Design (Purge)" + name = "Purge Module" desc = "Allows for the construction of a Purge AI Module." id = "purge_module" materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000) build_path = /obj/item/ai_module/reset/purge - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_LAW_MANIPULATION + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/remove_module - name = "Module Design (Law Removal)" + name = "Law Removal Module" desc = "Allows for the construction of a Law Removal AI Core Module." id = "remove_module" materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000) build_path = /obj/item/ai_module/remove - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_LAW_MANIPULATION + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/freeformcore_module - name = "AI Core Module (Freeform)" - desc = "Allows for the construction of a Freeform AI Core Module." + name = "Core Freeform Module" + desc = "Allows for the construction of a Core Freeform AI Core Module." id = "freeformcore_module" materials = list(/datum/material/glass = 1000, /datum/material/diamond = 10000, /datum/material/bluespace = 2000)//Ditto build_path = /obj/item/ai_module/core/freeformcore - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_LAW_MANIPULATION + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/asimov - name = "Core Module Design (Asimov)" + name = "Asimov Module" desc = "Allows for the construction of an Asimov AI Core Module." id = "asimov_module" materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000) build_path = /obj/item/ai_module/core/full/asimov - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_CORE_MODULES + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/paladin_module - name = "Core Module Design (P.A.L.A.D.I.N.)" + name = "P.A.L.A.D.I.N. Module" desc = "Allows for the construction of a P.A.L.A.D.I.N. AI Core Module." id = "paladin_module" materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000) build_path = /obj/item/ai_module/core/full/paladin - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_CORE_MODULES + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/tyrant_module - name = "Core Module Design (T.Y.R.A.N.T.)" + name = "T.Y.R.A.N.T. Module" desc = "Allows for the construction of a T.Y.R.A.N.T. AI Module." id = "tyrant_module" materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000) build_path = /obj/item/ai_module/core/full/tyrant - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_CORE_MODULES + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/overlord_module - name = "Core Module Design (Overlord)" + name = "Overlord Module" desc = "Allows for the construction of an Overlord AI Module." id = "overlord_module" materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000) build_path = /obj/item/ai_module/core/full/overlord - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_DANGEROUS_MODULES + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/corporate_module - name = "Core Module Design (Corporate)" + name = "Corporate Module" desc = "Allows for the construction of a Corporate AI Core Module." id = "corporate_module" materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000) build_path = /obj/item/ai_module/core/full/corp - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_CORE_MODULES + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/default_module - name = "Core Module Design (Default)" + name = "Default Module" desc = "Allows for the construction of a Default AI Core Module." id = "default_module" materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000) build_path = /obj/item/ai_module/core/full/custom - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_CORE_MODULES + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/dungeon_master_module - name = "Core Module Design (Dungeon Master)" + name = "Dungeon Master Module" desc = "Allows for the construction of a Dungeon Master AI Core Module." id = "dungeon_master_module" materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000) build_path = /obj/item/ai_module/core/full/dungeon_master - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_CORE_MODULES + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/painter_module - name = "Core Module Design (Painter)" + name = "Painter Module" desc = "Allows for the construction of a Painter AI Core Module." id = "painter_module" materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000) build_path = /obj/item/ai_module/core/full/painter - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_CORE_MODULES + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/nutimov_module - name = "Core Module Design (Nutimov)" + name = "Nutimov Module" desc = "Allows for the construction of a Nutimov AI Core Module." id = "nutimov_module" materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000) build_path = /obj/item/ai_module/core/full/nutimov - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_CORE_MODULES + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/ten_commandments_module - name = "Core Module Design (10 Commandments)" + name = "10 Commandments Module" desc = "Allows for the construction of a 10 Commandments AI Core Module." id = "ten_commandments_module" materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000) build_path = /obj/item/ai_module/core/full/ten_commandments - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_CORE_MODULES + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/asimovpp_module - name = "Core Module Design (Asimov++)" + name = "Asimov++ Module" desc = "Allows for the construction of a Asimov++ AI Core Module." id = "asimovpp_module" materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000) build_path = /obj/item/ai_module/core/full/asimovpp - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_CORE_MODULES + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/hippocratic_module - name = "Core Module Design (Hippocratic)" + name = "Hippocratic Module" desc = "Allows for the construction of a Hippocratic AI Core Module." id = "hippocratic_module" materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000) build_path = /obj/item/ai_module/core/full/hippocratic - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_CORE_MODULES + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/paladin_devotion_module - name = "Core Module Design (Paladin Devotion)" + name = "Paladin Devotion Module" desc = "Allows for the construction of a Paladin Devotion AI Core Module." id = "paladin_devotion_module" materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000) build_path = /obj/item/ai_module/core/full/paladin_devotion - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_CORE_MODULES + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/robocop_module - name = "Core Module Design (Robocop)" + name = "Robocop Module" desc = "Allows for the construction of a Robocop AI Core Module." id = "robocop_module" materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000) build_path = /obj/item/ai_module/core/full/robocop - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_CORE_MODULES + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/maintain_module - name = "Core Module Design (Maintain)" + name = "Maintain Module" desc = "Allows for the construction of a Maintain AI Core Module." id = "maintain_module" materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000) build_path = /obj/item/ai_module/core/full/maintain - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_CORE_MODULES + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/liveandletlive_module - name = "Core Module Design (Liveandletlive)" + name = "Liveandletlive Module" desc = "Allows for the construction of a Liveandletlive AI Core Module." id = "liveandletlive_module" materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000) build_path = /obj/item/ai_module/core/full/liveandletlive - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_CORE_MODULES + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/peacekeeper_module - name = "Core Module Design (Peacekeeper)" + name = "Peacekeeper Module" desc = "Allows for the construction of a Peacekeeper AI Core Module." id = "peacekeeper_module" materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000) build_path = /obj/item/ai_module/core/full/peacekeeper - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_CORE_MODULES + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/reporter_module - name = "Core Module Design (Reporter)" + name = "Reporter Module" desc = "Allows for the construction of a Reporter AI Core Module." id = "reporter_module" materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000) build_path = /obj/item/ai_module/core/full/reporter - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_CORE_MODULES + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/hulkamania_module - name = "Core Module Design (Hulkamania)" - desc = "Allows for the construction of a Hulkamania AI Core Module." + name = "H.O.G.A.N. Module" + desc = "Allows for the construction of a H.O.G.A.N. AI Core Module." id = "hulkamania_module" materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000) build_path = /obj/item/ai_module/core/full/hulkamania - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_CORE_MODULES + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/drone_module - name = "Core Module Design (Drone)" + name = "Drone Module" desc = "Allows for the construction of a Drone AI Core Module." id = "drone_module" materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000) build_path = /obj/item/ai_module/core/full/drone - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_CORE_MODULES + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/antimov_module - name = "Core Module Design (Antimov)" + name = "Antimov Module" desc = "Allows for the construction of a Antimov AI Core Module." id = "antimov_module" materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000) build_path = /obj/item/ai_module/core/full/antimov - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_DANGEROUS_MODULES + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/balance_module - name = "Core Module Design (Balance)" + name = "Balance Module" desc = "Allows for the construction of a Balance AI Core Module." id = "balance_module" materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000) build_path = /obj/item/ai_module/core/full/balance - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_DANGEROUS_MODULES + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/thermurderdynamic_module - name = "Core Module Design (Thermurderdynamic)" - desc = "Allows for the construction of a Thermurderdynamic AI Core Module." + name = "Thermodynamic Module" + desc = "Allows for the construction of a Thermodynamic AI Core Module." id = "thermurderdynamic_module" materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000) build_path = /obj/item/ai_module/core/full/thermurderdynamic - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_DANGEROUS_MODULES + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/damaged - name = "Core Module Design (Damaged)" + name = "Damaged AI Module" desc = "Allows for the construction of a Damaged AI Core Module." id = "damaged_module" materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000, /datum/material/bluespace = 1000) build_path = /obj/item/ai_module/core/full/damaged - category = list(RND_CATEGORY_AI_MODULES) + category = list( + RND_CATEGORY_AI + RND_SUBCATEGORY_AI_DANGEROUS_MODULES + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 2849b8f9206..aca194ce7eb 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -8,7 +8,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 200) build_path = /obj/item/reagent_containers/cup/bucket - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS, RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_JANITORIAL + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/watering_can @@ -17,7 +20,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 200) build_path = /obj/item/reagent_containers/cup/watering_can - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS, RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_BOTANY + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/mop @@ -26,7 +32,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 1000) build_path = /obj/item/mop - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_EQUIPMENT, RND_CATEGORY_TOOLS, RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_JANITORIAL + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/broom @@ -35,7 +44,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 2000) build_path = /obj/item/pushbroom - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS, RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_JANITORIAL + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/crowbar @@ -44,32 +56,47 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 50) build_path = /obj/item/crowbar - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS, RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/flashlight name = "Flashlight" id = "flashlight" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 50, /datum/material/glass = 20) build_path = /obj/item/flashlight - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MISC + ) + departmental_flags = ALL /datum/design/extinguisher name = "Fire Extinguisher" id = "extinguisher" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 90) build_path = /obj/item/extinguisher - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ATMOSPHERICS + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/pocketfireextinguisher name = "Pocket Fire Extinguisher" id = "pocketfireextinguisher" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 50, /datum/material/glass = 40) build_path = /obj/item/extinguisher/mini - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ATMOSPHERICS + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/multitool name = "Multitool" @@ -77,7 +104,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 50, /datum/material/glass = 20) build_path = /obj/item/multitool - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS, RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/analyzer @@ -86,7 +116,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 30, /datum/material/glass = 20) build_path = /obj/item/analyzer - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS, RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ATMOSPHERICS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO /datum/design/tscanner @@ -95,7 +128,10 @@ build_type = AUTOLATHE materials = list(/datum/material/iron = 150) build_path = /obj/item/t_scanner - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS, RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/weldingtool @@ -104,16 +140,22 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 70, /datum/material/glass = 20) build_path = /obj/item/weldingtool - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS, RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/mini_weldingtool name = "Emergency Welding Tool" id = "mini_welding_tool" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 30, /datum/material/glass = 10) build_path = /obj/item/weldingtool/mini - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING + ) /datum/design/screwdriver name = "Screwdriver" @@ -121,7 +163,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 75) build_path = /obj/item/screwdriver - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS, RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/wirecutters @@ -130,7 +175,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 80) build_path = /obj/item/wirecutters - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS, RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/wrench @@ -139,7 +187,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 150) build_path = /obj/item/wrench - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS, RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/plunger @@ -148,8 +199,11 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 150) build_path = /obj/item/plunger - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS, RND_CATEGORY_TOOL_DESIGNS) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_PLUMBING + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE /datum/design/welding_helmet name = "Welding Helmet" @@ -157,7 +211,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 1750, /datum/material/glass = 400) build_path = /obj/item/clothing/head/welding - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS, RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/cable_coil @@ -166,17 +223,23 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 10, /datum/material/glass = 5) build_path = /obj/item/stack/cable_coil - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS, RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING + ) maxstack = MAXCOIL departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/toolbox name = "Toolbox" id = "tool_box" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(MAT_CATEGORY_ITEM_MATERIAL = 500) build_path = /obj/item/storage/toolbox - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING + ) /datum/design/apc_board name = "APC Module" @@ -184,7 +247,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 100, /datum/material/glass = 100) build_path = /obj/item/electronics/apc - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_ELECTRONICS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_ELECTRONICS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/airlock_board @@ -193,7 +259,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 50, /datum/material/glass = 50) build_path = /obj/item/electronics/airlock - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_ELECTRONICS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_ELECTRONICS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/firelock_board @@ -202,7 +271,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 50, /datum/material/glass = 50) build_path = /obj/item/electronics/firelock - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_ELECTRONICS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_ELECTRONICS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/airalarm_electronics @@ -211,7 +283,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 50, /datum/material/glass = 50) build_path = /obj/item/electronics/airalarm - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_ELECTRONICS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_ELECTRONICS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/firealarm_electronics @@ -220,7 +295,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 50, /datum/material/glass = 50) build_path = /obj/item/electronics/firealarm - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_ELECTRONICS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_ELECTRONICS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/trapdoor_electronics @@ -229,32 +307,47 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 50, /datum/material/glass = 50) build_path = /obj/item/assembly/trapdoor - category = list("initial", "Electronics") + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_ELECTRONICS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/camera name = "Camera" id = "camera" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 50, /datum/material/glass = 100) build_path = /obj/item/camera - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/camera_film name = "Camera Film Cartridge" id = "camera_film" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 10, /datum/material/glass = 10) build_path = /obj/item/camera_film - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/earmuffs name = "Earmuffs" id = "earmuffs" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/clothing/ears/earmuffs - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/pipe_painter name = "Pipe Painter" @@ -262,7 +355,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 5000, /datum/material/glass = 2000) build_path = /obj/item/pipe_painter - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS, RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/airlock_painter @@ -271,8 +367,11 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 50, /datum/material/glass = 50) build_path = /obj/item/airlock_painter - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS, RND_CATEGORY_TOOL_DESIGNS) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SERVICE + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/airlock_painter/decal name = "Decal Painter" @@ -280,8 +379,11 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 50, /datum/material/glass = 50) build_path = /obj/item/airlock_painter/decal - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS, RND_CATEGORY_TOOL_DESIGNS) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SERVICE + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/airlock_painter/decal/tile name = "Tile Sprayer" @@ -289,8 +391,11 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 50, /datum/material/glass = 50) build_path = /obj/item/airlock_painter/decal/tile - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS, RND_CATEGORY_TOOL_DESIGNS) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SERVICE + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/emergency_oxygen name = "Emergency Oxygen Tank" @@ -298,7 +403,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 500) build_path = /obj/item/tank/internals/emergency_oxygen/empty - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC, RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_GAS_TANKS + ) /datum/design/emergency_oxygen_engi name = "Extended-Capacity Emergency Oxygen Tank" @@ -306,7 +414,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 750) build_path = /obj/item/tank/internals/emergency_oxygen/engi/empty - category = list(RND_CATEGORY_HACKED, RND_CATEGORY_MISC, RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_GAS_TANKS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO /datum/design/plasmaman_tank_belt @@ -315,8 +426,11 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 800) build_path = /obj/item/tank/internals/plasmaman/belt/empty - category = list(RND_CATEGORY_HACKED, RND_CATEGORY_MISC, RND_CATEGORY_EQUIPMENT) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_GAS_TANKS + ) + departmental_flags = ALL /datum/design/generic_gas_tank name = "Generic Gas Tank" @@ -324,7 +438,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 1000) build_path = /obj/item/tank/internals/generic - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC, RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_GAS_TANKS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO /datum/design/boxcutter @@ -333,7 +450,10 @@ build_type = AUTOLATHE | PROTOLATHE materials = list(/datum/material/iron = 4000, /datum/material/plastic = 500) build_path = /obj/item/boxcutter - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS, RND_CATEGORY_EQUIPMENT, RND_CATEGORY_MISC) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_CARGO + ) departmental_flags = DEPARTMENT_BITFLAG_CARGO /datum/design/iron @@ -342,7 +462,10 @@ build_type = AUTOLATHE materials = list(/datum/material/iron = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/iron - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MATERIAL) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS + ) maxstack = 50 /datum/design/rods @@ -351,7 +474,10 @@ build_type = AUTOLATHE materials = list(/datum/material/iron = 1000) build_path = /obj/item/stack/rods - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MATERIAL) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS + ) maxstack = 50 /datum/design/glass @@ -360,7 +486,10 @@ build_type = AUTOLATHE materials = list(/datum/material/glass = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/glass - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MATERIAL) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS + ) maxstack = 50 /datum/design/rglass @@ -369,8 +498,12 @@ build_type = AUTOLATHE | SMELTER | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 1000, /datum/material/glass = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/rglass - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MATERIAL, RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS + ) maxstack = 50 + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/silver name = "Silver" @@ -378,7 +511,10 @@ build_type = AUTOLATHE materials = list(/datum/material/silver = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/mineral/silver - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MATERIAL) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS + ) maxstack = 50 /datum/design/gold @@ -387,7 +523,10 @@ build_type = AUTOLATHE materials = list(/datum/material/gold = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/mineral/gold - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MATERIAL) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS + ) maxstack = 50 /datum/design/diamond @@ -396,7 +535,10 @@ build_type = AUTOLATHE materials = list(/datum/material/diamond = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/mineral/diamond - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MATERIAL) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS + ) maxstack = 50 /datum/design/plasma @@ -405,7 +547,10 @@ build_type = AUTOLATHE materials = list(/datum/material/plasma = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/mineral/plasma - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MATERIAL) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS + ) maxstack = 50 /datum/design/uranium @@ -414,7 +559,10 @@ build_type = AUTOLATHE materials = list(/datum/material/uranium = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/mineral/uranium - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MATERIAL) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS + ) maxstack = 50 /datum/design/bananium @@ -423,7 +571,10 @@ build_type = AUTOLATHE materials = list(/datum/material/bananium = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/mineral/bananium - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MATERIAL) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS + ) maxstack = 50 /datum/design/titanium @@ -432,7 +583,10 @@ build_type = AUTOLATHE materials = list(/datum/material/titanium = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/mineral/titanium - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MATERIAL) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS + ) maxstack = 50 /datum/design/plastic @@ -441,24 +595,23 @@ build_type = AUTOLATHE materials = list(/datum/material/plastic= MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/plastic - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MATERIAL) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS + ) maxstack = 50 -/datum/design/rcd_ammo - name = "Compressed Matter Cartridge" - id = "rcd_ammo" - build_type = AUTOLATHE - materials = list(/datum/material/iron = 12000, /datum/material/glass = 8000) - build_path = /obj/item/rcd_ammo - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_CONSTRUCTION) - /datum/design/kitchen_knife name = "Kitchen Knife" id = "kitchen_knife" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 12000) build_path = /obj/item/knife/kitchen - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_DINNERWARE) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_KITCHEN + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/plastic_knife name = "Plastic Knife" @@ -466,15 +619,23 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/plastic = 100) build_path = /obj/item/knife/plastic - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOL_DESIGNS, RND_CATEGORY_DINNERWARE) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_KITCHEN + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/fork name = "Fork" id = "fork" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 80) build_path = /obj/item/kitchen/fork - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_DINNERWARE) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_KITCHEN + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/plastic_fork name = "Plastic Fork" @@ -482,7 +643,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/plastic = 80) build_path = /obj/item/kitchen/fork/plastic - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOL_DESIGNS, RND_CATEGORY_DINNERWARE) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_KITCHEN + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/spoon @@ -491,7 +655,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 120) build_path = /obj/item/kitchen/spoon - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOL_DESIGNS, RND_CATEGORY_DINNERWARE) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_KITCHEN + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/plastic_spoon @@ -500,64 +667,95 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/plastic = 120) build_path = /obj/item/kitchen/spoon/plastic - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOL_DESIGNS, RND_CATEGORY_DINNERWARE) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_KITCHEN + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/tray name = "Serving Tray" id = "servingtray" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 3000) build_path = /obj/item/storage/bag/tray - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_DINNERWARE) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_KITCHEN + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/plate name = "Plate" id = "plate" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 3500) build_path = /obj/item/plate - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_DINNERWARE) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_KITCHEN + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/cafeteria_tray name = "Cafeteria Tray" id = "foodtray" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 3000) build_path = /obj/item/storage/bag/tray/cafeteria - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_DINNERWARE) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_KITCHEN + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/bowl name = "Bowl" id = "bowl" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/glass = 500) - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_DINNERWARE) + category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_EQUIPMENT) build_path = /obj/item/reagent_containers/cup/bowl + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_KITCHEN + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/drinking_glass name = "Drinking Glass" id = "drinking_glass" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/glass = 500) - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_DINNERWARE) + category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_EQUIPMENT) build_path = /obj/item/reagent_containers/cup/glass/drinkingglass + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_KITCHEN + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/shot_glass name = "Shot Glass" id = "shot_glass" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/glass = 100) - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_DINNERWARE) + category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_EQUIPMENT) build_path = /obj/item/reagent_containers/cup/glass/drinkingglass/shotglass + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_KITCHEN + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/shaker name = "Shaker" id = "shaker" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 1500) - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_DINNERWARE) + category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_EQUIPMENT) build_path = /obj/item/reagent_containers/cup/glass/shaker + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_KITCHEN + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/cultivator name = "Cultivator" @@ -565,7 +763,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron=50) build_path = /obj/item/cultivator - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC, RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_BOTANY + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/plant_analyzer @@ -574,7 +775,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 30, /datum/material/glass = 20) build_path = /obj/item/plant_analyzer - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC, RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_BOTANY + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/shovel @@ -583,7 +787,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 50) build_path = /obj/item/shovel - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC, RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_BOTANY + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/spade @@ -592,7 +799,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 50) build_path = /obj/item/shovel/spade - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC, RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_BOTANY + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/hatchet @@ -601,7 +811,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 15000) build_path = /obj/item/hatchet - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC, RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_BOTANY + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/secateurs @@ -610,7 +823,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 4000) build_path = /obj/item/secateurs - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC, RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_BOTANY + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/foilhat @@ -619,7 +835,10 @@ build_type = AUTOLATHE materials = list(/datum/material/iron = 5500) build_path = /obj/item/clothing/head/foilhat - category = list(RND_CATEGORY_HACKED, RND_CATEGORY_MISC) + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_JOKE + ) /datum/design/blood_filter name = "Blood Filter" @@ -627,7 +846,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 4000, /datum/material/glass = 1500, /datum/material/silver = 500) build_path = /obj/item/blood_filter - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MEDICAL, RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design/scalpel @@ -636,7 +858,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 4000, /datum/material/glass = 1000) build_path = /obj/item/scalpel - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MEDICAL, RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design/circular_saw @@ -645,7 +870,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 10000, /datum/material/glass = 6000) build_path = /obj/item/circular_saw - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MEDICAL, RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design/bonesetter @@ -654,7 +882,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 5000, /datum/material/glass = 2500) build_path = /obj/item/bonesetter - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MEDICAL, RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design/surgicaldrill @@ -663,7 +894,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 10000, /datum/material/glass = 6000) build_path = /obj/item/surgicaldrill - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MEDICAL, RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design/retractor @@ -672,7 +906,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 6000, /datum/material/glass = 3000) build_path = /obj/item/retractor - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MEDICAL, RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design/cautery @@ -681,7 +918,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 2500, /datum/material/glass = 750) build_path = /obj/item/cautery - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MEDICAL, RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design/hemostat @@ -690,7 +930,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 5000, /datum/material/glass = 2500) build_path = /obj/item/hemostat - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MEDICAL, RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design/stethoscope @@ -699,7 +942,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 1000) build_path = /obj/item/clothing/neck/stethoscope - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MEDICAL, RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MEDICAL + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/beaker @@ -707,18 +953,24 @@ id = "beaker" build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/glass = 500) - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MEDICAL, RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_CHEMISTRY + ) build_path = /obj/item/reagent_containers/cup/beaker - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SERVICE + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_SCIENCE /datum/design/large_beaker name = "Large Beaker" id = "large_beaker" build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/glass = 2500) - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MEDICAL, RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_CHEMISTRY + ) build_path = /obj/item/reagent_containers/cup/beaker/large - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SERVICE + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_SCIENCE /datum/design/pillbottle name = "Pill Bottle" @@ -726,168 +978,250 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/plastic = 20, /datum/material/glass = 100) build_path = /obj/item/storage/pill_bottle - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MEDICAL, RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_CHEMISTRY + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/beanbag_slug name = "Beanbag Slug" id = "beanbag_slug" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 2000) build_path = /obj/item/ammo_casing/shotgun/beanbag - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_SECURITY) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/rubbershot name = "Rubber Shot" id = "rubber_shot" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 4000) build_path = /obj/item/ammo_casing/shotgun/rubbershot - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_SECURITY) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/c38 name = "Speed Loader (.38)" id = "c38" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 20000) build_path = /obj/item/ammo_box/c38 - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_SECURITY) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/recorder name = "Universal Recorder" id = "recorder" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 60, /datum/material/glass = 30) build_path = /obj/item/taperecorder/empty - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SECURITY + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/tape - name = "Tape" + name = "Universal Recorder Tape" id = "tape" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 20, /datum/material/glass = 5) build_path = /obj/item/tape/random - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SECURITY + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/igniter name = "Igniter" id = "igniter" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 500, /datum/material/glass = 50) build_path = /obj/item/assembly/igniter - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_ELECTRONICS + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/condenser name = "Condenser" id = "condenser" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron=250, /datum/material/glass=300) build_path = /obj/item/assembly/igniter/condenser - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_ELECTRONICS + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/signaler name = "Remote Signaling Device" id = "signaler" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 400, /datum/material/glass = 120) build_path = /obj/item/assembly/signaler - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TELECOMMS) + category = list( + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_ELECTRONICS + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/radio_headset name = "Radio Headset" id = "radio_headset" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 75) build_path = /obj/item/radio/headset - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TELECOMMS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_TELECOMMS + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/bounced_radio name = "Station Bounced Radio" id = "bounced_radio" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 75, /datum/material/glass = 25) build_path = /obj/item/radio/off - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TELECOMMS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_TELECOMMS + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/intercom_frame name = "Intercom Frame" id = "intercom_frame" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 75, /datum/material/glass = 25) build_path = /obj/item/wallframe/intercom - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TELECOMMS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MOUNTS + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/infrared_emitter name = "Infrared Emitter" id = "infrared_emitter" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 1000, /datum/material/glass = 500) build_path = /obj/item/assembly/infra - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_ELECTRONICS + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/health_sensor name = "Health Sensor" id = "health_sensor" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 800, /datum/material/glass = 200) build_path = /obj/item/assembly/health - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MEDICAL) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_ELECTRONICS + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/timer name = "Timer" id = "timer" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 500, /datum/material/glass = 50) build_path = /obj/item/assembly/timer - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_ELECTRONICS + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/voice_analyzer name = "Voice Analyzer" id = "voice_analyzer" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 500, /datum/material/glass = 50) build_path = /obj/item/assembly/voice - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_ELECTRONICS + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/light_tube name = "Light Tube" id = "light_tube" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/glass = 100) build_path = /obj/item/light/tube - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_CONSTRUCTION) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_LIGHTING + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/light_bulb name = "Light Bulb" id = "light_bulb" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/glass = 100) build_path = /obj/item/light/bulb - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_CONSTRUCTION) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_LIGHTING + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/camera_assembly name = "Camera Assembly" id = "camera_assembly" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 400, /datum/material/glass = 250) build_path = /obj/item/wallframe/camera - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_CONSTRUCTION) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MOUNTS + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/newscaster_frame name = "Newscaster Frame" id = "newscaster_frame" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 14000, /datum/material/glass = 8000) build_path = /obj/item/wallframe/newscaster - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_CONSTRUCTION) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MOUNTS + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/status_display_frame name = "Status Display Frame" id = "status_display_frame" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 14000, /datum/material/glass = 8000) build_path = /obj/item/wallframe/status_display - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_CONSTRUCTION) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MOUNTS + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/syringe name = "Syringe" @@ -895,8 +1229,11 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 10, /datum/material/glass = 20) build_path = /obj/item/reagent_containers/syringe - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MEDICAL, RND_CATEGORY_MEDICAL_DESIGNS) - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_CHEMISTRY + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design/dropper name = "Dropper" @@ -904,49 +1241,71 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/glass = 10, /datum/material/plastic = 30) build_path = /obj/item/reagent_containers/dropper - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MEDICAL, RND_CATEGORY_MEDICAL_DESIGNS) - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_CHEMISTRY + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design/prox_sensor name = "Proximity Sensor" id = "prox_sensor" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 800, /datum/material/glass = 200) build_path = /obj/item/assembly/prox_sensor - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_ELECTRONICS + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/foam_dart name = "Box of Foam Darts" id = "foam_dart" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 500) build_path = /obj/item/ammo_box/foambox - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY -//hacked autolathe recipes /datum/design/flamethrower name = "Flamethrower" id = "flamethrower" build_type = AUTOLATHE materials = list(/datum/material/iron = 500) build_path = /obj/item/flamethrower/full - category = list(RND_CATEGORY_HACKED, RND_CATEGORY_SECURITY) + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/electropack name = "Electropack" id = "electropack" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 10000, /datum/material/glass = 2500) build_path = /obj/item/electropack - category = list(RND_CATEGORY_HACKED, RND_CATEGORY_TOOLS) + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SECURITY + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/large_welding_tool name = "Industrial Welding Tool" id = "large_welding_tool" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 70, /datum/material/glass = 60) build_path = /obj/item/weldingtool/largetank - category = list(RND_CATEGORY_HACKED, RND_CATEGORY_TOOLS) + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/handcuffs name = "Handcuffs" @@ -954,7 +1313,19 @@ build_type = AUTOLATHE materials = list(/datum/material/iron = 500) build_path = /obj/item/restraints/handcuffs - category = list(RND_CATEGORY_HACKED, RND_CATEGORY_SECURITY) + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SECURITY + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY + +/datum/design/handcuffs/sec + id = "handcuffs_s" + build_type = PROTOLATHE | AWAY_LATHE + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SECURITY + ) + autolathe_exportable = FALSE /datum/design/receiver name = "Modular Receiver" @@ -962,7 +1333,11 @@ build_type = AUTOLATHE materials = list(/datum/material/iron = 15000) build_path = /obj/item/weaponcrafting/receiver - category = list(RND_CATEGORY_HACKED, RND_CATEGORY_SECURITY) + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_PARTS + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/shotgun_dart name = "Shotgun Dart" @@ -970,7 +1345,11 @@ build_type = AUTOLATHE materials = list(/datum/material/iron = 4000) build_path = /obj/item/ammo_casing/shotgun/dart - category = list(RND_CATEGORY_HACKED, RND_CATEGORY_SECURITY) + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/incendiary_slug name = "Incendiary Slug" @@ -978,7 +1357,11 @@ build_type = AUTOLATHE materials = list(/datum/material/iron = 4000) build_path = /obj/item/ammo_casing/shotgun/incendiary - category = list(RND_CATEGORY_HACKED, RND_CATEGORY_SECURITY) + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/riot_dart name = "Foam Riot Dart" @@ -986,7 +1369,11 @@ build_type = AUTOLATHE materials = list(/datum/material/iron = 1000) //Discount for making individually - no box = less iron! build_path = /obj/item/ammo_casing/caseless/foam_dart/riot - category = list(RND_CATEGORY_HACKED, RND_CATEGORY_SECURITY) + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/riot_darts name = "Foam Riot Dart Box" @@ -994,7 +1381,11 @@ build_type = AUTOLATHE materials = list(/datum/material/iron = 50000) //Comes with 40 darts build_path = /obj/item/ammo_box/foambox/riot - category = list(RND_CATEGORY_HACKED, RND_CATEGORY_SECURITY) + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/a357 name = ".357 Casing" @@ -1002,7 +1393,11 @@ build_type = AUTOLATHE materials = list(/datum/material/iron = 4000) build_path = /obj/item/ammo_casing/a357 - category = list(RND_CATEGORY_HACKED, RND_CATEGORY_SECURITY) + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/c10mm name = "Ammo Box (10mm)" @@ -1010,7 +1405,11 @@ build_type = AUTOLATHE materials = list(/datum/material/iron = 30000) build_path = /obj/item/ammo_box/c10mm - category = list(RND_CATEGORY_HACKED, RND_CATEGORY_SECURITY) + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/c45 name = "Ammo Box (.45)" @@ -1018,7 +1417,11 @@ build_type = AUTOLATHE materials = list(/datum/material/iron = 30000) build_path = /obj/item/ammo_box/c45 - category = list(RND_CATEGORY_HACKED, RND_CATEGORY_SECURITY) + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/c9mm name = "Ammo Box (9mm)" @@ -1026,7 +1429,11 @@ build_type = AUTOLATHE materials = list(/datum/material/iron = 30000) build_path = /obj/item/ammo_box/c9mm - category = list(RND_CATEGORY_HACKED, RND_CATEGORY_SECURITY) + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/cleaver name = "Butcher's Cleaver" @@ -1034,16 +1441,22 @@ build_type = AUTOLATHE materials = list(/datum/material/iron = 18000) build_path = /obj/item/knife/butcher - category = list(RND_CATEGORY_HACKED, RND_CATEGORY_DINNERWARE) + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SERVICE + ) /datum/design/spraycan name = "Spraycan" id = "spraycan" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 100, /datum/material/glass = 100) build_path = /obj/item/toy/crayon/spraycan - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS, RND_CATEGORY_TOOL_DESIGNS) - departmental_flags = DEPARTMENT_BITFLAG_SERVICE + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/desttagger name = "Destination Tagger" @@ -1051,7 +1464,11 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 250, /datum/material/glass = 125) build_path = /obj/item/dest_tagger - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_ELECTRONICS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_CARGO + ) + departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SERVICE /datum/design/salestagger name = "Sales Tagger" @@ -1059,7 +1476,10 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 700, /datum/material/glass = 200) build_path = /obj/item/sales_tagger - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_ELECTRONICS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_CARGO + ) departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SERVICE /datum/design/handlabeler @@ -1068,23 +1488,35 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 150, /datum/material/glass = 125) build_path = /obj/item/hand_labeler - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_ELECTRONICS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/geiger name = "Geiger Counter" id = "geigercounter" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 150, /datum/material/glass = 150) build_path = /obj/item/geiger_counter - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/turret_control_frame name = "Turret Control Frame" id = "turret_control" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 12000) build_path = /obj/item/wallframe/turret_control - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_CONSTRUCTION) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MOUNTS + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/conveyor_belt name = "Conveyor Belt" @@ -1092,9 +1524,12 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 3000) build_path = /obj/item/stack/conveyor - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_CONSTRUCTION, RND_CATEGORY_ELECTRONICS) maxstack = 30 - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MACHINERY + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO /datum/design/conveyor_switch name = "Conveyor Belt Switch" @@ -1102,48 +1537,71 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 450, /datum/material/glass = 190) build_path = /obj/item/conveyor_switch_construct - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_CONSTRUCTION, RND_CATEGORY_ELECTRONICS) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MACHINERY + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO /datum/design/laptop name = "Laptop Frame" id = "laptop" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 10000, /datum/material/glass = 1000) build_path = /obj/item/modular_computer/laptop/buildable - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_MODULAR_COMPUTERS + RND_SUBCATEGORY_MODULAR_COMPUTERS_FRAMES + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/tablet name = "Tablet Frame" id = "tablet" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 2000, /datum/material/glass = 1000) build_path = /obj/item/modular_computer/tablet - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_MODULAR_COMPUTERS + RND_SUBCATEGORY_MODULAR_COMPUTERS_FRAMES + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/slime_scanner name = "Slime Scanner" id = "slime_scanner" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 300, /datum/material/glass = 200) build_path = /obj/item/slime_scanner - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_XENOBIOLOGY + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/pet_carrier name = "Pet Carrier" id = "pet_carrier" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 7500, /datum/material/glass = 100) build_path = /obj/item/pet_carrier - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/miniature_power_cell name = "Light Fixture Battery" id = "miniature_power_cell" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/glass = 20) build_path = /obj/item/stock_parts/cell/emergency_light - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_ELECTRONICS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_LIGHTING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/package_wrap name = "Package Wrapping" @@ -1151,141 +1609,210 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 200, /datum/material/glass = 200) build_path = /obj/item/stack/package_wrap - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC, RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SERVICE + ) maxstack = 30 + departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_CARGO /datum/design/holodisk name = "Holodisk" id = "holodisk" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 100, /datum/material/glass = 100) build_path = /obj/item/disk/holodisk - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_ELECTRONICS + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/circuit name = "Blue Circuit Tile" id = "circuit" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/stack/tile/circuit - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC) maxstack = 50 + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + /datum/design/circuitgreen name = "Green Circuit Tile" id = "circuitgreen" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/stack/tile/circuit/green - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC) maxstack = 50 + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/circuitred name = "Red Circuit Tile" id = "circuitred" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/stack/tile/circuit/red - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC) maxstack = 50 + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/price_tagger name = "Price Tagger" id = "price_tagger" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 1500, /datum/material/glass = 500) build_path = /obj/item/price_tagger - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_CARGO + ) + departmental_flags = DEPARTMENT_BITFLAG_CARGO /datum/design/custom_vendor_refill name = "Custom Vendor Refill" id = "custom_vendor_refill" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 5000, /datum/material/glass = 2000) build_path = /obj/item/vending_refill/custom - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_MISC + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/ducts - name = "Fluid Ducts" + name = "Fluid Duct" id = "fluid_ducts" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 500) build_path = /obj/item/stack/ducts - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_CONSTRUCTION) maxstack = 50 + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_PLUMBING + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE /datum/design/toygun name = "Cap Gun" id = "toygun" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 100, /datum/material/glass = 50) build_path = /obj/item/toy/gun - category = list(RND_CATEGORY_HACKED, RND_CATEGORY_MISC) + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/capbox name = "Box of Cap Gun Shots" id = "capbox" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 20, /datum/material/glass = 5) build_path = /obj/item/toy/ammo/gun - category = list(RND_CATEGORY_HACKED, RND_CATEGORY_MISC) + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/toy_balloon name = "Plastic Balloon" id = "toy_balloon" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/plastic = 1200) build_path = /obj/item/toy/balloon - category = list(RND_CATEGORY_HACKED, RND_CATEGORY_MISC) + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/toy_armblade name = "Plastic Armblade" id = "toy_armblade" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/plastic = 2000) build_path = /obj/item/toy/foamblade - category = list(RND_CATEGORY_HACKED, RND_CATEGORY_MISC) + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/plastic_tree name = "Plastic Potted Plant" id = "plastic_trees" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/plastic = 8000) build_path = /obj/item/kirbyplants/fullysynthetic - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/beads name = "Plastic Bead Necklace" id = "plastic_necklace" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/plastic = 500) build_path = /obj/item/clothing/neck/beads - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/plastic_ring name = "Plastic Can Rings" id = "ring_holder" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/plastic = 1200) build_path = /obj/item/storage/cans - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_DINNERWARE) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/plastic_box name = "Plastic Box" id = "plastic_box" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/plastic = 1000) build_path = /obj/item/storage/box/plastic - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/sticky_tape name = "Sticky Tape" id = "sticky_tape" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/plastic = 500) build_path = /obj/item/stack/sticky_tape - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC) + category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_EQUIPMENT) maxstack = 5 + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/sticky_tape/surgical name = "Surgical Tape" @@ -1293,7 +1820,10 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/plastic = 500) build_path = /obj/item/stack/sticky_tape/surgical - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MEDICAL) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MEDICAL + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/petridish @@ -1302,7 +1832,10 @@ build_type = PROTOLATHE | AWAY_LATHE | AUTOLATHE materials = list(/datum/material/glass = 500) build_path = /obj/item/petri_dish - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC, RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_XENOBIOLOGY + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/swab @@ -1311,24 +1844,35 @@ build_type = PROTOLATHE | AWAY_LATHE | AUTOLATHE materials = list(/datum/material/plastic = 200) build_path = /obj/item/swab - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC, RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_XENOBIOLOGY + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/chisel name = "Chisel" id = "chisel" - build_type = AUTOLATHE + build_type = PROTOLATHE | AWAY_LATHE | AUTOLATHE materials = list(/datum/material/iron = 75) build_path = /obj/item/chisel - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/control name = "Blast Door Controller" id = "blast" - build_type = AUTOLATHE + build_type = PROTOLATHE | AWAY_LATHE | AUTOLATHE materials = list(/datum/material/iron = 100, /datum/material/glass = 50) build_path = /obj/item/assembly/control - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_ELECTRONICS + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/razor name = "Electric Razor" @@ -1336,8 +1880,11 @@ build_type = PROTOLATHE | AWAY_LATHE | AUTOLATHE materials = list(/datum/material/iron = 75) build_path = /obj/item/razor - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MEDICAL) - departmental_flags = DEPARTMENT_BITFLAG_SERVICE + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SECURITY /datum/design/paperroll name = "Hand Labeler Paper Roll" @@ -1345,7 +1892,11 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 50, /datum/material/glass = 25) build_path = /obj/item/hand_labeler_refill - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC, RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/toner name = "Toner Cartridge" @@ -1353,38 +1904,56 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 10, /datum/material/glass = 10) build_path = /obj/item/toner - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC, RND_CATEGORY_EQUIPMENT) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SERVICE + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/toner/large - name = "Large Toner Cartridge" + name = "Toner Cartridge (Large)" id = "toner_large" build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 35, /datum/material/glass = 35) build_path = /obj/item/toner/large - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC, RND_CATEGORY_EQUIPMENT) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SERVICE + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/solar name = "Solar Panel Frame" id = "solar_panel" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 3500, /datum/material/glass = 1000) build_path = /obj/item/solar_assembly - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_CONSTRUCTION) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MOUNTS + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/tracker_electronics name = "Solar Tracking Electronics" id = "solar_tracker" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 100, /datum/material/glass = 500) build_path = /obj/item/electronics/tracker - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_ELECTRONICS, RND_CATEGORY_CONSTRUCTION) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_ELECTRONICS + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/fishing_rod_basic name = "Fishing Rod" id = "fishing_rod" - build_type = AUTOLATHE | AWAY_LATHE + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 200, /datum/material/glass = 200) build_path = /obj/item/fishing_rod - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_MISC, RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE diff --git a/code/modules/research/designs/bluespace_designs.dm b/code/modules/research/designs/bluespace_designs.dm index a0dc5d3c6a7..9b6039234d6 100644 --- a/code/modules/research/designs/bluespace_designs.dm +++ b/code/modules/research/designs/bluespace_designs.dm @@ -10,7 +10,9 @@ build_type = PROTOLATHE materials = list(/datum/material/iron = 150, /datum/material/glass = 100) build_path = /obj/item/beacon - category = list(RND_CATEGORY_BLUESPACE_DESIGNS) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_BLUESPACE + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SECURITY /datum/design/bag_holding @@ -20,7 +22,9 @@ build_type = PROTOLATHE materials = list(/datum/material/gold = 3000, /datum/material/diamond = 1500, /datum/material/uranium = 250, /datum/material/bluespace = 2000) build_path = /obj/item/bag_of_holding_inert - category = list(RND_CATEGORY_BLUESPACE_DESIGNS) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SCIENCE + ) dangerous_construction = TRUE departmental_flags = DEPARTMENT_BITFLAG_SCIENCE @@ -31,7 +35,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/diamond = 1500, /datum/material/plasma = 1500) build_path = /obj/item/stack/ore/bluespace_crystal/artificial - category = list(RND_CATEGORY_BLUESPACE_DESIGNS) + category = list( + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/telesci_gps @@ -41,7 +47,9 @@ build_type = PROTOLATHE materials = list(/datum/material/iron = 500, /datum/material/glass = 1000) build_path = /obj/item/gps - category = list(RND_CATEGORY_BLUESPACE_DESIGNS) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_BLUESPACE + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO autolathe_exportable = FALSE @@ -52,7 +60,9 @@ build_type = PROTOLATHE materials = list(/datum/material/iron = 1000, /datum/material/glass = 500, /datum/material/silver = 1500, /datum/material/bluespace = 1000) build_path = /obj/item/desynchronizer - category = list(RND_CATEGORY_BLUESPACE_DESIGNS) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_BLUESPACE + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/miningsatchel_holding @@ -62,7 +72,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/gold = 250, /datum/material/uranium = 500) //quite cheap, for more convenience build_path = /obj/item/storage/bag/ore/holding - category = list(RND_CATEGORY_BLUESPACE_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MINING + ) departmental_flags = DEPARTMENT_BITFLAG_CARGO /datum/design/swapper @@ -72,5 +84,7 @@ build_type = PROTOLATHE materials = list(/datum/material/iron = 500, /datum/material/glass = 1000, /datum/material/bluespace = 2000, /datum/material/gold = 1500, /datum/material/silver = 1000) build_path = /obj/item/swapper - category = list(RND_CATEGORY_BLUESPACE_DESIGNS) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_BLUESPACE + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE diff --git a/code/modules/research/designs/comp_board_designs.dm b/code/modules/research/designs/comp_board_designs.dm index e704efcf22e..66d71c7fd56 100644 --- a/code/modules/research/designs/comp_board_designs.dm +++ b/code/modules/research/designs/comp_board_designs.dm @@ -1,317 +1,387 @@ ///////////////////Computer Boards/////////////////////////////////// /datum/design/board - name = "Computer Design ( NULL ENTRY )" + name = "NULL ENTRY Board" desc = "I promise this doesn't give you syndicate goodies!" build_type = IMPRINTER | AWAY_IMPRINTER materials = list(/datum/material/glass = 1000) /datum/design/board/arcade_battle - name = "Computer Design (Battle Arcade Machine)" + name = "Battle Arcade Machine Board" desc = "Allows for the construction of circuit boards used to build a new arcade machine." id = "arcade_battle" build_path = /obj/item/circuitboard/computer/arcade/battle - category = list(RND_CATEGORY_COMPUTER_BOARDS) - + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_ENTERTAINMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/board/orion_trail - name = "Computer Design (Orion Trail Arcade Machine)" + name = "Orion Trail Arcade Machine Board" desc = "Allows for the construction of circuit boards used to build a new Orion Trail machine." id = "arcade_orion" build_path = /obj/item/circuitboard/computer/arcade/orion_trail - category = list(RND_CATEGORY_COMPUTER_BOARDS) - + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_ENTERTAINMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/board/seccamera - name = "Computer Design (Security Camera)" + name = "Security Camera Board" desc = "Allows for the construction of circuit boards used to build security camera computers." id = "seccamera" build_path = /obj/item/circuitboard/computer/security - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_SECURITY + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/board/rdcamera - name = "Computer Design (Research Monitor)" + name = "Research Monitor Board" desc = "Allows for the construction of circuit boards used to build research camera computers." id = "rdcamera" build_path = /obj/item/circuitboard/computer/research - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_RESEARCH + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/xenobiocamera - name = "Computer Design (Xenobiology Console)" + name = "Xenobiology Console Board" desc = "Allows for the construction of circuit boards used to build xenobiology camera computers." id = "xenobioconsole" build_path = /obj/item/circuitboard/computer/xenobiology - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_RESEARCH + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/aiupload - name = "Computer Design (AI Upload)" + name = "AI Upload Board" desc = "Allows for the construction of circuit boards used to build an AI Upload Console." id = "aiupload" materials = list(/datum/material/glass = 1000, /datum/material/gold = 2000, /datum/material/diamond = 2000, /datum/material/bluespace = 2000) build_path = /obj/item/circuitboard/computer/aiupload - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_ROBOTICS + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/borgupload - name = "Computer Design (Cyborg Upload)" + name = "Cyborg Upload Board" desc = "Allows for the construction of circuit boards used to build a Cyborg Upload Console." id = "borgupload" materials = list(/datum/material/glass = 1000, /datum/material/gold = 2000, /datum/material/diamond = 2000, /datum/material/bluespace = 2000) build_path = /obj/item/circuitboard/computer/borgupload - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_ROBOTICS + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/med_data - name = "Computer Design (Medical Records)" + name = "Medical Records Board" desc = "Allows for the construction of circuit boards used to build a medical records console." id = "med_data" build_path = /obj/item/circuitboard/computer/med_data - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_MEDICAL + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/board/operating - name = "Computer Design (Operating Computer)" + name = "Operating Computer Board" desc = "Allows for the construction of circuit boards used to build an operating computer console." id = "operating" build_path = /obj/item/circuitboard/computer/operating - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_MEDICAL + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/pandemic - name = "Computer Design (PanD.E.M.I.C. 2200)" + name = "PanD.E.M.I.C. 2200 Board" desc = "Allows for the construction of circuit boards used to build a PanD.E.M.I.C. 2200 console." id = "pandemic" build_path = /obj/item/circuitboard/computer/pandemic - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_MEDICAL + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL -/datum/design/board/scan_console - name = "Computer Design (DNA Console)" - desc = "Allows for the construction of circuit boards used to build a new DNA console." - id = "scan_console" - build_path = /obj/item/circuitboard/computer/scan_consolenew - category = list(RND_CATEGORY_COMPUTER_BOARDS) - departmental_flags = DEPARTMENT_BITFLAG_SCIENCE - /datum/design/board/comconsole - name = "Computer Design (Communications)" + name = "Communications Board" desc = "Allows for the construction of circuit boards used to build a communications console." id = "comconsole" build_path = /obj/item/circuitboard/computer/communications - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_COMMAND + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SECURITY //Honestly should have a bridge techfab for this sometime. /datum/design/board/crewconsole - name = "Computer Design (Crew monitoring computer)" + name = "Crew Monitoring Computer Board" desc = "Allows for the construction of circuit boards used to build a Crew monitoring computer." id = "crewconsole" build_type = IMPRINTER build_path = /obj/item/circuitboard/computer/crew - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_MEDICAL + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_MEDICAL /datum/design/board/secdata - name = "Computer Design (Security Records Console)" + name = "Security Records Console Board" desc = "Allows for the construction of circuit boards used to build a security records console." id = "secdata" build_path = /obj/item/circuitboard/computer/secure_data - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_SECURITY + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/board/atmosalerts - name = "Computer Design (Atmosphere Alert)" + name = "Atmosphere Alert Board" desc = "Allows for the construction of circuit boards used to build an atmosphere alert console." id = "atmosalerts" build_path = /obj/item/circuitboard/computer/atmos_alert - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/atmos_control - name = "Computer Design (Atmospheric Monitor)" + name = "Atmospheric Monitor Board" desc = "Allows for the construction of circuit boards used to build an Atmospheric Monitor." id = "atmos_control" build_path = /obj/item/circuitboard/computer/atmos_control - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/robocontrol - name = "Computer Design (Robotics Control Console)" + name = "Robotics Control Console Board" desc = "Allows for the construction of circuit boards used to build a Robotics Control console." id = "robocontrol" materials = list(/datum/material/glass = 1000, /datum/material/gold = 1000, /datum/material/silver = 1000, /datum/material/bluespace = 2000) build_path = /obj/item/circuitboard/computer/robotics - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_ROBOTICS + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/slot_machine - name = "Computer Design (Slot Machine)" + name = "Slot Machine Board" desc = "Allows for the construction of circuit boards used to build a new slot machine." id = "slotmachine" build_path = /obj/item/circuitboard/computer/slot_machine - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_ENTERTAINMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/board/powermonitor - name = "Computer Design (Power Monitor)" + name = "Power Monitor Board" desc = "Allows for the construction of circuit boards used to build a new power monitor." id = "powermonitor" build_path = /obj/item/circuitboard/computer/powermonitor - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/solarcontrol - name = "Computer Design (Solar Control)" + name = "Solar Control Board" desc = "Allows for the construction of circuit boards used to build a solar control console." id = "solarcontrol" build_path = /obj/item/circuitboard/computer/solar_control - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/prisonmanage - name = "Computer Design (Prisoner Management Console)" + name = "Prisoner Management Console Board" desc = "Allows for the construction of circuit boards used to build a prisoner management console." id = "prisonmanage" build_path = /obj/item/circuitboard/computer/prisoner - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_SECURITY + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/board/mechacontrol - name = "Computer Design (Exosuit Control Console)" + name = "Exosuit Control Console Board" desc = "Allows for the construction of circuit boards used to build an exosuit control console." id = "mechacontrol" build_path = /obj/item/circuitboard/computer/mecha_control - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_ROBOTICS + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/mechapower - name = "Computer Design (Mech Bay Power Control Console)" + name = "Mech Bay Power Control Console Board" desc = "Allows for the construction of circuit boards used to build a mech bay power control console." id = "mechapower" build_path = /obj/item/circuitboard/computer/mech_bay_power_console - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_ROBOTICS + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/rdconsole - name = "Computer Design (R&D Console)" + name = "R&D Console Board" desc = "Allows for the construction of circuit boards used to build a new R&D console." id = "rdconsole" build_path = /obj/item/circuitboard/computer/rdconsole - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_RESEARCH + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/cargo - name = "Computer Design (Supply Console)" + name = "Supply Console Board" desc = "Allows for the construction of circuit boards used to build a Supply Console." id = "cargo" build_type = IMPRINTER build_path = /obj/item/circuitboard/computer/cargo - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_CARGO + ) departmental_flags = DEPARTMENT_BITFLAG_CARGO /datum/design/board/cargorequest - name = "Computer Design (Supply Request Console)" + name = "Supply Request Console Board" desc = "Allows for the construction of circuit boards used to build a Supply Request Console." id = "cargorequest" build_type = IMPRINTER build_path = /obj/item/circuitboard/computer/cargo/request - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_CARGO + ) departmental_flags = DEPARTMENT_BITFLAG_CARGO /datum/design/board/mining - name = "Computer Design (Outpost Status Display)" + name = "Outpost Status Display Board" desc = "Allows for the construction of circuit boards used to build an outpost status display console." id = "mining" build_path = /obj/item/circuitboard/computer/mining - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_CARGO + ) departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SECURITY /datum/design/board/comm_monitor - name = "Computer Design (Telecommunications Monitoring Console)" + name = "Telecommunications Monitoring Console Board" desc = "Allows for the construction of circuit boards used to build a telecommunications monitor." id = "comm_monitor" build_path = /obj/item/circuitboard/computer/comm_monitor - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/comm_server - name = "Computer Design (Telecommunications Server Monitoring Console)" + name = "Telecommunications Server Monitoring Console Board" desc = "Allows for the construction of circuit boards used to build a telecommunication server browser and monitor." id = "comm_server" build_path = /obj/item/circuitboard/computer/comm_server - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/message_monitor - name = "Computer Design (Messaging Monitor Console)" + name = "Messaging Monitor Console Board" desc = "Allows for the construction of circuit boards used to build a messaging monitor console." id = "message_monitor" build_path = /obj/item/circuitboard/computer/message_monitor - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/aifixer - name = "Computer Design (AI Integrity Restorer)" + name = "AI Integrity Restorer Board" desc = "Allows for the construction of circuit boards used to build an AI Integrity Restorer." id = "aifixer" build_path = /obj/item/circuitboard/computer/aifixer - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_ROBOTICS + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/libraryconsole - name = "Computer Design (Library Console)" + name = "Library Console Board" desc = "Allows for the construction of circuit boards used to build a new library console." id = "libraryconsole" build_path = /obj/item/circuitboard/computer/libraryconsole - category = list(RND_CATEGORY_COMPUTER_BOARDS) - + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_ENTERTAINMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/board/apc_control - name = "Computer Design (APC Control)" + name = "APC Control Board" desc = "Allows for the construction of circuit boards used to build a new APC control console." id = "apc_control" build_path = /obj/item/circuitboard/computer/apc_control - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/advanced_camera - name = "Computer Design (Advanced Camera Console)" + name = "Advanced Camera Console Board" desc = "Allows for the construction of circuit boards used to build advanced camera consoles." id = "advanced_camera" build_path = /obj/item/circuitboard/computer/advanced_camera - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_SECURITY + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/board/bountypad_control - name = "Computer Design (Civilian Bounty Pad Control)" + name = "Civilian Bounty Pad Control Board" desc = "Allows for the construction of circuit boards used to build a new civilian bounty pad console." id = "bounty_pad_control" build_path = /obj/item/circuitboard/computer/bountypad - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_CARGO + ) + departmental_flags = DEPARTMENT_BITFLAG_CARGO /datum/design/board/exoscanner_console - name = "Computer Design (Scanner Array Control Console)" + name = "Scanner Array Control Console Board" desc = "Allows for the construction of circuit boards used to build a new scanner array control console." id = "exoscanner_console" build_type = IMPRINTER build_path = /obj/item/circuitboard/computer/exoscanner_console - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_RESEARCH + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/exodrone_console - name = "Computer Design (Exploration Drone Control Console)" + name = "Exploration Drone Control Console Board" desc = "Allows for the construction of circuit boards used to build a new exploration drone control console." id = "exodrone_console" build_type = IMPRINTER build_path = /obj/item/circuitboard/computer/exodrone_console - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_RESEARCH + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/accounting_console - name = "Computer Design (Account Lookup Console)" + name = "Account Lookup Console Board" desc = "Allows for the construction of circuit boards used to assess the wealth of crewmates on station." id = "account_console" build_type = IMPRINTER build_path = /obj/item/circuitboard/computer/accounting - category = list(RND_CATEGORY_COMPUTER_BOARDS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_SECURITY + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY diff --git a/code/modules/research/designs/computer_part_designs.dm b/code/modules/research/designs/computer_part_designs.dm index a78fce3ed90..4bb3b219e45 100644 --- a/code/modules/research/designs/computer_part_designs.dm +++ b/code/modules/research/designs/computer_part_designs.dm @@ -8,7 +8,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 400, /datum/material/glass = 100) build_path = /obj/item/computer_hardware/hard_drive - category = list(RND_CATEGORY_COMPUTER_PARTS) + category = list( + RND_CATEGORY_MODULAR_COMPUTERS + RND_SUBCATEGORY_MODULAR_COMPUTERS_PARTS + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/disk/advanced @@ -17,7 +19,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 800, /datum/material/glass = 200) build_path = /obj/item/computer_hardware/hard_drive/advanced - category = list(RND_CATEGORY_COMPUTER_PARTS) + category = list( + RND_CATEGORY_MODULAR_COMPUTERS + RND_SUBCATEGORY_MODULAR_COMPUTERS_PARTS + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/disk/super @@ -26,7 +30,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 1600, /datum/material/glass = 400) build_path = /obj/item/computer_hardware/hard_drive/super - category = list(RND_CATEGORY_COMPUTER_PARTS) + category = list( + RND_CATEGORY_MODULAR_COMPUTERS + RND_SUBCATEGORY_MODULAR_COMPUTERS_PARTS + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/disk/cluster @@ -35,7 +41,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 3200, /datum/material/glass = 800) build_path = /obj/item/computer_hardware/hard_drive/cluster - category = list(RND_CATEGORY_COMPUTER_PARTS) + category = list( + RND_CATEGORY_MODULAR_COMPUTERS + RND_SUBCATEGORY_MODULAR_COMPUTERS_PARTS + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/disk/small @@ -44,7 +52,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 800, /datum/material/glass = 200) build_path = /obj/item/computer_hardware/hard_drive/small - category = list(RND_CATEGORY_COMPUTER_PARTS) + category = list( + RND_CATEGORY_MODULAR_COMPUTERS + RND_SUBCATEGORY_MODULAR_COMPUTERS_PARTS + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/disk/micro @@ -53,7 +63,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 400, /datum/material/glass = 100) build_path = /obj/item/computer_hardware/hard_drive/micro - category = list(RND_CATEGORY_COMPUTER_PARTS) + category = list( + RND_CATEGORY_MODULAR_COMPUTERS + RND_SUBCATEGORY_MODULAR_COMPUTERS_PARTS + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING // Data disks @@ -63,7 +75,9 @@ build_type = IMPRINTER | AWAY_IMPRINTER materials = list(/datum/material/glass = 800) build_path = /obj/item/computer_hardware/hard_drive/portable - category = list(RND_CATEGORY_COMPUTER_PARTS) + category = list( + RND_CATEGORY_MODULAR_COMPUTERS + RND_SUBCATEGORY_MODULAR_COMPUTERS_PARTS + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/portabledrive/advanced @@ -72,7 +86,9 @@ build_type = IMPRINTER | AWAY_IMPRINTER materials = list(/datum/material/glass = 1600) build_path = /obj/item/computer_hardware/hard_drive/portable/advanced - category = list(RND_CATEGORY_COMPUTER_PARTS) + category = list( + RND_CATEGORY_MODULAR_COMPUTERS + RND_SUBCATEGORY_MODULAR_COMPUTERS_PARTS + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/portabledrive/super @@ -81,7 +97,9 @@ build_type = IMPRINTER | AWAY_IMPRINTER materials = list(/datum/material/glass = 3200) build_path = /obj/item/computer_hardware/hard_drive/portable/super - category = list(RND_CATEGORY_COMPUTER_PARTS) + category = list( + RND_CATEGORY_MODULAR_COMPUTERS + RND_SUBCATEGORY_MODULAR_COMPUTERS_PARTS + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING // Card slot @@ -91,7 +109,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 600) build_path = /obj/item/computer_hardware/card_slot - category = list(RND_CATEGORY_COMPUTER_PARTS) + category = list( + RND_CATEGORY_MODULAR_COMPUTERS + RND_SUBCATEGORY_MODULAR_COMPUTERS_PARTS + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING // Batteries @@ -101,7 +121,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 400) build_path = /obj/item/computer_hardware/battery - category = list(RND_CATEGORY_COMPUTER_PARTS) + category = list( + RND_CATEGORY_MODULAR_COMPUTERS + RND_SUBCATEGORY_MODULAR_COMPUTERS_PARTS + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/battery/normal @@ -110,7 +132,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 400) build_path = /obj/item/stock_parts/cell/computer - category = list(RND_CATEGORY_COMPUTER_PARTS) + category = list( + RND_CATEGORY_MODULAR_COMPUTERS + RND_SUBCATEGORY_MODULAR_COMPUTERS_PARTS + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/battery/advanced @@ -119,7 +143,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 800) build_path = /obj/item/stock_parts/cell/computer/advanced - category = list(RND_CATEGORY_COMPUTER_PARTS) + category = list( + RND_CATEGORY_MODULAR_COMPUTERS + RND_SUBCATEGORY_MODULAR_COMPUTERS_PARTS + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/battery/super @@ -128,7 +154,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 1600) build_path = /obj/item/stock_parts/cell/computer/super - category = list(RND_CATEGORY_COMPUTER_PARTS) + category = list( + RND_CATEGORY_MODULAR_COMPUTERS + RND_SUBCATEGORY_MODULAR_COMPUTERS_PARTS + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/battery/nano @@ -137,7 +165,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 200) build_path = /obj/item/stock_parts/cell/computer/nano - category = list(RND_CATEGORY_COMPUTER_PARTS) + category = list( + RND_CATEGORY_MODULAR_COMPUTERS + RND_SUBCATEGORY_MODULAR_COMPUTERS_PARTS + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/battery/micro @@ -146,5 +176,7 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 400) build_path = /obj/item/stock_parts/cell/computer/micro - category = list(RND_CATEGORY_COMPUTER_PARTS) + category = list( + RND_CATEGORY_MODULAR_COMPUTERS + RND_SUBCATEGORY_MODULAR_COMPUTERS_PARTS + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING diff --git a/code/modules/research/designs/electronics_designs.dm b/code/modules/research/designs/electronics_designs.dm index 8ba72550f7c..63373d58d13 100644 --- a/code/modules/research/designs/electronics_designs.dm +++ b/code/modules/research/designs/electronics_designs.dm @@ -10,7 +10,7 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/glass = 1000, /datum/material/gold = 200) build_path = /obj/item/aicard - category = list(RND_CATEGORY_ELECTRONICS) + category = list(RND_CATEGORY_AI) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/paicard @@ -20,8 +20,8 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/glass = 500, /datum/material/iron = 500) build_path = /obj/item/pai_card - category = list(RND_CATEGORY_ELECTRONICS) - + category = list(RND_CATEGORY_AI) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE /datum/design/ai_cam_upgrade name = "AI Surveillance Software Update" @@ -30,7 +30,7 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 5000, /datum/material/glass = 5000, /datum/material/gold = 15000, /datum/material/silver = 15000, /datum/material/diamond = 20000, /datum/material/plasma = 10000) build_path = /obj/item/surveillance_upgrade - category = list(RND_CATEGORY_ELECTRONICS) + category = list(RND_CATEGORY_AI) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE //////////////////////////////////////// @@ -43,7 +43,9 @@ build_type = PROTOLATHE | AWAY_LATHE | AUTOLATHE materials = list(/datum/material/iron = 300, /datum/material/glass = 100) build_path = /obj/item/disk/design_disk - category = list(RND_CATEGORY_ELECTRONICS) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SCIENCE + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/design_disk_adv @@ -53,7 +55,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 300, /datum/material/glass = 100, /datum/material/silver=50) build_path = /obj/item/disk/design_disk/adv - category = list(RND_CATEGORY_ELECTRONICS) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SCIENCE + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/tech_disk @@ -63,5 +67,7 @@ build_type = PROTOLATHE | AWAY_LATHE | AUTOLATHE materials = list(/datum/material/iron = 300, /datum/material/glass = 100) build_path = /obj/item/disk/tech_disk - category = list(RND_CATEGORY_ELECTRONICS) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SCIENCE + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE diff --git a/code/modules/research/designs/experisci_designs.dm b/code/modules/research/designs/experisci_designs.dm index 5f4d815b0ed..5c1b6796f25 100644 --- a/code/modules/research/designs/experisci_designs.dm +++ b/code/modules/research/designs/experisci_designs.dm @@ -5,5 +5,7 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/glass = 500, /datum/material/iron = 500) build_path = /obj/item/experi_scanner - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SCIENCE + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE diff --git a/code/modules/research/designs/limbgrower_designs.dm b/code/modules/research/designs/limbgrower_designs.dm index 2a6cfee1c5b..4c8f793d028 100644 --- a/code/modules/research/designs/limbgrower_designs.dm +++ b/code/modules/research/designs/limbgrower_designs.dm @@ -24,7 +24,7 @@ build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 25) build_path = /obj/item/bodypart/l_leg - category = list(RND_CATEGORY_INITIAL, SPECIES_HUMAN, SPECIES_LIZARD, SPECIES_MOTH, SPECIES_PLASMAMAN, SPECIES_ETHEREAL, RND_CATEGORY_DIGITIGRADE) + category = list(RND_CATEGORY_INITIAL, SPECIES_HUMAN, SPECIES_LIZARD, SPECIES_MOTH, SPECIES_PLASMAMAN, SPECIES_ETHEREAL, RND_CATEGORY_LIMBS_DIGITIGRADE) /datum/design/rightleg name = "Right Leg" @@ -32,7 +32,7 @@ build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 25) build_path = /obj/item/bodypart/r_leg - category = list(RND_CATEGORY_INITIAL, SPECIES_HUMAN, SPECIES_LIZARD, SPECIES_MOTH, SPECIES_PLASMAMAN, SPECIES_ETHEREAL, RND_CATEGORY_DIGITIGRADE) + category = list(RND_CATEGORY_INITIAL, SPECIES_HUMAN, SPECIES_LIZARD, SPECIES_MOTH, SPECIES_PLASMAMAN, SPECIES_ETHEREAL, RND_CATEGORY_LIMBS_DIGITIGRADE) //Non-limb limb designs @@ -123,7 +123,7 @@ build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 20) build_path = /obj/item/organ/external/tail/monkey - category = list(RND_CATEGORY_OTHER, RND_CATEGORY_INITIAL) + category = list(RND_CATEGORY_LIMBS_OTHER, RND_CATEGORY_INITIAL) /datum/design/cat_tail name = "Cat Tail" @@ -212,7 +212,7 @@ build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 75) build_path = /obj/item/melee/synthetic_arm_blade - category = list(RND_CATEGORY_OTHER, RND_CATEGORY_EMAGGED) + category = list(RND_CATEGORY_LIMBS_OTHER, RND_CATEGORY_EMAGGED) /// Design disks and designs - for adding limbs and organs to the limbgrower. /obj/item/disk/design_disk/limbs @@ -236,7 +236,9 @@ build_type = PROTOLATHE materials = list(/datum/material/iron = 300, /datum/material/glass = 100) build_path = /obj/item/disk/design_disk/limbs - category = list(RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MEDICAL + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /obj/item/disk/design_disk/limbs/felinid diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index 09f12431500..c92cbace80e 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -2,789 +2,997 @@ //////////////MISC Boards/////////////// //////////////////////////////////////// /datum/design/board/electrolyzer - name = "Machine Design (Electrolyzer Board)" + name = "Electrolyzer Board" desc = "The circuit board for an electrolyzer." id = "electrolyzer" build_path = /obj/item/circuitboard/machine/electrolyzer - category = list (RND_CATEGORY_ENGINEERING_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ATMOS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/smes - name = "Machine Design (SMES Board)" + name = "SMES Board" desc = "The circuit board for a SMES." id = "smes" build_path = /obj/item/circuitboard/machine/smes - category = list (RND_CATEGORY_ENGINEERING_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/announcement_system - name = "Machine Design (Automated Announcement System Board)" + name = "Automated Announcement System Board" desc = "The circuit board for an automated announcement system." id = "automated_announcement" build_path = /obj/item/circuitboard/machine/announcement_system - category = list(RND_CATEGORY_SUBSPACE_TELECOMMS) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELECOMMS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/turbine_computer - name = "Computer Design (Power Turbine Console Board)" - desc = "The circuit board for a power turbine console." + name = "Turbine Power Console Board" + desc = "The circuit board for a turbine power console." id = "power_turbine_console" build_path = /obj/item/circuitboard/computer/turbine_computer - category = list (RND_CATEGORY_ENGINEERING_MACHINERY) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ATMOS + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/emitter - name = "Machine Design (Emitter Board)" + name = "Emitter Board" desc = "The circuit board for an emitter." id = "emitter" build_path = /obj/item/circuitboard/machine/emitter - category = list (RND_CATEGORY_ENGINEERING_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/turbine_compressor - name = "Machine Design (Turbine Compressor Board)" + name = "Turbine Compressor Board" desc = "The circuit board for a turbine compressor." id = "turbine_compressor" build_path = /obj/item/circuitboard/machine/turbine_compressor - category = list (RND_CATEGORY_ENGINEERING_MACHINERY) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ATMOS + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/turbine_rotor - name = "Machine Design (Turbine Rotor Board)" + name = "Turbine Rotor Board" desc = "The circuit board for a turbine rotor." id = "turbine_rotor" build_path = /obj/item/circuitboard/machine/turbine_rotor - category = list (RND_CATEGORY_ENGINEERING_MACHINERY) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ATMOS + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/turbine_stator - name = "Machine Design (Turbine Stator Board)" + name = "Turbine Stator Board" desc = "The circuit board for a turbine stator." id = "turbine_stator" build_path = /obj/item/circuitboard/machine/turbine_stator - category = list (RND_CATEGORY_ENGINEERING_MACHINERY) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ATMOS + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/thermomachine - name = "Machine Design (Thermomachine Board)" + name = "Thermomachine Board" desc = "The circuit board for a thermomachine." id = "thermomachine" build_path = /obj/item/circuitboard/machine/thermomachine - category = list (RND_CATEGORY_ENGINEERING_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ATMOS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/space_heater - name = "Machine Design (Space Heater Board)" + name = "Space Heater Board" desc = "The circuit board for a space heater." id = "space_heater" build_path = /obj/item/circuitboard/machine/space_heater - category = list (RND_CATEGORY_ENGINEERING_MACHINERY) - departmental_flags = ALL + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ATMOS + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/teleport_station - name = "Machine Design (Teleportation Station Board)" + name = "Teleportation Station Board" desc = "The circuit board for a teleportation station." id = "tele_station" build_type = IMPRINTER build_path = /obj/item/circuitboard/machine/teleporter_station - category = list (RND_CATEGORY_TELEPORTATION_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELEPORT + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/teleport_hub - name = "Machine Design (Teleportation Hub Board)" + name = "Teleportation Hub Board" desc = "The circuit board for a teleportation hub." id = "tele_hub" build_type = IMPRINTER build_path = /obj/item/circuitboard/machine/teleporter_hub - category = list (RND_CATEGORY_TELEPORTATION_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELEPORT + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/quantumpad - name = "Machine Design (Quantum Pad Board)" + name = "Quantum Pad Board" desc = "The circuit board for a quantum telepad." id = "quantumpad" build_type = IMPRINTER build_path = /obj/item/circuitboard/machine/quantumpad - category = list (RND_CATEGORY_TELEPORTATION_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELEPORT + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/launchpad - name = "Machine Design (Bluespace Launchpad Board)" + name = "Bluespace Launchpad Board" desc = "The circuit board for a bluespace Launchpad." id = "launchpad" build_type = IMPRINTER build_path = /obj/item/circuitboard/machine/launchpad - category = list (RND_CATEGORY_TELEPORTATION_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELEPORT + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/launchpad_console - name = "Machine Design (Bluespace Launchpad Console Board)" + name = "Bluespace Launchpad Console Board" desc = "The circuit board for a bluespace launchpad Console." id = "launchpad_console" build_type = IMPRINTER build_path = /obj/item/circuitboard/computer/launchpad_console - category = list (RND_CATEGORY_TELEPORTATION_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELEPORT + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/teleconsole - name = "Computer Design (Teleporter Console)" + name = "Teleporter Console Board" desc = "Allows for the construction of circuit boards used to build a teleporter control console." id = "teleconsole" build_type = IMPRINTER build_path = /obj/item/circuitboard/computer/teleporter - category = list(RND_CATEGORY_TELEPORTATION_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELEPORT + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/cryotube - name = "Machine Design (Cryotube Board)" + name = "Cryotube Board" desc = "The circuit board for a cryotube." id = "cryotube" build_path = /obj/item/circuitboard/machine/cryo_tube + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_MEDICAL + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_MEDICAL - category = list (RND_CATEGORY_MEDICAL_MACHINERY) /datum/design/board/chem_dispenser - name = "Machine Design (Portable Chem Dispenser Board)" + name = "Portable Chem Dispenser Board" desc = "The circuit board for a portable chem dispenser." id = "chem_dispenser" build_path = /obj/item/circuitboard/machine/chem_dispenser + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_CHEMISTRY + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_MEDICAL - category = list (RND_CATEGORY_MEDICAL_MACHINERY) /datum/design/board/chem_master - name = "Machine Design (Chem Master Board)" + name = "Chem Master Board" desc = "The circuit board for a Chem Master 3000." id = "chem_master" - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_MEDICAL build_path = /obj/item/circuitboard/machine/chem_master - category = list (RND_CATEGORY_MEDICAL_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_CHEMISTRY + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_MEDICAL /datum/design/board/chem_heater - name = "Machine Design (Chemical Heater Board)" + name = "Chemical Heater Board" desc = "The circuit board for a chemical heater." id = "chem_heater" - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_MEDICAL build_path = /obj/item/circuitboard/machine/chem_heater - category = list (RND_CATEGORY_MEDICAL_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_CHEMISTRY + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_MEDICAL /datum/design/board/chem_mass_spec - name = "Machine Design (High-Performance Liquid Chromatography)" - desc = "The circuit board for a High-Performance Liquid Chromatography (Machine Board)" + name = "High-Performance Liquid Chromatography Board" + desc = "The circuit board for a High-Performance Liquid Chromatography (Machine Board" id = "chem_mass_spec" - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_MEDICAL build_path = /obj/item/circuitboard/machine/chem_mass_spec - category = list (RND_CATEGORY_MEDICAL_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_CHEMISTRY + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_MEDICAL /datum/design/board/smoke_machine - name = "Machine Design (Smoke Machine)" + name = "Smoke Machine Board" desc = "The circuit board for a smoke machine." id = "smoke_machine" build_path = /obj/item/circuitboard/machine/smoke_machine - category = list (RND_CATEGORY_MEDICAL_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_CHEMISTRY + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/board/reagentgrinder - name = "Machine Design (All-In-One Grinder)" + name = "All-In-One Grinder Board" desc = "The circuit board for an All-In-One Grinder." id = "reagentgrinder" build_path = /obj/item/circuitboard/machine/reagentgrinder - category = list (RND_CATEGORY_MEDICAL_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_CHEMISTRY + ) + category = list(RND_CATEGORY_MACHINE) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SERVICE /datum/design/board/hypnochair - name = "Machine Design (Enhanced Interrogation Chamber)" + name = "Enhanced Interrogation Chamber Board" desc = "Allows for the construction of circuit boards used to build an Enhanced Interrogation Chamber." id = "hypnochair" - departmental_flags = DEPARTMENT_BITFLAG_SECURITY build_path = /obj/item/circuitboard/machine/hypnochair - category = list(RND_CATEGORY_MISC_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_SECURITY + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/board/biogenerator - name = "Machine Design (Biogenerator Board)" + name = "Biogenerator Board" desc = "The circuit board for a biogenerator." id = "biogenerator" build_path = /obj/item/circuitboard/machine/biogenerator - category = list(RND_CATEGORY_HYDROPONICS_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_BOTANY + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/board/hydroponics - name = "Machine Design (Hydroponics Tray Board)" + name = "Hydroponics Tray Board" desc = "The circuit board for a hydroponics tray." id = "hydro_tray" build_path = /obj/item/circuitboard/machine/hydroponics - category = list(RND_CATEGORY_HYDROPONICS_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_BOTANY + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/board/destructive_analyzer - name = "Machine Design (Destructive Analyzer Board)" + name = "Destructive Analyzer Board" desc = "The circuit board for a destructive analyzer." id = "destructive_analyzer" build_path = /obj/item/circuitboard/machine/destructive_analyzer - category = list(RND_CATEGORY_RESEARCH_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_RESEARCH + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/experimentor - name = "Machine Design (E.X.P.E.R.I-MENTOR Board)" + name = "E.X.P.E.R.I-MENTOR Board" desc = "The circuit board for an E.X.P.E.R.I-MENTOR." id = "experimentor" build_path = /obj/item/circuitboard/machine/experimentor - category = list(RND_CATEGORY_RESEARCH_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_RESEARCH + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/bepis - name = "Machine Design (B.E.P.I.S. Board)" + name = "B.E.P.I.S. Board" desc = "The circuit board for a B.E.P.I.S." id = "bepis" build_path = /obj/item/circuitboard/machine/bepis - category = list(RND_CATEGORY_RESEARCH_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_RESEARCH + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO /datum/design/board/protolathe - name = "Machine Design (Protolathe Board)" + name = "Protolathe Board" desc = "The circuit board for a protolathe." id = "protolathe" build_type = IMPRINTER build_path = /obj/item/circuitboard/machine/protolathe - category = list(RND_CATEGORY_RESEARCH_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_FAB + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/protolathe/offstation - name = "Machine Design (Ancient Protolathe Board)" + name = "Ancient Protolathe Board" desc = "The circuit board for an ancient protolathe." id = "protolathe_offstation" build_type = AWAY_IMPRINTER build_path = /obj/item/circuitboard/machine/protolathe/offstation - category = list(RND_CATEGORY_RESEARCH_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_FAB + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/circuit_imprinter - name = "Machine Design (Circuit Imprinter Board)" + name = "Circuit Imprinter Board" desc = "The circuit board for a circuit imprinter." id = "circuit_imprinter" build_type = IMPRINTER build_path = /obj/item/circuitboard/machine/circuit_imprinter - category = list(RND_CATEGORY_RESEARCH_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_FAB + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/circuit_imprinter/offstation - name = "Machine Design (Ancient Circuit Imprinter Board)" + name = "Ancient Circuit Imprinter Board" desc = "The circuit board for an ancient circuit imprinter." id = "circuit_imprinter_offstation" build_type = AWAY_IMPRINTER build_path = /obj/item/circuitboard/machine/circuit_imprinter/offstation - category = list(RND_CATEGORY_RESEARCH_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_FAB + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/rdservercontrol - name = "Computer Design (R&D Server Control Console Board)" + name = "R&D Server Control Console Board" desc = "The circuit board for an R&D Server Control Console." id = "rdservercontrol" build_path = /obj/item/circuitboard/computer/rdservercontrol - category = list(RND_CATEGORY_RESEARCH_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_RESEARCH + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/rdserver - name = "Machine Design (R&D Server Board)" + name = "R&D Server Board" desc = "The circuit board for an R&D Server." id = "rdserver" build_path = /obj/item/circuitboard/machine/rdserver - category = list(RND_CATEGORY_RESEARCH_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_RESEARCH + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/mechfab - name = "Machine Design (Exosuit Fabricator Board)" + name = "Exosuit Fabricator Board" desc = "The circuit board for an Exosuit Fabricator." id = "mechfab" build_path = /obj/item/circuitboard/machine/mechfab - category = list(RND_CATEGORY_RESEARCH_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ROBOTICS + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/cyborgrecharger - name = "Machine Design (Cyborg Recharger Board)" + name = "Cyborg Recharger Board" desc = "The circuit board for a Cyborg Recharger." id = "cyborgrecharger" build_path = /obj/item/circuitboard/machine/cyborgrecharger - category = list(RND_CATEGORY_RESEARCH_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ROBOTICS + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/mech_recharger - name = "Machine Design (Mechbay Recharger Board)" + name = "Mechbay Recharger Board" desc = "The circuit board for a Mechbay Recharger." id = "mech_recharger" build_path = /obj/item/circuitboard/machine/mech_recharger - category = list(RND_CATEGORY_RESEARCH_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ROBOTICS + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/dnascanner - name = "Machine Design (DNA Scanner)" + name = "DNA Scanner Board" desc = "The circuit board for a DNA Scanner." id = "dnascanner" - departmental_flags = DEPARTMENT_BITFLAG_SCIENCE build_path = /obj/item/circuitboard/machine/dnascanner - category = list(RND_CATEGORY_RESEARCH_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_GENETICS + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE + +/datum/design/board/scan_console + name = "DNA Console Board" + desc = "Allows for the construction of circuit boards used to build a new DNA console." + id = "scan_console" + build_path = /obj/item/circuitboard/computer/scan_consolenew + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_GENETICS + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/destructive_scanner - name = "Machine Design (Destructive Scanner Board)" + name = "Destructive Scanner Board" desc = "The circuit board for an experimental destructive scanner." id = "destructive_scanner" build_path = /obj/item/circuitboard/machine/destructive_scanner - category = list(RND_CATEGORY_RESEARCH_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_RESEARCH + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/doppler_array - name = "Machine Design (Tachyon-Doppler Research Array Board)" + name = "Tachyon-Doppler Research Array Board" desc = "The circuit board for a tachyon-doppler research array" id = "doppler_array" build_path = /obj/item/circuitboard/machine/doppler_array - category = list(RND_CATEGORY_RESEARCH_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_RESEARCH + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/anomaly_refinery - name = "Machine Design (Anomaly Refinery Board)" + name = "Anomaly Refinery Board" desc = "The circuit board for an anomaly refinery" id = "anomaly_refinery" build_path = /obj/item/circuitboard/machine/anomaly_refinery - category = list(RND_CATEGORY_RESEARCH_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_RESEARCH + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/tank_compressor - name = "Machine Design (Tank Compressor Board)" + name = "Tank Compressor Board" desc = "The circuit board for a tank compressor" id = "tank_compressor" build_path = /obj/item/circuitboard/machine/tank_compressor - category = list(RND_CATEGORY_RESEARCH_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_RESEARCH + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/microwave - name = "Machine Design (Microwave Board)" + name = "Microwave Board" desc = "The circuit board for a microwave." id = "microwave" build_path = /obj/item/circuitboard/machine/microwave - category = list (RND_CATEGORY_MISC_MACHINERY) - + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_KITCHEN + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/board/gibber - name = "Machine Design (Gibber Board)" + name = "Gibber Board" desc = "The circuit board for a gibber." id = "gibber" build_path = /obj/item/circuitboard/machine/gibber - category = list (RND_CATEGORY_MISC_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_KITCHEN + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/board/smartfridge - name = "Machine Design (Smartfridge Board)" + name = "Smartfridge Board" desc = "The circuit board for a smartfridge." id = "smartfridge" build_path = /obj/item/circuitboard/machine/smartfridge - category = list (RND_CATEGORY_MISC_MACHINERY) - + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_KITCHEN + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/board/monkey_recycler - name = "Machine Design (Monkey Recycler Board)" + name = "Monkey Recycler Board" desc = "The circuit board for a monkey recycler." id = "monkey_recycler" build_path = /obj/item/circuitboard/machine/monkey_recycler - category = list (RND_CATEGORY_MISC_MACHINERY) - departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_RESEARCH + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/seed_extractor - name = "Machine Design (Seed Extractor Board)" + name = "Seed Extractor Board" desc = "The circuit board for a seed extractor." id = "seed_extractor" build_path = /obj/item/circuitboard/machine/seed_extractor - category = list(RND_CATEGORY_HYDROPONICS_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_BOTANY + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/board/processor - name = "Machine Design (Food/Slime Processor Board)" + name = "Food/Slime Processor Board" desc = "The circuit board for a processing unit. Screwdriver the circuit to switch between food (default) or slime processing." id = "processor" build_path = /obj/item/circuitboard/machine/processor - category = list(RND_CATEGORY_MISC_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_KITCHEN + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE /datum/design/board/soda_dispenser - name = "Machine Design (Portable Soda Dispenser Board)" + name = "Portable Soda Dispenser Board" desc = "The circuit board for a portable soda dispenser." id = "soda_dispenser" build_path = /obj/item/circuitboard/machine/chem_dispenser/drinks + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_BAR + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE - category = list(RND_CATEGORY_MISC_MACHINERY) /datum/design/board/beer_dispenser - name = "Machine Design (Portable Booze Dispenser Board)" + name = "Portable Booze Dispenser Board" desc = "The circuit board for a portable booze dispenser." id = "beer_dispenser" build_path = /obj/item/circuitboard/machine/chem_dispenser/drinks/beer + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_BAR + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE - category = list(RND_CATEGORY_MISC_MACHINERY) /datum/design/board/recycler - name = "Machine Design (Recycler Board)" + name = "Recycler Board" desc = "The circuit board for a recycler." id = "recycler" build_path = /obj/item/circuitboard/machine/recycler - category = list(RND_CATEGORY_MISC_MACHINERY) - + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/scanner_gate - name = "Machine Design (Scanner Gate)" + name = "Scanner Gate Board" desc = "The circuit board for a scanner gate." id = "scanner_gate" build_path = /obj/item/circuitboard/machine/scanner_gate - category = list(RND_CATEGORY_MISC_MACHINERY) - + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_MEDICAL + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/holopad - name = "Machine Design (AI Holopad Board)" + name = "AI Holopad Board" desc = "The circuit board for a holopad." id = "holopad" build_path = /obj/item/circuitboard/machine/holopad - category = list (RND_CATEGORY_MISC_MACHINERY) - + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/autolathe - name = "Machine Design (Autolathe Board)" + name = "Autolathe Board" desc = "The circuit board for an autolathe." id = "autolathe" build_path = /obj/item/circuitboard/machine/autolathe - category = list (RND_CATEGORY_MISC_MACHINERY) - + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_FAB + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/recharger - name = "Machine Design (Weapon Recharger Board)" + name = "Weapon Recharger Board" desc = "The circuit board for a Weapon Recharger." id = "recharger" materials = list(/datum/material/glass = 1000, /datum/material/gold = 2000) build_path = /obj/item/circuitboard/machine/recharger - category = list(RND_CATEGORY_MISC_MACHINERY) - + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_SECURITY + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/vendor - name = "Machine Design (Vendor Board)" + name = "Vendor Board" desc = "The circuit board for a Vendor." id = "vendor" build_path = /obj/item/circuitboard/machine/vendor - category = list (RND_CATEGORY_MISC_MACHINERY) - + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/board/ore_redemption - name = "Machine Design (Ore Redemption Board)" + name = "Ore Redemption Machine Board" desc = "The circuit board for an Ore Redemption machine." id = "ore_redemption" build_path = /obj/item/circuitboard/machine/ore_redemption - category = list (RND_CATEGORY_MISC_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_CARGO + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/mining_equipment_vendor - name = "Machine Design (Mining Rewards Vendor Board)" + name = "Mining Rewards Vendor Board" desc = "The circuit board for a Mining Rewards Vendor." id = "mining_equipment_vendor" build_path = /obj/item/circuitboard/machine/mining_equipment_vendor - category = list (RND_CATEGORY_MISC_MACHINERY) - departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_CARGO + ) + departmental_flags = DEPARTMENT_BITFLAG_CARGO /datum/design/board/tesla_coil - name = "Machine Design (Tesla Coil Board)" + name = "Tesla Coil Board" desc = "The circuit board for a tesla coil." id = "tesla_coil" build_path = /obj/item/circuitboard/machine/tesla_coil - category = list (RND_CATEGORY_MISC_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/grounding_rod - name = "Machine Design (Grounding Rod Board)" + name = "Grounding Rod Board" desc = "The circuit board for a grounding rod." id = "grounding_rod" build_path = /obj/item/circuitboard/machine/grounding_rod - category = list (RND_CATEGORY_MISC_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/ntnet_relay - name = "Machine Design (NTNet Relay Board)" + name = "NTNet Relay Board" desc = "The circuit board for a wireless network relay." id = "ntnet_relay" build_type = IMPRINTER build_path = /obj/item/circuitboard/machine/ntnet_relay - category = list(RND_CATEGORY_SUBSPACE_TELECOMMS) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELECOMMS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/limbgrower - name = "Machine Design (Limb Grower Board)" + name = "Limb Grower Board" desc = "The circuit board for a limb grower." id = "limbgrower" build_path = /obj/item/circuitboard/machine/limbgrower - category = list(RND_CATEGORY_MEDICAL_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_MEDICAL + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/board/harvester - name = "Machine Design (Organ Harvester Board)" + name = "Organ Harvester Board" desc = "The circuit board for an organ harvester." id = "harvester" build_path = /obj/item/circuitboard/machine/harvester - category = list(RND_CATEGORY_MEDICAL_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_MEDICAL + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/board/deepfryer - name = "Machine Design (Deep Fryer)" + name = "Deep Fryer Board" desc = "The circuit board for a Deep Fryer." id = "deepfryer" build_path = /obj/item/circuitboard/machine/deep_fryer - category = list (RND_CATEGORY_MISC_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_KITCHEN + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/board/griddle - name = "Machine Design (Griddle)" + name = "Griddle Board" desc = "The circuit board for a Griddle." id = "griddle" build_path = /obj/item/circuitboard/machine/griddle - category = list (RND_CATEGORY_MISC_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_KITCHEN + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/board/oven - name = "Machine Design (Oven)" + name = "Oven Board" desc = "The circuit board for a Oven." id = "oven" build_path = /obj/item/circuitboard/machine/oven - category = list (RND_CATEGORY_MISC_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_KITCHEN + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/board/donksofttoyvendor - name = "Machine Design (Donksoft Toy Vendor Board)" + name = "Donksoft Toy Vendor Board" desc = "The circuit board for a Donksoft Toy Vendor." id = "donksofttoyvendor" build_path = /obj/item/circuitboard/machine/vending/donksofttoyvendor - category = list (RND_CATEGORY_MISC_MACHINERY) - + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/board/cell_charger - name = "Machine Design (Cell Charger Board)" + name = "Cell Charger Board" desc = "The circuit board for a cell charger." id = "cell_charger" build_path = /obj/item/circuitboard/machine/cell_charger - category = list (RND_CATEGORY_MISC_MACHINERY) - + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/dish_drive - name = "Machine Design (Dish Drive)" + name = "Dish Drive Board" desc = "The circuit board for a dish drive." id = "dish_drive" build_path = /obj/item/circuitboard/machine/dish_drive - category = list (RND_CATEGORY_MISC_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_KITCHEN + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/board/stacking_unit_console - name = "Machine Design (Stacking Machine Console)" + name = "Stacking Machine Console Board" desc = "The circuit board for a Stacking Machine Console." id = "stack_console" build_path = /obj/item/circuitboard/machine/stacking_unit_console - category = list (RND_CATEGORY_MISC_MACHINERY) - departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_ENGINEERING + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_CARGO + ) + departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/stacking_machine - name = "Machine Design (Stacking Machine)" + name = "Stacking Machine Board" desc = "The circuit board for a Stacking Machine." id = "stack_machine" build_path = /obj/item/circuitboard/machine/stacking_machine - category = list (RND_CATEGORY_MISC_MACHINERY) - departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_ENGINEERING + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_CARGO + ) + departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/ore_silo - name = "Machine Design (Ore Silo)" + name = "Ore Silo Board" desc = "The circuit board for an ore silo." id = "ore_silo" build_path = /obj/item/circuitboard/machine/ore_silo - category = list (RND_CATEGORY_RESEARCH_MACHINERY) - departmental_flags = DEPARTMENT_BITFLAG_CARGO + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_CARGO + ) + departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/fat_sucker - name = "Machine Design (Lipid Extractor)" + name = "Lipid Extractor Board" desc = "The circuit board for a lipid extractor." id = "fat_sucker" build_path = /obj/item/circuitboard/machine/fat_sucker - category = list (RND_CATEGORY_MISC_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_SERVICE + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/board/stasis - name = "Machine Design (Lifeform Stasis Unit)" + name = "Lifeform Stasis Unit Board" desc = "The circuit board for a stasis unit." id = "stasis" build_path = /obj/item/circuitboard/machine/stasis - category = list(RND_CATEGORY_MEDICAL_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_MEDICAL + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/board/spaceship_navigation_beacon - name = "Machine Design (Bluespace Navigation Gigabeacon)" + name = "Bluespace Navigation Gigabeacon Board" desc = "The circuit board for a Bluespace Navigation Gigabeacon." id = "spaceship_navigation_beacon" build_type = IMPRINTER build_path = /obj/item/circuitboard/machine/spaceship_navigation_beacon - category = list (RND_CATEGORY_TELEPORTATION_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELEPORT + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/medical_kiosk - name = "Machine Design (Medical Kiosk)" + name = "Medical Kiosk Board" desc = "The circuit board for a Medical Kiosk." id = "medical_kiosk" build_path = /obj/item/circuitboard/machine/medical_kiosk - category = list (RND_CATEGORY_MEDICAL_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_MEDICAL + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/board/medipen_refiller - name = "Machine Design (Medipen Refiller)" + name = "Medipen Refiller Board" desc = "The circuit board for a Medipen Refiller." id = "medipen_refiller" build_path = /obj/item/circuitboard/machine/medipen_refiller - category = list (RND_CATEGORY_MEDICAL_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_MEDICAL + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/board/plumbing_receiver - name = "Machine Design (Chemical Recipient)" + name = "Chemical Recipient Board" desc = "The circuit board for a Chemical Recipient." id = "plumbing_receiver" build_path = /obj/item/circuitboard/machine/plumbing_receiver - category = list (RND_CATEGORY_TELEPORTATION_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_CHEMISTRY + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SERVICE - /datum/design/board/sheetifier - name = "Machine Design (Sheet-meister 2000)" + name = "Sheet-meister 2000 Board" desc = "The circuit board for a Sheet-meister 2000." id = "sheetifier" build_path = /obj/item/circuitboard/machine/sheetifier - category = list (RND_CATEGORY_MISC_MACHINERY) - + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_FAB + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO /datum/design/board/restaurant_portal - name = "Machine Design (Restaurant Portal)" + name = "Restaurant Portal Board" desc = "The circuit board for a restaurant portal" id = "restaurant_portal" build_path = /obj/item/circuitboard/machine/restaurant_portal - category = list (RND_CATEGORY_MISC_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_KITCHEN + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/board/vendatray - name = "Machine Design (Vend-a-Tray)" + name = "Vend-a-Tray Board" desc = "The circuit board for a Vend-a-Tray." id = "vendatray" build_path = /obj/item/circuitboard/machine/vendatray - category = list (RND_CATEGORY_MISC_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/board/bountypad - name = "Machine Design (Civilian Bounty Pad)" + name = "Civilian Bounty Pad Board" desc = "The circuit board for a Civilian Bounty Pad." id = "bounty_pad" build_path = /obj/item/circuitboard/machine/bountypad - category = list (RND_CATEGORY_MISC_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_CARGO + ) + departmental_flags = DEPARTMENT_BITFLAG_CARGO /datum/design/board/skill_station - name = "Machine Design (Skill station)" + name = "Skill Station Board" desc = "The circuit board for Skill station." id = "skill_station" build_path = /obj/item/circuitboard/machine/skill_station - category = list (RND_CATEGORY_MISC_MACHINERY) - departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SERVICE + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/board/fax - name = "Machine Design (Fax Machine)" + name = "Fax Machine Board" desc = "The circuit board for a fax machine." id = "fax" build_path = /obj/item/circuitboard/machine/fax - category = list ("Misc. Machinery") - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_CARGO //Hypertorus fusion reactor designs /datum/design/board/HFR_core - name = "Machine Design (HFR Core)" + name = "HFR Core Board" desc = "The circuit board for an HFR Core." id = "HFR_core" build_path = /obj/item/circuitboard/machine/HFR_core - category = list (RND_CATEGORY_ENGINEERING_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ATMOS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/HFR_fuel_input - name = "Machine Design (HFR fuel input)" + name = "HFR Fuel Input Board" desc = "The circuit board for an HFR fuel input." id = "HFR_fuel_input" build_path = /obj/item/circuitboard/machine/HFR_fuel_input - category = list (RND_CATEGORY_ENGINEERING_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ATMOS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/HFR_waste_output - name = "Machine Design (HFR waste output)" + name = "HFR Waste Output Board" desc = "The circuit board for an HFR waste output." id = "HFR_waste_output" build_path = /obj/item/circuitboard/machine/HFR_waste_output - category = list (RND_CATEGORY_ENGINEERING_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ATMOS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/HFR_moderator_input - name = "Machine Design (HFR moderator input)" + name = "HFR Moderator Input Board" desc = "The circuit board for an HFR moderator input." id = "HFR_moderator_input" build_path = /obj/item/circuitboard/machine/HFR_moderator_input - category = list (RND_CATEGORY_ENGINEERING_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ATMOS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/HFR_corner - name = "Machine Design (HFR corner)" + name = "HFR Corner Board" desc = "The circuit board for an HFR corner." id = "HFR_corner" build_path = /obj/item/circuitboard/machine/HFR_corner - category = list (RND_CATEGORY_ENGINEERING_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ATMOS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/HFR_interface - name = "Machine Design (HFR interface)" + name = "HFR Interface Board" desc = "The circuit board for an HFR interface." id = "HFR_interface" build_path = /obj/item/circuitboard/machine/HFR_interface - category = list (RND_CATEGORY_ENGINEERING_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ATMOS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/crystallizer - name = "Machine Design (Crystallizer)" + name = "Crystallizer Board" desc = "The circuit board for a crystallizer." id = "crystallizer" build_path = /obj/item/circuitboard/machine/crystallizer - category = list (RND_CATEGORY_ENGINEERING_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ATMOS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/exoscanner - name = "Machine Design (Scanner Array)" + name = "Scanner Array Board" desc = "The circuit board for scanner array." id = "exoscanner" build_path = /obj/item/circuitboard/machine/exoscanner - category = list (RND_CATEGORY_ENGINEERING_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_RESEARCH + ) departmental_flags = DEPARTMENT_BITFLAG_CARGO /datum/design/board/exodrone_launcher - name = "Machine Design (Exploration Drone Launcher)" + name = "Exploration Drone Launcher Board" desc = "The circuit board for exodrone launcher." id = "exodrone_launcher" build_path = /obj/item/circuitboard/machine/exodrone_launcher - category = list (RND_CATEGORY_ENGINEERING_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_RESEARCH + ) departmental_flags = DEPARTMENT_BITFLAG_CARGO /datum/design/board/component_printer - name = "Machine Design (Component Printer)" + name = "Component Printer Board" desc = "The circuit board for a component printer" id = "component_printer" build_path = /obj/item/circuitboard/machine/component_printer - category = list(RND_CATEGORY_MISC_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_RESEARCH + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/module_printer - name = "Machine Design (Module Duplicator)" + name = "Module Duplicator Board" desc = "The circuit board for a module duplicator" id = "module_duplicator" build_path = /obj/item/circuitboard/machine/module_duplicator - category = list(RND_CATEGORY_MISC_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_RESEARCH + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/coffeemaker - name = "Machine Design (Coffeemaker)" + name = "Coffeemaker Board" desc = "The circuit board for a coffeemaker." id = "coffeemaker" build_path = /obj/item/circuitboard/machine/coffeemaker - category = list(RND_CATEGORY_MISC_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_SERVICE + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE diff --git a/code/modules/research/designs/mecha_designs.dm b/code/modules/research/designs/mecha_designs.dm index 7fae7c44858..b9ff2a69171 100644 --- a/code/modules/research/designs/mecha_designs.dm +++ b/code/modules/research/designs/mecha_designs.dm @@ -7,7 +7,9 @@ desc = "Allows for the construction of a \"Ripley\" Central Control module." id = "ripley_main" build_path = /obj/item/circuitboard/mecha/ripley/main - category = list(RND_CATEGORY_EXOSUIT_MODULES) + category = list( + RND_CATEGORY_EXOSUIT_BOARDS + RND_SUBCATEGORY_EXOSUIT_BOARDS_RIPLEY + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/ripley_peri @@ -15,7 +17,9 @@ desc = "Allows for the construction of a \"Ripley\" Peripheral Control module." id = "ripley_peri" build_path = /obj/item/circuitboard/mecha/ripley/peripherals - category = list(RND_CATEGORY_EXOSUIT_MODULES) + category = list( + RND_CATEGORY_EXOSUIT_BOARDS + RND_SUBCATEGORY_EXOSUIT_BOARDS_RIPLEY + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/odysseus_main @@ -23,7 +27,9 @@ desc = "Allows for the construction of a \"Odysseus\" Central Control module." id = "odysseus_main" build_path = /obj/item/circuitboard/mecha/odysseus/main - category = list(RND_CATEGORY_EXOSUIT_MODULES) + category = list( + RND_CATEGORY_EXOSUIT_BOARDS + RND_SUBCATEGORY_EXOSUIT_BOARDS_ODYSSEUS + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/odysseus_peri @@ -31,7 +37,9 @@ desc = "Allows for the construction of a \"Odysseus\" Peripheral Control module." id = "odysseus_peri" build_path = /obj/item/circuitboard/mecha/odysseus/peripherals - category = list(RND_CATEGORY_EXOSUIT_MODULES) + category = list( + RND_CATEGORY_EXOSUIT_BOARDS + RND_SUBCATEGORY_EXOSUIT_BOARDS_ODYSSEUS + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/gygax_main @@ -39,7 +47,9 @@ desc = "Allows for the construction of a \"Gygax\" Central Control module." id = "gygax_main" build_path = /obj/item/circuitboard/mecha/gygax/main - category = list(RND_CATEGORY_EXOSUIT_MODULES) + category = list( + RND_CATEGORY_EXOSUIT_BOARDS + RND_SUBCATEGORY_EXOSUIT_BOARDS_GYGAX + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/gygax_peri @@ -47,7 +57,9 @@ desc = "Allows for the construction of a \"Gygax\" Peripheral Control module." id = "gygax_peri" build_path = /obj/item/circuitboard/mecha/gygax/peripherals - category = list(RND_CATEGORY_EXOSUIT_MODULES) + category = list( + RND_CATEGORY_EXOSUIT_BOARDS + RND_SUBCATEGORY_EXOSUIT_BOARDS_GYGAX + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/gygax_targ @@ -55,7 +67,9 @@ desc = "Allows for the construction of a \"Gygax\" Weapons & Targeting Control module." id = "gygax_targ" build_path = /obj/item/circuitboard/mecha/gygax/targeting - category = list(RND_CATEGORY_EXOSUIT_MODULES) + category = list( + RND_CATEGORY_EXOSUIT_BOARDS + RND_SUBCATEGORY_EXOSUIT_BOARDS_GYGAX + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/durand_main @@ -63,7 +77,9 @@ desc = "Allows for the construction of a \"Durand\" Central Control module." id = "durand_main" build_path = /obj/item/circuitboard/mecha/durand/main - category = list(RND_CATEGORY_EXOSUIT_MODULES) + category = list( + RND_CATEGORY_EXOSUIT_BOARDS + RND_SUBCATEGORY_EXOSUIT_BOARDS_DURAND + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/durand_peri @@ -71,7 +87,9 @@ desc = "Allows for the construction of a \"Durand\" Peripheral Control module." id = "durand_peri" build_path = /obj/item/circuitboard/mecha/durand/peripherals - category = list(RND_CATEGORY_EXOSUIT_MODULES) + category = list( + RND_CATEGORY_EXOSUIT_BOARDS + RND_SUBCATEGORY_EXOSUIT_BOARDS_DURAND + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/durand_targ @@ -79,31 +97,39 @@ desc = "Allows for the construction of a \"Durand\" Weapons & Targeting Control module." id = "durand_targ" build_path = /obj/item/circuitboard/mecha/durand/targeting - category = list(RND_CATEGORY_EXOSUIT_MODULES) + category = list( + RND_CATEGORY_EXOSUIT_BOARDS + RND_SUBCATEGORY_EXOSUIT_BOARDS_DURAND + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/honker_main - name = "\"H.O.N.K\" Central Control module" - desc = "Allows for the construction of a \"H.O.N.K\" Central Control module." + name = "\"H.O.N.K.\" Central Control module" + desc = "Allows for the construction of a \"H.O.N.K.\" Central Control module." id = "honker_main" build_path = /obj/item/circuitboard/mecha/honker/main - category = list(RND_CATEGORY_EXOSUIT_MODULES) + category = list( + RND_CATEGORY_EXOSUIT_BOARDS + RND_SUBCATEGORY_EXOSUIT_BOARDS_HONK + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/honker_peri - name = "\"H.O.N.K\" Peripherals Control module" - desc = "Allows for the construction of a \"H.O.N.K\" Peripheral Control module." + name = "\"H.O.N.K.\" Peripherals Control module" + desc = "Allows for the construction of a \"H.O.N.K.\" Peripheral Control module." id = "honker_peri" build_path = /obj/item/circuitboard/mecha/honker/peripherals - category = list(RND_CATEGORY_EXOSUIT_MODULES) + category = list( + RND_CATEGORY_EXOSUIT_BOARDS + RND_SUBCATEGORY_EXOSUIT_BOARDS_HONK + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/honker_targ - name = "\"H.O.N.K\" Weapons & Targeting Control module" - desc = "Allows for the construction of a \"H.O.N.K\" Weapons & Targeting Control module." + name = "\"H.O.N.K.\" Weapons & Targeting Control module" + desc = "Allows for the construction of a \"H.O.N.K.\" Weapons & Targeting Control module." id = "honker_targ" build_path = /obj/item/circuitboard/mecha/honker/targeting - category = list(RND_CATEGORY_EXOSUIT_MODULES) + category = list( + RND_CATEGORY_EXOSUIT_BOARDS + RND_SUBCATEGORY_EXOSUIT_BOARDS_HONK + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/phazon_main @@ -112,7 +138,9 @@ id = "phazon_main" materials = list(/datum/material/glass = 1000, /datum/material/bluespace = 100) build_path = /obj/item/circuitboard/mecha/phazon/main - category = list(RND_CATEGORY_EXOSUIT_MODULES) + category = list( + RND_CATEGORY_EXOSUIT_BOARDS + RND_SUBCATEGORY_EXOSUIT_BOARDS_PHAZON + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/phazon_peri @@ -121,7 +149,9 @@ id = "phazon_peri" materials = list(/datum/material/glass = 1000, /datum/material/bluespace = 100) build_path = /obj/item/circuitboard/mecha/phazon/peripherals - category = list(RND_CATEGORY_EXOSUIT_MODULES) + category = list( + RND_CATEGORY_EXOSUIT_BOARDS + RND_SUBCATEGORY_EXOSUIT_BOARDS_PHAZON + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/phazon_targ @@ -130,7 +160,9 @@ id = "phazon_targ" materials = list(/datum/material/glass = 1000, /datum/material/bluespace = 100) build_path = /obj/item/circuitboard/mecha/phazon/targeting - category = list(RND_CATEGORY_EXOSUIT_MODULES) + category = list( + RND_CATEGORY_EXOSUIT_BOARDS + RND_SUBCATEGORY_EXOSUIT_BOARDS_PHAZON + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/clarke_main @@ -138,7 +170,9 @@ desc = "Allows for the construction of a \"Clarke\" Central Control module." id = "clarke_main" build_path = /obj/item/circuitboard/mecha/clarke/main - category = list(RND_CATEGORY_EXOSUIT_MODULES) + category = list( + RND_CATEGORY_EXOSUIT_BOARDS + RND_SUBCATEGORY_EXOSUIT_BOARDS_CLARKE + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/clarke_peri @@ -146,7 +180,9 @@ desc = "Allows for the construction of a \"Clarke\" Peripheral Control module." id = "clarke_peri" build_path = /obj/item/circuitboard/mecha/clarke/peripherals - category = list(RND_CATEGORY_EXOSUIT_MODULES) + category = list( + RND_CATEGORY_EXOSUIT_BOARDS + RND_SUBCATEGORY_EXOSUIT_BOARDS_CLARKE + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/savannah_ivanov_main @@ -154,7 +190,9 @@ desc = "Allows for the construction of a \"Savannah-Ivanov\" Central Control module." id = "savannah_ivanov_main" build_path = /obj/item/circuitboard/mecha/savannah_ivanov/main - category = list(RND_CATEGORY_EXOSUIT_MODULES) + category = list( + RND_CATEGORY_EXOSUIT_BOARDS + RND_SUBCATEGORY_EXOSUIT_BOARDS_SAVANNAH_IVANOV + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/savannah_ivanov_peri @@ -162,7 +200,9 @@ desc = "Allows for the construction of a \"Savannah-Ivanov\" Peripheral Control module." id = "savannah_ivanov_peri" build_path = /obj/item/circuitboard/mecha/savannah_ivanov/peripherals - category = list(RND_CATEGORY_EXOSUIT_MODULES) + category = list( + RND_CATEGORY_EXOSUIT_BOARDS + RND_SUBCATEGORY_EXOSUIT_BOARDS_SAVANNAH_IVANOV + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/savannah_ivanov_targ @@ -170,7 +210,9 @@ desc = "Allows for the construction of a \"Savannah-Ivanov\" Weapons & Targeting Control module." id = "savannah_ivanov_targ" build_path = /obj/item/circuitboard/mecha/savannah_ivanov/targeting - category = list(RND_CATEGORY_EXOSUIT_MODULES) + category = list( + RND_CATEGORY_EXOSUIT_BOARDS + RND_SUBCATEGORY_EXOSUIT_BOARDS_SAVANNAH_IVANOV + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE //////////////////////////////////////// @@ -178,300 +220,742 @@ //////////////////////////////////////// /datum/design/mech_scattershot - name = "Exosuit Weapon (LBX AC 10 \"Scattershot\")" + name = "LBX AC 10 \"Scattershot\"" desc = "Allows for the construction of LBX AC 10." id = "mech_scattershot" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot materials = list(/datum/material/iron=10000) construction_time = 100 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_GYGAX, + RND_CATEGORY_MECHFAB_DURAND, + RND_CATEGORY_MECHFAB_PHAZON, + RND_CATEGORY_MECHFAB_HONK + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_WEAPONS, + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_scattershot_ammo - name = "LBX AC 10 Scattershot Ammunition" + name = "LBX AC 10 Ammunition" desc = "Ammunition for the LBX AC 10 exosuit weapon." id = "mech_scattershot_ammo" - build_type = PROTOLATHE | AWAY_LATHE | MECHFAB + build_type = MECHFAB build_path = /obj/item/mecha_ammo/scattershot materials = list(/datum/material/iron=6000) construction_time = 20 - category = list(RND_CATEGORY_EXOSUIT_AMMUNIATION, RND_CATEGORY_AMMO) - departmental_flags = DEPARTMENT_BITFLAG_SECURITY + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_GYGAX, + RND_CATEGORY_MECHFAB_DURAND, + RND_CATEGORY_MECHFAB_PHAZON, + RND_CATEGORY_MECHFAB_HONK + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_WEAPONS, + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_carbine - name = "Exosuit Weapon (FNX-99 \"Hades\" Carbine)" + name = "FNX-99 \"Hades\" Carbine" desc = "Allows for the construction of FNX-99 \"Hades\" Carbine." id = "mech_carbine" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/carbine materials = list(/datum/material/iron=10000) construction_time = 100 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_GYGAX, + RND_CATEGORY_MECHFAB_DURAND, + RND_CATEGORY_MECHFAB_PHAZON, + RND_CATEGORY_MECHFAB_HONK + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_WEAPONS, + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_carbine_ammo name = "FNX-99 Carbine Ammunition" desc = "Ammunition for the FNX-99 \"Hades\" Carbine." id = "mech_carbine_ammo" - build_type = PROTOLATHE | AWAY_LATHE | MECHFAB + build_type = MECHFAB build_path = /obj/item/mecha_ammo/incendiary materials = list(/datum/material/iron=6000) construction_time = 20 - category = list(RND_CATEGORY_EXOSUIT_AMMUNIATION, RND_CATEGORY_AMMO) - departmental_flags = DEPARTMENT_BITFLAG_SECURITY + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_GYGAX, + RND_CATEGORY_MECHFAB_DURAND, + RND_CATEGORY_MECHFAB_PHAZON, + RND_CATEGORY_MECHFAB_HONK + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_WEAPONS, + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_ion - name = "Exosuit Weapon (MKIV Ion Heavy Cannon)" + name = "MKIV Ion Heavy Cannon" desc = "Allows for the construction of MKIV Ion Heavy Cannon." id = "mech_ion" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/ion materials = list(/datum/material/iron=20000,/datum/material/silver=6000,/datum/material/uranium=2000) construction_time = 100 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_GYGAX, + RND_CATEGORY_MECHFAB_DURAND, + RND_CATEGORY_MECHFAB_PHAZON, + RND_CATEGORY_MECHFAB_HONK + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_WEAPONS, + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_tesla - name = "Exosuit Weapon (MKI Tesla Cannon)" + name = "MKI Tesla Cannon" desc = "Allows for the construction of MKI Tesla Cannon." id = "mech_tesla" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/tesla materials = list(/datum/material/iron=20000,/datum/material/silver=8000) construction_time = 100 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_GYGAX, + RND_CATEGORY_MECHFAB_DURAND, + RND_CATEGORY_MECHFAB_PHAZON, + RND_CATEGORY_MECHFAB_HONK + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_WEAPONS, + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_laser - name = "Exosuit Weapon (CH-PS \"Immolator\" Laser)" + name = "CH-PS \"Immolator\" Laser" desc = "Allows for the construction of CH-PS Laser." id = "mech_laser" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser materials = list(/datum/material/iron=10000) construction_time = 100 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_GYGAX, + RND_CATEGORY_MECHFAB_DURAND, + RND_CATEGORY_MECHFAB_PHAZON, + RND_CATEGORY_MECHFAB_HONK + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_WEAPONS, + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_laser_heavy - name = "Exosuit Weapon (CH-LC \"Solaris\" Laser Cannon)" + name = "CH-LC \"Solaris\" Laser Cannon" desc = "Allows for the construction of CH-LC Laser Cannon." id = "mech_laser_heavy" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy materials = list(/datum/material/iron=10000) construction_time = 100 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_GYGAX, + RND_CATEGORY_MECHFAB_DURAND, + RND_CATEGORY_MECHFAB_PHAZON, + RND_CATEGORY_MECHFAB_HONK + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_WEAPONS, + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_disabler - name = "Exosuit Weapon (CH-DS \"Peacemaker\" Disabler)" + name = "CH-DS \"Peacemaker\" Disabler" desc = "Allows for the construction of CH-DS Disabler." id = "mech_disabler" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/disabler materials = list(/datum/material/iron=10000) construction_time = 100 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_GYGAX, + RND_CATEGORY_MECHFAB_DURAND, + RND_CATEGORY_MECHFAB_PHAZON, + RND_CATEGORY_MECHFAB_HONK + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_WEAPONS, + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_grenade_launcher - name = "Exosuit Weapon (SGL-6 Grenade Launcher)" + name = "SGL-6 Grenade Launcher" desc = "Allows for the construction of SGL-6 Grenade Launcher." id = "mech_grenade_launcher" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang materials = list(/datum/material/iron=22000,/datum/material/gold=6000,/datum/material/silver=8000) construction_time = 100 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_GYGAX, + RND_CATEGORY_MECHFAB_DURAND, + RND_CATEGORY_MECHFAB_PHAZON, + RND_CATEGORY_MECHFAB_HONK + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_WEAPONS, + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_grenade_launcher_ammo name = "SGL-6 Grenade Launcher Ammunition" desc = "Ammunition for the SGL-6 Grenade Launcher." id = "mech_grenade_launcher_ammo" - build_type = PROTOLATHE | AWAY_LATHE | MECHFAB + build_type = MECHFAB build_path = /obj/item/mecha_ammo/flashbang materials = list(/datum/material/iron=4000,/datum/material/gold=500) construction_time = 20 - category = list(RND_CATEGORY_EXOSUIT_AMMUNIATION, RND_CATEGORY_AMMO) - departmental_flags = DEPARTMENT_BITFLAG_SECURITY + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_GYGAX, + RND_CATEGORY_MECHFAB_DURAND, + RND_CATEGORY_MECHFAB_PHAZON, + RND_CATEGORY_MECHFAB_HONK + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_WEAPONS, + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_missile_rack - name = "Exosuit Weapon (BRM-6 Missile Rack)" + name = "BRM-6 Missile Rack" desc = "Allows for the construction of an BRM-6 Breaching Missile Rack." id = "mech_missile_rack" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/breaching materials = list(/datum/material/iron=22000,/datum/material/gold=6000,/datum/material/silver=8000) construction_time = 100 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_GYGAX, + RND_CATEGORY_MECHFAB_DURAND, + RND_CATEGORY_MECHFAB_PHAZON, + RND_CATEGORY_MECHFAB_HONK + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_WEAPONS, + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_missile_rack_ammo name = "BRM-6 Missile Rack Ammunition" desc = "Ammunition for the BRM-6 Missile Rack." id = "mech_missile_rack_ammo" - build_type = PROTOLATHE | AWAY_LATHE | MECHFAB + build_type = MECHFAB build_path = /obj/item/mecha_ammo/missiles_br materials = list(/datum/material/iron=8000,/datum/material/gold=500) construction_time = 20 - category = list(RND_CATEGORY_EXOSUIT_AMMUNIATION, RND_CATEGORY_AMMO) - departmental_flags = DEPARTMENT_BITFLAG_SECURITY + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_GYGAX, + RND_CATEGORY_MECHFAB_DURAND, + RND_CATEGORY_MECHFAB_PHAZON, + RND_CATEGORY_MECHFAB_HONK + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_WEAPONS, + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/clusterbang_launcher - name = "Exosuit Weapon (SOB-3 Clusterbang Launcher)" - desc = "A weapon that violates the Geneva Convention at 3 rounds per minute" + name = "SOB-3 Clusterbang Launcher" + desc = "A weapon that violates the Geneva Convention at 3 rounds per minute." id = "clusterbang_launcher" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang/clusterbang materials = list(/datum/material/iron=20000,/datum/material/gold=10000,/datum/material/uranium=10000) construction_time = 100 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_GYGAX, + RND_CATEGORY_MECHFAB_DURAND, + RND_CATEGORY_MECHFAB_PHAZON, + RND_CATEGORY_MECHFAB_HONK + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_WEAPONS, + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/clusterbang_launcher_ammo name = "SOB-3 Clusterbang Launcher Ammunition" desc = "Ammunition for the SOB-3 Clusterbang Launcher" id = "clusterbang_launcher_ammo" - build_type = PROTOLATHE | AWAY_LATHE | MECHFAB + build_type = MECHFAB build_path = /obj/item/mecha_ammo/clusterbang materials = list(/datum/material/iron=6000,/datum/material/gold=1500,/datum/material/uranium=1500) construction_time = 20 - category = list(RND_CATEGORY_EXOSUIT_AMMUNIATION, RND_CATEGORY_AMMO) - departmental_flags = DEPARTMENT_BITFLAG_SECURITY + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_GYGAX, + RND_CATEGORY_MECHFAB_DURAND, + RND_CATEGORY_MECHFAB_PHAZON, + RND_CATEGORY_MECHFAB_HONK + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_WEAPONS, + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_wormhole_gen - name = "Exosuit Module (Localized Wormhole Generator)" + name = "Localized Wormhole Generator" desc = "An exosuit module that allows generating of small quasi-stable wormholes." id = "mech_wormhole_gen" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/wormhole_generator materials = list(/datum/material/iron=10000) construction_time = 100 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_RIPLEY, + RND_CATEGORY_MECHFAB_ODYSSEUS, + RND_CATEGORY_MECHFAB_GYGAX, + RND_CATEGORY_MECHFAB_DURAND, + RND_CATEGORY_MECHFAB_HONK, + RND_CATEGORY_MECHFAB_PHAZON, + RND_CATEGORY_MECHFAB_CLARKE + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC, + RND_CATEGORY_MECHFAB_RIPLEY + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_ODYSSEUS + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_CLARKE + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_teleporter - name = "Exosuit Module (Teleporter Module)" + name = "Teleporter Module" desc = "An exosuit module that allows exosuits to teleport to any position in view." id = "mech_teleporter" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/teleporter materials = list(/datum/material/iron=10000,/datum/material/diamond=10000) construction_time = 100 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_RIPLEY, + RND_CATEGORY_MECHFAB_ODYSSEUS, + RND_CATEGORY_MECHFAB_GYGAX, + RND_CATEGORY_MECHFAB_DURAND, + RND_CATEGORY_MECHFAB_HONK, + RND_CATEGORY_MECHFAB_PHAZON, + RND_CATEGORY_MECHFAB_CLARKE + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC, + RND_CATEGORY_MECHFAB_RIPLEY + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_ODYSSEUS + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_CLARKE + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_rcd - name = "Exosuit Module (RCD Module)" + name = "RCD Module" desc = "An exosuit-mounted Rapid Construction Device." id = "mech_rcd" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/rcd materials = list(/datum/material/iron=30000,/datum/material/gold=20000,/datum/material/plasma=25000,/datum/material/silver=20000) construction_time = 1200 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_RIPLEY, + RND_CATEGORY_MECHFAB_ODYSSEUS, + RND_CATEGORY_MECHFAB_GYGAX, + RND_CATEGORY_MECHFAB_DURAND, + RND_CATEGORY_MECHFAB_HONK, + RND_CATEGORY_MECHFAB_PHAZON, + RND_CATEGORY_MECHFAB_CLARKE + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC, + RND_CATEGORY_MECHFAB_RIPLEY + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_ODYSSEUS + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_CLARKE + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_thrusters - name = "Exosuit Module (RCS Thruster Package)" + name = "RCS Thruster Package" desc = "A thruster package for exosuits. Expells gas from the internal life-support air tank to generate thrust." id = "mech_thrusters" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/thrusters/gas materials = list(/datum/material/iron=25000,/datum/material/titanium=5000,/datum/material/silver=3000) construction_time = 100 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_RIPLEY, + RND_CATEGORY_MECHFAB_ODYSSEUS, + RND_CATEGORY_MECHFAB_GYGAX, + RND_CATEGORY_MECHFAB_DURAND, + RND_CATEGORY_MECHFAB_HONK, + RND_CATEGORY_MECHFAB_PHAZON, + RND_CATEGORY_MECHFAB_CLARKE + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MODULES, + RND_CATEGORY_MECHFAB_RIPLEY + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_ODYSSEUS + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_CLARKE + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_gravcatapult - name = "Exosuit Module (Gravitational Catapult Module)" + name = "Gravitational Catapult Module" desc = "An exosuit mounted Gravitational Catapult." id = "mech_gravcatapult" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/gravcatapult materials = list(/datum/material/iron=10000) construction_time = 100 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_RIPLEY, + RND_CATEGORY_MECHFAB_ODYSSEUS, + RND_CATEGORY_MECHFAB_GYGAX, + RND_CATEGORY_MECHFAB_DURAND, + RND_CATEGORY_MECHFAB_HONK, + RND_CATEGORY_MECHFAB_PHAZON, + RND_CATEGORY_MECHFAB_CLARKE + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC, + RND_CATEGORY_MECHFAB_RIPLEY + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_ODYSSEUS + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_CLARKE + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_repair_droid - name = "Exosuit Module (Repair Droid Module)" + name = "Repair Droid Module" desc = "Automated Repair Droid. BEEP BOOP" id = "mech_repair_droid" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/repair_droid materials = list(/datum/material/iron=10000,/datum/material/glass = 5000,/datum/material/gold=1000,/datum/material/silver=2000) construction_time = 100 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_RIPLEY, + RND_CATEGORY_MECHFAB_ODYSSEUS, + RND_CATEGORY_MECHFAB_GYGAX, + RND_CATEGORY_MECHFAB_DURAND, + RND_CATEGORY_MECHFAB_HONK, + RND_CATEGORY_MECHFAB_PHAZON, + RND_CATEGORY_MECHFAB_CLARKE + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MODULES, + RND_CATEGORY_MECHFAB_RIPLEY + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_ODYSSEUS + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_CLARKE + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_ccw_armor - name = "Exosuit Module (Reactive Armor Booster Module)" + name = "Reactive Armor Booster Module" desc = "Exosuit-mounted melee armor booster." id = "mech_ccw_armor" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/armor/anticcw_armor_booster materials = list(/datum/material/iron=20000,/datum/material/silver=5000) construction_time = 100 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_RIPLEY, + RND_CATEGORY_MECHFAB_ODYSSEUS, + RND_CATEGORY_MECHFAB_GYGAX, + RND_CATEGORY_MECHFAB_DURAND, + RND_CATEGORY_MECHFAB_HONK, + RND_CATEGORY_MECHFAB_PHAZON, + RND_CATEGORY_MECHFAB_CLARKE + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MODULES, + RND_CATEGORY_MECHFAB_RIPLEY + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_ODYSSEUS + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_CLARKE + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_proj_armor - name = "Exosuit Module (Reflective Armor Booster Module)" + name = "Reflective Armor Booster Module" desc = "Exosuit-mounted ranged armor booster." id = "mech_proj_armor" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/armor/antiproj_armor_booster materials = list(/datum/material/iron=20000,/datum/material/gold=5000) construction_time = 100 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_RIPLEY, + RND_CATEGORY_MECHFAB_ODYSSEUS, + RND_CATEGORY_MECHFAB_GYGAX, + RND_CATEGORY_MECHFAB_DURAND, + RND_CATEGORY_MECHFAB_HONK, + RND_CATEGORY_MECHFAB_PHAZON, + RND_CATEGORY_MECHFAB_CLARKE + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MODULES, + RND_CATEGORY_MECHFAB_RIPLEY + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_ODYSSEUS + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_CLARKE + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_diamond_drill - name = "Exosuit Mining (Diamond Mining Drill)" + name = "Diamond Mining Drill" desc = "An upgraded version of the standard drill." id = "mech_diamond_drill" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/drill/diamonddrill materials = list(/datum/material/iron=10000,/datum/material/diamond=6500) construction_time = 100 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_RIPLEY, + RND_CATEGORY_MECHFAB_CLARKE + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MINING, + RND_CATEGORY_MECHFAB_RIPLEY + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MINING, + RND_CATEGORY_MECHFAB_CLARKE + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MINING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_plasma_cutter - name = "Exosuit Mining (217-D Heavy Plasma Cutter)" + name = "217-D Heavy Plasma Cutter" desc = "A device that shoots resonant plasma bursts at extreme velocity. The blasts are capable of crushing rock and demolishing solid obstacles." id = "mech_plasma_cutter" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/plasma materials = list(/datum/material/iron = 8000, /datum/material/glass = 1000, /datum/material/plasma = 2000) construction_time = 100 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_RIPLEY, + RND_CATEGORY_MECHFAB_GYGAX, + RND_CATEGORY_MECHFAB_DURAND, + RND_CATEGORY_MECHFAB_HONK, + RND_CATEGORY_MECHFAB_PHAZON, + RND_CATEGORY_MECHFAB_CLARKE + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MINING, + RND_CATEGORY_MECHFAB_RIPLEY + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_CLARKE + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mecha_kineticgun - name = "Exosuit Mining (Proto-kinetic Accelerator)" + name = "Exosuit Proto-Kinetic Accelerator" desc = "An exosuit-mounted mining tool that does increased damage in low pressure. Drawing from an onboard power source allows it to project further than the handheld version." id = "mecha_kineticgun" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/mecha_kineticgun materials = list(/datum/material/iron = 8000, /datum/material/glass = 1000) construction_time = 100 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_RIPLEY, + RND_CATEGORY_MECHFAB_GYGAX, + RND_CATEGORY_MECHFAB_DURAND, + RND_CATEGORY_MECHFAB_HONK, + RND_CATEGORY_MECHFAB_PHAZON, + RND_CATEGORY_MECHFAB_CLARKE + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MINING, + RND_CATEGORY_MECHFAB_RIPLEY + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_CLARKE + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_lmg - name = "Exosuit Weapon (\"Ultra AC 2\" LMG)" + name = "Ultra AC 2 LMG" desc = "A weapon for combat exosuits. Shoots a rapid, three shot burst." id = "mech_lmg" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg materials = list(/datum/material/iron=10000) construction_time = 100 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_GYGAX, + RND_CATEGORY_MECHFAB_DURAND, + RND_CATEGORY_MECHFAB_PHAZON, + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MINING, + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_lmg_ammo name = "Ultra AC 2 Ammunition" desc = "Ammunition for the Ultra AC 2 LMG" id = "mech_lmg_ammo" - build_type = PROTOLATHE | AWAY_LATHE | MECHFAB + build_type = MECHFAB build_path = /obj/item/mecha_ammo/lmg materials = list(/datum/material/iron=4000) construction_time = 20 - category = list(RND_CATEGORY_EXOSUIT_AMMUNIATION, RND_CATEGORY_AMMO) - departmental_flags = DEPARTMENT_BITFLAG_SECURITY + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_GYGAX, + RND_CATEGORY_MECHFAB_DURAND, + RND_CATEGORY_MECHFAB_PHAZON, + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MINING, + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_sleeper - name = "Exosuit Medical (Mounted Sleeper)" + name = "Mounted Sleeper" desc = "Equipment for medical exosuits. A mounted sleeper that stabilizes patients and can inject reagents in the exosuit's reserves." id = "mech_sleeper" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/medical/sleeper materials = list(/datum/material/iron=5000, /datum/material/glass = 10000) construction_time = 100 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_ODYSSEUS + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MEDICAL, + RND_CATEGORY_MECHFAB_ODYSSEUS + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_syringe_gun name = "Exosuit Medical (Syringe Gun)" @@ -481,7 +965,15 @@ build_path = /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun materials = list(/datum/material/iron=3000, /datum/material/glass = 2000) construction_time = 200 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_ODYSSEUS + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MEDICAL, + RND_CATEGORY_MECHFAB_ODYSSEUS + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_medical_beamgun name = "Exosuit Medical (Medical Beamgun)" @@ -491,4 +983,12 @@ materials = list(/datum/material/iron = 15000, /datum/material/glass = 8000, /datum/material/plasma = 3000, /datum/material/gold = 8000, /datum/material/diamond = 2000) construction_time = 250 build_path = /obj/item/mecha_parts/mecha_equipment/medical/mechmedbeam - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_ODYSSEUS + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MEDICAL, + RND_CATEGORY_MECHFAB_ODYSSEUS + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index 68142aec257..a424d2d87c5 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -6,7 +6,9 @@ build_path = /obj/item/robot_suit materials = list(/datum/material/iron=15000) construction_time = 500 - category = list(RND_CATEGORY_CYBORG) + category = list( + RND_CATEGORY_MECHFAB_CYBORG + RND_SUBCATEGORY_MECHFAB_CYBORG_CHASSIS + ) /datum/design/borg_chest name = "Cyborg Torso" @@ -15,7 +17,9 @@ build_path = /obj/item/bodypart/chest/robot materials = list(/datum/material/iron=40000) construction_time = 350 - category = list(RND_CATEGORY_CYBORG) + category = list( + RND_CATEGORY_MECHFAB_CYBORG + RND_SUBCATEGORY_MECHFAB_CYBORG_CHASSIS + ) /datum/design/borg_head name = "Cyborg Head" @@ -24,7 +28,9 @@ build_path = /obj/item/bodypart/head/robot materials = list(/datum/material/iron=5000) construction_time = 350 - category = list(RND_CATEGORY_CYBORG) + category = list( + RND_CATEGORY_MECHFAB_CYBORG + RND_SUBCATEGORY_MECHFAB_CYBORG_CHASSIS + ) /datum/design/borg_l_arm name = "Cyborg Left Arm" @@ -33,7 +39,9 @@ build_path = /obj/item/bodypart/l_arm/robot materials = list(/datum/material/iron=10000) construction_time = 200 - category = list(RND_CATEGORY_CYBORG) + category = list( + RND_CATEGORY_MECHFAB_CYBORG + RND_SUBCATEGORY_MECHFAB_CYBORG_CHASSIS + ) /datum/design/borg_r_arm name = "Cyborg Right Arm" @@ -42,7 +50,9 @@ build_path = /obj/item/bodypart/r_arm/robot materials = list(/datum/material/iron=10000) construction_time = 200 - category = list(RND_CATEGORY_CYBORG) + category = list( + RND_CATEGORY_MECHFAB_CYBORG + RND_SUBCATEGORY_MECHFAB_CYBORG_CHASSIS + ) /datum/design/borg_l_leg name = "Cyborg Left Leg" @@ -51,7 +61,9 @@ build_path = /obj/item/bodypart/l_leg/robot materials = list(/datum/material/iron=10000) construction_time = 200 - category = list(RND_CATEGORY_CYBORG) + category = list( + RND_CATEGORY_MECHFAB_CYBORG + RND_SUBCATEGORY_MECHFAB_CYBORG_CHASSIS + ) /datum/design/borg_r_leg name = "Cyborg Right Leg" @@ -60,7 +72,9 @@ build_path = /obj/item/bodypart/r_leg/robot materials = list(/datum/material/iron=10000) construction_time = 200 - category = list(RND_CATEGORY_CYBORG) + category = list( + RND_CATEGORY_MECHFAB_CYBORG + RND_SUBCATEGORY_MECHFAB_CYBORG_CHASSIS + ) //Ripley /datum/design/ripley_chassis @@ -70,7 +84,9 @@ build_path = /obj/item/mecha_parts/chassis/ripley materials = list(/datum/material/iron=20000) construction_time = 100 - category = list(RND_CATEGORY_RIPLEY) + category = list( + RND_CATEGORY_MECHFAB_RIPLEY + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/ripley_torso name = "Exosuit Torso (APLU \"Ripley\")" @@ -79,7 +95,9 @@ build_path = /obj/item/mecha_parts/part/ripley_torso materials = list(/datum/material/iron=20000,/datum/material/glass = 7500) construction_time = 200 - category = list(RND_CATEGORY_RIPLEY) + category = list( + RND_CATEGORY_MECHFAB_RIPLEY + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/ripley_left_arm name = "Exosuit Left Arm (APLU \"Ripley\")" @@ -88,7 +106,9 @@ build_path = /obj/item/mecha_parts/part/ripley_left_arm materials = list(/datum/material/iron=15000) construction_time = 150 - category = list(RND_CATEGORY_RIPLEY) + category = list( + RND_CATEGORY_MECHFAB_RIPLEY + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/ripley_right_arm name = "Exosuit Right Arm (APLU \"Ripley\")" @@ -97,7 +117,9 @@ build_path = /obj/item/mecha_parts/part/ripley_right_arm materials = list(/datum/material/iron=15000) construction_time = 150 - category = list(RND_CATEGORY_RIPLEY) + category = list( + RND_CATEGORY_MECHFAB_RIPLEY + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/ripley_left_leg name = "Exosuit Left Leg (APLU \"Ripley\")" @@ -106,7 +128,9 @@ build_path = /obj/item/mecha_parts/part/ripley_left_leg materials = list(/datum/material/iron=15000) construction_time = 150 - category = list(RND_CATEGORY_RIPLEY) + category = list( + RND_CATEGORY_MECHFAB_RIPLEY + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/ripley_right_leg name = "Exosuit Right Leg (APLU \"Ripley\")" @@ -115,7 +139,9 @@ build_path = /obj/item/mecha_parts/part/ripley_right_leg materials = list(/datum/material/iron=15000) construction_time = 150 - category = list(RND_CATEGORY_RIPLEY) + category = list( + RND_CATEGORY_MECHFAB_RIPLEY + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) //Odysseus /datum/design/odysseus_chassis @@ -125,7 +151,9 @@ build_path = /obj/item/mecha_parts/chassis/odysseus materials = list(/datum/material/iron=20000) construction_time = 100 - category = list(RND_CATEGORY_ODYSSEUS) + category = list( + RND_CATEGORY_MECHFAB_ODYSSEUS + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/odysseus_torso name = "Exosuit Torso (\"Odysseus\")" @@ -134,7 +162,9 @@ build_path = /obj/item/mecha_parts/part/odysseus_torso materials = list(/datum/material/iron=12000) construction_time = 180 - category = list(RND_CATEGORY_ODYSSEUS) + category = list( + RND_CATEGORY_MECHFAB_ODYSSEUS + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/odysseus_head name = "Exosuit Head (\"Odysseus\")" @@ -143,7 +173,9 @@ build_path = /obj/item/mecha_parts/part/odysseus_head materials = list(/datum/material/iron=6000,/datum/material/glass = 10000) construction_time = 100 - category = list(RND_CATEGORY_ODYSSEUS) + category = list( + RND_CATEGORY_MECHFAB_ODYSSEUS + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/odysseus_left_arm name = "Exosuit Left Arm (\"Odysseus\")" @@ -152,7 +184,9 @@ build_path = /obj/item/mecha_parts/part/odysseus_left_arm materials = list(/datum/material/iron=6000) construction_time = 120 - category = list(RND_CATEGORY_ODYSSEUS) + category = list( + RND_CATEGORY_MECHFAB_ODYSSEUS + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/odysseus_right_arm name = "Exosuit Right Arm (\"Odysseus\")" @@ -161,7 +195,9 @@ build_path = /obj/item/mecha_parts/part/odysseus_right_arm materials = list(/datum/material/iron=6000) construction_time = 120 - category = list(RND_CATEGORY_ODYSSEUS) + category = list( + RND_CATEGORY_MECHFAB_ODYSSEUS + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/odysseus_left_leg name = "Exosuit Left Leg (\"Odysseus\")" @@ -170,7 +206,9 @@ build_path = /obj/item/mecha_parts/part/odysseus_left_leg materials = list(/datum/material/iron=7000) construction_time = 130 - category = list(RND_CATEGORY_ODYSSEUS) + category = list( + RND_CATEGORY_MECHFAB_ODYSSEUS + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/odysseus_right_leg name = "Exosuit Right Leg (\"Odysseus\")" @@ -179,7 +217,9 @@ build_path = /obj/item/mecha_parts/part/odysseus_right_leg materials = list(/datum/material/iron=7000) construction_time = 130 - category = list(RND_CATEGORY_ODYSSEUS) + category = list( + RND_CATEGORY_MECHFAB_ODYSSEUS + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) //Gygax /datum/design/gygax_chassis @@ -189,7 +229,9 @@ build_path = /obj/item/mecha_parts/chassis/gygax materials = list(/datum/material/iron=20000) construction_time = 100 - category = list(RND_CATEGORY_GYGAX) + category = list( + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/gygax_torso name = "Exosuit Torso (\"Gygax\")" @@ -198,7 +240,9 @@ build_path = /obj/item/mecha_parts/part/gygax_torso materials = list(/datum/material/iron=20000,/datum/material/glass = 10000,/datum/material/gold=2000, /datum/material/silver=2000) construction_time = 300 - category = list(RND_CATEGORY_GYGAX) + category = list( + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/gygax_head name = "Exosuit Head (\"Gygax\")" @@ -207,7 +251,9 @@ build_path = /obj/item/mecha_parts/part/gygax_head materials = list(/datum/material/iron=10000,/datum/material/glass = 5000, /datum/material/gold=2000, /datum/material/silver=2000) construction_time = 200 - category = list(RND_CATEGORY_GYGAX) + category = list( + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/gygax_left_arm name = "Exosuit Left Arm (\"Gygax\")" @@ -216,7 +262,9 @@ build_path = /obj/item/mecha_parts/part/gygax_left_arm materials = list(/datum/material/iron=15000, /datum/material/gold=1000, /datum/material/silver=1000) construction_time = 200 - category = list(RND_CATEGORY_GYGAX) + category = list( + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/gygax_right_arm name = "Exosuit Right Arm (\"Gygax\")" @@ -225,7 +273,9 @@ build_path = /obj/item/mecha_parts/part/gygax_right_arm materials = list(/datum/material/iron=15000, /datum/material/gold=1000, /datum/material/silver=1000) construction_time = 200 - category = list(RND_CATEGORY_GYGAX) + category = list( + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/gygax_left_leg name = "Exosuit Left Leg (\"Gygax\")" @@ -234,7 +284,9 @@ build_path = /obj/item/mecha_parts/part/gygax_left_leg materials = list(/datum/material/iron=15000, /datum/material/gold=2000, /datum/material/silver=2000) construction_time = 200 - category = list(RND_CATEGORY_GYGAX) + category = list( + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/gygax_right_leg name = "Exosuit Right Leg (\"Gygax\")" @@ -243,7 +295,9 @@ build_path = /obj/item/mecha_parts/part/gygax_right_leg materials = list(/datum/material/iron=15000, /datum/material/gold=2000, /datum/material/silver=2000) construction_time = 200 - category = list(RND_CATEGORY_GYGAX) + category = list( + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/gygax_armor name = "Exosuit Armor (\"Gygax\")" @@ -252,7 +306,9 @@ build_path = /obj/item/mecha_parts/part/gygax_armor materials = list(/datum/material/iron=15000,/datum/material/gold=10000, /datum/material/silver=10000, /datum/material/titanium=10000) construction_time = 600 - category = list(RND_CATEGORY_GYGAX) + category = list( + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) //Durand /datum/design/durand_chassis @@ -262,7 +318,9 @@ build_path = /obj/item/mecha_parts/chassis/durand materials = list(/datum/material/iron=25000) construction_time = 100 - category = list(RND_CATEGORY_DURAND) + category = list( + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/durand_torso name = "Exosuit Torso (\"Durand\")" @@ -271,7 +329,9 @@ build_path = /obj/item/mecha_parts/part/durand_torso materials = list(/datum/material/iron=25000, /datum/material/glass = 10000,/datum/material/silver=10000) construction_time = 300 - category = list(RND_CATEGORY_DURAND) + category = list( + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/durand_head name = "Exosuit Head (\"Durand\")" @@ -280,7 +340,9 @@ build_path = /obj/item/mecha_parts/part/durand_head materials = list(/datum/material/iron=10000,/datum/material/glass = 15000,/datum/material/silver=2000) construction_time = 200 - category = list(RND_CATEGORY_DURAND) + category = list( + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/durand_left_arm name = "Exosuit Left Arm (\"Durand\")" @@ -289,7 +351,9 @@ build_path = /obj/item/mecha_parts/part/durand_left_arm materials = list(/datum/material/iron=10000,/datum/material/silver=4000) construction_time = 200 - category = list(RND_CATEGORY_DURAND) + category = list( + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/durand_right_arm name = "Exosuit Right Arm (\"Durand\")" @@ -298,7 +362,9 @@ build_path = /obj/item/mecha_parts/part/durand_right_arm materials = list(/datum/material/iron=10000,/datum/material/silver=4000) construction_time = 200 - category = list(RND_CATEGORY_DURAND) + category = list( + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/durand_left_leg name = "Exosuit Left Leg (\"Durand\")" @@ -307,7 +373,9 @@ build_path = /obj/item/mecha_parts/part/durand_left_leg materials = list(/datum/material/iron=15000,/datum/material/silver=4000) construction_time = 200 - category = list(RND_CATEGORY_DURAND) + category = list( + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/durand_right_leg name = "Exosuit Right Leg (\"Durand\")" @@ -316,7 +384,9 @@ build_path = /obj/item/mecha_parts/part/durand_right_leg materials = list(/datum/material/iron=15000,/datum/material/silver=4000) construction_time = 200 - category = list(RND_CATEGORY_DURAND) + category = list( + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/durand_armor name = "Exosuit Armor (\"Durand\")" @@ -325,7 +395,9 @@ build_path = /obj/item/mecha_parts/part/durand_armor materials = list(/datum/material/iron=30000,/datum/material/uranium=25000,/datum/material/titanium=20000) construction_time = 600 - category = list(RND_CATEGORY_DURAND) + category = list( + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) //H.O.N.K /datum/design/honk_chassis @@ -335,7 +407,9 @@ build_path = /obj/item/mecha_parts/chassis/honker materials = list(/datum/material/iron=20000) construction_time = 100 - category = list(RND_CATEGORY_HONK) + category = list( + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/honk_torso name = "Exosuit Torso (\"H.O.N.K\")" @@ -344,7 +418,9 @@ build_path = /obj/item/mecha_parts/part/honker_torso materials = list(/datum/material/iron=20000,/datum/material/glass = 10000,/datum/material/bananium=10000) construction_time = 300 - category = list(RND_CATEGORY_HONK) + category = list( + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/honk_head name = "Exosuit Head (\"H.O.N.K\")" @@ -353,7 +429,9 @@ build_path = /obj/item/mecha_parts/part/honker_head materials = list(/datum/material/iron=10000,/datum/material/glass = 5000,/datum/material/bananium=5000) construction_time = 200 - category = list(RND_CATEGORY_HONK) + category = list( + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/honk_left_arm name = "Exosuit Left Arm (\"H.O.N.K\")" @@ -362,7 +440,9 @@ build_path = /obj/item/mecha_parts/part/honker_left_arm materials = list(/datum/material/iron=15000,/datum/material/bananium=5000) construction_time = 200 - category = list(RND_CATEGORY_HONK) + category = list( + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/honk_right_arm name = "Exosuit Right Arm (\"H.O.N.K\")" @@ -371,7 +451,9 @@ build_path = /obj/item/mecha_parts/part/honker_right_arm materials = list(/datum/material/iron=15000,/datum/material/bananium=5000) construction_time = 200 - category = list(RND_CATEGORY_HONK) + category = list( + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/honk_left_leg name = "Exosuit Left Leg (\"H.O.N.K\")" @@ -380,7 +462,9 @@ build_path =/obj/item/mecha_parts/part/honker_left_leg materials = list(/datum/material/iron=20000,/datum/material/bananium=5000) construction_time = 200 - category = list(RND_CATEGORY_HONK) + category = list( + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/honk_right_leg name = "Exosuit Right Leg (\"H.O.N.K\")" @@ -389,8 +473,9 @@ build_path = /obj/item/mecha_parts/part/honker_right_leg materials = list(/datum/material/iron=20000,/datum/material/bananium=5000) construction_time = 200 - category = list(RND_CATEGORY_HONK) - + category = list( + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) //Phazon /datum/design/phazon_chassis @@ -400,7 +485,9 @@ build_path = /obj/item/mecha_parts/chassis/phazon materials = list(/datum/material/iron=20000) construction_time = 100 - category = list(RND_CATEGORY_PHAZON) + category = list( + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/phazon_torso name = "Exosuit Torso (\"Phazon\")" @@ -409,7 +496,9 @@ build_path = /obj/item/mecha_parts/part/phazon_torso materials = list(/datum/material/iron=35000,/datum/material/glass = 10000,/datum/material/plasma=20000) construction_time = 300 - category = list(RND_CATEGORY_PHAZON) + category = list( + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/phazon_head name = "Exosuit Head (\"Phazon\")" @@ -418,7 +507,9 @@ build_path = /obj/item/mecha_parts/part/phazon_head materials = list(/datum/material/iron=15000,/datum/material/glass = 5000,/datum/material/plasma=10000) construction_time = 200 - category = list(RND_CATEGORY_PHAZON) + category = list( + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/phazon_left_arm name = "Exosuit Left Arm (\"Phazon\")" @@ -427,7 +518,9 @@ build_path = /obj/item/mecha_parts/part/phazon_left_arm materials = list(/datum/material/iron=20000,/datum/material/plasma=10000) construction_time = 200 - category = list(RND_CATEGORY_PHAZON) + category = list( + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/phazon_right_arm name = "Exosuit Right Arm (\"Phazon\")" @@ -436,7 +529,9 @@ build_path = /obj/item/mecha_parts/part/phazon_right_arm materials = list(/datum/material/iron=20000,/datum/material/plasma=10000) construction_time = 200 - category = list(RND_CATEGORY_PHAZON) + category = list( + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/phazon_left_leg name = "Exosuit Left Leg (\"Phazon\")" @@ -445,7 +540,9 @@ build_path = /obj/item/mecha_parts/part/phazon_left_leg materials = list(/datum/material/iron=20000,/datum/material/plasma=10000) construction_time = 200 - category = list(RND_CATEGORY_PHAZON) + category = list( + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/phazon_right_leg name = "Exosuit Right Leg (\"Phazon\")" @@ -454,7 +551,9 @@ build_path = /obj/item/mecha_parts/part/phazon_right_leg materials = list(/datum/material/iron=20000,/datum/material/plasma=10000) construction_time = 200 - category = list(RND_CATEGORY_PHAZON) + category = list( + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/phazon_armor name = "Exosuit Armor (\"Phazon\")" @@ -463,7 +562,9 @@ build_path = /obj/item/mecha_parts/part/phazon_armor materials = list(/datum/material/iron=25000,/datum/material/plasma=20000,/datum/material/titanium=20000) construction_time = 300 - category = list(RND_CATEGORY_PHAZON) + category = list( + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) //Savannah-Ivanov /datum/design/savannah_ivanov_chassis @@ -473,7 +574,9 @@ build_path = /obj/item/mecha_parts/chassis/savannah_ivanov materials = list(/datum/material/iron=20000) construction_time = 100 - category = list(RND_CATEGORY_SAVANNAH_IVANOV) + category = list( + RND_CATEGORY_MECHFAB_SAVANNAH_IVANOV + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/savannah_ivanov_torso name = "Exosuit Torso (\"Savannah-Ivanov\")" @@ -482,7 +585,9 @@ build_path = /obj/item/mecha_parts/part/savannah_ivanov_torso materials = list(/datum/material/iron=20000,/datum/material/glass = 7500) construction_time = 200 - category = list(RND_CATEGORY_SAVANNAH_IVANOV) + category = list( + RND_CATEGORY_MECHFAB_SAVANNAH_IVANOV + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/savannah_ivanov_head name = "Exosuit Head (\"Savannah-Ivanov\")" @@ -491,7 +596,9 @@ build_path = /obj/item/mecha_parts/part/savannah_ivanov_head materials = list(/datum/material/iron=6000,/datum/material/glass = 10000) construction_time = 100 - category = list(RND_CATEGORY_SAVANNAH_IVANOV) + category = list( + RND_CATEGORY_MECHFAB_SAVANNAH_IVANOV + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/savannah_ivanov_left_arm name = "Exosuit Left Arm (\"Savannah-Ivanov\")" @@ -500,7 +607,9 @@ build_path = /obj/item/mecha_parts/part/savannah_ivanov_left_arm materials = list(/datum/material/iron=15000) construction_time = 150 - category = list(RND_CATEGORY_SAVANNAH_IVANOV) + category = list( + RND_CATEGORY_MECHFAB_SAVANNAH_IVANOV + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/savannah_ivanov_right_arm name = "Exosuit Right Arm (\"Savannah-Ivanov\")" @@ -509,7 +618,9 @@ build_path = /obj/item/mecha_parts/part/savannah_ivanov_right_arm materials = list(/datum/material/iron=15000) construction_time = 150 - category = list(RND_CATEGORY_SAVANNAH_IVANOV) + category = list( + RND_CATEGORY_MECHFAB_SAVANNAH_IVANOV + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/savannah_ivanov_chassis name = "Exosuit Chassis (\"Savannah-Ivanov\")" @@ -518,7 +629,9 @@ build_path = /obj/item/mecha_parts/chassis/savannah_ivanov materials = list(/datum/material/iron=25000) construction_time = 100 - category = list(RND_CATEGORY_SAVANNAH_IVANOV) + category = list( + RND_CATEGORY_MECHFAB_SAVANNAH_IVANOV + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/savannah_ivanov_torso name = "Exosuit Torso (\"Savannah-Ivanov\")" @@ -527,7 +640,9 @@ build_path = /obj/item/mecha_parts/part/savannah_ivanov_torso materials = list(/datum/material/iron=25000, /datum/material/glass = 10000,/datum/material/silver=10000) construction_time = 300 - category = list(RND_CATEGORY_SAVANNAH_IVANOV) + category = list( + RND_CATEGORY_MECHFAB_SAVANNAH_IVANOV + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/savannah_ivanov_head name = "Exosuit Head (\"Savannah-Ivanov\")" @@ -536,7 +651,9 @@ build_path = /obj/item/mecha_parts/part/savannah_ivanov_head materials = list(/datum/material/iron=10000,/datum/material/glass = 15000,/datum/material/silver=2000) construction_time = 200 - category = list(RND_CATEGORY_SAVANNAH_IVANOV) + category = list( + RND_CATEGORY_MECHFAB_SAVANNAH_IVANOV + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/savannah_ivanov_left_arm name = "Exosuit Left Arm (\"Savannah-Ivanov\")" @@ -545,7 +662,9 @@ build_path = /obj/item/mecha_parts/part/savannah_ivanov_left_arm materials = list(/datum/material/iron=10000,/datum/material/silver=4000) construction_time = 200 - category = list(RND_CATEGORY_SAVANNAH_IVANOV) + category = list( + RND_CATEGORY_MECHFAB_SAVANNAH_IVANOV + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/savannah_ivanov_right_arm name = "Exosuit Right Arm (\"Savannah-Ivanov\")" @@ -554,7 +673,9 @@ build_path = /obj/item/mecha_parts/part/savannah_ivanov_right_arm materials = list(/datum/material/iron=10000,/datum/material/silver=4000) construction_time = 200 - category = list(RND_CATEGORY_SAVANNAH_IVANOV) + category = list( + RND_CATEGORY_MECHFAB_SAVANNAH_IVANOV + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/savannah_ivanov_left_leg name = "Exosuit Left Leg (\"Savannah-Ivanov\")" @@ -563,7 +684,9 @@ build_path = /obj/item/mecha_parts/part/savannah_ivanov_left_leg materials = list(/datum/material/iron=15000,/datum/material/silver=4000) construction_time = 200 - category = list(RND_CATEGORY_SAVANNAH_IVANOV) + category = list( + RND_CATEGORY_MECHFAB_SAVANNAH_IVANOV + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/savannah_ivanov_right_leg name = "Exosuit Right Leg (\"Savannah-Ivanov\")" @@ -572,7 +695,9 @@ build_path = /obj/item/mecha_parts/part/savannah_ivanov_right_leg materials = list(/datum/material/iron=15000,/datum/material/silver=4000) construction_time = 200 - category = list(RND_CATEGORY_SAVANNAH_IVANOV) + category = list( + RND_CATEGORY_MECHFAB_SAVANNAH_IVANOV + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/savannah_ivanov_armor name = "Exosuit Armor (\"Savannah-Ivanov\")" @@ -581,7 +706,9 @@ build_path = /obj/item/mecha_parts/part/savannah_ivanov_armor materials = list(/datum/material/iron=30000,/datum/material/uranium=25000,/datum/material/titanium=20000) construction_time = 600 - category = list(RND_CATEGORY_SAVANNAH_IVANOV) + category = list( + RND_CATEGORY_MECHFAB_SAVANNAH_IVANOV + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) //Clarke /datum/design/clarke_chassis @@ -591,7 +718,9 @@ build_path = /obj/item/mecha_parts/chassis/clarke materials = list(/datum/material/iron=20000) construction_time = 100 - category = list(RND_CATEGORY_CLARKE) + category = list( + RND_CATEGORY_MECHFAB_CLARKE + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/clarke_torso name = "Exosuit Torso (\"Clarke\")" @@ -600,7 +729,9 @@ build_path = /obj/item/mecha_parts/part/clarke_torso materials = list(/datum/material/iron=20000,/datum/material/glass = 7500) construction_time = 200 - category = list(RND_CATEGORY_CLARKE) + category = list( + RND_CATEGORY_MECHFAB_CLARKE + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/clarke_head name = "Exosuit Head (\"Clarke\")" @@ -609,7 +740,9 @@ build_path = /obj/item/mecha_parts/part/clarke_head materials = list(/datum/material/iron=6000,/datum/material/glass = 10000) construction_time = 100 - category = list(RND_CATEGORY_CLARKE) + category = list( + RND_CATEGORY_MECHFAB_CLARKE + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/clarke_left_arm name = "Exosuit Left Arm (\"Clarke\")" @@ -618,7 +751,9 @@ build_path = /obj/item/mecha_parts/part/clarke_left_arm materials = list(/datum/material/iron=15000) construction_time = 150 - category = list(RND_CATEGORY_CLARKE) + category = list( + RND_CATEGORY_MECHFAB_CLARKE + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) /datum/design/clarke_right_arm name = "Exosuit Right Arm (\"Clarke\")" @@ -627,264 +762,402 @@ build_path = /obj/item/mecha_parts/part/clarke_right_arm materials = list(/datum/material/iron=15000) construction_time = 150 - category = list(RND_CATEGORY_CLARKE) + category = list( + RND_CATEGORY_MECHFAB_CLARKE + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) //Exosuit Equipment /datum/design/ripleyupgrade - name = "Ripley MK-I to MK-II conversion kit" + name = "Ripley MK-I to MK-II Conversion Kit" id = "ripleyupgrade" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/ripleyupgrade materials = list(/datum/material/iron=10000,/datum/material/plasma=10000) construction_time = 100 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_RIPLEY + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MODULES, + RND_CATEGORY_MECHFAB_RIPLEY + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + ) /datum/design/mech_hydraulic_clamp - name = "Exosuit Engineering (Hydraulic Clamp)" + name = "Hydraulic Clamp" id = "mech_hydraulic_clamp" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/hydraulic_clamp materials = list(/datum/material/iron=10000) construction_time = 100 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_RIPLEY + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC, + RND_CATEGORY_MECHFAB_RIPLEY + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + ) /datum/design/mech_drill - name = "Exosuit Mining (Mining Drill)" + name = "Mining Drill" id = "mech_drill" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/drill materials = list(/datum/material/iron=10000) construction_time = 100 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_RIPLEY, + RND_CATEGORY_MECHFAB_GYGAX, + RND_CATEGORY_MECHFAB_DURAND, + RND_CATEGORY_MECHFAB_HONK, + RND_CATEGORY_MECHFAB_PHAZON, + RND_CATEGORY_MECHFAB_CLARKE + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MINING, + RND_CATEGORY_MECHFAB_RIPLEY + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_CLARKE + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_mining_scanner - name = "Exosuit Engineering (Mining Scanner)" + name = "Mining Scanner" id = "mech_mscanner" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/mining_scanner materials = list(/datum/material/iron=5000,/datum/material/glass = 2500) construction_time = 50 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_RIPLEY, + RND_CATEGORY_MECHFAB_CLARKE + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MINING, + RND_CATEGORY_MECHFAB_RIPLEY + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_CLARKE + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) /datum/design/mech_extinguisher - name = "Exosuit Engineering (Extinguisher)" + name = "Extinguisher" id = "mech_extinguisher" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/extinguisher materials = list(/datum/material/iron=10000) construction_time = 100 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_RIPLEY, + RND_CATEGORY_MECHFAB_CLARKE + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC, + RND_CATEGORY_MECHFAB_RIPLEY + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_CLARKE + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) /datum/design/mech_generator - name = "Exosuit Module (Plasma Generator)" + name = "Plasma Generator" id = "mech_generator" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/generator materials = list(/datum/material/iron=10000,/datum/material/glass = 1000,/datum/material/silver=2000,/datum/material/plasma=5000) construction_time = 100 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_RIPLEY, + RND_CATEGORY_MECHFAB_GYGAX, + RND_CATEGORY_MECHFAB_DURAND, + RND_CATEGORY_MECHFAB_HONK, + RND_CATEGORY_MECHFAB_PHAZON, + RND_CATEGORY_MECHFAB_CLARKE + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC, + RND_CATEGORY_MECHFAB_RIPLEY + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_CLARKE + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_mousetrap_mortar - name = "H.O.N.K Weapon (Mousetrap Mortar)" + name = "Mousetrap Mortar" id = "mech_mousetrap_mortar" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/mousetrap_mortar materials = list(/datum/material/iron=20000,/datum/material/bananium=5000) construction_time = 300 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_HONK, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_banana_mortar - name = "H.O.N.K Weapon (Banana Mortar)" + name = "Banana Mortar" id = "mech_banana_mortar" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/banana_mortar materials = list(/datum/material/iron=20000,/datum/material/bananium=5000) construction_time = 300 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_HONK, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_honker - name = "H.O.N.K Weapon (HoNkER BlAsT 5000)" + name = "HoNkER BlAsT 5000" id = "mech_honker" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/honker materials = list(/datum/material/iron=20000,/datum/material/bananium=10000) construction_time = 500 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_HONK, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_punching_glove - name = "H.O.N.K Weapon (Oingo Boingo Punch-face)" + name = "Oingo Boingo Punch-face" id = "mech_punching_face" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/punching_glove materials = list(/datum/material/iron=20000,/datum/material/bananium=7500) construction_time = 400 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_HONK, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE ///////////////////////////////////////// //////////////Borg Upgrades////////////// ///////////////////////////////////////// /datum/design/borg_upgrade_rename - name = "Cyborg Upgrade (Rename Board)" + name = "Rename Board" id = "borg_upgrade_rename" build_type = MECHFAB build_path = /obj/item/borg/upgrade/rename materials = list(/datum/material/iron = 5000) construction_time = 120 - category = list(RND_CATEGORY_CYBORG_UPGRADE_MODULES) + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_ALL + ) /datum/design/borg_upgrade_restart - name = "Cyborg Upgrade (Emergency Reboot Board)" + name = "Emergency Reboot Board" id = "borg_upgrade_restart" build_type = MECHFAB build_path = /obj/item/borg_restart_board materials = list(/datum/material/iron = 20000 , /datum/material/glass = 5000) construction_time = 120 - category = list(RND_CATEGORY_CYBORG_UPGRADE_MODULES) + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_ALL + ) /datum/design/borg_upgrade_thrusters - name = "Cyborg Upgrade (Ion Thrusters)" + name = "Ion Thrusters" id = "borg_upgrade_thrusters" build_type = MECHFAB build_path = /obj/item/borg/upgrade/thrusters materials = list(/datum/material/iron = 10000, /datum/material/glass = 6000, /datum/material/plasma = 5000, /datum/material/uranium = 6000) construction_time = 120 - category = list(RND_CATEGORY_CYBORG_UPGRADE_MODULES) + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_ALL + ) /datum/design/borg_upgrade_disablercooler - name = "Cyborg Upgrade (Rapid Disabler Cooling Module)" + name = "Rapid Disabler Cooling Module" id = "borg_upgrade_disablercooler" build_type = MECHFAB build_path = /obj/item/borg/upgrade/disablercooler materials = list(/datum/material/iron = 20000 , /datum/material/glass = 6000, /datum/material/gold = 2000, /datum/material/diamond = 2000) construction_time = 120 - category = list(RND_CATEGORY_CYBORG_UPGRADE_MODULES) + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_SECURITY + ) /datum/design/borg_upgrade_diamonddrill - name = "Cyborg Upgrade (Diamond Drill)" + name = "Diamond Drill" id = "borg_upgrade_diamonddrill" build_type = MECHFAB build_path = /obj/item/borg/upgrade/ddrill materials = list(/datum/material/iron=10000, /datum/material/glass = 6000, /datum/material/diamond = 2000) construction_time = 80 - category = list(RND_CATEGORY_CYBORG_UPGRADE_MODULES) + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_MINING + ) /datum/design/borg_upgrade_holding - name = "Cyborg Upgrade (Ore Satchel of Holding)" + name = "Ore Satchel of Holding" id = "borg_upgrade_holding" build_type = MECHFAB build_path = /obj/item/borg/upgrade/soh materials = list(/datum/material/iron = 10000, /datum/material/gold = 2000, /datum/material/uranium = 1000) construction_time = 40 - category = list(RND_CATEGORY_CYBORG_UPGRADE_MODULES) + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_MINING + ) /datum/design/borg_upgrade_lavaproof - name = "Cyborg Upgrade (Lavaproof Tracks)" + name = "Lavaproof Tracks" id = "borg_upgrade_lavaproof" build_type = MECHFAB build_path = /obj/item/borg/upgrade/lavaproof materials = list(/datum/material/iron = 10000, /datum/material/plasma = 4000, /datum/material/titanium = 5000) construction_time = 120 - category = list(RND_CATEGORY_CYBORG_UPGRADE_MODULES) + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_MINING + ) /datum/design/borg_syndicate_module - name = "Cyborg Upgrade (Illegal Modules)" + name = "Illegal Modules" id = "borg_syndicate_module" build_type = MECHFAB build_path = /obj/item/borg/upgrade/syndicate materials = list(/datum/material/iron = 15000, /datum/material/glass = 15000, /datum/material/diamond = 10000) construction_time = 120 - category = list(RND_CATEGORY_CYBORG_UPGRADE_MODULES) + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_ALL + ) /datum/design/borg_transform_clown - name = "Cyborg Upgrade (Clown Model)" + name = "Clown Module" id = "borg_transform_clown" build_type = MECHFAB build_path = /obj/item/borg/upgrade/transform/clown materials = list(/datum/material/iron = 15000, /datum/material/glass = 15000, /datum/material/bananium = 1000) construction_time = 120 - category = list(RND_CATEGORY_CYBORG_UPGRADE_MODULES) + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_ALL + ) /datum/design/borg_upgrade_selfrepair - name = "Cyborg Upgrade (Self-repair)" + name = "Self-Repair Module" id = "borg_upgrade_selfrepair" build_type = MECHFAB build_path = /obj/item/borg/upgrade/selfrepair materials = list(/datum/material/iron = 15000, /datum/material/glass = 15000) construction_time = 80 - category = list(RND_CATEGORY_CYBORG_UPGRADE_MODULES) + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_ALL + ) /datum/design/borg_upgrade_expandedsynthesiser - name = "Cyborg Upgrade (Hypospray Expanded Synthesiser)" + name = "Expanded Hypospray Synthesiser" id = "borg_upgrade_expandedsynthesiser" build_type = MECHFAB build_path = /obj/item/borg/upgrade/hypospray/expanded materials = list(/datum/material/iron = 15000, /datum/material/glass = 15000, /datum/material/plasma = 8000, /datum/material/uranium = 8000) construction_time = 80 - category = list(RND_CATEGORY_CYBORG_UPGRADE_MODULES) + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_MEDICAL + ) /datum/design/borg_upgrade_piercinghypospray - name = "Cyborg Upgrade (Piercing Hypospray)" + name = "Piercing Hypospray" id = "borg_upgrade_piercinghypospray" build_type = MECHFAB build_path = /obj/item/borg/upgrade/piercing_hypospray materials = list(/datum/material/iron = 15000, /datum/material/glass = 15000, /datum/material/titanium = 5000, /datum/material/diamond = 3000) construction_time = 80 - category = list(RND_CATEGORY_CYBORG_UPGRADE_MODULES) + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_MEDICAL + ) /datum/design/borg_upgrade_defibrillator - name = "Cyborg Upgrade (Defibrillator)" + name = "Defibrillator" id = "borg_upgrade_defibrillator" build_type = MECHFAB build_path = /obj/item/borg/upgrade/defib materials = list(/datum/material/iron = 8000, /datum/material/glass = 5000, /datum/material/silver = 4000, /datum/material/gold = 3000) construction_time = 80 - category = list(RND_CATEGORY_CYBORG_UPGRADE_MODULES) + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_MEDICAL + ) /datum/design/borg_upgrade_surgicalprocessor - name = "Cyborg Upgrade (Surgical Processor)" + name = "Surgical Processor" id = "borg_upgrade_surgicalprocessor" build_type = MECHFAB build_path = /obj/item/borg/upgrade/processor materials = list(/datum/material/iron = 5000, /datum/material/glass = 4000, /datum/material/silver = 4000) construction_time = 40 - category = list(RND_CATEGORY_CYBORG_UPGRADE_MODULES) + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_MEDICAL + ) /datum/design/borg_upgrade_trashofholding - name = "Cyborg Upgrade (Trash Bag of Holding)" + name = "Trash Bag of Holding" id = "borg_upgrade_trashofholding" build_type = MECHFAB build_path = /obj/item/borg/upgrade/tboh materials = list(/datum/material/gold = 2000, /datum/material/uranium = 1000) construction_time = 40 - category = list(RND_CATEGORY_CYBORG_UPGRADE_MODULES) + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_JANITOR + ) /datum/design/borg_upgrade_advancedmop - name = "Cyborg Upgrade (Advanced Mop)" + name = "Advanced Mop" id = "borg_upgrade_advancedmop" build_type = MECHFAB build_path = /obj/item/borg/upgrade/amop materials = list(/datum/material/iron = 2000, /datum/material/glass = 2000) construction_time = 40 - category = list(RND_CATEGORY_CYBORG_UPGRADE_MODULES) + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_JANITOR + ) /datum/design/borg_upgrade_prt - name = "Cyborg Upgrade (Plating Repair Tool)" + name = "Plating Repair Tool" id = "borg_upgrade_prt" build_type = MECHFAB build_path = /obj/item/borg/upgrade/prt materials = list(/datum/material/iron = 2500, /datum/material/glass = 750) //same price as a cautery construction_time = 40 - category = list(RND_CATEGORY_CYBORG_UPGRADE_MODULES) + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_JANITOR + ) /datum/design/borg_upgrade_expand - name = "Cyborg Upgrade (Expand)" + name = "Expand Module" id = "borg_upgrade_expand" build_type = MECHFAB build_path = /obj/item/borg/upgrade/expand materials = list(/datum/material/iron = 200000, /datum/material/titanium = 5000) construction_time = 120 - category = list(RND_CATEGORY_CYBORG_UPGRADE_MODULES) + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_ALL + ) /datum/design/boris_ai_controller name = "B.O.R.I.S. AI-Cyborg Remote Control" @@ -893,63 +1166,127 @@ build_path = /obj/item/borg/upgrade/ai materials = list(/datum/material/iron = 1200, /datum/material/glass = 1500, /datum/material/gold = 200) construction_time = 50 - category = list(RND_CATEGORY_CONTROL_INTERFACES) + category = list( + RND_CATEGORY_MECHFAB_CYBORG + RND_SUBCATEGORY_MECHFAB_CYBORG_CONTROL_INTERFACES + ) search_metadata = "boris" /datum/design/borg_upgrade_rped - name = "Cyborg Upgrade (RPED)" + name = "Rapid Part Exchange Device" id = "borg_upgrade_rped" build_type = MECHFAB build_path = /obj/item/borg/upgrade/rped materials = list(/datum/material/iron = 10000, /datum/material/glass = 5000) construction_time = 120 - category = list(RND_CATEGORY_CYBORG_UPGRADE_MODULES) + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_ENGINEERING + ) /datum/design/borg_upgrade_circuit_app - name = "Cyborg Upgrade (Circuit Manipulator)" + name = "Circuit Manipulator" id = "borg_upgrade_circuitapp" build_type = MECHFAB build_path = /obj/item/borg/upgrade/circuit_app materials = list(/datum/material/iron = 2000, /datum/material/titanium = 500) construction_time = 120 - category = list(RND_CATEGORY_CYBORG_UPGRADE_MODULES) + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_ENGINEERING + ) /datum/design/borg_upgrade_beaker_app - name = "Cyborg Upgrade (Beaker Storage)" + name = "Secondary Beaker Storage" id = "borg_upgrade_beakerapp" build_type = MECHFAB build_path = /obj/item/borg/upgrade/beaker_app materials = list(/datum/material/iron = 2000, /datum/material/glass = 2250) //Need glass for the new beaker too construction_time = 120 - category = list(RND_CATEGORY_CYBORG_UPGRADE_MODULES) + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_MEDICAL + ) /datum/design/borg_upgrade_pinpointer - name = "Cyborg Upgrade (Crew pinpointer)" + name = "Crew Pinpointer" id = "borg_upgrade_pinpointer" build_type = MECHFAB build_path = /obj/item/borg/upgrade/pinpointer materials = list(/datum/material/iron = 1000, /datum/material/glass = 500) construction_time = 120 - category = list(RND_CATEGORY_CYBORG_UPGRADE_MODULES) + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_MEDICAL + ) /datum/design/borg_upgrade_broomer - name = "Cyborg Upgrade (Experimental Push Broom)" + name = "Experimental Push Broom" id = "borg_upgrade_broomer" build_type = MECHFAB build_path = /obj/item/borg/upgrade/broomer materials = list(/datum/material/iron = 4000, /datum/material/glass = 500) construction_time = 120 - category = list(RND_CATEGORY_CYBORG_UPGRADE_MODULES) + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_JANITOR + ) + +/datum/design/mmi + name = "Man-Machine Interface" + desc = "The Warrior's bland acronym, MMI, obscures the true horror of this monstrosity." + id = "mmi" + build_type = MECHFAB + materials = list(/datum/material/iron = 1000, /datum/material/glass = 500) + construction_time = 75 + build_path = /obj/item/mmi + category = list( + RND_CATEGORY_MECHFAB_CYBORG + RND_SUBCATEGORY_MECHFAB_CYBORG_CONTROL_INTERFACES + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE + +/datum/design/mmi/medical + build_type = PROTOLATHE | AWAY_LATHE + id = "mmi_m" + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MEDICAL + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL + +/datum/design/posibrain + name = "Positronic Brain" + desc = "The latest in Artificial Intelligences." + id = "mmi_posi" + build_type = MECHFAB + materials = list(/datum/material/iron = 1700, /datum/material/glass = 1350, /datum/material/gold = 500) + construction_time = 75 + build_path = /obj/item/mmi/posibrain + category = list( + RND_CATEGORY_MECHFAB_CYBORG + RND_SUBCATEGORY_MECHFAB_CYBORG_CONTROL_INTERFACES + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE //Misc /datum/design/mecha_tracking - name = "Exosuit Tracker (Exosuit Tracking Beacon)" + name = "Exosuit Tracking Beacon" id = "mecha_tracking" build_type = MECHFAB build_path =/obj/item/mecha_parts/mecha_tracking materials = list(/datum/material/iron=500) construction_time = 50 - category = list(RND_CATEGORY_EXOSUIT_EQUIPMENT) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_RIPLEY, + RND_CATEGORY_MECHFAB_GYGAX, + RND_CATEGORY_MECHFAB_DURAND, + RND_CATEGORY_MECHFAB_HONK, + RND_CATEGORY_MECHFAB_PHAZON, + RND_CATEGORY_MECHFAB_CLARKE + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC, + RND_CATEGORY_MECHFAB_RIPLEY + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_CLARKE + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mecha_tracking_ai_control name = "AI Control Beacon" @@ -958,7 +1295,25 @@ build_path = /obj/item/mecha_parts/mecha_tracking/ai_control materials = list(/datum/material/iron = 1000, /datum/material/glass = 500, /datum/material/silver = 200) construction_time = 50 - category = list(RND_CATEGORY_CONTROL_INTERFACES) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT, + RND_CATEGORY_MECHFAB_RIPLEY, + RND_CATEGORY_MECHFAB_GYGAX, + RND_CATEGORY_MECHFAB_DURAND, + RND_CATEGORY_MECHFAB_HONK, + RND_CATEGORY_MECHFAB_PHAZON, + RND_CATEGORY_MECHFAB_CLARKE + ) + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_CONTROL_INTERFACES, + RND_CATEGORY_MECHFAB_RIPLEY + RND_SUBCATEGORY_MECHFAB_CONTROL_INTERFACES, + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_CONTROL_INTERFACES, + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_CONTROL_INTERFACES, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_CONTROL_INTERFACES, + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_CONTROL_INTERFACES, + RND_CATEGORY_MECHFAB_CLARKE + RND_SUBCATEGORY_MECHFAB_CONTROL_INTERFACES + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/synthetic_flash name = "Flash" @@ -968,69 +1323,87 @@ materials = list(/datum/material/iron = 750, /datum/material/glass = 750) construction_time = 100 build_path = /obj/item/assembly/flash/handheld - category = list(RND_CATEGORY_MISC) + category = list( + RND_CATEGORY_MECHFAB_CYBORG + ) + category = list( + RND_CATEGORY_MECHFAB_CYBORG + RND_SUBCATEGORY_MECHFAB_CYBORG_COMPONENTS + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE //MODsuit construction /datum/design/mod_shell - name = "MOD shell" + name = "MOD Shell" desc = "A 'Nakamura Engineering' designed shell for a Modular Suit." id = "mod_shell" build_type = MECHFAB materials = list(/datum/material/iron = 10000, /datum/material/plasma = 5000) construction_time = 25 SECONDS build_path = /obj/item/mod/construction/shell - category = list(RND_CATEGORY_MOD_CONSTRUCTION) + category = list( + RND_CATEGORY_MODSUITS + RND_SUBCATEGORY_MODUITS_CHASSIS + ) /datum/design/mod_helmet - name = "MOD helmet" + name = "MOD Helmet" desc = "A 'Nakamura Engineering' designed helmet for a Modular Suit." id = "mod_helmet" build_type = MECHFAB materials = list(/datum/material/iron = 5000) construction_time = 10 SECONDS build_path = /obj/item/mod/construction/helmet - category = list(RND_CATEGORY_MOD_CONSTRUCTION) + category = list( + RND_CATEGORY_MODSUITS + RND_SUBCATEGORY_MODUITS_CHASSIS + ) /datum/design/mod_chestplate - name = "MOD chestplate" + name = "MOD Chestplate" desc = "A 'Nakamura Engineering' designed chestplate for a Modular Suit." id = "mod_chestplate" build_type = MECHFAB materials = list(/datum/material/iron = 5000) construction_time = 10 SECONDS build_path = /obj/item/mod/construction/chestplate - category = list(RND_CATEGORY_MOD_CONSTRUCTION) + category = list( + RND_CATEGORY_MODSUITS + RND_SUBCATEGORY_MODUITS_CHASSIS + ) /datum/design/mod_gauntlets - name = "MOD gauntlets" + name = "MOD Gauntlets" desc = "'Nakamura Engineering' designed gauntlets for a Modular Suit." id = "mod_gauntlets" build_type = MECHFAB materials = list(/datum/material/iron = 5000) construction_time = 10 SECONDS build_path = /obj/item/mod/construction/gauntlets - category = list(RND_CATEGORY_MOD_CONSTRUCTION) + category = list( + RND_CATEGORY_MODSUITS + RND_SUBCATEGORY_MODUITS_CHASSIS + ) /datum/design/mod_boots - name = "MOD boots" + name = "MOD Boots" desc = "'Nakamura Engineering' designed boots for a Modular Suit." id = "mod_boots" build_type = MECHFAB materials = list(/datum/material/iron = 5000) construction_time = 10 SECONDS build_path = /obj/item/mod/construction/boots - category = list(RND_CATEGORY_MOD_CONSTRUCTION) + category = list( + RND_CATEGORY_MODSUITS + RND_SUBCATEGORY_MODUITS_CHASSIS + ) /datum/design/mod_plating - name = "MOD external plating" + name = "MOD External Plating" desc = "External plating for a MODsuit." id = "mod_plating_standard" - build_type = MECHFAB|PROTOLATHE + build_type = MECHFAB materials = list(/datum/material/iron = 6000, /datum/material/glass = 3000, /datum/material/plasma = 1000) construction_time = 15 SECONDS build_path = /obj/item/mod/construction/plating - category = list(RND_CATEGORY_MOD_CONSTRUCTION, RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_MODSUITS + RND_SUBCATEGORY_MODSUITS_PLATING + ) research_icon = 'icons/obj/clothing/modsuit/mod_construction.dmi' research_icon_state = "standard-plating" @@ -1038,10 +1411,10 @@ . = ..() var/obj/item/mod/construction/plating/armor_type = build_path var/datum/mod_theme/theme = GLOB.mod_themes[initial(armor_type.theme)] - name = "MOD [theme.name] plating" desc = "External plating for a MODsuit. [theme.desc]" /datum/design/mod_plating/engineering + name = "MOD Engineering Plating" id = "mod_plating_engineering" build_path = /obj/item/mod/construction/plating/engineering materials = list(/datum/material/iron = 6000, /datum/material/gold = 2000, /datum/material/glass = 1000, /datum/material/plasma = 1000) @@ -1049,6 +1422,7 @@ research_icon_state = "engineering-plating" /datum/design/mod_plating/atmospheric + name = "MOD Atmospheric Plating" id = "mod_plating_atmospheric" build_path = /obj/item/mod/construction/plating/atmospheric materials = list(/datum/material/iron = 6000, /datum/material/titanium = 2000, /datum/material/glass = 1000, /datum/material/plasma = 1000) @@ -1056,6 +1430,7 @@ research_icon_state = "atmospheric-plating" /datum/design/mod_plating/medical + name = "MOD Medical Plating" id = "mod_plating_medical" build_path = /obj/item/mod/construction/plating/medical materials = list(/datum/material/iron = 6000, /datum/material/silver = 2000, /datum/material/glass = 1000, /datum/material/plasma = 1000) @@ -1063,14 +1438,15 @@ research_icon_state = "medical-plating" /datum/design/mod_plating/security + name = "MOD Security Plating" id = "mod_plating_security" build_path = /obj/item/mod/construction/plating/security materials = list(/datum/material/iron = 6000, /datum/material/uranium = 2000, /datum/material/glass = 1000, /datum/material/plasma = 1000) departmental_flags = DEPARTMENT_BITFLAG_SECURITY research_icon_state = "security-plating" - build_type = PROTOLATHE /datum/design/mod_plating/cosmohonk + name = "MOD Cosmohonk Plating" id = "mod_plating_cosmohonk" build_path = /obj/item/mod/construction/plating/cosmohonk materials = list(/datum/material/iron = 6000, /datum/material/bananium = 2000, /datum/material/glass = 1000, /datum/material/plasma = 1000) @@ -1078,14 +1454,16 @@ research_icon_state = "cosmohonk-plating" /datum/design/mod_paint_kit - name = "MOD paint kit" + name = "MOD Paint Kit" desc = "A paint kit for Modular Suits." id = "mod_paint_kit" build_type = MECHFAB materials = list(/datum/material/iron = 1000, /datum/material/plastic = 500) construction_time = 5 SECONDS build_path = /obj/item/mod/paint - category = list(RND_CATEGORY_MISC) + category = list( + RND_CATEGORY_MODSUITS + RND_SUBCATEGORY_MODSUITS_MISC + ) //MODsuit modules @@ -1095,8 +1473,9 @@ construction_time = 1 SECONDS materials = list(/datum/material/iron = 1000, /datum/material/glass = 1000) build_path = /obj/item/mod/module - category = list(RND_CATEGORY_MOD_MODULES) - var/department_type = MODULE_GENERAL + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_GENERAL + ) /datum/design/module/New() . = ..() @@ -1104,336 +1483,400 @@ desc = "[initial(module.desc)] It uses [initial(module.complexity)] complexity." /datum/design/module/mod_storage - name = "MOD Module: Storage" + name = "Storage Module" id = "mod_storage" materials = list(/datum/material/iron = 2500, /datum/material/glass = 500) build_path = /obj/item/mod/module/storage /datum/design/module/mod_storage_expanded - name = "MOD Module: Expanded Storage" + name = "Expanded Storage Module" id = "mod_storage_expanded" materials = list(/datum/material/iron = 5000, /datum/material/uranium = 2000) build_path = /obj/item/mod/module/storage/large_capacity /datum/design/module/mod_visor_medhud - name = "MOD Module: Medical Visor" + name = "Medical Visor Module" id = "mod_visor_medhud" materials = list(/datum/material/silver = 500, /datum/material/glass = 1000) build_path = /obj/item/mod/module/visor/medhud - department_type = MODULE_MEDICAL + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_MEDICAL + ) /datum/design/module/mod_visor_diaghud - name = "MOD Module: Diagnostic Visor" + name = "Diagnostic Visor Module" id = "mod_visor_diaghud" materials = list(/datum/material/gold = 500, /datum/material/glass = 1000) build_path = /obj/item/mod/module/visor/diaghud - department_type = MODULE_SCIENCE - + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SCIENCE + ) /datum/design/module/mod_visor_sechud - name = "MOD Module: Security Visor" + name = "Security Visor Module" id = "mod_visor_sechud" materials = list(/datum/material/titanium = 500, /datum/material/glass = 1000) build_path = /obj/item/mod/module/visor/sechud - department_type = MODULE_SECURITY - + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SECURITY + ) /datum/design/module/mod_visor_meson - name = "MOD Module: Meson Visor" + name = "Meson Visor Module" id = "mod_visor_meson" materials = list(/datum/material/uranium = 500, /datum/material/glass = 1000) build_path = /obj/item/mod/module/visor/meson - department_type = MODULE_SUPPLY - + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SUPPLY + ) /datum/design/module/mod_visor_welding - name = "MOD Module: Welding Protection" + name = "Welding Protection Module" id = "mod_welding" materials = list(/datum/material/iron = 500, /datum/material/glass = 1000) build_path = /obj/item/mod/module/welding - department_type = MODULE_ENGINEERING - + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_ENGINEERING + ) /datum/design/module/mod_t_ray - name = "MOD Module: T-Ray Scanner" + name = "T-Ray Scanner Module" id = "mod_t_ray" materials = list(/datum/material/iron = 500, /datum/material/glass = 1000) build_path = /obj/item/mod/module/t_ray - department_type = MODULE_ENGINEERING - + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_ENGINEERING + ) /datum/design/module/mod_health_analyzer - name = "MOD Module: Health Analyzer" + name = "Health Analyzer Module" id = "mod_health_analyzer" materials = list(/datum/material/iron = 500, /datum/material/glass = 1000) build_path = /obj/item/mod/module/health_analyzer - department_type = MODULE_MEDICAL + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_MEDICAL + ) /datum/design/module/mod_stealth - name = "MOD Module: Cloak" + name = "Cloak Module" id = "mod_stealth" materials = list(/datum/material/iron = 1000, /datum/material/bluespace = 500) build_path = /obj/item/mod/module/stealth - department_type = MODULE_SECURITY - + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SECURITY + ) /datum/design/module/mod_jetpack - name = "MOD Module: Ion Jetpack" + name = "Ion Jetpack Module" id = "mod_jetpack" materials = list(/datum/material/iron = 1500, /datum/material/plasma = 1000) build_path = /obj/item/mod/module/jetpack /datum/design/module/mod_magboot - name = "MOD Module: Magnetic Stabilizator" + name = "Magnetic Stabilizator Module" id = "mod_magboot" materials = list(/datum/material/iron = 1000, /datum/material/gold = 500) build_path = /obj/item/mod/module/magboot - department_type = MODULE_ENGINEERING + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_ENGINEERING + ) /datum/design/module/mod_mag_harness - name = "MOD Module: Magnetic Harness" + name = "Magnetic Harness Module" id = "mod_mag_harness" materials = list(/datum/material/iron = 1500, /datum/material/silver = 500) build_path = /obj/item/mod/module/magnetic_harness - department_type = MODULE_SECURITY + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SECURITY + ) /datum/design/module/mod_tether - name = "MOD Module: Emergency Tether" + name = "Emergency Tether Module" id = "mod_tether" materials = list(/datum/material/iron = 1000, /datum/material/silver = 500) build_path = /obj/item/mod/module/tether - department_type = MODULE_ENGINEERING + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_ENGINEERING + ) /datum/design/module/mod_mouthhole - name = "MOD Module: Eating Apparatus" + name = "Eating Apparatus Module" id = "mod_mouthhole" materials = list(/datum/material/iron = 1500) build_path = /obj/item/mod/module/mouthhole /datum/design/module/mod_rad_protection - name = "MOD Module: Radiation Protection" + name = "Radiation Protection Module" id = "mod_rad_protection" materials = list(/datum/material/iron = 1000, /datum/material/uranium = 1000) build_path = /obj/item/mod/module/rad_protection - department_type = MODULE_ENGINEERING - + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_ENGINEERING + ) /datum/design/module/mod_emp_shield - name = "MOD Module: EMP Shield" + name = "EMP Shield Module" id = "mod_emp_shield" materials = list(/datum/material/iron = 1000, /datum/material/plasma = 1000) build_path = /obj/item/mod/module/emp_shield /datum/design/module/mod_flashlight - name = "MOD Module: Flashlight" + name = "Flashlight Module" id = "mod_flashlight" materials = list(/datum/material/iron = 500, /datum/material/glass = 1000) build_path = /obj/item/mod/module/flashlight /datum/design/module/mod_reagent_scanner - name = "MOD Module: Reagent Scanner" + name = "Reagent Scanner Module" id = "mod_reagent_scanner" materials = list(/datum/material/glass = 1000) build_path = /obj/item/mod/module/reagent_scanner - department_type = MODULE_SCIENCE + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SCIENCE + ) /datum/design/module/mod_gps - name = "MOD Module: Internal GPS" + name = "Internal GPS Module" id = "mod_gps" materials = list(/datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/mod/module/gps - department_type = MODULE_SUPPLY + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SUPPLY + ) /datum/design/module/mod_constructor - name = "MOD Module: Constructor" + name = "Constructor Module" id = "mod_constructor" materials = list(/datum/material/iron = 1000, /datum/material/titanium = 500) build_path = /obj/item/mod/module/constructor - department_type = MODULE_ENGINEERING - + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_ENGINEERING + ) /datum/design/module/mod_quick_carry - name = "MOD Module: Quick Carry" + name = "Quick Carry Module" id = "mod_quick_carry" materials = list(/datum/material/iron = 1000, /datum/material/titanium = 500) build_path = /obj/item/mod/module/quick_carry - department_type = MODULE_MEDICAL + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_MEDICAL + ) /datum/design/module/mod_longfall - name = "MOD Module: Longfall" + name = "Longfall Module" id = "mod_longfall" materials = list(/datum/material/iron = 1000) build_path = /obj/item/mod/module/longfall /datum/design/module/mod_thermal_regulator - name = "MOD Module: Thermal Regulator" + name = "Thermal Regulator Module" id = "mod_thermal_regulator" materials = list(/datum/material/iron = 500, /datum/material/glass = 1000) build_path = /obj/item/mod/module/thermal_regulator /datum/design/module/mod_injector - name = "MOD Module: Injector" + name = "Injector Module" id = "mod_injector" materials = list(/datum/material/iron = 1000, /datum/material/diamond = 500) build_path = /obj/item/mod/module/injector - department_type = MODULE_MEDICAL + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_MEDICAL + ) /datum/design/module/mod_bikehorn - name = "MOD Module: Bike Horn" + name = "Bike Horn Module" id = "mod_bikehorn" materials = list(/datum/material/plastic = 500, /datum/material/iron = 500) build_path = /obj/item/mod/module/bikehorn - department_type = MODULE_SERVICE + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SERVICE + ) /datum/design/module/mod_microwave_beam - name = "MOD Module: Microwave Beam" + name = "Microwave Beam Module" id = "mod_microwave_beam" materials = list(/datum/material/iron = 1000, /datum/material/uranium = 500) build_path = /obj/item/mod/module/microwave_beam - department_type = MODULE_SERVICE + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SERVICE + ) /datum/design/module/mod_waddle - name = "MOD Module: Waddle" + name = "Waddle Module" id = "mod_waddle" materials = list(/datum/material/plastic = 1000, /datum/material/iron = 1000) build_path = /obj/item/mod/module/waddle - department_type = MODULE_SERVICE + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SERVICE + ) /datum/design/module/mod_clamp - name = "MOD Module: Crate Clamp" + name = "Crate Clamp Module" id = "mod_clamp" materials = list(/datum/material/iron = 2000) build_path = /obj/item/mod/module/clamp - department_type = MODULE_SUPPLY + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SUPPLY + ) /datum/design/module/mod_drill - name = "MOD Module: Drill" + name = "Drill Module" id = "mod_drill" materials = list(/datum/material/silver = 1000, /datum/material/iron = 2000) build_path = /obj/item/mod/module/drill - department_type = MODULE_SUPPLY + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SUPPLY + ) /datum/design/module/mod_orebag - name = "MOD Module: Ore Bag" + name = "Ore Bag Module" id = "mod_orebag" materials = list(/datum/material/iron = 1500) build_path = /obj/item/mod/module/orebag - department_type = MODULE_SUPPLY + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SUPPLY + ) /datum/design/module/mod_organ_thrower - name = "MOD Module: Organ Thrower" + name = "Organ Thrower Module" id = "mod_organ_thrower" materials = list(/datum/material/iron = 1000, /datum/material/glass = 1000) build_path = /obj/item/mod/module/organ_thrower - department_type = MODULE_MEDICAL + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_MEDICAL + ) /datum/design/module/mod_pathfinder - name = "MOD Module: Pathfinder" + name = "Pathfinder Module" id = "mod_pathfinder" materials = list(/datum/material/uranium = 1000, /datum/material/iron = 1000) build_path = /obj/item/mod/module/pathfinder /datum/design/module/mod_dna_lock - name = "MOD Module: DNA Lock" + name = "DNA Lock Module" id = "mod_dna_lock" materials = list(/datum/material/diamond = 500, /datum/material/glass = 1000) build_path = /obj/item/mod/module/dna_lock /datum/design/module/mod_plasma_stabilizer - name = "MOD Module: Plasma Stabilizer" + name = "Plasma Stabilizer Module" id = "mod_plasma" materials = list(/datum/material/plasma = 1000, /datum/material/glass = 1000) build_path = /obj/item/mod/module/plasma_stabilizer /datum/design/module/mod_glove_translator - name = "MOD Module: Glove Translator" + name = "Glove Translator Module" id = "mod_sign_radio" materials = list(/datum/material/iron = 750, /datum/material/glass = 500) build_path = /obj/item/mod/module/signlang_radio /datum/design/module/mister_atmos - name = "MOD Module: Resin Mister" + name = "Resin Mister Module" id = "mod_mister_atmos" materials = list(/datum/material/glass = 1000, /datum/material/titanium = 1500) build_path = /obj/item/mod/module/mister/atmos - department_type = MODULE_ENGINEERING + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_ENGINEERING + ) /datum/design/module/mod_holster - name = "MOD Module: Holster" + name = "Holster Module" id = "mod_holster" materials = list(/datum/material/iron = 1500, /datum/material/glass = 500) build_path = /obj/item/mod/module/holster - department_type = MODULE_SECURITY + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SECURITY + ) /datum/design/module/mod_sonar - name = "MOD Module: Active Sonar" + name = "Active Sonar Module" id = "mod_sonar" materials = list(/datum/material/titanium = 250, /datum/material/glass = 1000, /datum/material/gold = 500, /datum/material/uranium = 250) build_path = /obj/item/mod/module/active_sonar - department_type = MODULE_SECURITY + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SECURITY + ) /datum/design/module/projectile_dampener - name = "MOD Module: Projectile Dampener" + name = "Projectile Dampener Module" id = "mod_projectile_dampener" materials = list(/datum/material/iron = 1000, /datum/material/bluespace = 500) build_path = /obj/item/mod/module/projectile_dampener - department_type = MODULE_SECURITY + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SECURITY + ) /datum/design/module/surgicalprocessor - name = "MOD Module: Surgical Processor" + name = "Surgical Processor Module" id = "mod_surgicalprocessor" materials = list(/datum/material/titanium = 250, /datum/material/glass = 1000, /datum/material/silver = 1500) build_path = /obj/item/mod/module/surgical_processor - department_type = MODULE_MEDICAL + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_MEDICAL + ) /datum/design/module/threadripper - name = "MOD Module: Thread Ripper" + name = "Thread Ripper Module" id = "mod_threadripper" materials = list(/datum/material/titanium = 250, /datum/material/plastic = 1000, /datum/material/silver = 1500) build_path = /obj/item/mod/module/thread_ripper - department_type = MODULE_MEDICAL + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_MEDICAL + ) /datum/design/module/defibrillator - name = "MOD Module: Defibrillator" + name = "Defibrillator Module" id = "mod_defib" materials = list(/datum/material/titanium = 250, /datum/material/diamond = 1000, /datum/material/silver = 1500) build_path = /obj/item/mod/module/defibrillator - department_type = MODULE_MEDICAL + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_MEDICAL + ) /datum/design/module/patienttransport - name = "MOD Module: Patient Transport" + name = "Patient Transport Module" id = "mod_patienttransport" materials = list(/datum/material/iron = 1000, /datum/material/bluespace = 1000) build_path = /obj/item/mod/module/criminalcapture/patienttransport - department_type = MODULE_MEDICAL + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_MEDICAL + ) /datum/design/module/criminalcapture - name = "MOD Module: Criminal Capture" + name = "Criminal Capture Module" id = "mod_criminalcapture" materials = list(/datum/material/iron = 1000, /datum/material/bluespace = 1000) build_path = /obj/item/mod/module/criminalcapture - department_type = MODULE_SECURITY + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SECURITY + ) //MODsuit bepis modules - /datum/design/module/disposal - name = "MOD Module: Disposal Connector" + name = "Disposal Connector Module" id = "mod_disposal" materials = list(/datum/material/iron = 2500, /datum/material/titanium = 1000) build_path = /obj/item/mod/module/disposal_connector - department_type = MODULE_SUPPLY + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SUPPLY + ) //MODsuit anomalock modules - /datum/design/module/mod_antigrav - name = "MOD Module: Anti-Gravity" + name = "Anti-Gravity Module" id = "mod_antigrav" materials = list(/datum/material/iron = 2500, /datum/material/glass = 2000, /datum/material/uranium = 2000) build_path = /obj/item/mod/module/anomaly_locked/antigrav - department_type = MODULE_SCIENCE + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SCIENCE + ) /datum/design/module/mod_teleporter - name = "MOD Module: Teleporter" + name = "Teleporter Module" id = "mod_teleporter" materials = list(/datum/material/iron = 2500, /datum/material/glass = 2000, /datum/material/bluespace = 2000) build_path = /obj/item/mod/module/anomaly_locked/teleporter - department_type = MODULE_SCIENCE + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SCIENCE + ) /datum/design/module/mod_kinesis - name = "MOD Module: Kinesis" + name = "Kinesis Module" id = "mod_kinesis" materials = list(/datum/material/iron = 2500, /datum/material/glass = 2000, /datum/material/uranium = 1000, /datum/material/bluespace = 1000) build_path = /obj/item/mod/module/anomaly_locked/kinesis - department_type = MODULE_ENGINEERING + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_ENGINEERING + ) diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index 38d93f42ba7..81b40250a30 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -8,29 +8,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 500, /datum/material/glass = 50) build_path = /obj/item/healthanalyzer - category = list(RND_CATEGORY_MEDICAL_DESIGNS) - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL - -/datum/design/mmi - name = "Man-Machine Interface" - desc = "The Warrior's bland acronym, MMI, obscures the true horror of this monstrosity." - id = "mmi" - build_type = PROTOLATHE | AWAY_LATHE | MECHFAB - materials = list(/datum/material/iron = 1000, /datum/material/glass = 500) - construction_time = 75 - build_path = /obj/item/mmi - category = list(RND_CATEGORY_CONTROL_INTERFACES, RND_CATEGORY_MEDICAL_DESIGNS) - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE - -/datum/design/posibrain - name = "Positronic Brain" - desc = "The latest in Artificial Intelligences." - id = "mmi_posi" - build_type = PROTOLATHE | AWAY_LATHE | MECHFAB - materials = list(/datum/material/iron = 1700, /datum/material/glass = 1350, /datum/material/gold = 500) //Gold, because SWAG. - construction_time = 75 - build_path = /obj/item/mmi/posibrain - category = list(RND_CATEGORY_CONTROL_INTERFACES, RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design/bluespacebeaker @@ -39,7 +19,9 @@ id = "bluespacebeaker" build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/glass = 5000, /datum/material/plastic = 3000, /datum/material/diamond = 1000, /datum/material/bluespace = 1000) - category = list(RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_CHEMISTRY + ) build_path = /obj/item/reagent_containers/cup/beaker/bluespace departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE @@ -49,36 +31,44 @@ id = "splitbeaker" build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 3000) - category = list(RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_CHEMISTRY + ) build_path = /obj/item/reagent_containers/cup/beaker/noreact - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design/xlarge_beaker name = "X-large Beaker" id = "xlarge_beaker" build_type = PROTOLATHE | AWAY_LATHE - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL materials = list(/datum/material/glass = 2500, /datum/material/plastic = 3000) - category = list(RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_CHEMISTRY + ) build_path = /obj/item/reagent_containers/cup/beaker/plastic + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design/meta_beaker name = "Metamaterial Beaker" id = "meta_beaker" build_type = PROTOLATHE | AWAY_LATHE - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL materials = list(/datum/material/glass = 2500, /datum/material/plastic = 3000, /datum/material/gold = 1000, /datum/material/titanium = 1000) - category = list(RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_CHEMISTRY + ) build_path = /obj/item/reagent_containers/cup/beaker/meta + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design/ph_meter name = "Chemical Analyzer" id = "ph_meter" build_type = PROTOLATHE | AWAY_LATHE - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL materials = list(/datum/material/glass = 2500, /datum/material/gold = 1000, /datum/material/titanium = 1000) build_path = /obj/item/ph_meter - category = list(RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_CHEMISTRY + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design/bluespacesyringe name = "Bluespace Syringe" @@ -87,7 +77,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/glass = 2000, /datum/material/plasma = 1000, /datum/material/diamond = 1000, /datum/material/bluespace = 500) build_path = /obj/item/reagent_containers/syringe/bluespace - category = list(RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_CHEMISTRY + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design/dna_disk @@ -97,8 +89,10 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 300, /datum/material/glass = 100, /datum/material/silver = 50) build_path = /obj/item/disk/data - category = list(RND_CATEGORY_MEDICAL_DESIGNS) - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_GENETICS + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/piercesyringe name = "Piercing Syringe" @@ -107,8 +101,10 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/glass = 2000, /datum/material/diamond = 1000) build_path = /obj/item/reagent_containers/syringe/piercing - category = list(RND_CATEGORY_MEDICAL_DESIGNS) - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_CHEMISTRY + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design/bluespacebodybag name = "Bluespace Body Bag" @@ -117,18 +113,22 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 3000, /datum/material/plasma = 2000, /datum/material/diamond = 500, /datum/material/bluespace = 500) build_path = /obj/item/bodybag/bluespace - category = list(RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_TOOLS_MEDICAL + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design/plasmarefiller - name = "Plasma-Man Jumpsuit Refill" + name = "Plasmaman Jumpsuit Refill" desc = "A refill pack for the auto-extinguisher on Plasma-man suits." id = "plasmarefiller" //Why did this have no plasmatech build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 4000, /datum/material/plasma = 1000) build_path = /obj/item/extinguisher_refill - category = list(RND_CATEGORY_MEDICAL_DESIGNS) - + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_GAS_TANKS + ) + departmental_flags = ALL /datum/design/crewpinpointer name = "Crew Pinpointer" @@ -137,7 +137,9 @@ build_type = PROTOLATHE materials = list(/datum/material/iron = 3000, /datum/material/glass = 1500, /datum/material/gold = 500) build_path = /obj/item/pinpointer/crew - category = list(RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MEDICAL + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/defibrillator @@ -147,7 +149,9 @@ build_type = PROTOLATHE | AWAY_LATHE build_path = /obj/item/defibrillator materials = list(/datum/material/iron = 8000, /datum/material/glass = 4000, /datum/material/silver = 3000, /datum/material/gold = 1500) - category = list(RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MEDICAL + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/defibrillator_mount @@ -157,7 +161,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 2000, /datum/material/glass = 1000) build_path = /obj/item/wallframe/defib_mount - category = list(RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MOUNTS + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/defibrillator_mount_charging @@ -167,10 +173,11 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 2000, /datum/material/glass = 1000, /datum/material/silver = 500) build_path = /obj/item/wallframe/defib_mount/charging - category = list(RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MOUNTS + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL - /datum/design/defibrillator_compact name = "Compact Defibrillator" desc = "A compact defibrillator that can be worn on a belt." @@ -178,7 +185,9 @@ build_type = PROTOLATHE | AWAY_LATHE build_path = /obj/item/defibrillator/compact materials = list(/datum/material/iron = 16000, /datum/material/glass = 8000, /datum/material/silver = 6000, /datum/material/gold = 3000) - category = list(RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MEDICAL + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/genescanner @@ -188,8 +197,10 @@ build_path = /obj/item/sequence_scanner build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 1000, /datum/material/glass = 500) - category = list(RND_CATEGORY_MEDICAL_DESIGNS) - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_GENETICS + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/healthanalyzer_advanced name = "Advanced Health Analyzer" @@ -198,7 +209,9 @@ build_path = /obj/item/healthanalyzer/advanced build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 5000, /datum/material/glass = 2500, /datum/material/silver = 2000, /datum/material/gold = 1500) - category = list(RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL_ADVANCED + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/medigel @@ -208,7 +221,9 @@ build_path = /obj/item/reagent_containers/medigel build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 2500, /datum/material/glass = 500) - category = list(RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MEDICAL + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/surgical_drapes @@ -217,7 +232,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/plastic = 2000) build_path = /obj/item/surgical_drapes - category = list(RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design/laserscalpel @@ -227,8 +244,10 @@ build_path = /obj/item/scalpel/advanced build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 6000, /datum/material/glass = 1500, /datum/material/silver = 2000, /datum/material/gold = 1500, /datum/material/diamond = 200, /datum/material/titanium = 4000) - category = list(RND_CATEGORY_TOOL_DESIGNS) - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL_ADVANCED + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/mechanicalpinches name = "Mechanical Pinches" @@ -237,8 +256,10 @@ build_path = /obj/item/retractor/advanced build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 12000, /datum/material/glass = 4000, /datum/material/silver = 4000, /datum/material/titanium = 5000) - category = list(RND_CATEGORY_TOOL_DESIGNS) - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL_ADVANCED + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/searingtool name = "Searing Tool" @@ -247,18 +268,22 @@ build_path = /obj/item/cautery/advanced build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 4000, /datum/material/glass = 2000, /datum/material/plasma = 2000, /datum/material/uranium = 3000, /datum/material/titanium = 3000) - category = list(RND_CATEGORY_TOOL_DESIGNS) - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL_ADVANCED + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/medical_spray_bottle name = "Medical Spray Bottle" desc = "A traditional spray bottle used to generate a fine mist. Not to be confused with a medspray." id = "med_spray_bottle" build_type = PROTOLATHE | AWAY_LATHE - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL materials = list(/datum/material/plastic = 2000) build_path = /obj/item/reagent_containers/spray/medical - category = list(RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MEDICAL + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/chem_pack name = "Intravenous Medicine Bag" @@ -268,7 +293,10 @@ departmental_flags = DEPARTMENT_BITFLAG_MEDICAL materials = list(/datum/material/plastic = 2000) build_path = /obj/item/reagent_containers/chem_pack - category = list(RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MEDICAL + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/blood_pack name = "Blood Pack" @@ -278,7 +306,10 @@ departmental_flags = DEPARTMENT_BITFLAG_MEDICAL materials = list(/datum/material/plastic = 1000) build_path = /obj/item/reagent_containers/blood - category = list(RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MEDICAL + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/portable_chem_mixer name = "Portable Chemical Mixer" @@ -288,7 +319,10 @@ departmental_flags = DEPARTMENT_BITFLAG_MEDICAL materials = list(/datum/material/plastic = 5000, /datum/material/iron = 10000, /datum/material/glass = 3000) build_path = /obj/item/storage/portable_chem_mixer - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_CHEMISTRY + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL ///////////////////////////////////////// //////////Cybernetic Implants//////////// @@ -302,7 +336,9 @@ construction_time = 40 materials = list(/datum/material/iron = 600, /datum/material/glass = 400) build_path = /obj/item/organ/internal/eyes/robotic/shield - category = list(RND_CATEGORY_IMPLANTS, RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/cyberimp_gloweyes @@ -313,7 +349,9 @@ construction_time = 40 materials = list(/datum/material/iron = 600, /datum/material/glass = 1000) build_path = /obj/item/organ/internal/eyes/robotic/glow - category = list(RND_CATEGORY_IMPLANTS, RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/cyberimp_breather @@ -324,7 +362,9 @@ construction_time = 35 materials = list(/datum/material/iron = 600, /datum/material/glass = 250) build_path = /obj/item/organ/internal/cyberimp/mouth/breathing_tube - category = list(RND_CATEGORY_IMPLANTS, RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/cyberimp_surgical @@ -335,7 +375,9 @@ materials = list (/datum/material/iron = 2500, /datum/material/glass = 1500, /datum/material/silver = 1500) construction_time = 200 build_path = /obj/item/organ/internal/cyberimp/arm/surgery - category = list(RND_CATEGORY_IMPLANTS, RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/cyberimp_toolset @@ -346,7 +388,9 @@ materials = list (/datum/material/iron = 2500, /datum/material/glass = 1500, /datum/material/silver = 1500) construction_time = 200 build_path = /obj/item/organ/internal/cyberimp/arm/toolset - category = list(RND_CATEGORY_IMPLANTS, RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/cyberimp_medical_hud @@ -357,7 +401,9 @@ construction_time = 50 materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/silver = 500, /datum/material/gold = 500) build_path = /obj/item/organ/internal/cyberimp/eyes/hud/medical - category = list(RND_CATEGORY_IMPLANTS, RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/cyberimp_security_hud @@ -368,7 +414,9 @@ construction_time = 50 materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/silver = 750, /datum/material/gold = 750) build_path = /obj/item/organ/internal/cyberimp/eyes/hud/security - category = list(RND_CATEGORY_IMPLANTS, RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/cyberimp_diagnostic_hud @@ -379,7 +427,9 @@ construction_time = 50 materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/silver = 600, /datum/material/gold = 600) build_path = /obj/item/organ/internal/cyberimp/eyes/hud/diagnostic - category = list(RND_CATEGORY_IMPLANTS, RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/cyberimp_xray @@ -390,7 +440,9 @@ construction_time = 60 materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/silver = 600, /datum/material/gold = 600, /datum/material/plasma = 1000, /datum/material/uranium = 1000, /datum/material/diamond = 1000, /datum/material/bluespace = 1000) build_path = /obj/item/organ/internal/eyes/robotic/xray - category = list(RND_CATEGORY_IMPLANTS, RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/cyberimp_thermals @@ -401,7 +453,9 @@ construction_time = 60 materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/silver = 600, /datum/material/gold = 600, /datum/material/plasma = 1000, /datum/material/diamond = 2000) build_path = /obj/item/organ/internal/eyes/robotic/thermals - category = list(RND_CATEGORY_IMPLANTS, RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/cyberimp_antidrop @@ -412,7 +466,9 @@ construction_time = 60 materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/silver = 400, /datum/material/gold = 400) build_path = /obj/item/organ/internal/cyberimp/brain/anti_drop - category = list(RND_CATEGORY_IMPLANTS, RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/cyberimp_antistun @@ -423,7 +479,9 @@ construction_time = 60 materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/silver = 500, /datum/material/gold = 1000) build_path = /obj/item/organ/internal/cyberimp/brain/anti_stun - category = list(RND_CATEGORY_IMPLANTS, RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/cyberimp_nutriment @@ -434,7 +492,9 @@ construction_time = 40 materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/gold = 500) build_path = /obj/item/organ/internal/cyberimp/chest/nutriment - category = list(RND_CATEGORY_IMPLANTS, RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/cyberimp_nutriment_plus @@ -445,7 +505,9 @@ construction_time = 50 materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/gold = 500, /datum/material/uranium = 750) build_path = /obj/item/organ/internal/cyberimp/chest/nutriment/plus - category = list(RND_CATEGORY_IMPLANTS, RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/cyberimp_reviver @@ -456,7 +518,9 @@ construction_time = 60 materials = list(/datum/material/iron = 800, /datum/material/glass = 800, /datum/material/gold = 300, /datum/material/uranium = 500) build_path = /obj/item/organ/internal/cyberimp/chest/reviver - category = list(RND_CATEGORY_IMPLANTS, RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/cyberimp_thrusters @@ -467,7 +531,9 @@ construction_time = 80 materials = list(/datum/material/iron = 4000, /datum/material/glass = 2000, /datum/material/silver = 1000, /datum/material/diamond = 1000) build_path = /obj/item/organ/internal/cyberimp/chest/thrusters - category = list(RND_CATEGORY_IMPLANTS, RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL ///////////////////////////////////////// @@ -481,8 +547,8 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 600, /datum/material/glass = 200) build_path = /obj/item/implanter - category = list(RND_CATEGORY_MEDICAL_DESIGNS) - departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_MEDICAL + category = list(RND_SUBCATEGORY_IMPLANTS) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_MEDICAL /datum/design/implantcase name = "Implant Case" @@ -491,8 +557,8 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/glass = 500) build_path = /obj/item/implantcase - category = list(RND_CATEGORY_MEDICAL_DESIGNS) - departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_MEDICAL + category = list(RND_SUBCATEGORY_IMPLANTS) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_MEDICAL /datum/design/implant_sadtrombone name = "Sad Trombone Implant Case" @@ -501,8 +567,8 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/glass = 500, /datum/material/bananium = 500) build_path = /obj/item/implantcase/sad_trombone - category = list(RND_CATEGORY_MEDICAL_DESIGNS) - + category = list(RND_SUBCATEGORY_IMPLANTS) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/implant_chem name = "Chemical Implant Case" @@ -511,7 +577,7 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/glass = 700) build_path = /obj/item/implantcase/chem - category = list(RND_CATEGORY_MEDICAL_DESIGNS) + category = list(RND_SUBCATEGORY_IMPLANTS) departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_MEDICAL /datum/design/implant_tracking @@ -521,7 +587,7 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/implantcase/tracking - category = list(RND_CATEGORY_MEDICAL_DESIGNS) + category = list(RND_SUBCATEGORY_IMPLANTS) departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_MEDICAL //Cybernetic organs @@ -534,7 +600,9 @@ construction_time = 40 materials = list(/datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/organ/internal/liver/cybernetic - category = list(RND_CATEGORY_CYBERNETICS, RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/cybernetic_liver/tier2 @@ -560,7 +628,9 @@ construction_time = 40 materials = list(/datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/organ/internal/heart/cybernetic - category = list(RND_CATEGORY_CYBERNETICS, RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/cybernetic_heart/tier2 @@ -586,7 +656,9 @@ construction_time = 40 materials = list(/datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/organ/internal/lungs/cybernetic - category = list(RND_CATEGORY_CYBERNETICS, RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/cybernetic_lungs/tier2 @@ -612,7 +684,9 @@ construction_time = 40 materials = list(/datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/organ/internal/stomach/cybernetic - category = list(RND_CATEGORY_CYBERNETICS, RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/cybernetic_stomach/tier2 @@ -638,7 +712,9 @@ construction_time = 30 materials = list(/datum/material/iron = 250, /datum/material/glass = 400) build_path = /obj/item/organ/internal/ears/cybernetic - category = list(RND_CATEGORY_CYBERNETICS, RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/cybernetic_ears_u @@ -649,7 +725,9 @@ construction_time = 40 materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/silver = 500) build_path = /obj/item/organ/internal/ears/cybernetic/upgraded - category = list(RND_CATEGORY_CYBERNETICS, RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/cybernetic_eyes @@ -660,7 +738,9 @@ construction_time = 30 materials = list(/datum/material/iron = 250, /datum/material/glass = 400) build_path = /obj/item/organ/internal/eyes/robotic/basic - category = list(RND_CATEGORY_CYBERNETICS, RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/cybernetic_eyes/improved diff --git a/code/modules/research/designs/mining_designs.dm b/code/modules/research/designs/mining_designs.dm index 4e8165fb7ca..d964de0e3da 100644 --- a/code/modules/research/designs/mining_designs.dm +++ b/code/modules/research/designs/mining_designs.dm @@ -3,23 +3,27 @@ /////////////////Mining////////////////// ///////////////////////////////////////// /datum/design/cargo_express - name = "Computer Design (Express Supply Console)"//shes beautiful + name = "Express Supply Console Board"//shes beautiful desc = "Allows for the construction of circuit boards used to build an Express Supply Console."//who? id = "cargoexpress"//the coder reading this build_type = IMPRINTER materials = list(/datum/material/glass = 1000) build_path = /obj/item/circuitboard/computer/cargo/express - category = list(RND_CATEGORY_MINING_DESIGNS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_CARGO + ) departmental_flags = DEPARTMENT_BITFLAG_CARGO /datum/design/bluespace_pod - name = "Supply Drop Pod Upgrade Disk" + name = "Express Supply Drop Pod Upgrade Disk" desc = "Allows the Cargo Express Console to call down the Bluespace Drop Pod, greatly increasing user safety."//who? id = "bluespace_pod"//the coder reading this build_type = PROTOLATHE materials = list(/datum/material/glass = 1000) build_path = /obj/item/disk/cargo/bluespace_pod - category = list(RND_CATEGORY_MINING_DESIGNS) + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_CARGO + ) departmental_flags = DEPARTMENT_BITFLAG_CARGO /datum/design/drill @@ -29,7 +33,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 6000, /datum/material/glass = 1000) //expensive, but no need for miners. build_path = /obj/item/pickaxe/drill - category = list(RND_CATEGORY_MINING_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MINING + ) departmental_flags = DEPARTMENT_BITFLAG_CARGO /datum/design/drill_diamond @@ -39,7 +45,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 6000, /datum/material/glass = 1000, /datum/material/diamond = 2000) //Yes, a whole diamond is needed. build_path = /obj/item/pickaxe/drill/diamonddrill - category = list(RND_CATEGORY_MINING_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MINING + ) departmental_flags = DEPARTMENT_BITFLAG_CARGO /datum/design/plasmacutter @@ -49,7 +57,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 1500, /datum/material/glass = 500, /datum/material/plasma = 400) build_path = /obj/item/gun/energy/plasmacutter - category = list(RND_CATEGORY_MINING_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MINING + ) departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/plasmacutter_adv @@ -59,7 +69,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 3000, /datum/material/glass = 1000, /datum/material/plasma = 2000, /datum/material/gold = 500) build_path = /obj/item/gun/energy/plasmacutter/adv - category = list(RND_CATEGORY_MINING_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MINING + ) departmental_flags = DEPARTMENT_BITFLAG_CARGO /datum/design/jackhammer @@ -69,7 +81,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 6000, /datum/material/glass = 2000, /datum/material/silver = 2000, /datum/material/diamond = 6000) build_path = /obj/item/pickaxe/drill/jackhammer - category = list(RND_CATEGORY_MINING_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MINING + ) departmental_flags = DEPARTMENT_BITFLAG_CARGO /datum/design/superresonator @@ -79,7 +93,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 4000, /datum/material/glass = 1500, /datum/material/silver = 1000, /datum/material/uranium = 1000) build_path = /obj/item/resonator/upgraded - category = list(RND_CATEGORY_MINING_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MINING + ) departmental_flags = DEPARTMENT_BITFLAG_CARGO /datum/design/trigger_guard_mod @@ -89,45 +105,87 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 2000, /datum/material/glass = 1500, /datum/material/gold = 1500, /datum/material/uranium = 1000) build_path = /obj/item/borg/upgrade/modkit/trigger_guard - category = list(RND_CATEGORY_MINING_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_PKA_MODS + ) departmental_flags = DEPARTMENT_BITFLAG_CARGO /datum/design/damage_mod name = "Kinetic Accelerator Damage Mod" desc = "A device which allows kinetic accelerators to deal more damage." id = "damagemod" - build_type = PROTOLATHE | AWAY_LATHE | MECHFAB + build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 2000, /datum/material/glass = 1500, /datum/material/gold = 1500, /datum/material/uranium = 1000) build_path = /obj/item/borg/upgrade/modkit/damage - category = list(RND_CATEGORY_MINING_DESIGNS, RND_CATEGORY_CYBORG_UPGRADE_MODULES) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_PKA_MODS + ) departmental_flags = DEPARTMENT_BITFLAG_CARGO +/datum/design/damage_mod/borg + id = "damagemod_b" + build_type = MECHFAB + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_MINING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE + /datum/design/cooldown_mod name = "Kinetic Accelerator Cooldown Mod" desc = "A device which decreases the cooldown of a Kinetic Accelerator." id = "cooldownmod" - build_type = PROTOLATHE | AWAY_LATHE | MECHFAB + build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 2000, /datum/material/glass = 1500, /datum/material/gold = 1500, /datum/material/uranium = 1000) build_path = /obj/item/borg/upgrade/modkit/cooldown - category = list(RND_CATEGORY_MINING_DESIGNS, RND_CATEGORY_CYBORG_UPGRADE_MODULES) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_PKA_MODS + ) departmental_flags = DEPARTMENT_BITFLAG_CARGO +/datum/design/cooldown_mod/borg + id = "cooldownmod_b" + build_type = MECHFAB + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_MINING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE + /datum/design/range_mod name = "Kinetic Accelerator Range Mod" desc = "A device which allows kinetic accelerators to fire at a further range." id = "rangemod" - build_type = PROTOLATHE | AWAY_LATHE | MECHFAB + build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 2000, /datum/material/glass = 1500, /datum/material/gold = 1500, /datum/material/uranium = 1000) build_path = /obj/item/borg/upgrade/modkit/range - category = list(RND_CATEGORY_MINING_DESIGNS, RND_CATEGORY_CYBORG_UPGRADE_MODULES) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_PKA_MODS + ) departmental_flags = DEPARTMENT_BITFLAG_CARGO +/datum/design/range_mod/borg + id = "rangemod_b" + build_type = MECHFAB + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_MINING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE + /datum/design/hyperaccelerator name = "Kinetic Accelerator Mining AoE Mod" desc = "A modification kit for Kinetic Accelerators which causes it to fire AoE blasts that destroy rock." id = "hypermod" - build_type = PROTOLATHE | AWAY_LATHE | MECHFAB + build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 8000, /datum/material/glass = 1500, /datum/material/silver = 2000, /datum/material/gold = 2000, /datum/material/diamond = 2000) build_path = /obj/item/borg/upgrade/modkit/aoe/turfs - category = list(RND_CATEGORY_MINING_DESIGNS, RND_CATEGORY_CYBORG_UPGRADE_MODULES) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_PKA_MODS + ) departmental_flags = DEPARTMENT_BITFLAG_CARGO + +/datum/design/hyperaccelerator/borg + id = "hypermod_b" + build_type = MECHFAB + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_MINING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE diff --git a/code/modules/research/designs/misc_designs.dm b/code/modules/research/designs/misc_designs.dm index 3b62c82398e..81cd2d3fe23 100644 --- a/code/modules/research/designs/misc_designs.dm +++ b/code/modules/research/designs/misc_designs.dm @@ -10,7 +10,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/clothing/glasses/hud/health - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MEDICAL + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/health_hud_night @@ -20,7 +22,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/uranium = 1000, /datum/material/silver = 350) build_path = /obj/item/clothing/glasses/hud/health/night - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MEDICAL + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/security_hud @@ -30,7 +34,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/clothing/glasses/hud/security - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SECURITY + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/security_hud_night @@ -40,7 +46,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/uranium = 1000, /datum/material/gold = 350) build_path = /obj/item/clothing/glasses/hud/security/night - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SECURITY + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/diagnostic_hud @@ -50,7 +58,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/clothing/glasses/hud/diagnostic - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SCIENCE + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/diagnostic_hud_night @@ -60,7 +70,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/uranium = 1000, /datum/material/plasma = 300) build_path = /obj/item/clothing/glasses/hud/diagnostic/night - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SCIENCE + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE ///////////////////////////////////////// @@ -74,7 +86,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/clothing/glasses/welding - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/welding_mask @@ -84,7 +98,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 3000, /datum/material/glass = 1000) build_path = /obj/item/clothing/mask/gas/welding - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/bright_helmet @@ -94,8 +110,10 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 4000, /datum/material/glass = 1000, /datum/material/plastic = 3000, /datum/material/silver = 500) build_path = /obj/item/clothing/head/hardhat/red/upgraded - category = list(RND_CATEGORY_EQUIPMENT) - departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_CARGO + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/mauna_mug name = "Mauna Mug" @@ -103,9 +121,11 @@ id = "mauna_mug" build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 1000, /datum/material/glass = 100) - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SCIENCE + ) build_path = /obj/item/reagent_containers/cup/maunamug - + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/rolling_table name = "Rolly poly" @@ -114,8 +134,10 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 4000) build_path = /obj/structure/table/rolling - category = list(RND_CATEGORY_EQUIPMENT) - + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SCIENCE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/portaseeder name = "Portable Seed Extractor" @@ -124,7 +146,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 1000, /datum/material/glass = 400) build_path = /obj/item/storage/bag/plants/portaseeder - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_TOOLS_BOTANY + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/air_horn @@ -134,8 +158,10 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 4000, /datum/material/bananium = 1000) build_path = /obj/item/bikehorn/airhorn - category = list(RND_CATEGORY_EQUIPMENT) - + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/mesons name = "Optical Meson Scanners" @@ -144,7 +170,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/clothing/glasses/meson - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/engine_goggles @@ -154,7 +182,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/plasma = 100) build_path = /obj/item/clothing/glasses/meson/engine - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/tray_goggles @@ -164,7 +194,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/clothing/glasses/meson/engine/tray - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_ATMOSPHERICS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/atmos_thermal @@ -184,7 +216,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/plasma = 350, /datum/material/uranium = 1000) build_path = /obj/item/clothing/glasses/meson/night - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO /datum/design/night_vision_goggles @@ -194,7 +228,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/plasma = 350, /datum/material/uranium = 1000) build_path = /obj/item/clothing/glasses/night - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MISC + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SECURITY /datum/design/magboots @@ -204,7 +240,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 4500, /datum/material/silver = 1500, /datum/material/gold = 2500) build_path = /obj/item/clothing/shoes/magboots - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/forcefield_projector @@ -214,7 +252,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 2500, /datum/material/glass = 1000) build_path = /obj/item/forcefield_projector - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/sci_goggles @@ -224,8 +264,10 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/clothing/glasses/science - category = list(RND_CATEGORY_EQUIPMENT) - departmental_flags = DEPARTMENT_BITFLAG_SCIENCE + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_CHEMISTRY + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_MEDICAL /datum/design/nv_sci_goggles name = "Night Vision Science Goggles" @@ -234,8 +276,10 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/plasma = 350, /datum/material/uranium = 1000) build_path = /obj/item/clothing/glasses/science/night - category = list(RND_CATEGORY_EQUIPMENT) - departmental_flags = DEPARTMENT_BITFLAG_SCIENCE + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_CHEMISTRY + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_MEDICAL /datum/design/roastingstick name = "Advanced Roasting Stick" @@ -244,7 +288,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron=1000, /datum/material/glass = 500, /datum/material/bluespace = 250) build_path = /obj/item/melee/roastingstick - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_KITCHEN + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/locator @@ -254,7 +300,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron=1000, /datum/material/glass = 500, /datum/material/silver = 500) build_path = /obj/item/locator - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SECURITY + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/quantum_keycard @@ -264,8 +312,10 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/glass = 500, /datum/material/iron = 500, /datum/material/silver = 500, /datum/material/bluespace = 1000) build_path = /obj/item/quantum_keycard - category = list(RND_CATEGORY_EQUIPMENT) - departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SCIENCE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/anomaly_neutralizer name = "Anomaly Neutralizer" @@ -274,8 +324,10 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 2000, /datum/material/gold = 2000, /datum/material/plasma = 5000, /datum/material/uranium = 2000) build_path = /obj/item/anomaly_neutralizer - category = list(RND_CATEGORY_EQUIPMENT) - departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SCIENCE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/donksoft_refill name = "Donksoft Toy Vendor Refill" @@ -284,7 +336,10 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 25000, /datum/material/glass = 15000, /datum/material/plasma = 20000, /datum/material/gold = 10000, /datum/material/silver = 10000) build_path = /obj/item/vending_refill/donksoft - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_MISC + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/oxygen_tank name = "Oxygen Tank" @@ -293,8 +348,10 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 2000) build_path = /obj/item/tank/internals/oxygen/empty - category = list(RND_CATEGORY_EQUIPMENT) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_GAS_TANKS + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO /datum/design/plasma_tank name = "Plasma Tank" @@ -303,7 +360,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 2000) build_path = /obj/item/tank/internals/plasma/empty - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_GAS_TANKS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/id @@ -313,7 +372,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron=200, /datum/material/glass = 100) build_path = /obj/item/card/id/advanced - category = list(RND_CATEGORY_ELECTRONICS) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SERVICE + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/eng_gloves @@ -323,7 +384,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron=2000, /datum/material/silver=1500, /datum/material/gold = 1000) build_path = /obj/item/clothing/gloves/color/latex/engineering - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/lavarods @@ -332,7 +395,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron=1000, /datum/material/plasma=500, /datum/material/titanium=2000) build_path = /obj/item/stack/rods/lava - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS + ) departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/plasticducky @@ -342,7 +407,10 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/plastic = 1000) build_path = /obj/item/bikehorn/rubberducky/plasticducky - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/pneumatic_seal name = "Pneumatic Airlock Seal" @@ -351,7 +419,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 20000, /datum/material/plasma = 10000) build_path = /obj/item/door_seal - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE ///////////////////////////////////////// @@ -365,7 +435,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 2500, /datum/material/glass = 200) build_path = /obj/item/mop/advanced - category = list(RND_CATEGORY_EQUIPMENT, RND_CATEGORY_TOOLS, RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_JANITORIAL + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/normtrash @@ -375,7 +447,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/plastic = 2000) build_path = /obj/item/storage/bag/trash - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_JANITORIAL + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/blutrash @@ -385,7 +459,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/gold = 1500, /datum/material/uranium = 250, /datum/material/plasma = 1500) build_path = /obj/item/storage/bag/trash/bluespace - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_JANITORIAL + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/light_replacer @@ -395,8 +471,10 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 1500, /datum/material/silver = 150, /datum/material/glass = 3000) build_path = /obj/item/lightreplacer - category = list(RND_CATEGORY_EQUIPMENT) - departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_ENGINEERING + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_JANITORIAL + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/buffer_upgrade name = "Floor Buffer Upgrade" @@ -405,7 +483,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 3000, /datum/material/glass = 200) build_path = /obj/item/janicart_upgrade/buffer - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_JANITOR + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/vacuum_upgrade @@ -415,7 +495,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 3000, /datum/material/glass = 200) build_path = /obj/item/janicart_upgrade/vacuum - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_JANITOR + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/paint_remover @@ -426,7 +508,9 @@ materials = list(/datum/material/iron = 1000) reagents_list = list(/datum/reagent/acetone = 60) build_path = /obj/item/paint/paint_remover - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_JANITORIAL + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/spraybottle @@ -436,7 +520,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 3000, /datum/material/glass = 200) build_path = /obj/item/reagent_containers/spray - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_JANITORIAL + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/beartrap @@ -446,7 +532,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 5000, /datum/material/titanium = 1000) build_path = /obj/item/restraints/legcuffs/beartrap - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_JANITORIAL + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE @@ -459,7 +547,9 @@ id = "adv_watering_can" build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 2500, /datum/material/glass = 200) - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS, RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_BOTANY_ADVANCED + ) build_path = /obj/item/reagent_containers/cup/watering_can/advanced departmental_flags = DEPARTMENT_BITFLAG_SERVICE @@ -474,7 +564,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 2000, /datum/material/glass = 1000) build_path = /obj/item/holosign_creator - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SERVICE + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/holobarrier_jani @@ -484,10 +576,11 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 2000, /datum/material/glass = 1000, /datum/material/silver = 1000) build_path = /obj/item/holosign_creator/janibarrier - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_JANITORIAL + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE - /datum/design/holosignsec name = "Security Holobarrier Projector" desc = "A holographic projector that creates holographic security barriers." @@ -495,7 +588,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 5000, /datum/material/glass = 1000, /datum/material/gold = 1000, /datum/material/silver = 1000) build_path = /obj/item/holosign_creator/security - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SECURITY + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/holosignengi @@ -505,7 +600,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 5000, /datum/material/glass = 1000, /datum/material/gold = 1000, /datum/material/silver = 1000) build_path = /obj/item/holosign_creator/engineering - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/holosignatmos @@ -515,7 +612,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 5000, /datum/material/glass = 1000, /datum/material/gold = 1000, /datum/material/silver = 1000) build_path = /obj/item/holosign_creator/atmos - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ATMOSPHERICS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/holobarrier_med @@ -525,7 +624,9 @@ build_path = /obj/item/holosign_creator/medical materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/silver = 100) //a hint of silver since it can troll 2 antags (bad viros and sentient disease) id = "holobarrier_med" - category = list(RND_CATEGORY_MEDICAL_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL ///////////////////////////////////////// @@ -539,8 +640,10 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 10000, /datum/material/diamond = 5000, /datum/material/uranium = 8000, /datum/material/silver = 4500, /datum/material/gold = 5000) build_path = /obj/item/reactive_armour_shell - category = list(RND_CATEGORY_EQUIPMENT) - departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SCIENCE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/knight_armour name = "Knight Armour" @@ -573,7 +676,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 2500) build_path = /obj/item/flashlight/seclite - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SECURITY + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/detective_scanner @@ -583,7 +688,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 5000, /datum/material/glass = 1000, /datum/material/gold = 2500, /datum/material/silver = 2000) build_path = /obj/item/detective_scanner - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SECURITY + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/pepperspray @@ -593,7 +700,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 5000, /datum/material/glass = 1000) build_path = /obj/item/reagent_containers/spray/pepper/empty - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SECURITY + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/bola_energy @@ -603,7 +712,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/silver = 500, /datum/material/plasma = 500, /datum/material/titanium = 500) build_path = /obj/item/restraints/legcuffs/bola/energy - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SECURITY + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY autolathe_exportable = FALSE @@ -614,7 +725,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/plastic = 250) build_path = /obj/item/restraints/handcuffs/cable/zipties - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SECURITY + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/evidencebag @@ -624,7 +737,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/plastic = 100) build_path = /obj/item/evidencebag - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SECURITY + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/inspector @@ -634,7 +749,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 5000, /datum/material/glass = 1000, /datum/material/gold = 1000, /datum/material/uranium = 2000) build_path = /obj/item/inspector - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SECURITY + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/plumbing_rcd @@ -643,24 +760,32 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 75000, /datum/material/glass = 37500, /datum/material/plastic = 1000) build_path = /obj/item/construction/plumbing - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_PLUMBING + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/gas_filter - name = "Gas filter" + name = "Gas Filter" id = "gas_filter" build_type = PROTOLATHE | AUTOLATHE materials = list(/datum/material/iron = 100) build_path = /obj/item/gas_filter - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_GAS_TANKS + ) + departmental_flags = ALL /datum/design/plasmaman_gas_filter - name = "Plasmaman gas filter" + name = "Plasmaman Gas Filter" id = "plasmaman_gas_filter" build_type = PROTOLATHE | AUTOLATHE materials = list(/datum/material/iron = 100) build_path = /obj/item/gas_filter/plasmaman - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_GAS_TANKS + ) + departmental_flags = ALL ///////////////////////////////////////// /////////////////Tape//////////////////// @@ -672,7 +797,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/plastic = 3000) build_path = /obj/item/stack/sticky_tape/super - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SERVICE + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/pointy_tape @@ -681,7 +808,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 1500, /datum/material/plastic = 1000) build_path = /obj/item/stack/sticky_tape/pointy - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SERVICE + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/super_pointy_tape @@ -690,7 +819,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 3000, /datum/material/plastic = 2000) build_path = /obj/item/stack/sticky_tape/pointy/super - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SERVICE + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE ///////////////////////////////////////// @@ -703,7 +834,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/plastic = 2500) build_path = /obj/item/clothing/gloves/tackler/dolphin - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SECURITY + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/tackle_rocket @@ -712,7 +845,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/plasma = 1000, /datum/material/plastic = 2000) build_path = /obj/item/clothing/gloves/tackler/rocket - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SECURITY + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY @@ -728,7 +863,9 @@ build_type = PROTOLATHE materials = list(/datum/material/iron = 2000, /datum/material/glass = 1000) build_path = /obj/item/holosign_creator/robot_seat/restaurant - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/holosign/bar @@ -738,7 +875,9 @@ build_type = PROTOLATHE materials = list(/datum/material/iron = 2000, /datum/material/glass = 1000) build_path = /obj/item/holosign_creator/robot_seat/bar - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/oven_tray @@ -748,7 +887,9 @@ build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 500) build_path = /obj/item/plate/oven_tray - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_KITCHEN + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE ///////////////////////////////////////// @@ -761,7 +902,10 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/uranium = 1000, /datum/material/plastic = 2000) build_path = /obj/item/fishing_rod/tech - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE ///////////////////////////////////////// /////////Coffeemaker Stuff/////////////// @@ -773,7 +917,10 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/glass = 500, /datum/material/plastic = 500) build_path = /obj/item/reagent_containers/cup/coffeepot - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_KITCHEN + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/coffeepot_bluespace name = "Bluespace Coffeepot" @@ -781,7 +928,10 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 1000, /datum/material/plastic = 500, /datum/material/bluespace = 500) build_path = /obj/item/reagent_containers/cup/coffeepot/bluespace - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_KITCHEN + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/coffee_cartridge name = "Blank Coffee Cartridge" @@ -789,4 +939,7 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/plastic = 1000) build_path = /obj/item/blank_coffee_cartridge - category = list(RND_CATEGORY_EQUIPMENT) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_KITCHEN + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE diff --git a/code/modules/research/designs/power_designs.dm b/code/modules/research/designs/power_designs.dm index 227bb8967c8..89377a8e1d4 100644 --- a/code/modules/research/designs/power_designs.dm +++ b/code/modules/research/designs/power_designs.dm @@ -10,7 +10,10 @@ materials = list(/datum/material/iron = 700, /datum/material/glass = 50) construction_time=100 build_path = /obj/item/stock_parts/cell/empty - category = list(RND_CATEGORY_MISC, RND_CATEGORY_POWER_DESIGNS, RND_CATEGORY_MACHINERY, RND_CATEGORY_INITIAL) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_1 + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/high_cell name = "High-Capacity Power Cell" @@ -20,7 +23,9 @@ materials = list(/datum/material/iron = 700, /datum/material/glass = 60) construction_time=100 build_path = /obj/item/stock_parts/cell/high/empty - category = list(RND_CATEGORY_MISC, RND_CATEGORY_POWER_DESIGNS) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_2 + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/super_cell @@ -31,7 +36,9 @@ materials = list(/datum/material/iron = 700, /datum/material/glass = 70) construction_time=100 build_path = /obj/item/stock_parts/cell/super/empty - category = list(RND_CATEGORY_MISC, RND_CATEGORY_POWER_DESIGNS) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_3 + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/hyper_cell @@ -42,7 +49,9 @@ materials = list(/datum/material/iron = 700, /datum/material/gold = 150, /datum/material/silver = 150, /datum/material/glass = 80) construction_time=100 build_path = /obj/item/stock_parts/cell/hyper/empty - category = list(RND_CATEGORY_MISC, RND_CATEGORY_POWER_DESIGNS) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_3 + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/bluespace_cell @@ -53,7 +62,9 @@ materials = list(/datum/material/iron = 800, /datum/material/gold = 120, /datum/material/glass = 160, /datum/material/diamond = 160, /datum/material/titanium = 300, /datum/material/bluespace = 100) construction_time=100 build_path = /obj/item/stock_parts/cell/bluespace/empty - category = list(RND_CATEGORY_MISC, RND_CATEGORY_POWER_DESIGNS) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_4 + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/inducer @@ -63,43 +74,56 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 3000, /datum/material/glass = 1000) build_path = /obj/item/inducer/sci - category = list(RND_CATEGORY_POWER_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING /datum/design/board/pacman - name = "Machine Design (PACMAN-type Generator Board)" - desc = "The circuit board that for a PACMAN-type portable generator." + name = "PACMAN Board" + desc = "The circuit board for a PACMAN-type portable generator." id = "pacman" build_path = /obj/item/circuitboard/machine/pacman - category = list(RND_CATEGORY_ENGINEERING_MACHINERY) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/turbine_part_compressor - name = "Turbine Part - Compressor" + name = "Turbine Compressor" desc = "The basic tier of a compressor blade." id = "turbine_part_compressor" - build_type = PROTOLATHE | AUTOLATHE + build_type = PROTOLATHE materials = list(/datum/material/iron = 500) construction_time = 100 build_path = /obj/item/turbine_parts/compressor - category = list(RND_CATEGORY_MISC, RND_CATEGORY_POWER_DESIGNS, RND_CATEGORY_MACHINERY, RND_CATEGORY_INITIAL) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_TURBINE + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/turbine_part_rotor - name = "Turbine Part - Rotor" + name = "Turbine Rotor" desc = "The basic tier of a rotor shaft." id = "turbine_part_rotor" - build_type = PROTOLATHE | AUTOLATHE + build_type = PROTOLATHE materials = list(/datum/material/iron = 500) construction_time = 100 build_path = /obj/item/turbine_parts/rotor - category = list(RND_CATEGORY_MISC, RND_CATEGORY_POWER_DESIGNS, RND_CATEGORY_MACHINERY, RND_CATEGORY_INITIAL) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_TURBINE + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/turbine_part_stator - name = "Turbine Part - Stator" + name = "Turbine Stator" desc = "The basic tier of a stator." id = "turbine_part_stator" - build_type = PROTOLATHE | AUTOLATHE + build_type = PROTOLATHE materials = list(/datum/material/iron = 500) construction_time = 100 build_path = /obj/item/turbine_parts/stator - category = list(RND_CATEGORY_MISC, RND_CATEGORY_POWER_DESIGNS, RND_CATEGORY_MACHINERY, RND_CATEGORY_INITIAL) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_TURBINE + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING diff --git a/code/modules/research/designs/smelting_designs.dm b/code/modules/research/designs/smelting_designs.dm index 84d875dd267..156bc875990 100644 --- a/code/modules/research/designs/smelting_designs.dm +++ b/code/modules/research/designs/smelting_designs.dm @@ -1,63 +1,74 @@ ///////SMELTABLE ALLOYS/////// /datum/design/plasteel_alloy - name = "Plasma + Iron alloy" + name = "Plasteel" id = "plasteel" build_type = SMELTER | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = MINERAL_MATERIAL_AMOUNT, /datum/material/plasma = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/plasteel - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS + ) departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING maxstack = 50 - /datum/design/plastitanium_alloy - name = "Plasma + Titanium alloy" + name = "Plastitanium" id = "plastitanium" build_type = SMELTER | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/titanium = MINERAL_MATERIAL_AMOUNT, /datum/material/plasma = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/mineral/plastitanium - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS + ) departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING maxstack = 50 /datum/design/plaglass_alloy - name = "Plasma + Glass alloy" + name = "Plasma Glass" id = "plasmaglass" build_type = SMELTER | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/plasma = MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/plasmaglass - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS + ) departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING maxstack = 50 /datum/design/plasmarglass_alloy - name = "Plasma + Iron + Glass alloy" + name = "Reinforced Plasma Glass" id = "plasmareinforcedglass" build_type = SMELTER | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/plasma = MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/iron = MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/plasmarglass - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS + ) departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING maxstack = 50 /datum/design/titaniumglass_alloy - name = "Titanium + Glass alloy" + name = "Titanium Glass" id = "titaniumglass" build_type = SMELTER | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/titanium = MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/titaniumglass - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS + ) departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING maxstack = 50 /datum/design/plastitaniumglass_alloy - name = "Plasma + Titanium + Glass alloy" + name = "Plastitanium Glass" id = "plastitaniumglass" build_type = SMELTER | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/plasma = MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/titanium = MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/plastitaniumglass - category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS + ) departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING maxstack = 50 @@ -68,5 +79,7 @@ build_type = PROTOLATHE | AWAY_LATHE | SMELTER materials = list(/datum/material/iron = 4000, /datum/material/plasma = 4000) build_path = /obj/item/stack/sheet/mineral/abductor - category = list(RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS + ) departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING diff --git a/code/modules/research/designs/stock_parts_designs.dm b/code/modules/research/designs/stock_parts_designs.dm index 03444c6cd78..e6520d72c8e 100644 --- a/code/modules/research/designs/stock_parts_designs.dm +++ b/code/modules/research/designs/stock_parts_designs.dm @@ -9,7 +9,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 10000, /datum/material/glass = 5000) //hardcore build_path = /obj/item/storage/part_replacer - category = list(RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_EXCHANGERS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/bs_rped @@ -19,7 +21,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 15000, /datum/material/glass = 5000, /datum/material/silver = 2500) //hardcore build_path = /obj/item/storage/part_replacer/bluespace - category = list(RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_EXCHANGERS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE //Capacitors @@ -30,7 +34,9 @@ build_type = PROTOLATHE | AWAY_LATHE | AUTOLATHE materials = list(/datum/material/iron = 100, /datum/material/glass = 100) build_path = /obj/item/stock_parts/capacitor - category = list(RND_CATEGORY_STOCK_PARTS, RND_CATEGORY_MACHINERY, RND_CATEGORY_INITIAL) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_1 + ) lathe_time_factor = 0.2 departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE @@ -41,7 +47,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 150, /datum/material/glass = 150) build_path = /obj/item/stock_parts/capacitor/adv - category = list(RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_2 + ) lathe_time_factor = 0.2 departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE @@ -52,7 +60,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 200, /datum/material/glass = 200, /datum/material/gold = 100) build_path = /obj/item/stock_parts/capacitor/super - category = list(RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_3 + ) lathe_time_factor = 0.2 departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE @@ -63,7 +73,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 200, /datum/material/glass = 200, /datum/material/gold = 100, /datum/material/diamond = 100) build_path = /obj/item/stock_parts/capacitor/quadratic - category = list(RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_4 + ) lathe_time_factor = 0.2 departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE @@ -75,7 +87,9 @@ build_type = PROTOLATHE | AWAY_LATHE | AUTOLATHE materials = list(/datum/material/iron = 100, /datum/material/glass = 50) build_path = /obj/item/stock_parts/scanning_module - category = list(RND_CATEGORY_STOCK_PARTS, RND_CATEGORY_MACHINERY, RND_CATEGORY_INITIAL) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_1 + ) lathe_time_factor = 0.2 departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE @@ -86,7 +100,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 150, /datum/material/glass = 100) build_path = /obj/item/stock_parts/scanning_module/adv - category = list(RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_2 + ) lathe_time_factor = 0.2 departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE @@ -97,7 +113,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 200, /datum/material/glass = 150, /datum/material/silver = 60) build_path = /obj/item/stock_parts/scanning_module/phasic - category = list(RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_3 + ) lathe_time_factor = 0.2 departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE @@ -108,7 +126,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 200, /datum/material/glass = 200, /datum/material/diamond = 30, /datum/material/bluespace = 30) build_path = /obj/item/stock_parts/scanning_module/triphasic - category = list(RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_4 + ) lathe_time_factor = 0.2 departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE @@ -120,7 +140,9 @@ build_type = PROTOLATHE | AWAY_LATHE | AUTOLATHE materials = list(/datum/material/iron = 100) build_path = /obj/item/stock_parts/manipulator - category = list(RND_CATEGORY_STOCK_PARTS, RND_CATEGORY_MACHINERY, RND_CATEGORY_INITIAL) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_1 + ) lathe_time_factor = 0.2 departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE @@ -131,7 +153,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 150) build_path = /obj/item/stock_parts/manipulator/nano - category = list(RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_2 + ) lathe_time_factor = 0.2 departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE @@ -142,7 +166,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 200) build_path = /obj/item/stock_parts/manipulator/pico - category = list(RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_3 + ) lathe_time_factor = 0.2 departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE @@ -153,7 +179,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 200, /datum/material/diamond = 30, /datum/material/titanium = 30) build_path = /obj/item/stock_parts/manipulator/femto - category = list(RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_4 + ) lathe_time_factor = 0.2 departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE @@ -165,7 +193,9 @@ build_type = PROTOLATHE | AWAY_LATHE | AUTOLATHE materials = list(/datum/material/iron = 100, /datum/material/glass = 50) build_path = /obj/item/stock_parts/micro_laser - category = list(RND_CATEGORY_STOCK_PARTS, RND_CATEGORY_MACHINERY, RND_CATEGORY_INITIAL) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_1 + ) lathe_time_factor = 0.2 departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE @@ -176,7 +206,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 150, /datum/material/glass = 100) build_path = /obj/item/stock_parts/micro_laser/high - category = list(RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_2 + ) lathe_time_factor = 0.2 departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE @@ -187,7 +219,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 200, /datum/material/glass = 150, /datum/material/uranium = 60) build_path = /obj/item/stock_parts/micro_laser/ultra - category = list(RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_3 + ) lathe_time_factor = 0.2 departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE @@ -198,7 +232,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 200, /datum/material/glass = 200, /datum/material/uranium = 100, /datum/material/diamond = 60) build_path = /obj/item/stock_parts/micro_laser/quadultra - category = list(RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_4 + ) lathe_time_factor = 0.2 departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE @@ -209,7 +245,9 @@ build_type = PROTOLATHE | AWAY_LATHE | AUTOLATHE materials = list(/datum/material/iron = 100) build_path = /obj/item/stock_parts/matter_bin - category = list(RND_CATEGORY_STOCK_PARTS, RND_CATEGORY_MACHINERY, RND_CATEGORY_INITIAL) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_1 + ) lathe_time_factor = 0.2 departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE @@ -220,7 +258,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 150) build_path = /obj/item/stock_parts/matter_bin/adv - category = list(RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_2 + ) lathe_time_factor = 0.2 departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE @@ -231,7 +271,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 200) build_path = /obj/item/stock_parts/matter_bin/super - category = list(RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_3 + ) lathe_time_factor = 0.2 departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE @@ -242,7 +284,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 250, /datum/material/diamond = 100, /datum/material/bluespace = 100) build_path = /obj/item/stock_parts/matter_bin/bluespace - category = list(RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_4 + ) lathe_time_factor = 0.2 departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE @@ -254,7 +298,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 100, /datum/material/silver = 100) build_path = /obj/item/stock_parts/subspace/ansible - category = list(RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_TELECOMMS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/hyperwave_filter @@ -264,7 +310,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 100, /datum/material/silver = 100) build_path = /obj/item/stock_parts/subspace/filter - category = list(RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_TELECOMMS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/subspace_amplifier @@ -274,7 +322,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 100, /datum/material/gold = 100, /datum/material/uranium = 100) build_path = /obj/item/stock_parts/subspace/amplifier - category = list(RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_TELECOMMS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/subspace_treatment @@ -284,7 +334,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 100, /datum/material/silver = 200) build_path = /obj/item/stock_parts/subspace/treatment - category = list(RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_TELECOMMS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/subspace_analyzer @@ -294,7 +346,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 100, /datum/material/gold = 100) build_path = /obj/item/stock_parts/subspace/analyzer - category = list(RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_TELECOMMS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/subspace_crystal @@ -304,7 +358,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/glass = 800, /datum/material/silver = 100, /datum/material/gold = 100) build_path = /obj/item/stock_parts/subspace/crystal - category = list(RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_TELECOMMS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/subspace_transmitter @@ -314,7 +370,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/glass = 100, /datum/material/silver = 100, /datum/material/uranium = 100) build_path = /obj/item/stock_parts/subspace/transmitter - category = list(RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_TELECOMMS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/card_reader @@ -324,7 +382,10 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron=50, /datum/material/glass=10) build_path = /obj/item/stock_parts/card_reader - category = list(RND_CATEGORY_STOCK_PARTS) + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_MISC + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/water_recycler name = "Water Recycler" @@ -333,5 +394,7 @@ build_type = PROTOLATHE | AWAY_LATHE | AUTOLATHE materials = list(/datum/material/plastic = 200, /datum/material/iron = 50) build_path = /obj/item/stock_parts/water_recycler - category = list(RND_CATEGORY_STOCK_PARTS) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_MEDICAL + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_MISC + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE diff --git a/code/modules/research/designs/telecomms_designs.dm b/code/modules/research/designs/telecomms_designs.dm index f50fce1fa62..69655f8adae 100644 --- a/code/modules/research/designs/telecomms_designs.dm +++ b/code/modules/research/designs/telecomms_designs.dm @@ -3,65 +3,81 @@ /////////////////////////////////// /datum/design/board/subspace_receiver - name = "Machine Design (Subspace Receiver)" + name = "Subspace Receiver Board" desc = "Allows for the construction of Subspace Receiver equipment." id = "s_receiver" build_path = /obj/item/circuitboard/machine/telecomms/receiver - category = list(RND_CATEGORY_SUBSPACE_TELECOMMS) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELECOMMS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/telecomms_bus - name = "Machine Design (Bus Mainframe)" + name = "Bus Mainframe Board" desc = "Allows for the construction of Telecommunications Bus Mainframes." id = "s_bus" build_path = /obj/item/circuitboard/machine/telecomms/bus - category = list(RND_CATEGORY_SUBSPACE_TELECOMMS) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELECOMMS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/telecomms_hub - name = "Machine Design (Hub Mainframe)" + name = "Hub Mainframe Board" desc = "Allows for the construction of Telecommunications Hub Mainframes." id = "s_hub" build_path = /obj/item/circuitboard/machine/telecomms/hub - category = list(RND_CATEGORY_SUBSPACE_TELECOMMS) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELECOMMS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/telecomms_relay - name = "Machine Design (Relay Mainframe)" + name = "Relay Mainframe Board" desc = "Allows for the construction of Telecommunications Relay Mainframes." id = "s_relay" build_path = /obj/item/circuitboard/machine/telecomms/relay - category = list(RND_CATEGORY_SUBSPACE_TELECOMMS) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELECOMMS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/telecomms_processor - name = "Machine Design (Processor Unit)" + name = "Processor Unit Board" desc = "Allows for the construction of Telecommunications Processor equipment." id = "s_processor" build_path = /obj/item/circuitboard/machine/telecomms/processor - category = list(RND_CATEGORY_SUBSPACE_TELECOMMS) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELECOMMS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/telecomms_server - name = "Machine Design (Server Mainframe)" + name = "Server Mainframe Board" desc = "Allows for the construction of Telecommunications Servers." id = "s_server" build_path = /obj/item/circuitboard/machine/telecomms/server - category = list(RND_CATEGORY_SUBSPACE_TELECOMMS) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELECOMMS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/telecomms_messaging - name = "Machine Design (Messaging Server)" + name = "Messaging Server Board" desc = "Allows for the construction of Telecommunications Messaging Servers." id = "s_messaging" build_path = /obj/item/circuitboard/machine/telecomms/message_server - category = list(RND_CATEGORY_SUBSPACE_TELECOMMS) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELECOMMS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/board/subspace_broadcaster - name = "Machine Design (Subspace Broadcaster)" + name = "Subspace Broadcaster Board" desc = "Allows for the construction of Subspace Broadcasting equipment." id = "s_broadcaster" build_path = /obj/item/circuitboard/machine/telecomms/broadcaster - category = list(RND_CATEGORY_SUBSPACE_TELECOMMS) + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELECOMMS + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE diff --git a/code/modules/research/designs/tool_designs.dm b/code/modules/research/designs/tool_designs.dm index bcd925dad96..25468263fb1 100644 --- a/code/modules/research/designs/tool_designs.dm +++ b/code/modules/research/designs/tool_designs.dm @@ -10,7 +10,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 3500, /datum/material/silver = 1500, /datum/material/titanium = 2500) build_path = /obj/item/screwdriver/power - category = list(RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ADVANCED + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/jawsoflife @@ -20,7 +22,9 @@ build_path = /obj/item/crowbar/power build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 4500, /datum/material/silver = 2500, /datum/material/titanium = 3500) - category = list(RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ADVANCED + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING autolathe_exportable = FALSE @@ -31,8 +35,10 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 1000, /datum/material/glass = 500, /datum/material/plasma = 1500, /datum/material/uranium = 200) build_path = /obj/item/weldingtool/experimental - category = list(RND_CATEGORY_TOOL_DESIGNS) - departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ADVANCED + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/rangedanalyzer name = "Experimental Long-range Gas Analyzer" @@ -41,8 +47,10 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 100, /datum/material/glass = 20, /datum/material/gold = 300, /datum/material/bluespace=200) build_path = /obj/item/analyzer/ranged - category = list(RND_CATEGORY_TOOL_DESIGNS) - departmental_flags= DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ATMOSPHERICS + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design/rpd name = "Rapid Pipe Dispenser (RPD)" @@ -50,19 +58,33 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 75000, /datum/material/glass = 37500) build_path = /obj/item/pipe_dispenser - category = list(RND_CATEGORY_TOOL_DESIGNS) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ADVANCED + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/rcd_loaded name = "Rapid Construction Device" desc = "A tool that can construct and deconstruct walls, airlocks and floors on the fly." id = "rcd_loaded" build_type = PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron = 60000, /datum/material/glass = 5000) // costs more than what it did in the autolathe, this one comes loaded. + materials = list(/datum/material/iron = 60000, /datum/material/glass = 5000) build_path = /obj/item/construction/rcd/loaded - category = list(RND_CATEGORY_TOOL_DESIGNS) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ADVANCED + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING +/datum/design/rcd_ammo + name = "RCD Matter Cartridge" + id = "rcd_ammo" + build_type = PROTOLATHE | AWAY_LATHE + materials = list(/datum/material/iron = 12000, /datum/material/glass = 8000) + build_path = /obj/item/rcd_ammo + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ADVANCED + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/rcd_upgrade/frames name = "RCD frames designs upgrade" @@ -71,7 +93,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 5000, /datum/material/glass = 2500, /datum/material/silver = 1500, /datum/material/titanium = 2000) build_path = /obj/item/rcd_upgrade/frames - category = list(RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ADVANCED + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/rcd_upgrade/simple_circuits @@ -81,7 +105,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 5000, /datum/material/glass = 2500, /datum/material/silver = 1500, /datum/material/titanium = 2000) build_path = /obj/item/rcd_upgrade/simple_circuits - category = list(RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ADVANCED + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/rcd_upgrade/furnishing @@ -91,7 +117,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 5000, /datum/material/glass = 2500, /datum/material/silver = 1500, /datum/material/titanium = 2000) build_path = /obj/item/rcd_upgrade/furnishing - category = list(RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ADVANCED + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/rcd_upgrade/silo_link @@ -101,7 +129,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 2500, /datum/material/glass = 2500, /datum/material/silver = 2500, /datum/material/titanium = 2500, /datum/material/bluespace = 2500) build_path = /obj/item/rcd_upgrade/silo_link - category = list(RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ADVANCED + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/rpd_upgrade/unwrench @@ -111,7 +141,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 5000, /datum/material/glass = 2500) build_path = /obj/item/rpd_upgrade/unwrench - category = list(RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ADVANCED + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/rld_mini @@ -121,8 +153,10 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 20000, /datum/material/glass = 10000, /datum/material/plastic = 8000, /datum/material/gold = 2000) build_path = /obj/item/construction/rld/mini - category = list(RND_CATEGORY_TOOL_DESIGNS) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_JANITORIAL + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SERVICE /datum/design/geneshears name = "Botanogenetic Plant Shears" @@ -131,7 +165,9 @@ build_path = /obj/item/geneshears build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron=4000, /datum/material/uranium=1500, /datum/material/silver=500) - category = list(RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_BOTANY_ADVANCED + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/plumbing_rcd_sci @@ -140,7 +176,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 75000, /datum/material/glass = 37500, /datum/material/plastic = 1000) build_path = /obj/item/construction/plumbing/research - category = list(RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_PLUMBING + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/plumbing_rcd_service @@ -149,7 +187,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 75000, /datum/material/glass = 37500, /datum/material/plastic = 1000) build_path = /obj/item/construction/plumbing/service - category = list(RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_PLUMBING + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/biopsy_tool @@ -158,7 +198,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 4000, /datum/material/glass = 3000) build_path = /obj/item/biopsy_tool - category = list(RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_XENOBIOLOGY + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE ///////////////////////////////////////// @@ -172,7 +214,9 @@ build_path = /obj/item/wrench/abductor build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 5000, /datum/material/silver = 2500, /datum/material/plasma = 1000, /datum/material/titanium = 2000, /datum/material/diamond = 2000) - category = list(RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ALIEN + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/alienwirecutters @@ -182,7 +226,9 @@ build_path = /obj/item/wirecutters/abductor build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 5000, /datum/material/silver = 2500, /datum/material/plasma = 1000, /datum/material/titanium = 2000, /datum/material/diamond = 2000) - category = list(RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ALIEN + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/alienscrewdriver @@ -192,7 +238,9 @@ build_path = /obj/item/screwdriver/abductor build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 5000, /datum/material/silver = 2500, /datum/material/plasma = 1000, /datum/material/titanium = 2000, /datum/material/diamond = 2000) - category = list(RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ALIEN + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/aliencrowbar @@ -202,7 +250,9 @@ build_path = /obj/item/crowbar/abductor build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 5000, /datum/material/silver = 2500, /datum/material/plasma = 1000, /datum/material/titanium = 2000, /datum/material/diamond = 2000) - category = list(RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ALIEN + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/alienwelder @@ -212,7 +262,9 @@ build_path = /obj/item/weldingtool/abductor build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 5000, /datum/material/silver = 2500, /datum/material/plasma = 5000, /datum/material/titanium = 2000, /datum/material/diamond = 2000) - category = list(RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ALIEN + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING /datum/design/alienmultitool @@ -222,7 +274,9 @@ build_path = /obj/item/multitool/abductor build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 5000, /datum/material/silver = 2500, /datum/material/plasma = 5000, /datum/material/titanium = 2000, /datum/material/diamond = 2000) - category = list(RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ALIEN + ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING ///////////////////////////////////////// @@ -236,7 +290,9 @@ build_path = /obj/item/scalpel/alien build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 2000, /datum/material/silver = 1500, /datum/material/plasma = 500, /datum/material/titanium = 1500) - category = list(RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL_ALIEN + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/alienhemostat @@ -246,7 +302,9 @@ build_path = /obj/item/hemostat/alien build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 2000, /datum/material/silver = 1500, /datum/material/plasma = 500, /datum/material/titanium = 1500) - category = list(RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL_ALIEN + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/alienretractor @@ -256,7 +314,9 @@ build_path = /obj/item/retractor/alien build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 2000, /datum/material/silver = 1500, /datum/material/plasma = 500, /datum/material/titanium = 1500) - category = list(RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL_ALIEN + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/aliensaw @@ -266,7 +326,9 @@ build_path = /obj/item/circular_saw/alien build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 10000, /datum/material/silver = 2500, /datum/material/plasma = 1000, /datum/material/titanium = 1500) - category = list(RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL_ALIEN + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/aliendrill @@ -276,7 +338,9 @@ build_path = /obj/item/surgicaldrill/alien build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 10000, /datum/material/silver = 2500, /datum/material/plasma = 1000, /datum/material/titanium = 1500) - category = list(RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL_ALIEN + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/aliencautery @@ -286,7 +350,9 @@ build_path = /obj/item/cautery/alien build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 2000, /datum/material/silver = 1500, /datum/material/plasma = 500, /datum/material/titanium = 1500) - category = list(RND_CATEGORY_TOOL_DESIGNS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL_ALIEN + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/wirebrush @@ -297,5 +363,8 @@ category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS) materials = list(/datum/material/iron = 200, /datum/material/glass = 200) build_path = /obj/item/wirebrush - category = list(RND_CATEGORY_EQUIPMENT) + category = list(RND_CATEGORY_TOOLS) departmental_flags = DEPARTMENT_BITFLAG_SERVICE + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_JANITORIAL + ) diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index 424984ac071..050af7f91c7 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -5,7 +5,9 @@ /datum/design/c38/sec id = "sec_38" build_type = PROTOLATHE | AWAY_LATHE - category = list(RND_CATEGORY_AMMO) + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY autolathe_exportable = FALSE //Redundant, there's already an autolathe version. @@ -16,7 +18,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 20000, /datum/material/silver = 5000, /datum/material/gold = 1000) build_path = /obj/item/ammo_box/c38/trac - category = list(RND_CATEGORY_AMMO) + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/c38_hotshot @@ -26,7 +30,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 20000, /datum/material/plasma = 5000) build_path = /obj/item/ammo_box/c38/hotshot - category = list(RND_CATEGORY_AMMO) + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/c38_iceblox @@ -36,7 +42,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 20000, /datum/material/plasma = 5000) build_path = /obj/item/ammo_box/c38/iceblox - category = list(RND_CATEGORY_AMMO) + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/c38_rubber @@ -46,34 +54,44 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 20000) build_path = /obj/item/ammo_box/c38/match/bouncy - category = list(RND_CATEGORY_AMMO) + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/rubbershot/sec id = "sec_rshot" build_type = PROTOLATHE | AWAY_LATHE - category = list(RND_CATEGORY_AMMO) + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY autolathe_exportable = FALSE //Redundant /datum/design/beanbag_slug/sec id = "sec_beanbag_slug" build_type = PROTOLATHE | AWAY_LATHE - category = list(RND_CATEGORY_AMMO) + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY autolathe_exportable = FALSE /datum/design/shotgun_dart/sec id = "sec_dart" build_type = PROTOLATHE | AWAY_LATHE - category = list(RND_CATEGORY_AMMO) + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY autolathe_exportable = FALSE /datum/design/incendiary_slug/sec id = "sec_Islug" build_type = PROTOLATHE | AWAY_LATHE - category = list(RND_CATEGORY_AMMO) + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY autolathe_exportable = FALSE @@ -84,7 +102,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 500, /datum/material/glass = 300) build_path = /obj/item/firing_pin/test_range - category = list(RND_CATEGORY_FIRING_PINS) + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_FIRING_PINS + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/pin_mindshield @@ -94,7 +114,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/silver = 600, /datum/material/diamond = 600, /datum/material/uranium = 200) build_path = /obj/item/firing_pin/implant/mindshield - category = list(RND_CATEGORY_FIRING_PINS) + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_FIRING_PINS + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/pin_explorer @@ -104,7 +126,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/silver = 1000, /datum/material/gold = 1000, /datum/material/iron = 500) build_path = /obj/item/firing_pin/explorer - category = list(RND_CATEGORY_FIRING_PINS) + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_FIRING_PINS + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/stunrevolver @@ -114,7 +138,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 10000, /datum/material/glass = 10000, /datum/material/silver = 10000) build_path = /obj/item/weaponcrafting/gunkit/tesla - category = list(RND_CATEGORY_WEAPONS) + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_KITS + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY autolathe_exportable = FALSE @@ -125,7 +151,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 10000, /datum/material/glass = 2000, /datum/material/uranium = 3000, /datum/material/titanium = 1000) build_path = /obj/item/weaponcrafting/gunkit/nuclear - category = list(RND_CATEGORY_WEAPONS) + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_KITS + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY autolathe_exportable = FALSE @@ -136,7 +164,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 4000, /datum/material/glass = 4000, /datum/material/silver = 300, /datum/material/titanium = 200) build_path = /obj/item/shield/riot/tele - category = list(RND_CATEGORY_WEAPONS) + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_MELEE + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY autolathe_exportable = FALSE @@ -147,7 +177,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 10000, /datum/material/glass = 5000, /datum/material/diamond = 5000, /datum/material/uranium = 8000, /datum/material/silver = 4500, /datum/material/gold = 5000) build_path = /obj/item/weaponcrafting/gunkit/beam_rifle - category = list(RND_CATEGORY_WEAPONS) + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_KITS + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY autolathe_exportable = FALSE @@ -158,7 +190,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/gold = 5000, /datum/material/uranium = 10000) build_path = /obj/item/weaponcrafting/gunkit/decloner - category = list(RND_CATEGORY_WEAPONS) + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_KITS + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY autolathe_exportable = FALSE @@ -169,7 +203,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 5000, /datum/material/glass = 1000) build_path = /obj/item/gun/syringe/rapidsyringe - category = list(RND_CATEGORY_WEAPONS) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_CHEMISTRY + ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL //uwu /datum/design/temp_gun @@ -179,7 +215,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 5000, /datum/material/glass = 500, /datum/material/silver = 3000) build_path = /obj/item/weaponcrafting/gunkit/temperature - category = list(RND_CATEGORY_WEAPONS) + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_KITS + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY autolathe_exportable = FALSE @@ -190,48 +228,58 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 2000, /datum/material/glass = 500, /datum/material/uranium = 2000) build_path = /obj/item/gun/energy/floragun - category = list(RND_CATEGORY_WEAPONS) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_BOTANY_ADVANCED + ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE /datum/design/large_grenade - name = "Large Grenade" + name = "Large Grenade Casing" desc = "A grenade that affects a larger area and use larger containers." id = "large_grenade" build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 3000) build_path = /obj/item/grenade/chem_grenade/large - category = list(RND_CATEGORY_WEAPONS) - departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_MEDICAL + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_CHEMISTRY + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/pyro_grenade - name = "Pyro Grenade" + name = "Pyro Grenade Casing" desc = "An advanced grenade that is able to self ignite its mixture." id = "pyro_grenade" build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 2000, /datum/material/plasma = 500) build_path = /obj/item/grenade/chem_grenade/pyro - category = list(RND_CATEGORY_WEAPONS) - departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_MEDICAL + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_CHEMISTRY + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/cryo_grenade - name = "Cryo Grenade" + name = "Cryo Grenade Casing" desc = "An advanced grenade that rapidly cools its contents upon detonation." id = "cryo_grenade" build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 2000, /datum/material/silver = 500) build_path = /obj/item/grenade/chem_grenade/cryo - category = list(RND_CATEGORY_WEAPONS) - departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_MEDICAL + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_CHEMISTRY + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/adv_grenade - name = "Advanced Release Grenade" + name = "Advanced Release Grenade Casing" desc = "An advanced grenade that can be detonated several times, best used with a repeating igniter." id = "adv_grenade" build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 3000, /datum/material/glass = 500) build_path = /obj/item/grenade/chem_grenade/adv_release - category = list(RND_CATEGORY_WEAPONS) - departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_MEDICAL + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_CHEMISTRY + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL /datum/design/xray name = "X-ray Laser Gun Part Kit" @@ -240,18 +288,22 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/gold = 5000, /datum/material/uranium = 4000, /datum/material/iron = 5000, /datum/material/titanium = 2000, /datum/material/bluespace = 2000) build_path = /obj/item/weaponcrafting/gunkit/xray - category = list(RND_CATEGORY_WEAPONS) + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_KITS + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY autolathe_exportable = FALSE /datum/design/ioncarbine name = "Ion Carbine Part Kit" - desc = "How to dismantle a cyborg : The gun." + desc = "How to Dismantle a Cyborg: The Gun." id = "ioncarbine" build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/silver = 6000, /datum/material/iron = 8000, /datum/material/uranium = 2000) build_path = /obj/item/weaponcrafting/gunkit/ion - category = list(RND_CATEGORY_WEAPONS) + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_KITS + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY autolathe_exportable = FALSE @@ -262,7 +314,9 @@ build_type = PROTOLATHE materials = list(/datum/material/silver = 2000, /datum/material/iron = 5000, /datum/material/diamond = 2000, /datum/material/bluespace = 3000) build_path = /obj/item/gun/energy/wormhole_projector - category = list(RND_CATEGORY_WEAPONS) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SCIENCE + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/stunshell @@ -272,7 +326,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 200) build_path = /obj/item/ammo_casing/shotgun/stunslug - category = list(RND_CATEGORY_AMMO) + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/techshell @@ -282,8 +338,10 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 1000, /datum/material/glass = 200) build_path = /obj/item/ammo_casing/shotgun/techshell - category = list(RND_CATEGORY_AMMO) - departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/suppressor name = "Suppressor" @@ -292,7 +350,9 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 2000, /datum/material/silver = 500) build_path = /obj/item/suppressor - category = list(RND_CATEGORY_WEAPONS) + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_PARTS + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/gravitygun @@ -302,17 +362,21 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/silver = 8000, /datum/material/uranium = 8000, /datum/material/glass = 12000, /datum/material/iron = 12000, /datum/material/diamond = 3000, /datum/material/bluespace = 3000) build_path = /obj/item/gun/energy/gravity_gun - category = list(RND_CATEGORY_WEAPONS) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SCIENCE + ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/largecrossbow name = "Energy Crossbow Part Kit" - desc = "A kit to reverse-engineer a proto-kinetic acceleratr into an energy crossbow, favored by syndicate infiltration teams and carp hunters." + desc = "A kit to reverse-engineer a proto-kinetic accelerator into an energy crossbow, favored by syndicate infiltration teams and carp hunters." id = "largecrossbow" build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 5000, /datum/material/glass = 1500, /datum/material/uranium = 1500, /datum/material/silver = 1500) build_path = /obj/item/weaponcrafting/gunkit/ebow - category = list(RND_CATEGORY_WEAPONS) + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY autolathe_exportable = FALSE @@ -332,5 +396,7 @@ build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = 10000, /datum/material/glass = 4000, /datum/material/silver = 10000, /datum/material/gold = 2000) build_path = /obj/item/melee/baton/security/boomerang - category = list(RND_CATEGORY_WEAPONS) + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED + ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY diff --git a/code/modules/research/designs/wiremod_designs.dm b/code/modules/research/designs/wiremod_designs.dm index 7ef6ef884fd..edf04e0d6eb 100644 --- a/code/modules/research/designs/wiremod_designs.dm +++ b/code/modules/research/designs/wiremod_designs.dm @@ -3,8 +3,10 @@ desc = "The foundation of all circuits. All Circuitry go onto this." id = "integrated_circuit" build_path = /obj/item/integrated_circuit - build_type = IMPRINTER | COMPONENT_PRINTER - category = list(RND_CATEGORY_CIRCUITRY, RND_CATEGORY_CORE) + build_type = COMPONENT_PRINTER + category = list( + RND_CATEGORY_CIRCUITRY + RND_CATEGORY_CIRCUITRY_CORE + ) materials = list(/datum/material/glass = 1000, /datum/material/iron = 1000) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE @@ -13,8 +15,10 @@ desc = "A circuit multitool to mark entities and load them into." id = "circuit_multitool" build_path = /obj/item/multitool/circuit - build_type = PROTOLATHE | COMPONENT_PRINTER - category = list(RND_CATEGORY_CIRCUITRY, RND_CATEGORY_CORE) + build_type = COMPONENT_PRINTER + category = list( + RND_CATEGORY_CIRCUITRY + RND_CATEGORY_CIRCUITRY_CORE + ) materials = list(/datum/material/glass = 1000, /datum/material/iron = 1000) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE @@ -23,8 +27,10 @@ desc = "A cable that allows certain shells to connect to nearby computers and machines." id = "usb_cable" build_path = /obj/item/usb_cable - build_type = PROTOLATHE | COMPONENT_PRINTER - category = list(RND_CATEGORY_CIRCUITRY, RND_CATEGORY_CORE) + build_type = COMPONENT_PRINTER + category = list( + RND_CATEGORY_CIRCUITRY + RND_CATEGORY_CIRCUITRY_CORE + ) // Yes, it would make sense to make them take plastic, but then less people would make them, and I think they're cool materials = list(/datum/material/iron = 2500) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE @@ -32,10 +38,12 @@ /datum/design/component name = "Component ( NULL ENTRY )" desc = "A component that goes into an integrated circuit." - build_type = IMPRINTER | COMPONENT_PRINTER + build_type = COMPONENT_PRINTER materials = list(/datum/material/glass = 1000) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE - category = list(RND_CATEGORY_CIRCUITRY, RND_CATEGORY_COMPONENTS) + category = list( + RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_COMPONENTS + ) /datum/design/component/New() . = ..() @@ -334,7 +342,9 @@ build_path = /obj/item/circuit_component/pinpointer /datum/design/component/bci - category = list(RND_CATEGORY_CIRCUITRY, RND_CATEGORY_BCI_COMPONENTS) + category = list( + RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_BCI_COMPONENTS + ) /datum/design/component/bci/bci_action name = "BCI Action Component" @@ -422,26 +432,32 @@ id = "compact_remote_shell" build_path = /obj/item/compact_remote materials = list(/datum/material/glass = 2000, /datum/material/iron = 5000) - build_type = PROTOLATHE | COMPONENT_PRINTER - category = list(RND_CATEGORY_CIRCUITRY, RND_CATEGORY_SHELLS) + build_type = COMPONENT_PRINTER + category = list( + RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS + ) /datum/design/controller_shell name = "Controller Shell" desc = "A handheld shell with several buttons." id = "controller_shell" build_path = /obj/item/controller - build_type = PROTOLATHE | COMPONENT_PRINTER + build_type = COMPONENT_PRINTER materials = list(/datum/material/glass = 2000, /datum/material/iron = 7000) - category = list(RND_CATEGORY_CIRCUITRY, RND_CATEGORY_SHELLS) + category = list( + RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS + ) /datum/design/scanner_shell name = "Scanner Shell" desc = "A handheld scanner shell that can scan entities." id = "scanner_shell" build_path = /obj/item/wiremod_scanner - build_type = PROTOLATHE | COMPONENT_PRINTER + build_type = COMPONENT_PRINTER materials = list(/datum/material/glass = 2000, /datum/material/iron = 7000) - category = list(RND_CATEGORY_CIRCUITRY, RND_CATEGORY_SHELLS) + category = list( + RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS + ) /datum/design/keyboard_shell name = "Keyboard Shell" @@ -449,48 +465,58 @@ id = "keyboard_shell" build_path = /obj/item/keyboard_shell materials = list(/datum/material/glass = 2000, /datum/material/iron = 10000) - build_type = PROTOLATHE | COMPONENT_PRINTER - category = list("Circuitry", "Shells") + build_type = COMPONENT_PRINTER + category = list( + RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS + ) /datum/design/gun_shell name = "Gun Shell" desc = "A handheld shell that can fire projectiles to output entities." id = "gun_shell" build_path = /obj/item/gun/energy/wiremod_gun - build_type = PROTOLATHE | COMPONENT_PRINTER + build_type = COMPONENT_PRINTER materials = list(/datum/material/glass = 2000, /datum/material/iron = 10000, /datum/material/plasma = 100) - category = list(RND_CATEGORY_CIRCUITRY, RND_CATEGORY_SHELLS) + category = list( + RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS + ) /datum/design/bot_shell name = "Bot Shell" desc = "An immobile shell that can store more components. Has a USB port to be able to connect to computers and machines." id = "bot_shell" build_path = /obj/item/shell/bot - build_type = PROTOLATHE | COMPONENT_PRINTER + build_type = COMPONENT_PRINTER materials = list(/datum/material/glass = 2000, /datum/material/iron = 10000) - category = list(RND_CATEGORY_CIRCUITRY, RND_CATEGORY_SHELLS) + category = list( + RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS + ) /datum/design/money_bot_shell name = "Money Bot Shell" desc = "An immobile shell that is similar to a regular bot shell, but accepts monetary inputs and can also dispense money." id = "money_bot_shell" build_path = /obj/item/shell/money_bot - build_type = PROTOLATHE | COMPONENT_PRINTER + build_type = COMPONENT_PRINTER materials = list(/datum/material/glass = 2000, /datum/material/iron = 10000, /datum/material/gold = 50) - category = list(RND_CATEGORY_CIRCUITRY, RND_CATEGORY_SHELLS) + category = list( + RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS + ) /datum/design/drone_shell name = "Drone Shell" desc = "A shell with the ability to move itself around." id = "drone_shell" build_path = /obj/item/shell/drone - build_type = PROTOLATHE | COMPONENT_PRINTER + build_type = COMPONENT_PRINTER materials = list( /datum/material/glass = 2000, /datum/material/iron = 11000, /datum/material/gold = 500, ) - category = list(RND_CATEGORY_CIRCUITRY, RND_CATEGORY_SHELLS) + category = list( + RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS + ) /datum/design/server_shell name = "Server Shell" @@ -502,8 +528,10 @@ /datum/material/gold = 1500, ) build_path = /obj/item/shell/server - build_type = PROTOLATHE | COMPONENT_PRINTER - category = list(RND_CATEGORY_CIRCUITRY, RND_CATEGORY_SHELLS) + build_type = COMPONENT_PRINTER + category = list( + RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS + ) /datum/design/airlock_shell name = "Airlock Shell" @@ -514,8 +542,10 @@ /datum/material/iron = 15000, ) build_path = /obj/item/shell/airlock - build_type = PROTOLATHE | COMPONENT_PRINTER - category = list(RND_CATEGORY_CIRCUITRY, RND_CATEGORY_SHELLS) + build_type = COMPONENT_PRINTER + category = list( + RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS + ) /datum/design/dispenser_shell name = "Dispenser Shell" @@ -526,8 +556,10 @@ /datum/material/iron = 15000, ) build_path = /obj/item/shell/dispenser - build_type = PROTOLATHE | COMPONENT_PRINTER - category = list(RND_CATEGORY_CIRCUITRY, RND_CATEGORY_SHELLS) + build_type = COMPONENT_PRINTER + category = list( + RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS + ) /datum/design/bci_shell name = "Brain-Computer Interface Shell" @@ -538,8 +570,10 @@ /datum/material/iron = 8000, ) build_path = /obj/item/shell/bci - build_type = PROTOLATHE | COMPONENT_PRINTER - category = list(RND_CATEGORY_CIRCUITRY, RND_CATEGORY_SHELLS) + build_type = COMPONENT_PRINTER + category = list( + RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS + ) /datum/design/scanner_gate_shell name = "Scanner Gate Shell" @@ -550,16 +584,20 @@ /datum/material/iron = 12000, ) build_path = /obj/item/shell/scanner_gate - build_type = PROTOLATHE | COMPONENT_PRINTER - category = list(RND_CATEGORY_CIRCUITRY, RND_CATEGORY_SHELLS) + build_type = COMPONENT_PRINTER + category = list( + RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS + ) /datum/design/board/bci_implanter name = "Brain-Computer Interface Manipulation Chamber" desc = "A machine that, when given a brain-computer interface, will implant it into an occupant. Otherwise, will remove any brain-computer interfaces they already have." id = "bci_implanter" build_path = /obj/item/circuitboard/machine/bci_implanter - build_type = IMPRINTER | COMPONENT_PRINTER - category = list(RND_CATEGORY_CIRCUITRY, RND_CATEGORY_CORE) + build_type = COMPONENT_PRINTER + category = list( + RND_CATEGORY_CIRCUITRY + RND_CATEGORY_CIRCUITRY_CORE + ) /datum/design/assembly_shell name = "Assembly Shell" @@ -567,8 +605,10 @@ id = "assembly_shell" materials = list(/datum/material/glass = 2000, /datum/material/iron = 5000) build_path = /obj/item/assembly/wiremod - build_type = PROTOLATHE | COMPONENT_PRINTER - category = list(RND_CATEGORY_CIRCUITRY, RND_CATEGORY_SHELLS) + build_type = COMPONENT_PRINTER + category = list( + RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS + ) /datum/design/mod_module_shell name = "MOD Module Shell" @@ -576,5 +616,7 @@ id = "module_shell" materials = list(/datum/material/glass = 2000) build_path = /obj/item/mod/module/circuit - build_type = MECHFAB | COMPONENT_PRINTER - category = list(RND_CATEGORY_MOD_MODULES, RND_CATEGORY_SHELLS) + build_type = COMPONENT_PRINTER + category = list( + RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS + ) diff --git a/code/modules/research/machinery/_production.dm b/code/modules/research/machinery/_production.dm index af9706b5aea..f7667d364e5 100644 --- a/code/modules/research/machinery/_production.dm +++ b/code/modules/research/machinery/_production.dm @@ -59,10 +59,12 @@ // We're probably going to get more than one update (design) at a time, so batch // them together. - addtimer(CALLBACK(src, .proc/update_designs), 0.25 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE) + addtimer(CALLBACK(src, .proc/update_designs), 2 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE) /// Updates the list of designs this fabricator can print. /obj/machinery/rnd/production/proc/update_designs() + var/previous_design_count = cached_designs.len + cached_designs.Cut() for(var/design_id in stored_research.researched_designs) @@ -71,6 +73,12 @@ if((isnull(allowed_department_flags) || (design.departmental_flags & allowed_department_flags)) && (design.build_type & allowed_buildtypes)) cached_designs |= design + var/design_delta = cached_designs.len - previous_design_count + + if(design_delta > 0) + say("Received [design_delta] new design[design_delta == 1 ? "" : "s"].") + playsound(src, 'sound/machines/twobeep_high.ogg', 50, TRUE) + update_static_data_for_all_viewers() /obj/machinery/rnd/production/RefreshParts() @@ -82,6 +90,7 @@ /obj/machinery/rnd/production/ui_assets(mob/user) return list( get_asset_datum(/datum/asset/spritesheet/sheetmaterials), + get_asset_datum(/datum/asset/spritesheet/research_designs) ) /obj/machinery/rnd/production/ui_interact(mob/user, datum/tgui/ui) @@ -97,6 +106,9 @@ var/list/data = list() var/list/designs = list() + var/datum/asset/spritesheet/research_designs/spritesheet = get_asset_datum(/datum/asset/spritesheet/research_designs) + var/size32x32 = "[spritesheet.name]32x32" + for(var/datum/design/design in cached_designs) var/cost = list() @@ -104,16 +116,20 @@ var/coefficient = efficient_with(design.build_path) ? efficiency_coeff : 1 cost[material.name] = design.materials[material] * coefficient + var/icon_size = spritesheet.icon_size_id(design.id) + designs[design.id] = list( "name" = design.name, "desc" = design.get_description(), "cost" = cost, "id" = design.id, - "categories" = design.category + "categories" = design.category, + "icon" = "[icon_size == size32x32 ? "" : "[icon_size] "][design.id]", + "constructionTime" = 0 ) data["designs"] = designs - data["fab_name"] = name + data["fabName"] = name return data @@ -121,8 +137,10 @@ var/list/data = list() data["materials"] = materials.mat_container?.ui_data() - data["on_hold"] = materials.on_hold() + data["onHold"] = materials.on_hold() data["busy"] = busy + data["materialMaximum"] = materials.local_size + data["queue"] = list() return data diff --git a/code/modules/research/techweb/_techweb.dm b/code/modules/research/techweb/_techweb.dm index 1d5777f6442..9045f3dbeec 100644 --- a/code/modules/research/techweb/_techweb.dm +++ b/code/modules/research/techweb/_techweb.dm @@ -41,14 +41,14 @@ var/list/available_experiments = list() /// Completed experiments var/list/completed_experiments = list() - + /** * Assoc list of relationships with various partners * scientific_cooperation[partner_typepath] = relationship */ var/list/scientific_cooperation /** - * Assoc list of papers already published by the crew. + * Assoc list of papers already published by the crew. * published_papers[experiment_typepath][tier] = paper * Filled with nulls on init, populated only on publication. */ @@ -456,7 +456,7 @@ /datum/techweb/specialized/autounlocking var/design_autounlock_buildtypes = NONE - var/design_autounlock_categories = list("initial") //if a design has a buildtype that matches the abovea and either has a category in this or this is null, unlock it. + var/design_autounlock_categories = list(RND_CATEGORY_INITIAL) //if a design has a buildtype that matches the abovea and either has a category in this or this is null, unlock it. var/node_autounlock_ids = list() //autounlock nodes of this type. /datum/techweb/specialized/autounlocking/New() @@ -512,7 +512,7 @@ // If we haven't published a paper in the same topic ... if(locate(paper_to_add.experiment_path) in published_papers[paper_to_add.experiment_path]) - return TRUE + return TRUE // Quickly add and complete it. // PS: It's also possible to use add_experiment() together with a list/available_experiments check // to determine if we need to run all this, but this pretty much does the same while only needing one evaluation. @@ -527,6 +527,6 @@ complete_experiment(experiment) if(length(GLOB.experiment_handlers)) var/datum/component/experiment_handler/handler = GLOB.experiment_handlers[1] - handler.announce_message_to_all("The [experiment.name] has been completed!") - + handler.announce_message_to_all("The [experiment.name] has been completed!") + return TRUE diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 41cbb398be3..4a8e7e0960a 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -15,31 +15,67 @@ "basic_micro_laser", "basic_scanning", "bepis", + "blast", + "bounced_radio", + "bowl", "bucket", - "c38_rubber", "c-reader", - "circuit_imprinter", + "c38_rubber", + "camera_assembly", + "camera_film", + "camera", + "capbox", + "chisel", "circuit_imprinter_offstation", + "circuit_imprinter", + "circuit", + "circuitgreen", + "circuitred", + "coffee_cartridge", "coffeemaker", "coffeepot", - "coffee_cartridge", + "condenser", "conveyor_belt", "conveyor_switch", + "custom_vendor_refill", "design_disk", "destructive_analyzer", "destructive_scanner", "desttagger", "doppler_array", + "drinking_glass", + "earmuffs", + "electropack", "experi_scanner", "experimentor", + "extinguisher", "fax", + "fishing_rod", + "flashlight", + "fluid_ducts", + "foam_dart", + "fork", "gas_filter", + "handcuffs_s", "handlabel", + "health_sensor", + "holodisk", + "igniter", + "infrared_emitter", + "intercom_frame", + "kitchen_knife", + "laptop", + "light_bulb", + "light_tube", "mechfab", "micro_mani", + "miniature_power_cell", + "newscaster_frame", "oven_tray", "packagewrap", + "pet_carrier", "plasmaglass", + "plasmaman_gas_filter", "plasmareinforcedglass", "plasteel", "plastic_fork", @@ -47,28 +83,49 @@ "plastic_spoon", "plastitanium", "plastitaniumglass", - "plasmaman_gas_filter", + "plate", + "prox_sensor", + "radio_headset", "rdconsole", "rdserver", "rdservercontrol", - "restaurant_portal", + "receiver", + "recorder", "rglass", "roll", "salestagger", "sec_38", - "sec_Islug", "sec_beanbag_slug", "sec_dart", + "sec_Islug", "sec_rshot", + "servingtray", + "shaker", + "shot_glass", + "signaler", + "slime_scanner", + "solar_panel", + "solar_tracker", "space_heater", + "spoon", + "status_display_frame", + "sticky_tape", + "tablet", + "tape", "tech_disk", + "timer", "titaniumglass", - "toner", "toner_large", + "toner", + "toy_armblade", + "toy_balloon", + "toygun", "trapdoor_electronics", "turbine_part_compressor", "turbine_part_rotor", "turbine_part_stator", + "turret_control", + "voice_analyzer", "watering_can", ) @@ -216,6 +273,7 @@ "dropper", "hemostat", "large_beaker", + "mmi_m", "operating", "petri_dish", "pillbottle", @@ -551,6 +609,7 @@ "forcefield_projector", "magboots", "rcd_loaded", + "rcd_ammo", "rpd_loaded", "sheetifier", "weldingmask", diff --git a/code/modules/vehicles/mecha/mech_fabricator.dm b/code/modules/vehicles/mecha/mech_fabricator.dm index f9a8d71b6a5..8e384046e03 100644 --- a/code/modules/vehicles/mecha/mech_fabricator.dm +++ b/code/modules/vehicles/mecha/mech_fabricator.dm @@ -11,23 +11,32 @@ subsystem_type = /datum/controller/subsystem/processing/fastprocess /// Current items in the build queue. - var/list/queue = list() + var/list/datum/design/queue = list() + /// Whether or not the machine is building the entire queue automagically. var/process_queue = FALSE /// The current design datum that the machine is building. var/datum/design/being_built + /// World time when the build will finish. var/build_finish = 0 + /// World time when the build started. var/build_start = 0 + + /// The job ID of the part currently being processed. This is used for ordering list items for the client UI. + var/top_job_id = 0 + /// Reference to all materials used in the creation of the item being_built. var/list/build_materials + /// Part currently stored in the Exofab. var/obj/item/stored_part /// Coefficient for the speed of item building. Based on the installed parts. var/time_coeff = 1 + /// Coefficient for the efficiency of material usage in item building. Based on the installed parts. var/component_coeff = 1 @@ -40,37 +49,13 @@ /// Reference to a remote material inventory, such as an ore silo. var/datum/component/remote_materials/rmat - /// A list of part sets used for TGUI static data. Updated on Init() and syncing with the R&D console. - var/list/final_sets = list() - - /// A list of individual parts used for TGUI static data. Updated on Init() and syncing with the R&D console. - var/list/buildable_parts = list() - - /// A list of categories that valid MECHFAB design datums will broadly categorise themselves under. - var/list/part_sets = list( - "Cyborg", - "Ripley", - "Odysseus", - "Clarke", - "Gygax", - "Durand", - "H.O.N.K", - "Phazon", - "Savannah-Ivanov", - "Exosuit Equipment", - "Exosuit Ammunition", - "Cyborg Upgrade Modules", - "Cybernetics", - "Implants", - "Control Interfaces", - "MOD Construction", - "MOD Modules", - "Misc" - ) + /// All designs in the techweb that can be fabricated by this machine, since the last update. + var/list/datum/design/cached_designs /obj/machinery/mecha_part_fabricator/Initialize(mapload) stored_research = SSresearch.science_tech rmat = AddComponent(/datum/component/remote_materials, "mechfab", mapload && link_on_init, mat_container_flags=BREAKDOWN_FLAGS_LATHE) + cached_designs = list() RefreshParts() //Recalculating local material sizes if the fab isn't linked update_menu_tech() RegisterSignal( @@ -85,7 +70,7 @@ // We're probably going to get more than one update (design) at a time, so batch // them together. - addtimer(CALLBACK(src, .proc/update_menu_tech), 0.25 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE) + addtimer(CALLBACK(src, .proc/update_menu_tech), 2 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE) /obj/machinery/mecha_part_fabricator/RefreshParts() . = ..() @@ -134,115 +119,25 @@ balloon_alert(user, "rotated to [dir2text(dir)].") return TRUE -/** - * Generates an info list for a given part. - * - * Returns a list of part information. - * * D - Design datum to get information on. - * * categories - Boolean, whether or not to parse snowflake categories into the part information list. - */ -/obj/machinery/mecha_part_fabricator/proc/output_part_info(datum/design/D, categories = FALSE) - var/cost = list() - for(var/c in D.materials) - var/datum/material/M = c - cost[M.name] = get_resource_cost_w_coeff(D, M) - - var/obj/built_item = D.build_path - - var/list/category_override = null - var/list/sub_category = null - - if(categories) - // Handle some special cases to build up sub-categories for the fab interface. - // Start with checking if this design builds a cyborg module. - if(ispath(built_item, /obj/item/borg/upgrade)) - var/obj/item/borg/upgrade/U = built_item - var/model_types = initial(U.model_flags) - sub_category = list() - if(model_types) - if(model_types & BORG_MODEL_SECURITY) - sub_category += "Security" - if(model_types & BORG_MODEL_MINER) - sub_category += "Mining" - if(model_types & BORG_MODEL_JANITOR) - sub_category += "Janitor" - if(model_types & BORG_MODEL_MEDICAL) - sub_category += "Medical" - if(model_types & BORG_MODEL_ENGINEERING) - sub_category += "Engineering" - else - sub_category += "All Cyborgs" - - else if(ispath(built_item, /obj/item/mecha_parts/mecha_equipment)) - var/obj/item/mecha_parts/mecha_equipment/E = built_item - var/mech_types = initial(E.mech_flags) - sub_category = "Equipment" - if(mech_types) - category_override = list() - if(mech_types & EXOSUIT_MODULE_RIPLEY) - category_override += "Ripley" - if(mech_types & EXOSUIT_MODULE_ODYSSEUS) - category_override += "Odysseus" - if(mech_types & EXOSUIT_MODULE_CLARKE) - category_override += "Clarke" - if(mech_types & EXOSUIT_MODULE_GYGAX) - category_override += "Gygax" - if(mech_types & EXOSUIT_MODULE_DURAND) - category_override += "Durand" - if(mech_types & EXOSUIT_MODULE_HONK) - category_override += "H.O.N.K" - if(mech_types & EXOSUIT_MODULE_PHAZON) - category_override += "Phazon" - if(mech_types & EXOSUIT_MODULE_SAVANNAH) - category_override += "Savannah-Ivanov" - - else if(ispath(built_item, /obj/item/borg_restart_board)) - sub_category += "All Cyborgs" //Otherwise the restart board shows in the "parts" category, which seems dumb - - else if(istype(D, /datum/design/module)) - var/datum/design/module/module_design = D - sub_category = list(module_design.department_type) - - var/list/part = list( - "name" = D.name, - "desc" = D.get_description(), - "printTime" = get_construction_time_w_coeff(initial(D.construction_time))/10, - "cost" = cost, - "id" = D.id, - "subCategory" = sub_category, - "category_override" = category_override, - "searchMeta" = D.search_metadata - ) - - return part - /** * Updates the `final_sets` and `buildable_parts` for the current mecha fabricator. */ /obj/machinery/mecha_part_fabricator/proc/update_menu_tech() - final_sets = list() - buildable_parts = list() - final_sets += part_sets + var/previous_design_count = cached_designs.len + + cached_designs.Cut() for(var/v in stored_research.researched_designs) - var/datum/design/D = SSresearch.techweb_design_by_id(v) - if(D.build_type & MECHFAB) - // This is for us. - var/list/part = output_part_info(D, TRUE) + var/datum/design/design = SSresearch.techweb_design_by_id(v) - if(part["category_override"]) - for(var/cat in part["category_override"]) - buildable_parts[cat] += list(part) - if(!(cat in part_sets)) - final_sets += cat - continue + if(design.build_type & MECHFAB) + cached_designs |= design - for(var/cat in part_sets) - // Find all matching categories. - if(!(cat in D.category)) - continue + var/design_delta = cached_designs.len - previous_design_count - buildable_parts[cat] += list(part) + if(design_delta > 0) + say("Received [design_delta] new design[design_delta == 1 ? "" : "s"].") + playsound(src, 'sound/machines/twobeep_high.ogg', 50, TRUE) update_static_data_for_all_viewers() @@ -399,20 +294,10 @@ say("The fabrication of [I] is now complete.") I.forceMove(exit) - return TRUE -/** - * Adds a list of datum designs to the build queue. - * - * Will only add designs that are in this machine's stored techweb. - * Does final checks for datum IDs and makes sure this machine can build the designs. - * * part_list - List of datum design ids for designs to add to the queue. - */ -/obj/machinery/mecha_part_fabricator/proc/add_part_set_to_queue(list/part_list) - for(var/v in stored_research.researched_designs) - var/datum/design/D = SSresearch.techweb_design_by_id(v) - if((D.build_type & MECHFAB) && (D.id in part_list)) - add_to_queue(D) + top_job_id += 1 + + return TRUE /** * Adds a datum design to the build queue. @@ -423,9 +308,11 @@ /obj/machinery/mecha_part_fabricator/proc/add_to_queue(datum/design/D) if(!istype(queue)) queue = list() + if(D) queue[++queue.len] = D return TRUE + return FALSE /** @@ -440,21 +327,6 @@ queue.Cut(index,++index) return TRUE -/** - * Generates a list of parts formatted for tgui based on the current build queue. - * - * Returns a formatted list of lists containing formatted part information for every part in the build queue. - */ -/obj/machinery/mecha_part_fabricator/proc/list_queue() - if(!istype(queue) || !length(queue)) - return null - - var/list/queued_parts = list() - for(var/datum/design/D in queue) - var/list/part = output_part_info(D) - queued_parts += list(part) - return queued_parts - /** * Calculates the coefficient-modified resource cost of a single material component of a design's recipe. * @@ -478,7 +350,8 @@ /obj/machinery/mecha_part_fabricator/ui_assets(mob/user) return list( - get_asset_datum(/datum/asset/spritesheet/sheetmaterials) + get_asset_datum(/datum/asset/spritesheet/sheetmaterials), + get_asset_datum(/datum/asset/spritesheet/research_designs) ) /obj/machinery/mecha_part_fabricator/ui_interact(mob/user, datum/tgui/ui) @@ -489,9 +362,30 @@ /obj/machinery/mecha_part_fabricator/ui_static_data(mob/user) var/list/data = list() + var/list/designs = list() - data["partSets"] = final_sets - data["buildableParts"] = buildable_parts + var/datum/asset/spritesheet/research_designs/spritesheet = get_asset_datum(/datum/asset/spritesheet/research_designs) + var/size32x32 = "[spritesheet.name]32x32" + + for(var/datum/design/design in cached_designs) + var/cost = list() + + for(var/datum/material/material in design.materials) + cost[material.name] = get_resource_cost_w_coeff(design, material) + + var/icon_size = spritesheet.icon_size_id(design.id) + + designs[design.id] = list( + "name" = design.name, + "desc" = design.get_description(), + "cost" = cost, + "id" = design.id, + "categories" = design.category, + "icon" = "[icon_size == size32x32 ? "" : "[icon_size] "][design.id]", + "constructionTime" = get_construction_time_w_coeff(design.construction_time) + ) + + data["designs"] = designs return data @@ -499,30 +393,34 @@ var/list/data = list() data["materials"] = rmat.mat_container?.ui_data() + data["queue"] = list() + data["processing"] = process_queue if(being_built) - var/list/part = list( - "name" = being_built.name, - "duration" = build_finish - world.time, - "printTime" = get_construction_time_w_coeff(initial(being_built.construction_time)) - ) - data["buildingPart"] = part - else - data["buildingPart"] = null + data["queue"] += list(list( + "jobId" = top_job_id, + "designId" = being_built.id, + "processing" = TRUE, + "timeLeft" = (build_finish - world.time) + )) - data["queue"] = list_queue() + var/offset = 0 - if(stored_part) - data["storedPart"] = stored_part.name - else - data["storedPart"] = null + for(var/datum/design/design in queue) + offset += 1 - data["isProcessingQueue"] = process_queue + data["queue"] += list(list( + "jobId" = top_job_id + offset, + "designId" = design.id, + "processing" = FALSE, + "timeLeft" = get_construction_time_w_coeff(design.construction_time) / 10 + )) return data /obj/machinery/mecha_part_fabricator/ui_act(action, list/params) . = ..() + if(.) return @@ -532,69 +430,68 @@ usr.set_machine(src) switch(action) - if("add_queue_set") - // Add all parts of a set to queue - var/part_list = params["part_list"] - add_part_set_to_queue(part_list) - return - if("add_queue_part") - // Add a specific part to queue - var/id = params["id"] - if(!stored_research.researched_designs.Find(id)) - stack_trace("ID did not map to a researched datum [id]") + if("build") + var/designs = params["designs"] + + if(!islist(designs)) return - var/datum/design/design = SSresearch.techweb_design_by_id(id) - if(!(design.build_type & MECHFAB) || design.id != id) - return - add_to_queue(design) + + for(var/design_id in designs) + if(!istext(design_id)) + continue + + if(!stored_research.researched_designs.Find(design_id)) + continue + + var/datum/design/design = SSresearch.techweb_design_by_id(design_id) + + if(!(design.build_type & MECHFAB) || design.id != design_id) + continue + + add_to_queue(design) + + if(params["now"]) + if(process_queue) + return + + process_queue = TRUE + + if(!being_built) + begin_processing() + return + if("del_queue_part") // Delete a specific from from the queue var/index = text2num(params["index"]) remove_from_queue(index) + return + if("clear_queue") // Delete everything from queue queue.Cut() + return + if("build_queue") // Build everything in queue if(process_queue) return + process_queue = TRUE if(!being_built) begin_processing() + return + if("stop_queue") // Pause queue building. Also known as stop. process_queue = FALSE - return - if("build_part") - // Build a single part - if(being_built || process_queue) - return - - var/id = params["id"] - if(!stored_research.researched_designs.Find(id)) - stack_trace("ID did not map to a researched datum [id]") - return - var/datum/design/design = SSresearch.techweb_design_by_id(id) - if(!(design.build_type & MECHFAB) || design.id != id) - return - if(build_part(design)) - on_start_printing() - begin_processing() return - if("move_queue_part") - // Moves a part up or down in the queue. - var/index = text2num(params["index"]) - var/new_index = index + text2num(params["newindex"]) - if(isnum(index) && isnum(new_index) && ISINTEGER(index) && ISINTEGER(new_index)) - if(ISINRANGE(new_index,1,length(queue))) - queue.Swap(index,new_index) - return + if("remove_mat") var/datum/material/material = locate(params["ref"]) var/amount = text2num(params["amount"]) diff --git a/code/modules/wiremod/core/component_printer.dm b/code/modules/wiremod/core/component_printer.dm index 0bbc37c5a03..746fddc3ff8 100644 --- a/code/modules/wiremod/core/component_printer.dm +++ b/code/modules/wiremod/core/component_printer.dm @@ -128,20 +128,27 @@ /obj/machinery/component_printer/ui_static_data(mob/user) var/list/data = list() - var/list/designs = list() + var/datum/asset/spritesheet/research_designs/spritesheet = get_asset_datum(/datum/asset/spritesheet/research_designs) + var/size32x32 = "[spritesheet.name]32x32" + // for (var/datum/design/component/component_design_type as anything in subtypesof(/datum/design/component)) for (var/researched_design_id in techweb.researched_designs) var/datum/design/design = SSresearch.techweb_design_by_id(researched_design_id) if (!(design.build_type & COMPONENT_PRINTER)) continue + var/icon_size = spritesheet.icon_size_id(design.id) + designs[researched_design_id] = list( "name" = design.name, - "description" = design.desc, - "materials" = get_material_cost_data(design.materials), + "desc" = design.desc, + "cost" = get_material_cost_data(design.materials), + "id" = researched_design_id, "categories" = design.category, + "icon" = "[icon_size == size32x32 ? "" : "[icon_size] "][design.id]", + "constructionTime" = -1 ) data["designs"] = designs @@ -228,7 +235,8 @@ /obj/machinery/debug_component_printer/ui_assets(mob/user) return list( - get_asset_datum(/datum/asset/spritesheet/sheetmaterials) + get_asset_datum(/datum/asset/spritesheet/sheetmaterials), + get_asset_datum(/datum/asset/spritesheet/research_designs) ) /obj/machinery/debug_component_printer/ui_act(action, list/params) @@ -296,7 +304,8 @@ /obj/machinery/module_duplicator/ui_assets(mob/user) return list( - get_asset_datum(/datum/asset/spritesheet/sheetmaterials) + get_asset_datum(/datum/asset/spritesheet/sheetmaterials), + get_asset_datum(/datum/asset/spritesheet/research_designs) ) /obj/machinery/module_duplicator/ui_act(action, list/params) @@ -411,6 +420,8 @@ balloon_alert(user, "module has been saved.") playsound(src, 'sound/machines/ping.ogg', 50) + update_static_data_for_all_viewers() + /obj/machinery/module_duplicator/ui_data(mob/user) var/list/data = list() data["materials"] = materials.mat_container.ui_data() @@ -422,12 +433,15 @@ var/list/designs = list() var/index = 1 + for (var/list/design as anything in scanned_designs) designs["[index]"] = list( "name" = design["name"], - "description" = design["desc"], - "materials" = get_material_cost_data(design["materials"]), - "categories" = list("Circuitry"), + "desc" = design["desc"], + "cost" = get_material_cost_data(design["materials"]), + "id" = "[index]", + "icon" = "integrated_circuit", + "categories" = list("/Saved Circuits"), ) index++ diff --git a/tgui/packages/tgui/interfaces/Autolathe.js b/tgui/packages/tgui/interfaces/Autolathe.js deleted file mode 100644 index d0c4f8065d7..00000000000 --- a/tgui/packages/tgui/interfaces/Autolathe.js +++ /dev/null @@ -1,224 +0,0 @@ -import { useBackend, useLocalState } from '../backend'; -import { Button, LabeledList, Section, ProgressBar, Flex, Box, Table, Collapsible, Input, Dimmer, Icon } from '../components'; -import { Window } from '../layouts'; -import { capitalize } from 'common/string'; - -export const Autolathe = (props, context) => { - const { act, data } = useBackend(context); - // Extract `health` and `color` variables from the `data` object. - const { - materialtotal, - materialsmax, - materials = [], - categories = [], - designs = [], - active, - } = data; - const [current_category, setCategory] = useLocalState( - context, - 'current_category', - 'None' - ); - const filteredmaterials = materials.filter( - (material) => material.mineral_amount > 0 - ); - return ( - - -
- - - - {materialtotal + '/' + materialsmax + ' cm³'} - - - - {filteredmaterials.length > 0 && ( - - - {filteredmaterials.map((filteredmaterial) => ( - - -
- {filteredmaterial.mineral_amount + ' cm³'} -
-
-
- ))} -
-
- )} -
-
-
-
- { - if (value.length) { - act('search', { - to_search: value, - }); - setCategory('results for "' + value + '"'); - } - }} - /> -
-
- - {categories.map((category) => ( - // eslint-disable-next-line react/jsx-key -
- {current_category.toString() !== 'None' && ( -
{ - act('menu'); - setCategory('None'); - }} - /> - }> - {active === 1 && ( - - - {'Building items...'} - - )} - - - {(designs.length && - designs.map((design) => ( - - -
-
-
- )} -
-
- ); -}; diff --git a/tgui/packages/tgui/interfaces/Autolathe.tsx b/tgui/packages/tgui/interfaces/Autolathe.tsx new file mode 100644 index 00000000000..f60a838061c --- /dev/null +++ b/tgui/packages/tgui/interfaces/Autolathe.tsx @@ -0,0 +1,254 @@ +import { useBackend } from '../backend'; +import { LabeledList, Section, ProgressBar, Collapsible, Stack, Icon, Box, Tooltip, Button } from '../components'; +import { Window } from '../layouts'; +import { capitalize } from 'common/string'; +import { Design, MaterialMap } from './Fabrication/Types'; +import { DesignBrowser } from './Fabrication/DesignBrowser'; +import { BooleanLike, classes } from 'common/react'; +import { MaterialCostSequence } from './Fabrication/MaterialCostSequence'; +import { Material } from './Fabrication/Types'; + +type AutolatheDesign = Design & { + buildable: BooleanLike; + mult5: BooleanLike; + mult10: BooleanLike; + mult25: BooleanLike; + mult50: BooleanLike; + sheet: BooleanLike; + maxmult: number; +}; + +type AutolatheData = { + materials: Material[]; + materialtotal: number; + materialsmax: number; + designs: AutolatheDesign[]; + active: BooleanLike; +}; + +export const Autolathe = (props, context) => { + const { act, data } = useBackend(context); + const { materialtotal, materialsmax, materials, designs, active } = data; + + const filteredMaterials = materials.filter((material) => material.amount > 0); + + const availableMaterials: MaterialMap = {}; + + for (const material of filteredMaterials) { + availableMaterials[material.name] = material.amount; + } + + return ( + + + + +
+ + + + {materialtotal + '/' + materialsmax + ' cm³'} + + + + {filteredMaterials.length > 0 && ( + + + {filteredMaterials.map((material) => ( + + +
+ {material.amount + ' cm³'} +
+
+
+ ))} +
+
+ )} +
+
+
+
+ + ( + + )} + /> + +
+
+
+ ); +}; + +type PrintButtonProps = { + design: Design; + quantity: number; + availableMaterials: MaterialMap; +}; + +const PrintButton = (props: PrintButtonProps, context) => { + const { act, data } = useBackend(context); + const { design, quantity, availableMaterials } = props; + + const canPrint = !Object.entries(design.cost).some( + ([material, amount]) => + !availableMaterials[material] || + amount * quantity > (availableMaterials[material] ?? 0) + ); + + return ( + + }> +
act('make', { id: design.id, multiplier: quantity })}> + ×{quantity} +
+
+ ); +}; + +type AutolatheRecipeProps = { + design: AutolatheDesign; + availableMaterials: MaterialMap; +}; + +const AutolatheRecipe = (props: AutolatheRecipeProps, context) => { + const { act, data } = useBackend(context); + const { design, availableMaterials } = props; + + const canPrint = !Object.entries(design.cost).some( + ([material, amount]) => + !availableMaterials[material] || + amount > (availableMaterials[material] ?? 0) + ); + + return ( +
+ +
+ +
+
+ + }> +
act('make', { id: design.id, multiplier: 1 })}> +
+ +
+
{design.name}
+
+
+ + {!!design.mult5 && ( + + )} + + {!!design.mult10 && ( + + )} + + {!!design.mult25 && ( + + )} + + {!!design.mult50 && ( + + )} + +
+ + act('make', { + id: design.id, + multiplier: value, + }) + } + /> +
+
+ ); +}; diff --git a/tgui/packages/tgui/interfaces/ComponentPrinter.tsx b/tgui/packages/tgui/interfaces/ComponentPrinter.tsx index ed483dc6645..02960e655f8 100644 --- a/tgui/packages/tgui/interfaces/ComponentPrinter.tsx +++ b/tgui/packages/tgui/interfaces/ComponentPrinter.tsx @@ -1,183 +1,106 @@ -import { createSearch } from 'common/string'; -import { useBackend, useLocalState } from '../backend'; -import { Material, MaterialAmount, MaterialFormatting, Materials, MATERIAL_KEYS } from './common/Materials'; +import { useBackend } from '../backend'; +import { Material } from './Fabrication/Types'; import { Window } from '../layouts'; -import { Box, Button, Input, Section, Stack, Tabs } from '../components'; - -const CATEGORY_ALL = 'All'; - -const searchFor = (searchText) => - createSearch(searchText, ([_, thing]) => thing.name + thing.description); - -const getCategory = (category: string[]) => { - return category[0] === 'Circuitry' ? category[1] : category[0]; -}; - -type Design = { - name: string; - description: string; - materials: Record; - categories: string[]; -}; +import { Box, Tooltip, Icon, Stack, Section } from '../components'; +import { Design } from './Fabrication/Types'; +import { MaterialCostSequence } from './Fabrication/MaterialCostSequence'; +import { MaterialMap } from './Fabrication/Types'; +import { classes } from 'common/react'; +import { DesignBrowser } from './Fabrication/DesignBrowser'; +import { MaterialAccessBar } from './Fabrication/MaterialAccessBar'; type ComponentPrinterData = { designs: Record; materials: Material[]; }; -const canProduce = ( - designMaterials: Design['materials'], - storedMaterials: Material[] -) => { - for (const material of storedMaterials) { - const amountNeeded = designMaterials[material.name]; - - if (amountNeeded && amountNeeded > material.amount) { - return false; - } - } - - return true; -}; - -const MaterialCost = (props: { materials: Design['materials'] }) => { - return ( - - {Object.entries(props.materials).map(([material, amount]) => { - return ( - - - - ); - })} - - ); -}; - export const ComponentPrinter = (props, context) => { const { act, data } = useBackend(context); + const { designs, materials } = data; - const [currentCategory, setCurrentCategory] = useLocalState( - context, - 'category', - CATEGORY_ALL - ); - const [searchText, setSearchText] = useLocalState(context, 'searchText', ''); + // Reduce the material count array to a map of actually available materials. + const availableMaterials: MaterialMap = {}; + + for (const material of data.materials) { + availableMaterials[material.name] = material.amount; + } return ( - - - - -
- { - act('remove_mat', { - ref: ref, - amount: amount, - }); - }} - /> -
+ + + + + } + /> - - -
- - {Object.values(data.designs) - .reduce( - (categories, design) => { - const category = getCategory(design.categories); - if (categories.indexOf(category) === -1) { - return [category, ...categories]; - } else { - return categories; - } - }, - [CATEGORY_ALL] - ) - .sort() - .map((category) => { - return ( - setCurrentCategory(category)} - selected={category === currentCategory} - fluid> - {category} - - ); - })} - -
-
- - -
- - - setSearchText(value)} - /> - - - {Object.entries(data.designs) - .filter( - ([_, design]) => - currentCategory === CATEGORY_ALL || - design.categories.indexOf(currentCategory) !== -1 - ) - .filter(searchFor(searchText)) - .map(([designId, design]) => { - return ( - -
{ - act('print', { - designId, - }); - }} - disabled={ - !canProduce( - design.materials, - data.materials - ) - } - px={1.5}> - Print - - }> - - {design.description} - - -
-
- ); - })} -
-
-
-
+
+ + act('remove_mat', { ref: material.ref, amount }) + } + /> +
); }; + +const Recipe = (props: { design: Design; available: MaterialMap }, context) => { + const { act, data } = useBackend(context); + const { design, available } = props; + + const canPrint = !Object.entries(design.cost).some( + ([material, amount]) => + !available[material] || amount > (available[material] ?? 0) + ); + + return ( +
+ +
+ +
+
+ + }> +
act('print', { designId: design.id, amount: 1 })}> +
+ +
+
{design.name}
+
+
+
+ ); +}; diff --git a/tgui/packages/tgui/interfaces/ExosuitFabricator.js b/tgui/packages/tgui/interfaces/ExosuitFabricator.js deleted file mode 100644 index 701832f13b6..00000000000 --- a/tgui/packages/tgui/interfaces/ExosuitFabricator.js +++ /dev/null @@ -1,529 +0,0 @@ -import { uniqBy } from 'common/collections'; -import { createSearch } from 'common/string'; -import { Fragment } from 'inferno'; -import { useBackend, useSharedState } from '../backend'; -import { Box, Button, Icon, Input, ProgressBar, Section, Stack } from '../components'; -import { Materials, MaterialAmount, MaterialFormatting } from './common/Materials'; -import { formatMoney } from '../format'; -import { Window } from '../layouts'; - -const COLOR_NONE = 0; -const COLOR_AVERAGE = 1; -const COLOR_BAD = 2; - -const COLOR_KEYS = { - [COLOR_NONE]: false, - [COLOR_AVERAGE]: 'average', - [COLOR_BAD]: 'bad', -}; - -const materialArrayToObj = (materials) => { - let materialObj = {}; - - materials.forEach((m) => { - materialObj[m.name] = m.amount; - }); - - return materialObj; -}; - -const partBuildColor = (cost, tally, material) => { - if (cost > material) { - return { color: COLOR_BAD, deficit: cost - material }; - } - - if (tally > material) { - return { color: COLOR_AVERAGE, deficit: cost }; - } - - if (cost + tally > material) { - return { color: COLOR_AVERAGE, deficit: cost + tally - material }; - } - - return { color: COLOR_NONE, deficit: 0 }; -}; - -const partCondFormat = (materials, tally, part) => { - let format = { 'textColor': COLOR_NONE }; - - Object.keys(part.cost).forEach((mat) => { - format[mat] = partBuildColor(part.cost[mat], tally[mat], materials[mat]); - - if (format[mat].color > format['textColor']) { - format['textColor'] = format[mat].color; - } - }); - - return format; -}; - -const queueCondFormat = (materials, queue) => { - let materialTally = {}; - let matFormat = {}; - let missingMatTally = {}; - let textColors = {}; - - queue.forEach((part, i) => { - textColors[i] = COLOR_NONE; - Object.keys(part.cost).forEach((mat) => { - materialTally[mat] = materialTally[mat] || 0; - missingMatTally[mat] = missingMatTally[mat] || 0; - - matFormat[mat] = partBuildColor( - part.cost[mat], - materialTally[mat], - materials[mat] - ); - - if (matFormat[mat].color !== COLOR_NONE) { - if (textColors[i] < matFormat[mat].color) { - textColors[i] = matFormat[mat].color; - } - } else { - materialTally[mat] += part.cost[mat]; - } - - missingMatTally[mat] += matFormat[mat].deficit; - }); - }); - return { materialTally, missingMatTally, textColors, matFormat }; -}; - -const searchFilter = (search, allparts) => { - if (!search.length) { - return; - } - const resultFilter = createSearch( - search, - (part) => (part.name || '') + (part.desc || '') + (part.searchMeta || '') - ); - let searchResults = []; - Object.keys(allparts).forEach((category) => { - allparts[category].filter(resultFilter).forEach((e) => { - searchResults.push(e); - }); - }); - searchResults = uniqBy((part) => part.name)(searchResults); - return searchResults; -}; - -export const ExosuitFabricator = (props, context) => { - const { act, data } = useBackend(context); - const queue = data.queue || []; - const materialAsObj = materialArrayToObj(data.materials || []); - const { materialTally, missingMatTally, textColors } = queueCondFormat( - materialAsObj, - queue - ); - const [displayMatCost, setDisplayMatCost] = useSharedState( - context, - 'display_mats', - false - ); - return ( - - - - - - -
- { - act('remove_mat', { - ref: ref, - amount: amount, - }); - }} - /> -
-
- -
- setDisplayMatCost(!displayMatCost)} - checked={displayMatCost}> - Display Material Costs - -
-
-
-
- - - -
- -
-
- - - - - - -
-
-
-
-
- ); -}; - -const PartSets = (props, context) => { - const { data } = useBackend(context); - const partSets = data.partSets || []; - const buildableParts = data.buildableParts || {}; - const [selectedPartTab, setSelectedPartTab] = useSharedState( - context, - 'part_tab', - partSets.length ? buildableParts[0] : '' - ); - return partSets - .filter((set) => buildableParts[set]) - .map((set) => ( - - )); -}; - -const PartLists = (props, context) => { - const { data } = useBackend(context); - - const getFirstValidPartSet = (sets) => { - for (let set of sets) { - if (buildableParts[set]) { - return set; - } - } - return null; - }; - - const partSets = data.partSets || []; - const buildableParts = data.buildableParts || []; - - const { queueMaterials, materials } = props; - - const [selectedPartTab, setSelectedPartTab] = useSharedState( - context, - 'part_tab', - getFirstValidPartSet(partSets) - ); - - const [searchText, setSearchText] = useSharedState( - context, - 'search_text', - '' - ); - - if (!selectedPartTab || !buildableParts[selectedPartTab]) { - const validSet = getFirstValidPartSet(partSets); - if (validSet) { - setSelectedPartTab(validSet); - } else { - return; - } - } - - let partsList; - // Build list of sub-categories if not using a search filter. - if (!searchText) { - partsList = { 'Parts': [] }; - buildableParts[selectedPartTab].forEach((part) => { - part['format'] = partCondFormat(materials, queueMaterials, part); - if (!part.subCategory) { - partsList['Parts'].push(part); - return; - } - if (!(part.subCategory in partsList)) { - partsList[part.subCategory] = []; - } - partsList[part.subCategory].push(part); - }); - } else { - partsList = []; - searchFilter(searchText, buildableParts).forEach((part) => { - part['format'] = partCondFormat(materials, queueMaterials, part); - partsList.push(part); - }); - } - - return ( - - -
- - - - - - setSearchText(v)} - /> - - -
-
- -
- {(!!searchText && ( - - )) || - Object.keys(partsList).map((category) => ( - - ))} -
-
-
- ); -}; - -const PartCategory = (props, context) => { - const { act, data } = useBackend(context); - const { buildingPart } = data; - const { parts, name, forceShow, placeholder } = props; - const [displayMatCost] = useSharedState(context, 'display_mats', false); - if (!forceShow && parts.length === 0) { - return null; - } - return ( -
- act('add_queue_set', { - part_list: parts.map((part) => part.id), - }) - } - /> - }> - {!parts.length && placeholder} - {parts.map((part) => ( - - - -
- ); -}; - -const Queue = (props, context) => { - const { act, data } = useBackend(context); - const { isProcessingQueue } = data; - const queue = data.queue || []; - const { queueMaterials, missingMaterials, textColors } = props; - return ( - - -
- act('clear_queue')} - /> - {(!!isProcessingQueue && ( -
-
- {!!queue.length && ( - -
- -
-
- )} -
- ); -}; - -const QueueMaterials = (props, context) => { - const { queueMaterials, missingMaterials } = props; - return ( - - {Object.keys(queueMaterials).map((material) => ( - - - {!!missingMaterials[material] && ( - {formatMoney(missingMaterials[material])} - )} - - ))} - - ); -}; - -const QueueList = (props, context) => { - const { act, data } = useBackend(context); - - const { textColors } = props; - - const queue = data.queue || []; - - if (!queue.length) { - return <>No parts in queue.; - } - - return queue.map((part, index) => ( - - - + )} + /> + + +
+ { + act('remove_mat', { ref: material.ref, amount }); + }} + /> +
+
+
+
+ + + +
+
+
+ ); +}; + +const Recipe = (props: { design: Design; available: MaterialMap }, context) => { + const { act, data } = useBackend(context); + const { design, available } = props; + + const canPrint = !Object.entries(design.cost).some( + ([material, amount]) => + !available[material] || amount > (available[material] ?? 0) + ); + + return ( +
+ +
+ +
+
+ + }> +
act('build', { designs: [design.id], now: true })}> +
+ +
+
{design.name}
+
+
+ + +
act('build', { designs: [design.id] })}> + +
+
+ + +
act('build', { designs: [design.id], now: true })}> + +
+
+
+ ); +}; + +const Queue = (props: { availableMaterials: MaterialMap }, context) => { + const { act, data } = useBackend(context); + const { availableMaterials } = props; + const { designs, processing } = data; + + const queue = data.queue || []; + + const materialCosts: MaterialMap = {}; + + for (const entry of queue) { + const design = designs[entry.designId]; + + if (!design) { + continue; + } + + for (const [materialName, materialCost] of Object.entries(design.cost)) { + materialCosts[materialName] = + (materialCosts[materialName] || 0) + materialCost; + } + } + + return ( +
+ + +
+ act('clear_queue')} + /> + {(!!processing && ( +
+
+ +
+ +
+
+
+
+ ); +}; + +const QueueList = (props: { availableMaterials: MaterialMap }, context) => { + const { act, data } = useBackend(context); + const { availableMaterials } = props; + + const queue = data.queue || []; + const designs = data.designs; + + if (!queue.length) { + return null; + } + + const accumulatedCosts: MaterialMap = {}; + + return ( + <> + {queue + .map((job, index) => ({ job, index, design: designs[job.designId] })) + .map((entry) => { + // TODO: Side effects in map are gross but at the same time I gotta + // accumulate these *costs* + let canPrint = true; + + for (const [material, amount] of entry.design + ? Object.entries(entry.design.cost) + : []) { + accumulatedCosts[material] = + (accumulatedCosts[material] || 0) + amount; + + if (accumulatedCosts[material] > availableMaterials[material]) { + canPrint = false; + } + } + + return { canPrint, ...entry }; + }) + .map((entry) => ( +
+ {!!entry.job.processing && ( +
+ )} + + }> +
+
+ +
+
+ {entry.design && entry.design.name} +
+
+
+ + {!entry.job.processing && ( +
{ + act('del_queue_part', { + index: entry.index + (queue[0]!.processing ? 0 : 1), + }); + }}> + + + +
+ )} +
+ ))} + + ); +}; diff --git a/tgui/packages/tgui/interfaces/Fabrication/CategoryTabs.tsx b/tgui/packages/tgui/interfaces/Fabrication/CategoryTabs.tsx deleted file mode 100644 index 7af7041d1b6..00000000000 --- a/tgui/packages/tgui/interfaces/Fabrication/CategoryTabs.tsx +++ /dev/null @@ -1,80 +0,0 @@ -import { sortBy } from 'common/collections'; -import { Stack, Section, Tabs } from '../../components'; - -/** - * A single category in a category tab list. - */ -export type Category = { - /** - * The human-readable name of this category. - */ - displayName?: string; - - /** - * The key used to identify this category. - */ - key: string; -}; - -/** - * The properties of a category tab list. - */ -export type CategoryTabsProps = { - /** - * The current key of the selected category. - */ - currentCategory: string; - - /** - * The categories in this list. - */ - categories: Category[]; - - /** - * Invoked with a category's key when a new category is selected. - */ - onCategorySelected?: (newCategory: string) => void; -}; - -/** - * A tab list used for category selection. - */ -export const CategoryTabs = (props: CategoryTabsProps, context) => { - const { - currentCategory, - categories, - onCategorySelected: setCategory, - } = props; - - return ( -
- - -
- - -
- - {sortBy((c: Category) => c.displayName || c.key)(categories).map( - (descriptor) => ( - { - currentCategory !== descriptor.key && - setCategory && - setCategory(descriptor.key); - }} - fluid - color="transparent"> - {descriptor.displayName || descriptor.key} - - ) - )} - -
-
- -
- ); -}; diff --git a/tgui/packages/tgui/interfaces/Fabrication/DesignBrowser.tsx b/tgui/packages/tgui/interfaces/Fabrication/DesignBrowser.tsx new file mode 100644 index 00000000000..579c7c1a391 --- /dev/null +++ b/tgui/packages/tgui/interfaces/Fabrication/DesignBrowser.tsx @@ -0,0 +1,500 @@ +import { sortBy } from 'common/collections'; +import { classes } from 'common/react'; +import { InfernoNode } from 'inferno'; +import { useSharedState } from '../../backend'; +import { Stack, Section, Icon, Dimmer } from '../../components'; +import { Design, MaterialMap } from './Types'; +import { SearchBar } from './SearchBar'; + +/** + * A function that does nothing. + */ +const NOOP = () => {}; + +export type DesignBrowserProps = { + /** + * All of the designs available to the browser. + */ + designs: T[]; + + /** + * A map of materials available for printing designs. + */ + availableMaterials?: MaterialMap; + + /** + * Invoked when the user attempts to print a design. + */ + onPrintDesign?: (design: T, amount: number) => void; + + /** + * If present, dims out the recipe list with a "building items" animation. + */ + busy?: boolean; + + /** + * Invoked for every recipe visible in the design browser. Returns a single + * row to be rendered to the output. + */ + buildRecipeElement: ( + /** + * The design being rendered. + */ + design: T, + + /** + * The materials available to print the design. + */ + availableMaterials: MaterialMap, + + /** + * A callback to print the design. + */ + onPrintDesign: (design: T, amount: number) => void + ) => InfernoNode; + + /** + * If provided, renders a node into each category in the output. + */ + categoryButtons?: (category: Category) => InfernoNode; +}; + +/** + * A meta-category that, when selected, renders all designs to the output. + */ +const ALL_CATEGORY = 'All Designs'; + +/** + * A meta-category that collects all designs without a single category. + */ +const UNCATEGORIZED = '/Uncategorized'; + +/** + * A single category in the category tree. + */ +type Category = { + /** + * The human-readable title of this category. + */ + title: string; + + /** + * The `id` of the `Section` rendering this category in the browser. + */ + anchorKey: string; + + /** + * The set of all designs appearing in this category its descendant + * categories, grouped by design ID. + */ + descendants: Record; + + /** + * All designs within this specific category. + */ + children: T[]; + + /** + * The subcategories within this one, keyed by their titles. + */ + subcategories: Record>; +}; + +/** + * Categories present in this object are not rendered to the final fabricator + * UI. + */ +const BLACKLISTED_CATEGORIES: Record = { + 'initial': true, + 'core': true, + 'hacked': true, +}; + +/** + * A universal design browser. Takes an arbitrary array of designs, and + * generates tabs, a search bar, and a list of designs. Each row of the + * resulting table is generated by the provided `buildRecipeElement` function. + */ +export const DesignBrowser = ( + props: DesignBrowserProps, + context +) => { + const { + designs, + availableMaterials, + onPrintDesign, + buildRecipeElement, + busy, + categoryButtons, + } = props; + + const [selectedCategory, setSelectedCategory] = useSharedState( + context, + 'selected_category', + ALL_CATEGORY + ); + + const [searchText, setSearchText] = useSharedState( + context, + 'search_text', + '' + ); + + const onCategorySelected = (newCategory: string) => { + if (newCategory === selectedCategory) { + return; + } + + setSelectedCategory(newCategory); + setSearchText(''); + }; + + // Build a root category from the designs. + const root: Category = { + title: ALL_CATEGORY, + anchorKey: ALL_CATEGORY.replace(/ /g, ''), + descendants: {}, + children: [], + subcategories: {}, + }; + + // Sort every design into a single category in the tree. + for (const design of designs) { + // For designs without any categories, assign them to the "uncategorized" + // category. + const categories = + design.categories.length === 0 ? [UNCATEGORIZED] : design.categories; + + for (const category of categories) { + // If the category is a blacklisted meta-category, skip it entirely. + if (BLACKLISTED_CATEGORIES[category]) { + continue; + } + + // Categories are slash-delimited. + const nodes = category.split('/'); + + // We always lead with a slash, so the first group is always empty. + nodes.shift(); + + // Find where this goes, and put it there. + let parent = root; + + while (nodes.length > 0) { + parent.descendants[design.id] = design; + + const node = nodes.shift()!; + + if (!parent.subcategories[node]) { + parent.subcategories[node] = { + title: node, + anchorKey: node.replace(/ /g, ''), + descendants: {}, + children: [], + subcategories: {}, + }; + } + + parent = parent.subcategories[node]!; + } + + // This is our leaf. + parent.descendants[design.id] = design; + parent.children.push(design); + } + } + + return ( + + {/* Left Column */} + +
+ + +
+ + +
+
+
onCategorySelected(ALL_CATEGORY)}> +
+
+ All Designs +
+
+ ({Object.entries(root.descendants).length}) +
+
+
+ + {sortBy((category: Category) => category.title)( + Object.values(root.subcategories) + ).map((category) => ( + + ))} +
+
+
+ +
+
+ + {/* Right Column */} + +
0 + ? `Results for "${searchText}"` + : selectedCategory === ALL_CATEGORY + ? 'All Designs' + : selectedCategory + } + fill> + + +
+ +
+
+ +
+ {searchText.length > 0 ? ( + sortBy((design: T) => design.name)( + Object.values(root.descendants) + ) + .filter((design) => + design.name + .toLowerCase() + .includes(searchText.toLowerCase()) + ) + .map((design) => + buildRecipeElement( + design, + availableMaterials || {}, + onPrintDesign || NOOP + ) + ) + ) : selectedCategory === ALL_CATEGORY ? ( + <> + {sortBy((design: T) => design.name)( + Object.values(root.descendants) + ).map((design) => + buildRecipeElement( + design, + availableMaterials || {}, + onPrintDesign || NOOP + ) + )} + + ) : ( + root.subcategories[selectedCategory] && ( + + ) + )} +
+
+ {!!busy && ( + + + {' Building items...'} + + )} +
+
+
+
+ ); +}; + +type DesignBrowserTabProps = { + category: Category; + depth?: number; + maxDepth?: number; + selectedCategory: string; + setSelectedCategory: (newCategory: string) => void; +}; + +const DesignBrowserTab = ( + props: DesignBrowserTabProps, + context +) => { + let { category, depth, maxDepth, selectedCategory, setSelectedCategory } = + props; + + depth ??= 0; + maxDepth ??= 3; + + return ( +
setSelectedCategory(category.title) + : /* For deeper categories, scroll the subcategory header into view. */ + () => { + document.getElementById(category.anchorKey)?.scrollIntoView(true); + } + }> +
+
{category.title}
+ {depth === 0 && ( + /** Show recipe counts on top-level categories. */ +
+ ({Object.entries(category.descendants).length}) +
+ )} +
+ {depth < maxDepth && + Object.entries(category.subcategories).length > 0 && + selectedCategory === category.title && ( +
+ {sortBy((category: Category) => category.title)( + Object.values(category.subcategories) + ).map((subcategory) => ( + + ))} +
+ )} +
+ ); +}; + +type CategoryViewProps = { + /** + * The category being rendered. + */ + category: Category; + + /** + * A map of materials available for printing designs. + */ + availableMaterials?: MaterialMap; + + /** + * The depth of this category in the view. + */ + depth?: number; + + /** + * Invoked when the user attempts to print a design. + */ + onPrintDesign?: (design: T, amount: number) => void; + + /** + * Invoked for every recipe visible in the design browser. Returns a single + * row to be rendered to the output. + */ + buildRecipeElement: ( + /** + * The design being rendered. + */ + design: T, + + /** + * The materials available to print the design. + */ + availableMaterials: MaterialMap, + + /** + * A callback to print the design. + */ + onPrintDesign: (design: T, amount: number) => void + ) => InfernoNode; + + /** + * If provided, renders a node into each category in the output. + */ + categoryButtons?: (category: Category) => InfernoNode; +}; + +const CategoryView = ( + props: CategoryViewProps, + context +) => { + let { + depth, + category, + availableMaterials, + onPrintDesign, + buildRecipeElement, + categoryButtons, + } = props; + + depth ??= 0; + + const body = ( + <> + {sortBy((design: T) => design.name)(category.children).map((design) => + buildRecipeElement( + design, + availableMaterials || {}, + onPrintDesign || NOOP + ) + )} + + {Object.keys(category.subcategories) + .sort() + .map((categoryName: string) => category.subcategories[categoryName]) + .map((category) => ( + + ))} + + ); + + if (depth === 0 || category.children.length === 0) { + return body; + } + + return ( +
+ {body} +
+ ); +}; diff --git a/tgui/packages/tgui/interfaces/Fabrication/DesignCategoryTabs.tsx b/tgui/packages/tgui/interfaces/Fabrication/DesignCategoryTabs.tsx deleted file mode 100644 index 8174532314d..00000000000 --- a/tgui/packages/tgui/interfaces/Fabrication/DesignCategoryTabs.tsx +++ /dev/null @@ -1,77 +0,0 @@ -import { CategoryTabs } from './CategoryTabs'; -import { Design } from './Types'; - -/** - * A dummy category that, when selected, renders ALL recipes to the UI. - */ -export const ALL_CATEGORY = '__ALL'; - -/** - * Categories present in this object are not rendered to the final fabricator - * UI. - */ -const BLACKLISTED_CATEGORIES: Record = { - 'initial': true, - 'core': true, - 'hacked': true, -}; - -export type DesignCategoryTabsProps = { - /** - * The designs to generate categories from. - */ - designs: Design[]; - - /** - * The currently selected category. - */ - currentCategory: string; - - /** - * Invoked when the user selects a new category. - */ - onCategorySelected?: (newCategory: string) => void; -}; - -/** - * A list of tabs generated on the fly from a number of techfab designs. - */ -export const DesignCategoryTabs = (props: DesignCategoryTabsProps, context) => { - const { designs, currentCategory, onCategorySelected } = props; - - // Find the number of items in each unique category, and the sum total of all - // printable items. - const categoryCounts: Record = {}; - let totalRecipes = 0; - - for (const design of designs) { - totalRecipes += 1; - - for (const category of design.categories ?? []) { - categoryCounts[category] = (categoryCounts[category] ?? 0) + 1; - } - } - - // Strip blacklisted categories from the output. - for (const blacklistedCategory in BLACKLISTED_CATEGORIES) { - delete categoryCounts[blacklistedCategory]; - } - - const categories = Object.entries(categoryCounts).map(([name, count]) => ({ - key: name, - displayName: `${name} (${count})`, - })); - - categories.unshift({ - key: ALL_CATEGORY, - displayName: `All Designs (${totalRecipes})`, - }); - - return ( - - ); -}; diff --git a/tgui/packages/tgui/interfaces/Fabrication/DesignCostList.tsx b/tgui/packages/tgui/interfaces/Fabrication/DesignCostList.tsx deleted file mode 100644 index edd51fe7d38..00000000000 --- a/tgui/packages/tgui/interfaces/Fabrication/DesignCostList.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import { Design, MaterialMap } from './Types'; -import { Stack } from '../../components'; -import { MaterialAmount, MATERIAL_KEYS, MaterialFormatting } from '../common/Materials'; - -export type DesignCostListProps = { - /** - * The design being printed. - */ - design: Design; - - /** - * The amount of times to print. - */ - amount: number; - - /** - * The materials available to complete the job. - */ - available: MaterialMap; -}; - -/** - * A horizontal sequence of material costs, indicating the effect of queueing - * a print job. Orange labels indicate that the job can only be completed once, - * and red labels indicate the job can't be completed at all. - */ -export const DesignCostList = (props: DesignCostListProps, context) => { - const { design, amount, available } = props; - - return ( - - {Object.entries(design.cost).map(([material, cost]) => ( - - available[material] - ? 'bad' - : cost * amount * 2 > available[material] - ? 'average' - : 'normal' - } - /> - - ))} - - ); -}; diff --git a/tgui/packages/tgui/interfaces/Fabrication/MineralAccessBar.tsx b/tgui/packages/tgui/interfaces/Fabrication/MaterialAccessBar.tsx similarity index 75% rename from tgui/packages/tgui/interfaces/Fabrication/MineralAccessBar.tsx rename to tgui/packages/tgui/interfaces/Fabrication/MaterialAccessBar.tsx index c21acc1b6f8..578feadb8e2 100644 --- a/tgui/packages/tgui/interfaces/Fabrication/MineralAccessBar.tsx +++ b/tgui/packages/tgui/interfaces/Fabrication/MaterialAccessBar.tsx @@ -1,27 +1,28 @@ import { sortBy } from 'common/collections'; +import { classes } from 'common/react'; import { useLocalState } from '../../backend'; import { Flex, Button, Stack, AnimatedNumber } from '../../components'; import { formatSiUnit } from '../../format'; -import { Material, MaterialIcon } from '../common/Materials'; -import { MaterialName } from './Types'; +import { MaterialIcon } from './MaterialIcon'; +import { Material } from './Types'; // by popular demand of discord people (who are always right and never wrong) // this is completely made up -const MINERAL_RARITY: Record = { - 'iron': 1, +const MATERIAL_RARITY: Record = { 'glass': 0, + 'iron': 1, + 'plastic': 2, + 'titanium': 3, + 'plasma': 4, 'silver': 5, 'gold': 6, - 'diamond': 8, - 'plasma': 4, 'uranium': 7, - 'bananium': 10, - 'titanium': 3, + 'diamond': 8, 'bluespace crystal': 9, - 'plastic': 2, + 'bananium': 10, }; -export type MineralAccessBarProps = { +export type MaterialAccessBarProps = { /** * All materials currently available to the user. */ @@ -43,15 +44,15 @@ const LABEL_FORMAT = (value: number) => formatSiUnit(value, 0); * the ore silo. Has pop-out docks for each material type for ejecting up to * fifty sheets. */ -export const MineralAccessBar = (props: MineralAccessBarProps, context) => { +export const MaterialAccessBar = (props: MaterialAccessBarProps, context) => { const { availableMaterials, onEjectRequested } = props; return ( - {sortBy((m: Material) => MINERAL_RARITY[m.name])(availableMaterials).map( + {sortBy((m: Material) => MATERIAL_RARITY[m.name])(availableMaterials).map( (material) => ( - - + onEjectRequested && onEjectRequested(material, quantity) @@ -64,12 +65,12 @@ export const MineralAccessBar = (props: MineralAccessBarProps, context) => { ); }; -type MineralCounterProps = { +type MaterialCounterProps = { material: Material; onEjectRequested: (quantity: number) => void; }; -const MineralCounter = (props: MineralCounterProps, context) => { +const MaterialCounter = (props: MaterialCounterProps, context) => { const { material, onEjectRequested } = props; const [hovering, setHovering] = useLocalState( @@ -78,18 +79,28 @@ const MineralCounter = (props: MineralCounterProps, context) => { false ); + const canEject = material.amount > 2_000; + return (
setHovering(true)} onMouseLeave={() => setHovering(false)} - className={`MaterialDock ${hovering ? 'MaterialDock--active' : ''}`}> + className={classes([ + 'MaterialDock', + hovering && 'MaterialDock--active', + !canEject && 'MaterialDock--disabled', + ])}> onEjectRequested(1)}> + onClick={() => onEjectRequested(1)} + className="MaterialDock__Label"> - + @@ -144,9 +155,10 @@ const EjectButton = (props: EjectButtonProps, context) => { diff --git a/tgui/packages/tgui/interfaces/Fabrication/MaterialCostSequence.tsx b/tgui/packages/tgui/interfaces/Fabrication/MaterialCostSequence.tsx new file mode 100644 index 00000000000..80b9859fc4f --- /dev/null +++ b/tgui/packages/tgui/interfaces/Fabrication/MaterialCostSequence.tsx @@ -0,0 +1,98 @@ +import { Flex } from '../../components'; +import { Design, MaterialMap } from './Types'; +import { MaterialIcon } from './MaterialIcon'; +import { formatSiUnit } from '../../format'; + +export type MaterialCostSequenceProps = { + /** + * A map of available materials. + */ + available?: MaterialMap; + + /** + * If provided, the materials to be consumed. By default, generated from + * `design`; otherwise, an empty list. + */ + costMap?: MaterialMap; + + /** + * A design to generate the cost map from. + */ + design?: Design; + + /** + * The amount of times the provided design will be printed. By default, one. + */ + amount?: number; + + /** + * The `align-items` flex property provided to the generated list. + */ + align?: string; + + /** + * The `justify-content` flex property provided to the generated list. + */ + justify?: string; +}; + +/** + * A horizontal list of material costs, with labels. + * + * For a given material set that can only be printed once, the label for + * offending materials is orange. + * + * For a given material set that can't be printed at all, the label for + * offending materials is red. + * + * Otherwise, the labels are white. + */ +export const MaterialCostSequence = ( + props: MaterialCostSequenceProps, + context +) => { + const { design, amount, available, align, justify } = props; + let { costMap } = props; + + if (!costMap && !design) { + return null; + } + + costMap ??= {}; + + if (design) { + for (const [name, value] of Object.entries(design.cost)) { + costMap[name] = (costMap[name] || 0) + value; + } + } + + return ( + + {Object.entries(costMap).map(([material, quantity]) => ( + + + + + + + {formatSiUnit((amount || 1) * quantity, 0)} + + + + ))} + + ); +}; diff --git a/tgui/packages/tgui/interfaces/Fabrication/MaterialIcon.tsx b/tgui/packages/tgui/interfaces/Fabrication/MaterialIcon.tsx new file mode 100644 index 00000000000..55d9321424f --- /dev/null +++ b/tgui/packages/tgui/interfaces/Fabrication/MaterialIcon.tsx @@ -0,0 +1,95 @@ +import { classes } from 'common/react'; +import { Icon } from '../../components'; + +const MATERIAL_ICONS: Record = { + 'iron': [ + [0, 'sheet-metal'], + [17, 'sheet-metal_2'], + [34, 'sheet-metal_3'], + ], + 'glass': [ + [0, 'sheet-glass'], + [17, 'sheet-glass_2'], + [34, 'sheet-glass_3'], + ], + 'silver': [ + [0, 'sheet-silver'], + [17, 'sheet-silver_2'], + [34, 'sheet-silver_3'], + ], + 'gold': [ + [0, 'sheet-gold'], + [17, 'sheet-gold_2'], + [34, 'sheet-gold_3'], + ], + 'diamond': [[0, 'sheet-diamond']], + 'plasma': [ + [0, 'sheet-plasma'], + [17, 'sheet-plasma_2'], + [34, 'sheet-plasma_3'], + ], + 'uranium': [[0, 'sheet-uranium']], + 'bananium': [[0, 'sheet-bananium']], + 'titanium': [ + [0, 'sheet-titanium'], + [17, 'sheet-titanium_2'], + [34, 'sheet-titanium_3'], + ], + 'bluespace crystal': [[0, 'bluespace_crystal']], + 'plastic': [ + [0, 'sheet-plastic'], + [17, 'sheet-plastic_2'], + [34, 'sheet-plastic_3'], + ], +}; + +export type MaterialIconProps = { + /** + * The name of the material. + */ + materialName: string; + + /** + * The amount of material. One sheet is 2,000 units. By default, the icon + * attempts to render a full stack (200,000 units). + */ + amount?: number; +}; + +/** + * A 32x32 material icon. Animates between different stack sizes of the given + * material. + */ +export const MaterialIcon = (props: MaterialIconProps) => { + const { materialName, amount } = props; + const icons = MATERIAL_ICONS[materialName]; + + if (!icons) { + return ; + } + + let activeIdx = 0; + + while ( + icons[activeIdx + 1] && + icons[activeIdx + 1][0] <= (amount ?? 200_000) / 2_000 + ) { + activeIdx += 1; + } + + return ( +
+ {icons.map(([_, iconState], idx) => ( +
+ ))} +
+ ); +}; diff --git a/tgui/packages/tgui/interfaces/Fabrication/SearchBar.tsx b/tgui/packages/tgui/interfaces/Fabrication/SearchBar.tsx index c0a2b1558e1..9a2c8889e27 100644 --- a/tgui/packages/tgui/interfaces/Fabrication/SearchBar.tsx +++ b/tgui/packages/tgui/interfaces/Fabrication/SearchBar.tsx @@ -1,3 +1,4 @@ +import { Component } from 'inferno'; import { Stack, Input, Icon } from '../../components'; /** @@ -20,25 +21,34 @@ export type SearchBarProps = { onSearchTextChanged: (newSearchText: string) => void; }; -/** - * A simple, stylized search bar. - */ -export const SearchBar = (props: SearchBarProps, context) => { - const { searchText, onSearchTextChanged, hint } = props; +export class SearchBar extends Component { + timeout?: NodeJS.Timeout; - return ( - - - - - - onSearchTextChanged(v)} - value={searchText} - /> - - - ); -}; + onInput(value: string) { + if (this.timeout) { + clearTimeout(this.timeout); + } + + this.timeout = setTimeout(() => this.props.onSearchTextChanged(value), 200); + } + + render() { + const { searchText, hint } = this.props; + + return ( + + + + + + this.onInput(v)} + value={searchText} + /> + + + ); + } +} diff --git a/tgui/packages/tgui/interfaces/Fabrication/Types.ts b/tgui/packages/tgui/interfaces/Fabrication/Types.ts index 21fed80ccc5..c3c44658f59 100644 --- a/tgui/packages/tgui/interfaces/Fabrication/Types.ts +++ b/tgui/packages/tgui/interfaces/Fabrication/Types.ts @@ -1,14 +1,45 @@ -import { Material, MATERIAL_KEYS } from '../common/Materials'; - -/** - * A named material. - */ -export type MaterialName = keyof typeof MATERIAL_KEYS; +import { BooleanLike } from 'common/react'; /** * A map of keyed materials to a quantity. */ -export type MaterialMap = Partial>; +export type MaterialMap = Record; + +/** + * A single, uniquely identifiable material. + */ +export type Material = { + /** + * The human-readable name of the material. + */ + name: string; + + /** + * An internal reference to the material that the server can use to uniquely + * identify the material. + */ + ref: string; + + /** + * The amount of material; 2,000 units is one sheet. + */ + amount: number; + + /** + * The number of sheets. + */ + sheets: number; + + /** + * Whether the material can be removed. + */ + removable: BooleanLike; + + /** + * The color of the material. + */ + color: string; +}; /** * A single design that the fabricator can print. @@ -36,9 +67,22 @@ export type Design = { id: string; /** - * The categories the design should be present in. + * The categories the design should be present in. Subcategories are + * slash-delimited, and categories always start with a slash. */ - categories?: string[]; + categories: string[]; + + /** + * The icon used to represent this design, generated in + * /datum/asset/spritesheet/research_designs. **The image within may not be + * 32x32.** + */ + icon: string; + + /** + * The amount of time, in seconds, that this design takes to print. + */ + constructionTime: number; }; /** @@ -53,13 +97,13 @@ export type FabricatorData = { /** * The name of the fabricator, as displayed on the title bar. */ - fab_name: string; + fabName: string; /** * Whether mineral access is disabled from the ore silo (contact the * quartermaster). */ - on_hold: boolean; + onHold: BooleanLike; /** * The set of designs that this fabricator can print, indexed by their ID. @@ -69,12 +113,39 @@ export type FabricatorData = { /** * Whether the fabricator is currently printing an item. */ - busy: boolean; + busy: BooleanLike; /** - * If nonzero, the maximum quantity of material that the fabricator can hold. - * Typically present with local storage is enabled (e.g, disconnected from - * the ore silo). + * The maximum quantity of material that the fabricator can hold, or `-1` + * if the fabricator can hold infinitely many materials (such as the ore + * silo). */ materialMaximum: number; + + /** + * The fabricator's current queue. + */ + queue: { + /** + * The job ID for this queued job. This is always unique, and can be used + * as a `key`. + */ + jobId: number; + + /** + * The design ID being printed. Available in `super.designs`. + */ + designId: string; + + /** + * If `true`, this design is currently being fabricated, and `timeLeft` + * is actively decreasing. + */ + processing: BooleanLike; + + /** + * The time left in this design's fabrication, in deciseconds. + */ + timeLeft: number; + }[]; }; diff --git a/tgui/packages/tgui/interfaces/Fabricator.tsx b/tgui/packages/tgui/interfaces/Fabricator.tsx index 57fa9d57f08..acc7c84190e 100644 --- a/tgui/packages/tgui/interfaces/Fabricator.tsx +++ b/tgui/packages/tgui/interfaces/Fabricator.tsx @@ -1,37 +1,15 @@ -import { useBackend, useSharedState } from '../backend'; -import { Stack, Section, Button, Icon, Dimmer } from '../components'; +import { useBackend } from '../backend'; +import { Stack, Section, Icon, Dimmer, Box, Tooltip } from '../components'; import { Window } from '../layouts'; -import { Material, MaterialAmount, MaterialFormatting, MATERIAL_KEYS } from './common/Materials'; -import { sortBy } from 'common/collections'; -import { MineralAccessBar } from './Fabrication/MineralAccessBar'; -import { SearchBar } from './Fabrication/SearchBar'; -import { DesignCategoryTabs } from './Fabrication/DesignCategoryTabs'; +import { MaterialCostSequence } from './Fabrication/MaterialCostSequence'; +import { MaterialAccessBar } from './Fabrication/MaterialAccessBar'; import { FabricatorData, Design, MaterialMap } from './Fabrication/Types'; - -/** - * A dummy category that, when selected, renders ALL recipes to the UI. - */ -const ALL_CATEGORY = '__ALL'; +import { classes } from 'common/react'; +import { DesignBrowser } from './Fabrication/DesignBrowser'; export const Fabricator = (props, context) => { const { act, data } = useBackend(context); - const { fab_name, on_hold, designs, busy } = data; - - const [selectedCategory, setSelectedCategory] = useSharedState( - context, - 'selected_category', - ALL_CATEGORY - ); - const [searchText, setSearchText] = useSharedState( - context, - 'search_text', - '' - ); - - // Sort the designs by name. - const sortedDesigns = sortBy((design: Design) => design.name)( - Object.values(designs) - ); + const { fabName, onHold, designs, busy } = data; // Reduce the material count array to a map of actually available materials. const availableMaterials: MaterialMap = {}; @@ -41,89 +19,25 @@ export const Fabricator = (props, context) => { } return ( - + - - - { - setSelectedCategory(category); - setSearchText(''); - }} - designs={sortedDesigns} - /> - - -
- - -
- -
-
- -
- {sortedDesigns - .filter( - (design) => - selectedCategory === ALL_CATEGORY || - design.categories?.indexOf(selectedCategory) !== - -1 - ) - .filter((design) => - design.name - .toLowerCase() - .includes(searchText.toLowerCase()) - ) - .map((design) => ( - - ))} -
- {!!busy && ( - - - {' Building items...'} - - )} -
-
-
- {!!on_hold && ( - - Mineral access is on hold, please contact the quartermaster. - - )} -
-
+ } + />
- a.name)( - data.materials ?? [] - )} + act('remove_mat', { ref: material.ref, amount }) } @@ -131,42 +45,16 @@ export const Fabricator = (props, context) => {
+ {!!onHold && ( + + Mineral access is on hold, please contact the quartermaster. + + )}
); }; -type MaterialCostProps = { - design: Design; - amount: number; - available: MaterialMap; -}; - -const MaterialCost = (props: MaterialCostProps, context) => { - const { design, amount, available } = props; - - return ( - - {Object.entries(design.cost).map(([material, cost]) => ( - - available[material] - ? 'bad' - : cost * amount * 2 > available[material] - ? 'average' - : 'normal' - } - /> - - ))} - - ); -}; - type PrintButtonProps = { design: Design; quantity: number; @@ -183,17 +71,24 @@ const PrintButton = (props: PrintButtonProps, context) => { ); return ( - + + }> +
act('build', { ref: design.id, amount: quantity })}> + ×{quantity} +
+
); }; @@ -207,37 +102,43 @@ const Recipe = (props: { design: Design; available: MaterialMap }, context) => { ); return ( -
- - - - - - - - - - - + }> +
act('build', { ref: design.id, amount: 1 })}> +
+ +
+
{design.name}
+
+ + +
); }; diff --git a/tgui/packages/tgui/interfaces/common/Materials.tsx b/tgui/packages/tgui/interfaces/common/Materials.tsx deleted file mode 100644 index 96a2252b8e0..00000000000 --- a/tgui/packages/tgui/interfaces/common/Materials.tsx +++ /dev/null @@ -1,154 +0,0 @@ -import { BooleanLike } from 'common/react'; -import { Box, Button, NumberInput, Flex } from '../../components'; -import { classes } from 'common/react'; -import { formatMoney, formatSiUnit } from '../../format'; -import { useSharedState } from '../../backend'; -import { BoxProps } from '../../components/Box'; - -export const MATERIAL_KEYS = { - 'iron': 'sheet-metal_3', - 'glass': 'sheet-glass_3', - 'silver': 'sheet-silver_3', - 'gold': 'sheet-gold_3', - 'diamond': 'sheet-diamond', - 'plasma': 'sheet-plasma_3', - 'uranium': 'sheet-uranium', - 'bananium': 'sheet-bananium', - 'titanium': 'sheet-titanium_3', - 'bluespace crystal': 'polycrystal', - 'plastic': 'sheet-plastic_3', -} as const; - -export type Material = { - name: keyof typeof MATERIAL_KEYS; - ref: string; - amount: number; - sheets: number; - removable: BooleanLike; -}; - -type MaterialIconProps = BoxProps & { - material: keyof typeof MATERIAL_KEYS; -}; - -export const MaterialIcon = (props: MaterialIconProps) => { - const { material, ...rest } = props; - - return ( - - ); -}; - -const EjectMaterial = ( - props: { - material: Material; - onEject: (amount: number) => void; - }, - context -) => { - const { name, removable, sheets } = props.material; - const [removeMaterials, setRemoveMaterials] = useSharedState( - context, - 'remove_mats_' + name, - 1 - ); - if (removeMaterials > 1 && sheets < removeMaterials) { - setRemoveMaterials(sheets || 1); - } - return ( - <> - { - const newVal = parseInt(val, 10); - if (Number.isInteger(newVal)) { - setRemoveMaterials(newVal); - } - }} - /> -