diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm
index 4f33a2b71a3..ccf95a5b417 100644
--- a/code/game/machinery/autolathe.dm
+++ b/code/game/machinery/autolathe.dm
@@ -1,72 +1,3 @@
-//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
-
-var/global/list/autolathe_recipes = list( \
- /* screwdriver removed*/ \
- new /obj/item/weapon/reagent_containers/glass/bucket(), \
- new /obj/item/weapon/crowbar(), \
- new /obj/item/device/flashlight(), \
- new /obj/item/weapon/extinguisher(), \
- new /obj/item/device/multitool(), \
- new /obj/item/device/analyzer(), \
- new /obj/item/device/t_scanner(), \
- new /obj/item/weapon/weldingtool(), \
- new /obj/item/weapon/screwdriver(), \
- new /obj/item/weapon/wirecutters(), \
- new /obj/item/weapon/wrench(), \
- new /obj/item/clothing/head/welding(), \
- new /obj/item/weapon/stock_parts/console_screen(), \
- new /obj/item/weapon/airlock_electronics(), \
- new /obj/item/weapon/airalarm_electronics(), \
- new /obj/item/weapon/firealarm_electronics(), \
- new /obj/item/device/pipe_painter(), \
- new /obj/item/stack/sheet/metal(), \
- new /obj/item/stack/sheet/glass(), \
- new /obj/item/stack/sheet/rglass(), \
- new /obj/item/stack/rods(), \
- new /obj/item/weapon/rcd_ammo(), \
- new /obj/item/weapon/kitchenknife(), \
- new /obj/item/weapon/scalpel(), \
- new /obj/item/weapon/circular_saw(), \
- new /obj/item/weapon/surgicaldrill(),\
- new /obj/item/weapon/retractor(),\
- new /obj/item/weapon/cautery(),\
- new /obj/item/weapon/hemostat(),\
- new /obj/item/weapon/reagent_containers/glass/beaker(), \
- new /obj/item/weapon/reagent_containers/glass/beaker/large(), \
- new /obj/item/ammo_casing/shotgun/beanbag(), \
- new /obj/item/ammo_box/c38(), \
- new /obj/item/device/taperecorder(), \
- new /obj/item/device/assembly/igniter(), \
- new /obj/item/device/assembly/signaler(), \
- new /obj/item/device/radio/headset(), \
- new /obj/item/device/radio/off(), \
- new /obj/item/device/assembly/infra(), \
- new /obj/item/device/assembly/timer(), \
- new /obj/item/device/assembly/voice(), \
- new /obj/item/weapon/light/tube(), \
- new /obj/item/weapon/light/bulb(), \
- new /obj/item/weapon/camera_assembly(), \
- new /obj/item/weapon/reagent_containers/syringe(), \
- new /obj/item/device/assembly/prox_sensor(), \
- )
-
-var/global/list/autolathe_recipes_hidden = list( \
- new /obj/item/weapon/flamethrower/full(), \
- new /obj/item/weapon/rcd(), \
- new /obj/item/device/radio/electropack(), \
- new /obj/item/weapon/weldingtool/largetank(), \
- new /obj/item/weapon/handcuffs(), \
- new /obj/item/ammo_box/a357(), \
- new /obj/item/ammo_box/c10mm(), \
- new /obj/item/ammo_box/c45(), \
- new /obj/item/ammo_box/c9mm(), \
- new /obj/item/ammo_casing/shotgun(), \
- new /obj/item/ammo_casing/shotgun/buckshot(), \
- new /obj/item/ammo_casing/shotgun/dart(), \
- new /obj/item/ammo_casing/shotgun/incendiary(), \
- /* new /obj/item/weapon/shield/riot(), */ \
- )
-
/obj/machinery/autolathe
name = "autolathe"
desc = "It produces items using metal and glass."
@@ -96,6 +27,21 @@ var/global/list/autolathe_recipes_hidden = list( \
var/prod_coeff
var/datum/wires/autolathe/wires = null
+ var/datum/design/being_built
+ var/datum/research/files
+ var/selected_category
+ var/screen = 1
+
+ var/list/categories = list(
+ "Communication",
+ "Construction",
+ "Electronics",
+ "Medical",
+ "Miscellaneous",
+ "Security",
+ "Tools"
+ )
+
/obj/machinery/autolathe/New()
..()
component_parts = list()
@@ -108,13 +54,28 @@ var/global/list/autolathe_recipes_hidden = list( \
RefreshParts()
wires = new(src)
- src.L = autolathe_recipes
- src.LL = autolathe_recipes_hidden
+ files = new /datum/research/autolathe(src)
/obj/machinery/autolathe/interact(mob/user)
if(shocked && !(stat & NOPOWER))
shock(user,50)
- regular_win(user)
+
+ user.set_machine(src)
+ var/dat
+
+ if(panel_open)
+ dat = wires.GetInteractWindow()
+
+ else
+ if(screen == 1)
+ dat = main_win(user)
+ else
+ dat += category_win(user,selected_category)
+
+ var/datum/browser/popup = new(user, "autolathe", name, 500, 500)
+ popup.set_content(dat)
+ popup.open()
+
return
/obj/machinery/autolathe/attackby(obj/item/O, mob/user)
@@ -196,73 +157,68 @@ var/global/list/autolathe_recipes_hidden = list( \
if(..())
return
if (!busy)
+ if(href_list["menu"])
+ screen = text2num(href_list["menu"])
+
+ if(href_list["category"])
+ selected_category = href_list["category"]
+
if(href_list["make"])
- var/coeff = 2 ** prod_coeff
+
var/turf/T = get_step(src.loc, get_dir(src,usr))
- // critical exploit fix start -walter0o
- var/obj/item/template = null
- var/attempting_to_build = locate(href_list["make"])
-
- if(!attempting_to_build)
+ /////////////////
+ //href protection
+ being_built = files.FindDesignByID(href_list["make"]) //check if it's a valid design
+ if(!being_built)
return
- if(locate(attempting_to_build, src.L) || locate(attempting_to_build, src.LL)) // see if the requested object is in one of the construction lists, if so, it is legit -walter0o
- template = attempting_to_build
-
- else // somebody is trying to exploit, alert admins -walter0o
-
- var/turf/LOC = get_turf(usr)
- message_admins("[key_name_admin(usr)] tried to exploit an autolathe to duplicate [attempting_to_build] ! ([LOC ? "JMP" : "null"])", 0)
- log_admin("EXPLOIT : [key_name(usr)] tried to exploit an autolathe to duplicate [attempting_to_build] !")
- return
-
- // now check for legit multiplier, also only stacks should pass with one to prevent raw-materials-manipulation -walter0o
-
+ //multiplier checks : only stacks can have one and its value is 1, 10 ,25 or max_multiplier
var/multiplier = text2num(href_list["multiplier"])
+ var/max_multiplier = min(50, being_built.materials["$metal"] ?round(m_amount/being_built.materials["$metal"]):INFINITY,being_built.materials["$glass"]?round(g_amount/being_built.materials["$glass"]):INFINITY)
+ var/is_stack = ispath(being_built.build_path, /obj/item/stack)
- if (!multiplier) multiplier = 1
- var/max_multiplier = 1
-
- if(istype(template, /obj/item/stack)) // stacks are the only items which can have a multiplier higher than 1 -walter0o
- var/obj/item/stack/S = template
- max_multiplier = min(S.max_amount, S.m_amt?round(m_amount/S.m_amt):INFINITY, S.g_amt?round(g_amount/S.g_amt):INFINITY) // pasta from regular_win() to make sure the numbers match -walter0o
-
- if( (multiplier > max_multiplier) || (multiplier <= 0) ) // somebody is trying to exploit, alert admins-walter0o
-
- var/turf/LOC = get_turf(usr)
- message_admins("[key_name_admin(usr)] tried to exploit an autolathe with multiplier set to [multiplier] on [template] ! ([LOC ? "JMP" : "null"])" , 0)
- log_admin("EXPLOIT : [key_name(usr)] tried to exploit an autolathe with multiplier set to [multiplier] on [template] !")
+ if(!is_stack && (multiplier > 1))
return
+ if (!(multiplier in list(1,10,25,max_multiplier))) //"enough materials ?" is checked further down
+ return
+ /////////////////
- var/power = max(2000, (template.m_amt+template.g_amt)*multiplier/5)
- if(src.m_amount >= template.m_amt*multiplier/coeff && src.g_amount >= template.g_amt*multiplier/coeff)
+ var/coeff = (is_stack ? 1 : 2 ** prod_coeff) //stacks are unaffected by production coefficient
+ var/metal_cost = being_built.materials["$metal"]
+ var/glass_cost = being_built.materials["$glass"]
+
+ var/power = max(2000, (metal_cost+glass_cost)*multiplier/5)
+
+ if((m_amount >= metal_cost*multiplier/coeff) && (g_amount >= glass_cost*multiplier/coeff))
busy = 1
use_power(power)
icon_state = "autolathe"
flick("autolathe_n",src)
spawn(32/coeff)
use_power(power)
- if(istype(template, /obj/item/stack))
- src.m_amount -= template.m_amt*multiplier
- src.g_amount -= template.g_amt*multiplier
- var/obj/item/new_item = new template.type(T)
- var/obj/item/stack/S = new_item
+ if(is_stack)
+ m_amount -= metal_cost*multiplier
+ g_amount -= glass_cost*multiplier
+ var/obj/item/stack/S = new being_built.build_path(T)
S.amount = multiplier
else
- src.m_amount -= template.m_amt/coeff
- src.g_amount -= template.g_amt/coeff
- var/obj/item/new_item = new template.type(T)
+ m_amount -= metal_cost/coeff
+ g_amount -= glass_cost/coeff
+ var/obj/item/new_item = new being_built.build_path(T)
new_item.m_amt /= coeff
new_item.g_amt /= coeff
- if(src.m_amount < 0)
- src.m_amount = 0
- if(src.g_amount < 0)
- src.g_amount = 0
+ if(m_amount < 0)
+ m_amount = 0
+ if(g_amount < 0)
+ g_amount = 0
busy = 0
+ src.updateUsrDialog()
else
usr << "The autolathe is busy. Please wait for completion of previous operation."
+
src.updateUsrDialog()
+
return
/obj/machinery/autolathe/RefreshParts()
@@ -276,45 +232,71 @@ var/global/list/autolathe_recipes_hidden = list( \
for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts)
prod_coeff += M.rating - 1
-/obj/machinery/autolathe/proc/regular_win(mob/user)
+/obj/machinery/autolathe/proc/main_win(mob/user)
+ var/dat = "
Autolathe Menu:
"
+ dat += "
Metal amount: [src.m_amount] / [max_m_amount] cm
3"
+ dat += "
Glass amount: [src.g_amount] / [max_g_amount] cm
3
"
+
+ var/line_length = 1
+ dat += "
"
+
+ for(var/C in categories)
+ if(line_length > 2)
+ dat += "
"
+ line_length = 1
+
+ dat += "| [C] | "
+ line_length++
+
+ dat += "
"
+ return dat
+
+/obj/machinery/autolathe/proc/category_win(mob/user,var/selected_category)
+ var/dat = "Return to category screen"
+ dat += "Browsing [selected_category]:
"
+ dat += "
Metal amount: [src.m_amount] / [max_m_amount] cm
3"
+ dat += "
Glass amount: [src.g_amount] / [max_g_amount] cm
3
"
+
+ for(var/datum/design/D in files.known_designs)
+ if(!(selected_category in D.category))
+ continue
+
+ if(disabled || !can_build(D))
+ dat += "
[D.name]"
+ else
+ dat += "
[D.name]"
+
+ if(ispath(D.build_path, /obj/item/stack))
+ var/max_multiplier = min(50, D.materials["$metal"] ?round(m_amount/D.materials["$metal"]):INFINITY,D.materials["$glass"]?round(g_amount/D.materials["$glass"]):INFINITY)
+ if (max_multiplier>10 && !disabled)
+ dat += "
x10"
+ if (max_multiplier>25 && !disabled)
+ dat += "
x25"
+ if(max_multiplier > 0 && !disabled)
+ dat += "
x[max_multiplier]"
+
+ dat += "[get_design_cost(D)]
"
+
+ dat += "
"
+ return dat
+
+/obj/machinery/autolathe/proc/can_build(var/datum/design/D)
+ var/coeff = (ispath(D.build_path,/obj/item/stack) ? 1 : 2 ** prod_coeff)
+
+ if(D.materials["$metal"] && (m_amount < (D.materials["$metal"] / coeff)))
+ return 0
+ if(D.materials["$glass"] && (g_amount < (D.materials["$glass"] / coeff)))
+ return 0
+ return 1
+
+/obj/machinery/autolathe/proc/get_design_cost(var/datum/design/D)
+ var/coeff = (ispath(D.build_path,/obj/item/stack) ? 1 : 2 ** prod_coeff)
var/dat
- if(!panel_open)
- if(stat)
- return
- var/coeff = 2 ** prod_coeff
- dat = "Metal amount: [src.m_amount] / [max_m_amount] cm
3"
- dat += "
Glass amount: [src.g_amount] / [max_g_amount] cm
3
"
- var/list/objs = list()
- objs += src.L
- if(src.hacked)
- objs += src.LL
- for(var/obj/item/t in objs)
- if(disabled || m_amount
[t]", "The ", "")
- else
- dat += replacetext("[t]", "The ", "")
-
- if(istype(t, /obj/item/stack))
- var/obj/item/stack/S = t
- var/max_multiplier = min(S.max_amount, S.m_amt?round(m_amount/S.m_amt):INFINITY, S.g_amt?round(g_amount/S.g_amt):INFINITY)
- if (max_multiplier>10 && !disabled)
- dat += " x[10]"
- if (max_multiplier>25 && !disabled)
- dat += " x[25]"
- if (max_multiplier>1 && !disabled)
- dat += " x[max_multiplier]"
- dat += " [t.m_amt] m / [t.g_amt] g"
- else
- dat += " [t.m_amt/coeff] m / [t.g_amt/coeff] g"
- dat += "
"
- dat += ""
- else
- dat = wires.GetInteractWindow()
-
- var/datum/browser/popup = new(user, "autolathe", name, 400, 500)
- popup.set_content(dat)
- popup.open()
- return
+ if(D.materials["$metal"])
+ dat += "[D.materials["$metal"] / coeff] metal "
+ if(D.materials["$glass"])
+ dat += "[D.materials["$glass"] / coeff] glass"
+ return dat
/obj/machinery/autolathe/proc/shock(mob/user, prb)
if(stat & (BROKEN|NOPOWER)) // unpowered, no shock
@@ -328,3 +310,15 @@ var/global/list/autolathe_recipes_hidden = list( \
return 1
else
return 0
+
+/obj/machinery/autolathe/proc/adjust_hacked(var/hack)
+ hacked = hack
+
+ if(hack)
+ for(var/datum/design/D in files.possible_designs)
+ if((D.build_type & 4) && ("hacked" in D.category))
+ files.known_designs += D
+ else
+ for(var/datum/design/D in files.known_designs)
+ if("hacked" in D.category)
+ files.known_designs -= D
diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm
index dbe864a02db..237089dea5c 100644
--- a/code/modules/research/circuitprinter.dm
+++ b/code/modules/research/circuitprinter.dm
@@ -15,6 +15,20 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
var/diamond_amount = 0
var/max_material_amount = 75000.0
var/efficiency_coeff
+
+ var/list/categories = list(
+ "AI Modules",
+ "Computer Boards",
+ "Engineering Machinery",
+ "Exosuit Modules",
+ "Hydroponics Machinery",
+ "Medical Machinery",
+ "Misc. Machinery",
+ "Research Machinery",
+ "Subspace Telecomms",
+ "Teleportation Machinery"
+ )
+
reagents = new()
/obj/machinery/r_n_d/circuit_imprinter/New()
diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm
index 337620831a0..8714de28eaa 100644
--- a/code/modules/research/designs.dm
+++ b/code/modules/research/designs.dm
@@ -34,7 +34,7 @@ other types of metals and chemistry for reagents).
*/
-datum/design //Datum for object designs, used in construction
+/datum/design //Datum for object designs, used in construction
var/name = "Name" //Name of the created object.
var/desc = "Desc" //Description of the created object.
var/id = "id" //ID of the created object for easy refernece. Alphanumeric, lower-case, no symbols
@@ -52,7 +52,7 @@ datum/design //Datum for object designs, used in construction
//A proc to calculate the reliability of a design based on tech levels and innate modifiers.
//Input: A list of /datum/tech; Output: The new reliabilty.
-datum/design/proc/CalcReliability(var/list/temp_techs)
+/datum/design/proc/CalcReliability(var/list/temp_techs)
var/new_reliability
for(var/datum/tech/T in temp_techs)
if(T.id in req_tech)
@@ -61,101 +61,11 @@ datum/design/proc/CalcReliability(var/list/temp_techs)
reliability = new_reliability
return
-///////////////////////////////////
-/////Non-Board Computer Stuff//////
-///////////////////////////////////
-
-datum/design/intellicard
- name = "Intellicard AI Transportation System"
- desc = "Allows for the construction of an intellicard."
- id = "intellicard"
- req_tech = list("programming" = 4, "materials" = 4)
- build_type = PROTOLATHE
- materials = list("$glass" = 1000, "$gold" = 200)
- build_path = /obj/item/device/aicard
-
-datum/design/paicard
- name = "Personal Artificial Intelligence Card"
- desc = "Allows for the construction of a pAI Card"
- id = "paicard"
- req_tech = list("programming" = 2)
- build_type = PROTOLATHE
- materials = list("$glass" = 500, "$metal" = 500)
- build_path = /obj/item/device/paicard
-
-datum/design/posibrain
- name = "Positronic Brain"
- desc = "Allows for the construction of a positronic brain"
- id = "posibrain"
- req_tech = list("engineering" = 4, "materials" = 6, "bluespace" = 2, "programming" = 4)
- build_type = PROTOLATHE
- materials = list("$metal" = 2000, "$glass" = 1000, "$silver" = 1000, "$gold" = 500, "$plasma" = 500, "$diamond" = 100)
- build_path = /obj/item/device/mmi/posibrain
-
-////////////////////////////////////////
-//////////Disk Construction Disks///////
-////////////////////////////////////////
-
-datum/design/design_disk
- name = "Design Storage Disk"
- desc = "Produce additional disks for storing device designs."
- id = "design_disk"
- req_tech = list("programming" = 1)
- build_type = PROTOLATHE | AUTOLATHE
- materials = list("$metal" = 30, "$glass" = 10)
- build_path = /obj/item/weapon/disk/design_disk
-
-datum/design/tech_disk
- name = "Technology Data Storage Disk"
- desc = "Produce additional disks for storing technology data."
- id = "tech_disk"
- req_tech = list("programming" = 1)
- build_type = PROTOLATHE | AUTOLATHE
- materials = list("$metal" = 30, "$glass" = 10)
- build_path = /obj/item/weapon/disk/tech_disk
-
/////////////////////////////////////////
/////////////////Mining//////////////////
/////////////////////////////////////////
-datum/design/jackhammer
- name = "Sonic Jackhammer"
- desc = "Cracks rocks with sonic blasts, perfect for killing cave lizards."
- id = "jackhammer"
- req_tech = list("materials" = 3, "powerstorage" = 2, "engineering" = 2)
- build_type = PROTOLATHE
- materials = list("$metal" = 2000, "$glass" = 500, "$silver" = 500)
- build_path = /obj/item/weapon/pickaxe/jackhammer
-
-datum/design/drill
- name = "Mining Drill"
- desc = "Yours is the drill that will pierce through the rock walls."
- id = "drill"
- req_tech = list("materials" = 2, "powerstorage" = 3, "engineering" = 2)
- build_type = PROTOLATHE
- materials = list("$metal" = 6000, "$glass" = 1000)
- build_path = /obj/item/weapon/pickaxe/drill
-
-datum/design/plasmacutter
- name = "Plasma Cutter"
- desc = "You could use it to cut limbs off of xenos! Or, you know, mine stuff."
- id = "plasmacutter"
- req_tech = list("materials" = 4, "plasmatech" = 3, "engineering" = 3)
- build_type = PROTOLATHE
- materials = list("$metal" = 1500, "$glass" = 500, "$gold" = 500, "$plasma" = 500)
- reliability_base = 79
- build_path = /obj/item/weapon/pickaxe/plasmacutter
-
-datum/design/pick_diamond
- name = "Diamond Pickaxe"
- desc = "A pickaxe with a diamond pick head, this is just like minecraft."
- id = "pick_diamond"
- req_tech = list("materials" = 6)
- build_type = PROTOLATHE
- materials = list("$diamond" = 3000)
- build_path = /obj/item/weapon/pickaxe/diamond
-
-datum/design/drill_diamond
+/datum/design/drill_diamond
name = "Diamond Mining Drill"
desc = "Yours is the drill that will pierce the heavens!"
id = "drill_diamond"
@@ -164,8 +74,29 @@ datum/design/drill_diamond
materials = list("$metal" = 3000, "$glass" = 1000, "$diamond" = 3750) //Yes, a whole diamond is needed.
reliability_base = 79
build_path = /obj/item/weapon/pickaxe/diamonddrill
+ category = list("Mining")
+
+/datum/design/pick_diamond
+ name = "Diamond Pickaxe"
+ desc = "A pickaxe with a diamond pick head, this is just like minecraft."
+ id = "pick_diamond"
+ req_tech = list("materials" = 6)
+ build_type = PROTOLATHE
+ materials = list("$diamond" = 3000)
+ build_path = /obj/item/weapon/pickaxe/diamond
+ category = list("Mining")
-datum/design/mesons
+/datum/design/drill
+ name = "Mining Drill"
+ desc = "Yours is the drill that will pierce through the rock walls."
+ id = "drill"
+ req_tech = list("materials" = 2, "powerstorage" = 3, "engineering" = 2)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 6000, "$glass" = 1000)
+ build_path = /obj/item/weapon/pickaxe/drill
+ category = list("Mining")
+
+/datum/design/mesons
name = "Optical Meson Scanners"
desc = "Used for seeing walls, floors, and stuff through anything."
id = "mesons"
@@ -173,62 +104,78 @@ datum/design/mesons
build_type = PROTOLATHE
materials = list("$metal" = 200, "$glass" = 300, "$plasma" = 100)
build_path = /obj/item/clothing/glasses/meson
+ category = list("Mining")
+
+/datum/design/plasmacutter
+ name = "Plasma Cutter"
+ desc = "You could use it to cut limbs off of xenos! Or, you know, mine stuff."
+ id = "plasmacutter"
+ req_tech = list("materials" = 4, "plasmatech" = 3, "engineering" = 3)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 1500, "$glass" = 500, "$gold" = 500, "$plasma" = 500)
+ reliability_base = 79
+ build_path = /obj/item/weapon/pickaxe/plasmacutter
+ category = list("Mining")
+
+/datum/design/jackhammer
+ name = "Sonic Jackhammer"
+ desc = "Cracks rocks with sonic blasts, perfect for killing cave lizards."
+ id = "jackhammer"
+ req_tech = list("materials" = 3, "powerstorage" = 2, "engineering" = 2)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 2000, "$glass" = 500, "$silver" = 500)
+ build_path = /obj/item/weapon/pickaxe/jackhammer
+ category = list("Mining")
/////////////////////////////////////////
/////////////////Misc Designs////////////
/////////////////////////////////////////
-datum/design/night_vision_goggles
- name = "Night Vision Goggles"
- desc = "Goggles that let you see through darkness unhindered."
- id = "night_visision_goggles"
- req_tech = list("magnets" = 4)
+/datum/design/design_disk
+ name = "Design Storage Disk"
+ desc = "Produce additional disks for storing device designs."
+ id = "design_disk"
+ req_tech = list("programming" = 1)
+ build_type = PROTOLATHE | AUTOLATHE
+ materials = list("$metal" = 30, "$glass" = 10)
+ build_path = /obj/item/weapon/disk/design_disk
+ category = list("Miscellaneous")
+
+/datum/design/intellicard
+ name = "Intellicard"
+ desc = "Allows for the construction of an intellicard."
+ id = "intellicard"
+ req_tech = list("programming" = 4, "materials" = 4)
build_type = PROTOLATHE
- materials = list("$metal" = 100, "$glass" = 100, "$uranium" = 1000)
- build_path = /obj/item/clothing/glasses/night
+ materials = list("$glass" = 1000, "$gold" = 200)
+ build_path = /obj/item/device/aicard
+ category = list("Miscellaneous")
+
+/datum/design/paicard
+ name = "Personal Artificial Intelligence Card"
+ desc = "Allows for the construction of a pAI Card"
+ id = "paicard"
+ req_tech = list("programming" = 2)
+ build_type = PROTOLATHE
+ materials = list("$glass" = 500, "$metal" = 500)
+ build_path = /obj/item/device/paicard
+ category = list("Miscellaneous")
-datum/design/magboots
- name = "Magnetic Boots"
- desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle."
- id = "magboots"
- req_tech = list("materials" = 4, "magnets" = 4, "engineering" = 5)
- build_type = PROTOLATHE
- materials = list("$metal" = 4500, "$silver" = 1500, "$gold" = 2500)
- build_path = /obj/item/clothing/shoes/magboots
+/datum/design/tech_disk
+ name = "Technology Data Storage Disk"
+ desc = "Produce additional disks for storing technology data."
+ id = "tech_disk"
+ req_tech = list("programming" = 1)
+ build_type = PROTOLATHE | AUTOLATHE
+ materials = list("$metal" = 30, "$glass" = 10)
+ build_path = /obj/item/weapon/disk/tech_disk
+ category = list("Miscellaneous")
/////////////////////////////////////////
//////////////Blue Space/////////////////
/////////////////////////////////////////
-datum/design/beacon
- name = "Tracking Beacon"
- desc = "A blue space tracking beacon."
- id = "beacon"
- req_tech = list("bluespace" = 1)
- build_type = PROTOLATHE
- materials = list ("$metal" = 20, "$glass" = 10)
- build_path = /obj/item/device/radio/beacon
-
-datum/design/telepad_beacon
- name = "Telepad Beacon"
- desc = "Use to warp in a cargo telepad."
- id = "telepad_beacon"
- req_tech = list("bluespace" = 3, "materials" = 4)
- build_type = PROTOLATHE
- materials = list ("$metal" = 2000, "$glass" = 1750, "$silver" = 500)
- build_path = /obj/item/device/telepad_beacon
-
-datum/design/bag_holding
- name = "Bag of Holding"
- desc = "A backpack that opens into a localized pocket of Blue Space."
- id = "bag_holding"
- req_tech = list("bluespace" = 4, "materials" = 6)
- build_type = PROTOLATHE
- materials = list("$gold" = 3000, "$diamond" = 1500, "$uranium" = 250)
- reliability_base = 80
- build_path = /obj/item/weapon/storage/backpack/holding
-
-datum/design/bluespace_crystal
+/datum/design/bluespace_crystal
name = "Artificial Bluespace Crystal"
desc = "A small blue crystal with mystical properties."
id = "bluespace_crystal"
@@ -237,8 +184,20 @@ datum/design/bluespace_crystal
materials = list("$diamond" = 1500, "$plasma" = 1500)
reliability_base = 100
build_path = /obj/item/bluespace_crystal/artificial
+ category = list("Bluespace")
+
+/datum/design/bag_holding
+ name = "Bag of Holding"
+ desc = "A backpack that opens into a localized pocket of Blue Space."
+ id = "bag_holding"
+ req_tech = list("bluespace" = 4, "materials" = 6)
+ build_type = PROTOLATHE
+ materials = list("$gold" = 3000, "$diamond" = 1500, "$uranium" = 250)
+ reliability_base = 80
+ build_path = /obj/item/weapon/storage/backpack/holding
+ category = list("Bluespace")
-datum/design/telesci_gps
+/datum/design/telesci_gps
name = "GPS Device"
desc = "A device that can track its position at all times."
id = "telesci_Gps"
@@ -246,12 +205,33 @@ datum/design/telesci_gps
build_type = PROTOLATHE
materials = list("$metal" = 500, "$glass" = 1000)
build_path = /obj/item/device/gps
+ category = list("Bluespace")
+
+/datum/design/telepad_beacon
+ name = "Telepad Beacon"
+ desc = "Use to warp in a cargo telepad."
+ id = "telepad_beacon"
+ req_tech = list("bluespace" = 3, "materials" = 4)
+ build_type = PROTOLATHE
+ materials = list ("$metal" = 2000, "$glass" = 1750, "$silver" = 500)
+ build_path = /obj/item/device/telepad_beacon
+ category = list("Bluespace")
+
+/datum/design/beacon
+ name = "Tracking Beacon"
+ desc = "A blue space tracking beacon."
+ id = "beacon"
+ req_tech = list("bluespace" = 1)
+ build_type = PROTOLATHE
+ materials = list ("$metal" = 20, "$glass" = 10)
+ build_path = /obj/item/device/radio/beacon
+ category = list("Bluespace")
/////////////////////////////////////////
-/////////////////HUDs////////////////////
+/////////////////Equipment///////////////
/////////////////////////////////////////
-datum/design/health_hud
+/datum/design/health_hud
name = "Health Scanner HUD"
desc = "A heads-up display that scans the humans in view and provides accurate data about their health status."
id = "health_hud"
@@ -259,8 +239,29 @@ datum/design/health_hud
build_type = PROTOLATHE
materials = list("$metal" = 50, "$glass" = 50)
build_path = /obj/item/clothing/glasses/hud/health
+ category = list("Equipment")
+
+/datum/design/magboots
+ name = "Magnetic Boots"
+ desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle."
+ id = "magboots"
+ req_tech = list("materials" = 4, "magnets" = 4, "engineering" = 5)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 4500, "$silver" = 1500, "$gold" = 2500)
+ build_path = /obj/item/clothing/shoes/magboots
+ category = list("Equipment")
+
+/datum/design/night_vision_goggles
+ name = "Night Vision Goggles"
+ desc = "Goggles that let you see through darkness unhindered."
+ id = "night_visision_goggles"
+ req_tech = list("magnets" = 4)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 100, "$glass" = 100, "$uranium" = 1000)
+ build_path = /obj/item/clothing/glasses/night
+ category = list("Equipment")
-datum/design/health_hud_night
+/datum/design/health_hud_night
name = "Night Vision Health Scanner HUD"
desc = "An advanced medical head-up display that allows doctors to find patients in complete darkness."
id = "health_hud_night"
@@ -268,17 +269,9 @@ datum/design/health_hud_night
build_type = PROTOLATHE
materials = list("$metal" = 200, "$glass" = 200, "$uranium" = 1000, "$silver" = 250)
build_path = /obj/item/clothing/glasses/hud/health/night
-
-datum/design/security_hud
- name = "Security HUD"
- desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status."
- id = "security_hud"
- req_tech = list("magnets" = 3, "combat" = 2)
- build_type = PROTOLATHE
- materials = list("$metal" = 50, "$glass" = 50)
- build_path = /obj/item/clothing/glasses/hud/security
-
-datum/design/security_hud_night
+ category = list("Equipment")
+
+/datum/design/security_hud_night
name = "Night Vision Security HUD"
desc = "A heads-up display which provides id data and vision in complete darkness."
id = "security_hud_night"
@@ -286,61 +279,33 @@ datum/design/security_hud_night
build_type = PROTOLATHE
materials = list("$metal" = 200, "$glass" = 200, "$uranium" = 1000, "$gold" = 350)
build_path = /obj/item/clothing/glasses/hud/security/night
+ category = list("Equipment")
-/////////////////////////////////////////
-//////////////Borg Upgrades//////////////
-/////////////////////////////////////////
-
-datum/design/borg_syndicate_module
- name = "Borg Illegal Weapons Upgrade"
- desc = "Allows for the construction of illegal upgrades for cyborgs"
- id = "borg_syndicate_module"
- build_type = MECHFAB
- req_tech = list("combat" = 4, "syndicate" = 3)
- build_path = /obj/item/borg/upgrade/syndicate
- category = "Cyborg Upgrade Modules"
+/datum/design/security_hud
+ name = "Security HUD"
+ desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status."
+ id = "security_hud"
+ req_tech = list("magnets" = 3, "combat" = 2)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 50, "$glass" = 50)
+ build_path = /obj/item/clothing/glasses/hud/security
+ category = list("Equipment")
/////////////////////////////////////////
/////////////PDA and Radio stuff/////////
/////////////////////////////////////////
-datum/design/binaryencrypt
+/datum/design/binaryencrypt
name = "Binary Encryption Key"
- desc = "An encyption key for a radio headset. Contains cypherkeys."
+ desc = "An encyption key for a radio headset. Contains cypherkeys."
id = "binaryencrypt"
req_tech = list("syndicate" = 2)
build_type = PROTOLATHE
materials = list("$metal" = 300, "$glass" = 300)
build_path = /obj/item/device/encryptionkey/binary
+ category = list("Communication")
-datum/design/pda
- name = "PDA"
- desc = "A portable microcomputer by Thinktronic Systems, LTD. Functionality determined by a preprogrammed ROM cartridge."
- id = "pda"
- req_tech = list("engineering" = 2, "powerstorage" = 3)
- build_type = PROTOLATHE
- materials = list("$metal" = 50, "$glass" = 50)
- build_path = /obj/item/device/pda
-
-datum/design/cart_basic
- name = "Generic Cartridge"
- desc = "A data cartridge for portable microcomputers."
- id = "cart_basic"
- req_tech = list("engineering" = 2, "powerstorage" = 3)
- build_type = PROTOLATHE
- materials = list("$metal" = 50, "$glass" = 50)
- build_path = /obj/item/weapon/cartridge
-
-datum/design/cart_engineering
- name = "Power-ON Cartridge"
- desc = "A data cartridge for portable microcomputers."
- id = "cart_engineering"
- req_tech = list("engineering" = 2, "powerstorage" = 3)
- build_type = PROTOLATHE
- materials = list("$metal" = 50, "$glass" = 50)
- build_path = /obj/item/weapon/cartridge/engineering
-
-datum/design/cart_atmos
+/datum/design/cart_atmos
name = "BreatheDeep Cartridge"
desc = "A data cartridge for portable microcomputers."
id = "cart_atmos"
@@ -348,17 +313,9 @@ datum/design/cart_atmos
build_type = PROTOLATHE
materials = list("$metal" = 50, "$glass" = 50)
build_path = /obj/item/weapon/cartridge/atmos
+ category = list("Communication")
-datum/design/cart_medical
- name = "Med-U Cartridge"
- desc = "A data cartridge for portable microcomputers."
- id = "cart_medical"
- req_tech = list("engineering" = 2, "powerstorage" = 3)
- build_type = PROTOLATHE
- materials = list("$metal" = 50, "$glass" = 50)
- build_path = /obj/item/weapon/cartridge/medical
-
-datum/design/cart_chemistry
+/datum/design/cart_chemistry
name = "ChemWhiz Cartridge"
desc = "A data cartridge for portable microcomputers."
id = "cart_chemistry"
@@ -366,18 +323,9 @@ datum/design/cart_chemistry
build_type = PROTOLATHE
materials = list("$metal" = 50, "$glass" = 50)
build_path = /obj/item/weapon/cartridge/chemistry
+ category = list("Communication")
-datum/design/cart_security
- name = "R.O.B.U.S.T. Cartridge"
- desc = "A data cartridge for portable microcomputers."
- id = "cart_security"
- req_tech = list("engineering" = 2, "powerstorage" = 3)
- build_type = PROTOLATHE
- materials = list("$metal" = 50, "$glass" = 50)
- build_path = "/obj/item/weapon/cartridge/security"
- locked = 1
-
-datum/design/cart_janitor
+/datum/design/cart_janitor
name = "CustodiPRO Cartridge"
desc = "A data cartridge for portable microcomputers."
id = "cart_janitor"
@@ -385,17 +333,9 @@ datum/design/cart_janitor
build_type = PROTOLATHE
materials = list("$metal" = 50, "$glass" = 50)
build_path = /obj/item/weapon/cartridge/janitor
+ category = list("Communication")
-datum/design/cart_clown
- name = "Honkworks 5.0 Cartridge"
- desc = "A data cartridge for portable microcomputers."
- id = "cart_clown"
- req_tech = list("engineering" = 2, "powerstorage" = 3)
- build_type = PROTOLATHE
- materials = list("$metal" = 50, "$glass" = 50)
- build_path = /obj/item/weapon/cartridge/clown
-
-datum/design/cart_mime
+/datum/design/cart_mime
name = "Gestur-O 1000 Cartridge"
desc = "A data cartridge for portable microcomputers."
id = "cart_mime"
@@ -403,27 +343,29 @@ datum/design/cart_mime
build_type = PROTOLATHE
materials = list("$metal" = 50, "$glass" = 50)
build_path = /obj/item/weapon/cartridge/mime
+ category = list("Communication")
-datum/design/cart_toxins
- name = "Signal Ace 2 Cartridge"
+/datum/design/cart_basic
+ name = "Generic Cartridge"
desc = "A data cartridge for portable microcomputers."
- id = "cart_toxins"
+ id = "cart_basic"
req_tech = list("engineering" = 2, "powerstorage" = 3)
build_type = PROTOLATHE
materials = list("$metal" = 50, "$glass" = 50)
- build_path = /obj/item/weapon/cartridge/signal/toxins
+ build_path = /obj/item/weapon/cartridge
+ category = list("Communication")
-datum/design/cart_quartermaster
- name = "Space Parts & Space Vendors Cartridge"
+/datum/design/cart_clown
+ name = "Honkworks 5.0 Cartridge"
desc = "A data cartridge for portable microcomputers."
- id = "cart_quartermaster"
+ id = "cart_clown"
req_tech = list("engineering" = 2, "powerstorage" = 3)
build_type = PROTOLATHE
materials = list("$metal" = 50, "$glass" = 50)
- build_path = /obj/item/weapon/cartridge/quartermaster
- locked = 1
+ build_path = /obj/item/weapon/cartridge/clown
+ category = list("Communication")
-datum/design/cart_hop
+/datum/design/cart_hop
name = "Human Resources 9001 Cartridge"
desc = "A data cartridge for portable microcomputers."
id = "cart_hop"
@@ -432,28 +374,19 @@ datum/design/cart_hop
materials = list("$metal" = 50, "$glass" = 50)
build_path = /obj/item/weapon/cartridge/hop
locked = 1
+ category = list("Communication")
-datum/design/cart_hos
- name = "R.O.B.U.S.T. DELUXE Cartridge"
+/datum/design/cart_medical
+ name = "Med-U Cartridge"
desc = "A data cartridge for portable microcomputers."
- id = "cart_hos"
+ id = "cart_medical"
req_tech = list("engineering" = 2, "powerstorage" = 3)
build_type = PROTOLATHE
materials = list("$metal" = 50, "$glass" = 50)
- build_path = /obj/item/weapon/cartridge/hos
- locked = 1
+ build_path = /obj/item/weapon/cartridge/medical
+ category = list("Communication")
-datum/design/cart_ce
- name = "Power-On DELUXE Cartridge"
- desc = "A data cartridge for portable microcomputers."
- id = "cart_ce"
- req_tech = list("engineering" = 2, "powerstorage" = 3)
- build_type = PROTOLATHE
- materials = list("$metal" = 50, "$glass" = 50)
- build_path = /obj/item/weapon/cartridge/ce
- locked = 1
-
-datum/design/cart_cmo
+/datum/design/cart_cmo
name = "Med-U DELUXE Cartridge"
desc = "A data cartridge for portable microcomputers."
id = "cart_cmo"
@@ -462,8 +395,72 @@ datum/design/cart_cmo
materials = list("$metal" = 50, "$glass" = 50)
build_path = /obj/item/weapon/cartridge/cmo
locked = 1
+ category = list("Communication")
-datum/design/cart_rd
+/datum/design/pda
+ name = "PDA"
+ desc = "A portable microcomputer by Thinktronic Systems, LTD. Functionality determined by a preprogrammed ROM cartridge."
+ id = "pda"
+ req_tech = list("engineering" = 2, "powerstorage" = 3)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 50, "$glass" = 50)
+ build_path = /obj/item/device/pda
+ category = list("Communication")
+
+/datum/design/cart_engineering
+ name = "Power-ON Cartridge"
+ desc = "A data cartridge for portable microcomputers."
+ id = "cart_engineering"
+ req_tech = list("engineering" = 2, "powerstorage" = 3)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 50, "$glass" = 50)
+ build_path = /obj/item/weapon/cartridge/engineering
+ category = list("Communication")
+
+/datum/design/cart_ce
+ name = "Power-On DELUXE Cartridge"
+ desc = "A data cartridge for portable microcomputers."
+ id = "cart_ce"
+ req_tech = list("engineering" = 2, "powerstorage" = 3)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 50, "$glass" = 50)
+ build_path = /obj/item/weapon/cartridge/ce
+ locked = 1
+ category = list("Communication")
+
+/datum/design/cart_security
+ name = "R.O.B.U.S.T. Cartridge"
+ desc = "A data cartridge for portable microcomputers."
+ id = "cart_security"
+ req_tech = list("engineering" = 2, "powerstorage" = 3)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 50, "$glass" = 50)
+ build_path = "/obj/item/weapon/cartridge/security"
+ locked = 1
+ category = list("Communication")
+
+/datum/design/cart_hos
+ name = "R.O.B.U.S.T. DELUXE Cartridge"
+ desc = "A data cartridge for portable microcomputers."
+ id = "cart_hos"
+ req_tech = list("engineering" = 2, "powerstorage" = 3)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 50, "$glass" = 50)
+ build_path = /obj/item/weapon/cartridge/hos
+ locked = 1
+ category = list("Communication")
+
+/datum/design/cart_toxins
+ name = "Signal Ace 2 Cartridge"
+ desc = "A data cartridge for portable microcomputers."
+ id = "cart_toxins"
+ req_tech = list("engineering" = 2, "powerstorage" = 3)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 50, "$glass" = 50)
+ build_path = /obj/item/weapon/cartridge/signal/toxins
+ category = list("Communication")
+
+/datum/design/cart_rd
name = "Signal Ace DELUXE Cartridge"
desc = "A data cartridge for portable microcomputers."
id = "cart_rd"
@@ -472,8 +469,20 @@ datum/design/cart_rd
materials = list("$metal" = 50, "$glass" = 50)
build_path = /obj/item/weapon/cartridge/rd
locked = 1
+ category = list("Communication")
-datum/design/cart_captain
+/datum/design/cart_quartermaster
+ name = "Space Parts & Space Vendors Cartridge"
+ desc = "A data cartridge for portable microcomputers."
+ id = "cart_quartermaster"
+ req_tech = list("engineering" = 2, "powerstorage" = 3)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 50, "$glass" = 50)
+ build_path = /obj/item/weapon/cartridge/quartermaster
+ locked = 1
+ category = list("Communication")
+
+/datum/design/cart_captain
name = "Value-PAK Cartridge"
desc = "A data cartridge for portable microcomputers."
id = "cart_captain"
@@ -482,21 +491,13 @@ datum/design/cart_captain
materials = list("$metal" = 50, "$glass" = 50)
build_path = /obj/item/weapon/cartridge/captain
locked = 1
+ category = list("Communication")
/////////////////////////////////////////
////////////Janitor Designs//////////////
/////////////////////////////////////////
-
-datum/design/light_replacer
- name = "Light Replacer"
- desc = "A device to automatically replace lights. Refill with working lightbulbs."
- id = "light_replacer"
- req_tech = list("magnets" = 3, "materials" = 4)
- build_type = PROTOLATHE
- materials = list("$metal" = 1500, "$silver" = 150, "$glass" = 3000)
- build_path = /obj/item/device/lightreplacer
-datum/design/advmop
+/datum/design/advmop
name = "Advanced Mop"
desc = "An upgraded mop with a large internal capacity for holding water or other cleaning chemicals."
id = "advmop"
@@ -504,12 +505,24 @@ datum/design/advmop
build_type = PROTOLATHE
materials = list("$metal" = 2500, "$glass" = 200)
build_path = /obj/item/weapon/mop/advanced
+ category = list("Janitorial")
-datum/design/holosign
+/datum/design/holosign
name = "Holographic Sign Projector"
desc = "A holograpic projector used to project various warning signs."
id = "holosign"
req_tech = list("magnets" = 3, "powerstorage" = 2)
build_type = PROTOLATHE
materials = list("$metal" = 2000, "$glass" = 1000)
- build_path = /obj/item/weapon/holosign_creator
\ No newline at end of file
+ build_path = /obj/item/weapon/holosign_creator
+ category = list("Janitorial")
+
+/datum/design/light_replacer
+ name = "Light Replacer"
+ desc = "A device to automatically replace lights. Refill with working lightbulbs."
+ id = "light_replacer"
+ req_tech = list("magnets" = 3, "materials" = 4)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 1500, "$silver" = 150, "$glass" = 3000)
+ build_path = /obj/item/device/lightreplacer
+ category = list("Janitorial")
\ No newline at end of file
diff --git a/code/modules/research/designs/AI_module_designs.dm b/code/modules/research/designs/AI_module_designs.dm
index 0f4b101f67a..e5289781cba 100644
--- a/code/modules/research/designs/AI_module_designs.dm
+++ b/code/modules/research/designs/AI_module_designs.dm
@@ -2,52 +2,7 @@
//////////AI Module Disks//////////
///////////////////////////////////
-datum/design/safeguard_module
- name = "AI Module (Safeguard)"
- desc = "Allows for the construction of a Safeguard AI Module."
- id = "safeguard_module"
- req_tech = list("programming" = 3, "materials" = 4)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20, "$gold" = 100)
- build_path = /obj/item/weapon/aiModule/supplied/safeguard
-
-datum/design/onehuman_module
- name = "AI Module (OneHuman)"
- desc = "Allows for the construction of a OneHuman AI Module."
- id = "onehuman_module"
- req_tech = list("programming" = 4, "materials" = 6)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100)
- build_path = /obj/item/weapon/aiModule/zeroth/oneHuman
-
-datum/design/protectstation_module
- name = "AI Module (ProtectStation)"
- desc = "Allows for the construction of a ProtectStation AI Module."
- id = "protectstation_module"
- req_tech = list("programming" = 3, "materials" = 6)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20, "$gold" = 100)
- build_path = /obj/item/weapon/aiModule/supplied/protectStation
-
-datum/design/quarantine_module
- name = "AI Module (Quarantine)"
- desc = "Allows for the construction of a Quarantine AI Module."
- id = "quarantine_module"
- req_tech = list("programming" = 3, "biotech" = 2, "materials" = 4)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20, "$gold" = 100)
- build_path = /obj/item/weapon/aiModule/supplied/quarantine
-
-datum/design/oxygen_module
- name = "AI Module (OxygenIsToxicToHumans)"
- desc = "Allows for the construction of a Safeguard AI Module."
- id = "oxygen_module"
- req_tech = list("programming" = 3, "biotech" = 2, "materials" = 4)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20, "$gold" = 100)
- build_path = /obj/item/weapon/aiModule/supplied/oxygen
-
-datum/design/freeform_module
+/datum/design/freeform_module
name = "AI Module (Freeform)"
desc = "Allows for the construction of a Freeform AI Module."
id = "freeform_module"
@@ -55,17 +10,39 @@ datum/design/freeform_module
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20, "$gold" = 100)
build_path = /obj/item/weapon/aiModule/supplied/freeform
+ category = list("AI Modules")
+
+/datum/design/onehuman_module
+ name = "AI Module (OneHuman)"
+ desc = "Allows for the construction of a OneHuman AI Module."
+ id = "onehuman_module"
+ req_tech = list("programming" = 4, "materials" = 6)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100)
+ build_path = /obj/item/weapon/aiModule/zeroth/oneHuman
+ category = list("AI Modules")
+
+/datum/design/oxygen_module
+ name = "AI Module (OxygenIsToxicToHumans)"
+ desc = "Allows for the construction of a Safeguard AI Module."
+ id = "oxygen_module"
+ req_tech = list("programming" = 3, "biotech" = 2, "materials" = 4)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20, "$gold" = 100)
+ build_path = /obj/item/weapon/aiModule/supplied/oxygen
+ category = list("AI Modules")
-datum/design/reset_module
- name = "AI Module (Reset)"
- desc = "Allows for the construction of a Reset AI Module."
- id = "reset_module"
+/datum/design/protectstation_module
+ name = "AI Module (ProtectStation)"
+ desc = "Allows for the construction of a ProtectStation AI Module."
+ id = "protectstation_module"
req_tech = list("programming" = 3, "materials" = 6)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20, "$gold" = 100)
- build_path = /obj/item/weapon/aiModule/reset
+ build_path = /obj/item/weapon/aiModule/supplied/protectStation
+ category = list("AI Modules")
-datum/design/purge_module
+/datum/design/purge_module
name = "AI Module (Purge)"
desc = "Allows for the construction of a Purge AI Module."
id = "purge_module"
@@ -73,53 +50,39 @@ datum/design/purge_module
build_type = IMPRINTER
materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100)
build_path = /obj/item/weapon/aiModule/reset/purge
+ category = list("AI Modules")
-datum/design/freeformcore_module
- name = "Core AI Module (Freeform)"
- desc = "Allows for the construction of a Freeform AI Core Module."
- id = "freeformcore_module"
- req_tech = list("programming" = 4, "materials" = 6)
+/datum/design/quarantine_module
+ name = "AI Module (Quarantine)"
+ desc = "Allows for the construction of a Quarantine AI Module."
+ id = "quarantine_module"
+ req_tech = list("programming" = 3, "biotech" = 2, "materials" = 4)
build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100)
- build_path = /obj/item/weapon/aiModule/core/freeformcore
-
-datum/design/asimov
- name = "Core AI Module (Asimov)"
- desc = "Allows for the construction of a Asimov AI Core Module."
- id = "asimov_module"
+ materials = list("$glass" = 1000, "sacid" = 20, "$gold" = 100)
+ build_path = /obj/item/weapon/aiModule/supplied/quarantine
+ category = list("AI Modules")
+
+/datum/design/reset_module
+ name = "AI Module (Reset)"
+ desc = "Allows for the construction of a Reset AI Module."
+ id = "reset_module"
req_tech = list("programming" = 3, "materials" = 6)
build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100)
- build_path = /obj/item/weapon/aiModule/core/full/asimov
-
-datum/design/paladin_module
- name = "Core AI Module (P.A.L.A.D.I.N.)"
- desc = "Allows for the construction of a P.A.L.A.D.I.N. AI Core Module."
- id = "paladin_module"
- req_tech = list("programming" = 4, "materials" = 6)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100)
- build_path = /obj/item/weapon/aiModule/core/full/paladin
-
-datum/design/tyrant_module
- name = "Core AI Module (T.Y.R.A.N.T.)"
- desc = "Allows for the construction of a T.Y.R.A.N.T. AI Module."
- id = "tyrant_module"
- req_tech = list("programming" = 4, "syndicate" = 2, "materials" = 6)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100)
- build_path = /obj/item/weapon/aiModule/core/full/tyrant
-
-datum/design/corporate_module
- name = "Core AI Module (Corporate)"
- desc = "Allows for the construction of a Corporate AI Core Module."
- id = "corporate_module"
- req_tech = list("programming" = 4, "materials" = 6)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100)
- build_path = /obj/item/weapon/aiModule/core/full/corp
+ materials = list("$glass" = 1000, "sacid" = 20, "$gold" = 100)
+ build_path = /obj/item/weapon/aiModule/reset
+ category = list("AI Modules")
-datum/design/antimov_module
+/datum/design/safeguard_module
+ name = "AI Module (Safeguard)"
+ desc = "Allows for the construction of a Safeguard AI Module."
+ id = "safeguard_module"
+ req_tech = list("programming" = 3, "materials" = 4)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20, "$gold" = 100)
+ build_path = /obj/item/weapon/aiModule/supplied/safeguard
+ category = list("AI Modules")
+
+/datum/design/antimov_module
name = "Core AI Module (Antimov)"
desc = "Allows for the construction of a Antimov AI Core Module."
id = "antimov_module"
@@ -127,8 +90,29 @@ datum/design/antimov_module
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100)
build_path = /obj/item/weapon/aiModule/core/full/antimov
-
-datum/design/custom_module
+ category = list("AI Modules")
+
+/datum/design/asimov
+ name = "Core AI Module (Asimov)"
+ desc = "Allows for the construction of a Asimov AI Core Module."
+ id = "asimov_module"
+ req_tech = list("programming" = 3, "materials" = 6)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100)
+ build_path = /obj/item/weapon/aiModule/core/full/asimov
+ category = list("AI Modules")
+
+/datum/design/corporate_module
+ name = "Core AI Module (Corporate)"
+ desc = "Allows for the construction of a Corporate AI Core Module."
+ id = "corporate_module"
+ req_tech = list("programming" = 4, "materials" = 6)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100)
+ build_path = /obj/item/weapon/aiModule/core/full/corp
+ category = list("AI Modules")
+
+/datum/design/custom_module
name = "Core AI Module (Custom)"
desc = "Allows for the construction of a Custom AI Core Module."
id = "custom_module"
@@ -136,3 +120,34 @@ datum/design/custom_module
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100)
build_path = /obj/item/weapon/aiModule/core/full/custom
+ category = list("AI Modules")
+
+/datum/design/freeformcore_module
+ name = "Core AI Module (Freeform)"
+ desc = "Allows for the construction of a Freeform AI Core Module."
+ id = "freeformcore_module"
+ req_tech = list("programming" = 4, "materials" = 6)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100)
+ build_path = /obj/item/weapon/aiModule/core/freeformcore
+ category = list("AI Modules")
+
+/datum/design/paladin_module
+ name = "Core AI Module (P.A.L.A.D.I.N.)"
+ desc = "Allows for the construction of a P.A.L.A.D.I.N. AI Core Module."
+ id = "paladin_module"
+ req_tech = list("programming" = 4, "materials" = 6)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100)
+ build_path = /obj/item/weapon/aiModule/core/full/paladin
+ category = list("AI Modules")
+
+/datum/design/tyrant_module
+ name = "Core AI Module (T.Y.R.A.N.T.)"
+ desc = "Allows for the construction of a T.Y.R.A.N.T. AI Module."
+ id = "tyrant_module"
+ req_tech = list("programming" = 4, "syndicate" = 2, "materials" = 6)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100)
+ build_path = /obj/item/weapon/aiModule/core/full/tyrant
+ category = list("AI Modules")
diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm
new file mode 100644
index 00000000000..238ba566cb6
--- /dev/null
+++ b/code/modules/research/designs/autolathe_designs.dm
@@ -0,0 +1,477 @@
+///////////////////////////////////
+//////////Autolathe Designs ///////
+///////////////////////////////////
+
+/datum/design/analyzer
+ name = "Analyzer"
+ id = "analyzer"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 30, "$glass" = 20)
+ build_path = /obj/item/device/analyzer
+ category = list("initial","Tools")
+
+/datum/design/bucket
+ name = "Bucket"
+ id = "bucket"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 200)
+ build_path = /obj/item/weapon/reagent_containers/glass/bucket
+ category = list("initial","Tools")
+
+/datum/design/crowbar
+ name = "Pocket crowbar"
+ id = "crowbar"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 50)
+ build_path = /obj/item/weapon/crowbar
+ category = list("initial","Tools")
+
+/datum/design/extinguisher
+ name = "Fire Extinguisher"
+ id = "extinguisher"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 90)
+ build_path = /obj/item/weapon/extinguisher
+ category = list("initial","Tools")
+
+/datum/design/flashlight
+ name = "Flashlight"
+ id = "flashlight"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 50, "$glass" = 20)
+ build_path = /obj/item/device/flashlight
+ category = list("initial","Tools")
+
+/datum/design/multitool
+ name = "Multitool"
+ id = "multitool"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 50, "$glass" = 20)
+ build_path = /obj/item/device/multitool
+ category = list("initial","Tools")
+
+/datum/design/screwdriver
+ name = "Screwdriver"
+ id = "screwdriver"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 75)
+ build_path = /obj/item/weapon/screwdriver
+ category = list("initial","Tools")
+
+/datum/design/tscanner
+ name = "T-ray Scanner"
+ id = "tscanner"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 150)
+ build_path = /obj/item/device/t_scanner
+ category = list("initial","Tools")
+
+/datum/design/welding_helmet
+ name = "Welding Helmet"
+ id = "welding_helmet"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 1750, "$glass" = 400)
+ build_path = /obj/item/clothing/head/welding
+ category = list("initial","Tools")
+
+/datum/design/weldingtool
+ name = "Welding Tool"
+ id = "welding_tool"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 70, "$glass" = 20)
+ build_path = /obj/item/weapon/weldingtool
+ category = list("initial","Tools")
+
+/datum/design/wirecutters
+ name = "Wirecutters"
+ id = "wirecutters"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 80)
+ build_path = /obj/item/weapon/wirecutters
+ category = list("initial","Tools")
+
+/datum/design/wrench
+ name = "Wrench"
+ id = "wrench"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 150)
+ build_path = /obj/item/weapon/wrench
+ category = list("initial","Tools")
+
+/datum/design/airalarm_electronics
+ name = "Air Alarm Electronics"
+ id = "airalarm_electronics"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 50, "$glass" = 50)
+ build_path = /obj/item/weapon/airalarm_electronics
+ category = list("initial", "Electronics")
+
+/datum/design/airlock_board
+ name = "Airlock Electronics"
+ id = "airlock_board"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 50, "$glass" = 50)
+ build_path = /obj/item/weapon/airlock_electronics
+ category = list("initial", "Electronics")
+
+/datum/design/console_screen
+ name = "Console Screen"
+ id = "console_screen"
+ build_type = AUTOLATHE
+ materials = list("$glass" = 200)
+ build_path = /obj/item/weapon/stock_parts/console_screen
+ category = list("initial", "Electronics")
+
+/datum/design/firealarm_electronics
+ name = "Fire Alarm Electronics"
+ id = "firealarm_electronics"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 50, "$glass" = 50)
+ build_path = /obj/item/weapon/firealarm_electronics
+ category = list("initial", "Electronics")
+
+/datum/design/igniter
+ name = "Igniter"
+ id = "igniter"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 500, "$glass" = 50)
+ build_path = /obj/item/device/assembly/igniter
+ category = list("initial", "Miscellaneous")
+
+/datum/design/infrared_emitter
+ name = "Infrared Emitter"
+ id = "infrared_emitter"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 1000, "$glass" = 500)
+ build_path = /obj/item/device/assembly/infra
+ category = list("initial", "Miscellaneous")
+
+/datum/design/kitchen_knife
+ name = "Kitchen knife"
+ id = "kitchen_knife"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 12000)
+ build_path = /obj/item/weapon/kitchenknife
+ category = list("initial","Miscellaneous")
+
+/datum/design/pipe_painter
+ name = "Pipe Painter"
+ id = "pipe_painter"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 5000, "$glass" = 2000)
+ build_path = /obj/item/device/pipe_painter
+ category = list("initial", "Miscellaneous")
+
+/datum/design/prox_sensor
+ name = "Proximity sensor"
+ id = "prox_sensor"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 800, "$glass" = 200)
+ build_path = /obj/item/device/assembly/prox_sensor
+ category = list("initial", "Miscellaneous")
+
+/datum/design/timer
+ name = "Timer"
+ id = "timer"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 500, "$glass" = 50)
+ build_path = /obj/item/device/assembly/timer
+ category = list("initial", "Miscellaneous")
+
+/datum/design/recorder
+ name = "Universal Recorder"
+ id = "recorder"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 60, "$glass" = 30)
+ build_path = /obj/item/device/taperecorder
+ category = list("initial", "Miscellaneous")
+
+/datum/design/voice_analyser
+ name = "Voice analyser"
+ id = "voice_analyser"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 500, "$glass" = 50)
+ build_path = /obj/item/device/assembly/voice
+ category = list("initial", "Miscellaneous")
+
+/datum/design/camera_assembly
+ name = "Camera Assembly"
+ id = "camera_assembly"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 400, "$glass" = 250)
+ build_path = /obj/item/weapon/camera_assembly
+ category = list("initial", "Construction")
+
+/datum/design/glass
+ name = "Glass"
+ id = "glass"
+ build_type = AUTOLATHE
+ materials = list("$glass" = MINERAL_MATERIAL_AMOUNT)
+ build_path = /obj/item/stack/sheet/glass
+ category = list("initial","Construction")
+
+/datum/design/light_bulb
+ name = "Light Bulb"
+ id = "light_bulb"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 60, "$glass" = 100)
+ build_path = /obj/item/weapon/light/bulb
+ category = list("initial", "Construction")
+
+/datum/design/light_tube
+ name = "Light Tube"
+ id = "light_tube"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 60, "$glass" = 100)
+ build_path = /obj/item/weapon/light/tube
+ category = list("initial", "Construction")
+
+/datum/design/metal
+ name = "Metal"
+ id = "metal"
+ build_type = AUTOLATHE
+ materials = list("$metal" = MINERAL_MATERIAL_AMOUNT)
+ build_path = /obj/item/stack/sheet/metal
+ category = list("initial","Construction")
+
+/datum/design/rcd_ammo
+ name = "Compressed Matter Cardridge"
+ id = "rcd_ammo"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 16000, "$glass"=8000)
+ build_path = /obj/item/weapon/rcd_ammo
+ category = list("initial","Construction")
+
+/datum/design/rglass
+ name = "Reinforced Glass"
+ id = "rglass"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 1000, "$glass" = MINERAL_MATERIAL_AMOUNT)
+ build_path = /obj/item/stack/sheet/rglass
+ category = list("initial","Construction")
+
+/datum/design/rods
+ name = "Metal Rod"
+ id = "rods"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 1000)
+ build_path = /obj/item/stack/rods
+ category = list("initial","Construction")
+
+/datum/design/beaker
+ name = "Beaker"
+ id = "beaker"
+ build_type = AUTOLATHE
+ materials = list("$glass" = 500)
+ build_path = /obj/item/weapon/reagent_containers/glass/beaker
+ category = list("initial", "Medical")
+
+/datum/design/cautery
+ name = "Cautery"
+ id = "cautery"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 2500, "$glass" = 750)
+ build_path = /obj/item/weapon/cautery
+ category = list("initial", "Medical")
+
+/datum/design/circular_saw
+ name = "Circular Saw"
+ id = "circular_saw"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 10000, "$glass" = 6000)
+ build_path = /obj/item/weapon/circular_saw
+ category = list("initial", "Medical")
+
+/datum/design/hemostat
+ name = "Hemostat"
+ id = "hemostat"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 5000, "$glass" = 2500)
+ build_path = /obj/item/weapon/hemostat
+ category = list("initial", "Medical")
+
+/datum/design/large_beaker
+ name = "Large Beaker"
+ id = "large_beaker"
+ build_type = AUTOLATHE
+ materials = list("$glass" = 2500)
+ build_path = /obj/item/weapon/reagent_containers/glass/beaker/large
+ category = list("initial", "Medical")
+
+/datum/design/retractor
+ name = "Retractor"
+ id = "retractor"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 6000, "$glass" = 3000)
+ build_path = /obj/item/weapon/
+ category = list("initial", "Medical")
+
+/datum/design/scalpel
+ name = "Scalpel"
+ id = "scalpel"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 4000, "$glass" = 1000)
+ build_path = /obj/item/weapon/scalpel
+ category = list("initial", "Medical")
+
+/datum/design/surgicaldrill
+ name = "Surgical Drill"
+ id = "surgicaldrill"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 10000, "$glass" = 6000)
+ build_path = /obj/item/weapon/surgicaldrill
+ category = list("initial", "Medical")
+
+/datum/design/syringe
+ name = "Syringe"
+ id = "syringe"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 10, "$glass" = 20)
+ build_path = /obj/item/weapon/reagent_containers/syringe
+ category = list("initial", "Medical")
+
+/datum/design/beanbag_slug
+ name = "Beanbag Slug"
+ id = "beanbag_slug"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 250)
+ build_path = /obj/item/ammo_casing/shotgun/beanbag
+ category = list("initial", "Security")
+
+/datum/design/c38
+ name = "Speed Loader (.38)"
+ id = "c38"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 30000)
+ build_path = /obj/item/ammo_box/c38
+ category = list("initial", "Security")
+
+/datum/design/radio_headset
+ name = "Radio Headset"
+ id = "radio_headset"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 75)
+ build_path = /obj/item/device/radio/headset
+ category = list("initial", "Communication")
+
+/datum/design/signaler
+ name = "Remote Signaling Device"
+ id = "signaler"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 400, "$glass" = 120)
+ build_path = /obj/item/device/assembly/signaler
+ category = list("initial", "Communication")
+
+/datum/design/bounced_radio
+ name = "Station Bounced Radio"
+ id = "bounced_radio"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 75, "$glass" = 25)
+ build_path = /obj/item/device/radio/off
+ category = list("initial", "Communication")
+
+//hacked autolathe recipes
+/datum/design/c45
+ name = "Ammo Box (.45)"
+ id = "c45"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 30000)
+ build_path = /obj/item/ammo_box/c45
+ category = list("hacked", "Security")
+
+/datum/design/a357
+ name = "Ammo Box (.357)"
+ id = "a357"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 30000)
+ build_path = /obj/item/ammo_box/a357
+ category = list("hacked", "Security")
+
+/datum/design/c9mm
+ name = "Ammo Box (9mm)"
+ id = "c9mm"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 30000)
+ build_path = /obj/item/ammo_box/c9mm
+ category = list("hacked", "Security")
+
+/datum/design/c10mm
+ name = "Ammo Box (10mm)"
+ id = "c10mm"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 30000)
+ build_path = /obj/item/ammo_box/c10mm
+ category = list("hacked", "Security")
+
+/datum/design/buckshot_shell
+ name = "Buckshot Shell"
+ id = "buckshot_shell"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 4000)
+ build_path = /obj/item/ammo_casing/shotgun/buckshot
+ category = list("hacked", "Security")
+
+/datum/design/electropack
+ name = "Electropack"
+ id = "electropack"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 10000, "$glass" = 2500)
+ build_path = /obj/item/device/radio/electropack
+ category = list("hacked", "Tools")
+
+/datum/design/flamethrower
+ name = "Flamethrower"
+ id = "flamethrower"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 500)
+ build_path = /obj/item/weapon/flamethrower/full
+ category = list("hacked", "Weapons and ammo")
+
+/datum/design/handcuffs
+ name = "Handcuffs"
+ id = "handcuffs"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 500)
+ build_path = /obj/item/weapon/handcuffs
+ category = list("hacked", "Security")
+
+/datum/design/incendiary_slug
+ name = "Incendiary Slug"
+ id = "incendiary_slug"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 4000)
+ build_path = /obj/item/ammo_casing/shotgun/incendiary
+ category = list("hacked", "Security")
+
+/datum/design/large_welding_tool
+ name = "Industrial Welding Tool"
+ id = "large_welding_tool"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 70, "$glass" = 60)
+ build_path = /obj/item/weapon/weldingtool/largetank
+ category = list("hacked", "Tools")
+
+/datum/design/rcd
+ name = "Rapid Construction Device (RCD)"
+ id = "rcd"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 30000)
+ build_path = /obj/item/weapon/rcd
+ category = list("hacked", "Construction")
+
+/datum/design/shotgun_dart
+ name = "Shotgun Dart"
+ id = "shotgun_dart"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 4000)
+ build_path = /obj/item/ammo_casing/shotgun/dart
+ category = list("hacked", "Security")
+
+/datum/design/shotgun_slug
+ name = "Shotgun Slug"
+ id = "shotgun_slug"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 4000)
+ build_path = /obj/item/ammo_casing/shotgun
+ category = list("hacked", "Security")
+
\ No newline at end of file
diff --git a/code/modules/research/designs/comp_board_designs.dm b/code/modules/research/designs/comp_board_designs.dm
index 62e10121644..68ca1c27660 100644
--- a/code/modules/research/designs/comp_board_designs.dm
+++ b/code/modules/research/designs/comp_board_designs.dm
@@ -2,16 +2,7 @@
//////////Computer Boards//////////
///////////////////////////////////
-datum/design/seccamera
- name = "Console Board (Camera Monitor)"
- desc = "Allows for the construction of circuit boards used to build camera monitors."
- id = "seccamera"
- req_tech = list("programming" = 2)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/camera
-
-datum/design/aicore
+/datum/design/aicore
name = "Console Board (AI Core)"
desc = "Allows for the construction of circuit boards used to build new AI cores."
id = "aicore"
@@ -19,269 +10,9 @@ datum/design/aicore
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/aicore
-
-datum/design/aiupload
- name = "Console Board (AI Upload)"
- desc = "Allows for the construction of circuit boards used to build an AI Upload Console."
- id = "aiupload"
- req_tech = list("programming" = 4)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/aiupload
-
-datum/design/borgupload
- name = "Console Board (Cyborg Upload)"
- desc = "Allows for the construction of circuit boards used to build a Cyborg Upload Console."
- id = "borgupload"
- req_tech = list("programming" = 4)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/borgupload
-
-datum/design/med_data
- name = "Console Board (Medical Records)"
- desc = "Allows for the construction of circuit boards used to build a medical records console."
- id = "med_data"
- req_tech = list("programming" = 2)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/med_data
-
-datum/design/operating
- name = "Console Board (Operating Computer)"
- desc = "Allows for the construction of circuit boards used to build an operating computer console."
- id = "operating"
- req_tech = list("programming" = 2, "biotech" = 2)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/operating
-
-datum/design/pandemic
- name = "Console Board (PanD.E.M.I.C. 2200)"
- desc = "Allows for the construction of circuit boards used to build a PanD.E.M.I.C. 2200 console."
- id = "pandemic"
- req_tech = list("programming" = 2, "biotech" = 2)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/pandemic
-
-datum/design/scan_console
- name = "Console Board (DNA Machine)"
- desc = "Allows for the construction of circuit boards used to build a new DNA scanning console."
- id = "scan_console"
- req_tech = list("programming" = 2, "biotech" = 3)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/scan_consolenew
-
-datum/design/comconsole
- name = "Console Board (Communications Console)"
- desc = "Allows for the construction of circuit boards used to build a communications console."
- id = "comconsole"
- req_tech = list("programming" = 2, "magnets" = 2)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/communications
-
-datum/design/idcardconsole
- name = "Console Board (ID Computer)"
- desc = "Allows for the construction of circuit boards used to build an ID computer."
- id = "idcardconsole"
- req_tech = list("programming" = 2)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/card
-
-datum/design/crewconsole
- name = "Console Board (Crew Monitoring Computer)"
- desc = "Allows for the construction of circuit boards used to build a Crew monitoring computer."
- id = "crewconsole"
- req_tech = list("programming" = 3, "magnets" = 2, "biotech" = 2)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/crew
-
-datum/design/teleconsole
- name = "Console Board (Teleporter Console)"
- desc = "Allows for the construction of circuit boards used to build a teleporter control console."
- id = "teleconsole"
- req_tech = list("programming" = 3, "bluespace" = 2)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/teleporter
-
-datum/design/secdata
- name = "Console Board (Security Records Console)"
- desc = "Allows for the construction of circuit boards used to build a security records console."
- id = "secdata"
- req_tech = list("programming" = 2)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/secure_data
-
-datum/design/atmosalerts
- name = "Console Board (Atmosphere Alert)"
- desc = "Allows for the construction of circuit boards used to build an atmosphere alert console.."
- id = "atmosalerts"
- req_tech = list("programming" = 2)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/atmos_alert
-
-datum/design/air_management
- name = "Console Board (Atmospheric Monitor)"
- desc = "Allows for the construction of circuit boards used to build an Atmospheric Monitor."
- id = "air_management"
- req_tech = list("programming" = 2)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/air_management
-
-datum/design/robocontrol
- name = "Console Board (Robotics Control Console)"
- desc = "Allows for the construction of circuit boards used to build a Robotics Control console."
- id = "robocontrol"
- req_tech = list("programming" = 4)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/robotics
-
-datum/design/dronecontrol
- name = "Console Board (Drone Control Console)"
- desc = "Allows for the construction of circuit boards used to build a Drone Control console."
- id = "dronecontrol"
- req_tech = list("programming" = 4)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/drone_control
-
-datum/design/clonecontrol
- name = "Console Board (Cloning Machine Console)"
- desc = "Allows for the construction of circuit boards used to build a new Cloning Machine console."
- id = "clonecontrol"
- req_tech = list("programming" = 3, "biotech" = 3)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/cloning
-
-datum/design/powermonitor
- name = "Console Board (Power Monitor)"
- desc = "Allows for the construction of circuit boards used to build a new power monitor"
- id = "powermonitor"
- req_tech = list("programming" = 2)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/powermonitor
-
-datum/design/solarcontrol
- name = "Console Board (Solar Control)"
- desc = "Allows for the construction of circuit boards used to build a solar control console"
- id = "solarcontrol"
- req_tech = list("programming" = 2, "powerstorage" = 2)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/solar_control
-
-datum/design/prisonmanage
- name = "Console Board (Prisoner Management Console)"
- desc = "Allows for the construction of circuit boards used to build a prisoner management console."
- id = "prisonmanage"
- req_tech = list("programming" = 2)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/prisoner
-
-datum/design/mechacontrol
- name = "Console Board (Exosuit Control Console)"
- desc = "Allows for the construction of circuit boards used to build an exosuit control console."
- id = "mechacontrol"
- req_tech = list("programming" = 3)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/mecha_control
-
-datum/design/mechapower
- name = "Console Board (Mech Bay Power Control Console)"
- desc = "Allows for the construction of circuit boards used to build a mech bay power control console."
- id = "mechapower"
- req_tech = list("programming" = 2, "powerstorage" = 3)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/mech_bay_power_console
-
-datum/design/rdconsole
- name = "Console Board (R&D Console)"
- desc = "Allows for the construction of circuit boards used to build a new R&D console."
- id = "rdconsole"
- req_tech = list("programming" = 4)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/rdconsole
-
-datum/design/ordercomp
- name = "Console Board (Supply Ordering Console)"
- desc = "Allows for the construction of circuit boards used to build a supply ordering console."
- id = "ordercomp"
- req_tech = list("programming" = 2)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/ordercomp
-
-datum/design/supplycomp
- name = "Console Board (Supply Shuttle Console)"
- desc = "Allows for the construction of circuit boards used to build a supply shuttle console."
- id = "supplycomp"
- req_tech = list("programming" = 3)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/supplycomp
-
-datum/design/comm_monitor
- name = "Console Board (Telecommunications Monitoring Console)"
- desc = "Allows for the construction of circuit boards used to build a telecommunications monitor."
- id = "comm_monitor"
- req_tech = list("programming" = 3)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/comm_monitor
-
-datum/design/comm_server
- name = "Console Board (Telecommunications Server Monitoring Console)"
- desc = "Allows for the construction of circuit boards used to build a telecommunication server browser and monitor."
- id = "comm_server"
- req_tech = list("programming" = 3)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/comm_server
-
-datum/design/message_monitor
- name = "Console Board (Messaging Monitor Console)"
- desc = "Allows for the construction of circuit boards used to build a messaging monitor console."
- id = "message_monitor"
- req_tech = list("programming" = 5)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/message_monitor
-
-datum/design/comm_traffic
- name = "Console Board (Telecommunications Traffic Control Console)"
- desc = "Allows for the construction of circuit boards used to build a telecommunications traffic control console."
- id = "comm_traffic"
- req_tech = list("programming" = 3)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/comm_traffic
-
-datum/design/telesci_console
- name = "Console Board (Telepad Control Console Board)"
- desc = "Allows for the construction of circuit boards used to build a telescience console."
- id = "telesci_console"
- req_tech = list("programming" = 3, "bluespace" = 2)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/telesci_console
-
-datum/design/aifixer
+ category = list("Computer Boards")
+
+/datum/design/aifixer
name = "Console Board (AI Integrity Restorer)"
desc = "Allows for the construction of circuit boards used to build an AI Integrity Restorer."
id = "aifixer"
@@ -289,12 +20,314 @@ datum/design/aifixer
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/aifixer
+ category = list("Computer Boards")
+
+/datum/design/aiupload
+ name = "Console Board (AI Upload)"
+ desc = "Allows for the construction of circuit boards used to build an AI Upload Console."
+ id = "aiupload"
+ req_tech = list("programming" = 4)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/aiupload
+ category = list("Computer Boards")
-datum/design/rdservercontrol
+/datum/design/atmosalerts
+ name = "Console Board (Atmospheric Alerts)"
+ desc = "Allows for the construction of circuit boards used to build an atmosphere alert console.."
+ id = "atmosalerts"
+ req_tech = list("programming" = 2)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/atmos_alert
+ category = list("Computer Boards")
+
+/datum/design/air_management
+ name = "Console Board (Atmospheric Monitor)"
+ desc = "Allows for the construction of circuit boards used to build an Atmospheric Monitor."
+ id = "air_management"
+ req_tech = list("programming" = 2)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/air_management
+ category = list("Computer Boards")
+
+/datum/design/seccamera
+ name = "Console Board (Camera Monitor)"
+ desc = "Allows for the construction of circuit boards used to build camera monitors."
+ id = "seccamera"
+ req_tech = list("programming" = 2)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/camera
+ category = list("Computer Boards")
+
+/datum/design/clonecontrol
+ name = "Console Board (Cloning Machine Console)"
+ desc = "Allows for the construction of circuit boards used to build a new Cloning Machine console."
+ id = "clonecontrol"
+ req_tech = list("programming" = 3, "biotech" = 3)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/cloning
+ category = list("Computer Boards")
+
+/datum/design/comconsole
+ name = "Console Board (Communications Console)"
+ desc = "Allows for the construction of circuit boards used to build a communications console."
+ id = "comconsole"
+ req_tech = list("programming" = 2, "magnets" = 2)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/communications
+ category = list("Computer Boards")
+
+/datum/design/crewconsole
+ name = "Console Board (Crew Monitoring Computer)"
+ desc = "Allows for the construction of circuit boards used to build a Crew monitoring computer."
+ id = "crewconsole"
+ req_tech = list("programming" = 3, "magnets" = 2, "biotech" = 2)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/crew
+ category = list("Computer Boards")
+
+/datum/design/borgupload
+ name = "Console Board (Cyborg Upload)"
+ desc = "Allows for the construction of circuit boards used to build a Cyborg Upload Console."
+ id = "borgupload"
+ req_tech = list("programming" = 4)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/borgupload
+ category = list("Computer Boards")
+
+/datum/design/scan_console
+ name = "Console Board (DNA Machine)"
+ desc = "Allows for the construction of circuit boards used to build a new DNA scanning console."
+ id = "scan_console"
+ req_tech = list("programming" = 2, "biotech" = 3)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/scan_consolenew
+ category = list("Computer Boards")
+
+/datum/design/dronecontrol
+ name = "Console Board (Drone Control Console)"
+ desc = "Allows for the construction of circuit boards used to build a Drone Control console."
+ id = "dronecontrol"
+ req_tech = list("programming" = 4)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/drone_control
+ category = list("Computer Boards")
+
+/datum/design/mechacontrol
+ name = "Console Board (Exosuit Control Console)"
+ desc = "Allows for the construction of circuit boards used to build an exosuit control console."
+ id = "mechacontrol"
+ req_tech = list("programming" = 3)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/mecha_control
+ category = list("Computer Boards")
+
+/datum/design/idcardconsole
+ name = "Console Board (ID Computer)"
+ desc = "Allows for the construction of circuit boards used to build an ID computer."
+ id = "idcardconsole"
+ req_tech = list("programming" = 2)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/card
+ category = list("Computer Boards")
+
+/datum/design/mechapower
+ name = "Console Board (Mech Bay Power Control Console)"
+ desc = "Allows for the construction of circuit boards used to build a mech bay power control console."
+ id = "mechapower"
+ req_tech = list("programming" = 2, "powerstorage" = 3)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/mech_bay_power_console
+ category = list("Computer Boards")
+
+/datum/design/med_data
+ name = "Console Board (Medical Records)"
+ desc = "Allows for the construction of circuit boards used to build a medical records console."
+ id = "med_data"
+ req_tech = list("programming" = 2)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/med_data
+ category = list("Computer Boards")
+
+/datum/design/message_monitor
+ name = "Console Board (Messaging Monitor Console)"
+ desc = "Allows for the construction of circuit boards used to build a messaging monitor console."
+ id = "message_monitor"
+ req_tech = list("programming" = 5)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/message_monitor
+ category = list("Computer Boards")
+
+/datum/design/operating
+ name = "Console Board (Operating Computer)"
+ desc = "Allows for the construction of circuit boards used to build an operating computer console."
+ id = "operating"
+ req_tech = list("programming" = 2, "biotech" = 2)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/operating
+ category = list("Computer Boards")
+
+/datum/design/pandemic
+ name = "Console Board (PanD.E.M.I.C. 2200)"
+ desc = "Allows for the construction of circuit boards used to build a PanD.E.M.I.C. 2200 console."
+ id = "pandemic"
+ req_tech = list("programming" = 2, "biotech" = 2)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/pandemic
+ category = list("Computer Boards")
+
+/datum/design/powermonitor
+ name = "Console Board (Power Monitor)"
+ desc = "Allows for the construction of circuit boards used to build a new power monitor"
+ id = "powermonitor"
+ req_tech = list("programming" = 2)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/powermonitor
+ category = list("Computer Boards")
+
+/datum/design/prisonmanage
+ name = "Console Board (Prisoner Management Console)"
+ desc = "Allows for the construction of circuit boards used to build a prisoner management console."
+ id = "prisonmanage"
+ req_tech = list("programming" = 2)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/prisoner
+ category = list("Computer Boards")
+
+/datum/design/rdconsole
+ name = "Console Board (R&D Console)"
+ desc = "Allows for the construction of circuit boards used to build a new R&D console."
+ id = "rdconsole"
+ req_tech = list("programming" = 4)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/rdconsole
+ category = list("Computer Boards")
+
+/datum/design/rdservercontrol
name = "Console Board (R&D Server Control Console)"
desc = "The circuit board for a R&D Server Control Console"
id = "rdservercontrol"
req_tech = list("programming" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/rdservercontrol
\ No newline at end of file
+ build_path = /obj/item/weapon/circuitboard/rdservercontrol
+ category = list("Computer Boards")
+
+/datum/design/robocontrol
+ name = "Console Board (Robotics Control Console)"
+ desc = "Allows for the construction of circuit boards used to build a Robotics Control console."
+ id = "robocontrol"
+ req_tech = list("programming" = 4)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/robotics
+ category = list("Computer Boards")
+
+/datum/design/secdata
+ name = "Console Board (Security Records Console)"
+ desc = "Allows for the construction of circuit boards used to build a security records console."
+ id = "secdata"
+ req_tech = list("programming" = 2)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/secure_data
+ category = list("Computer Boards")
+
+/datum/design/solarcontrol
+ name = "Console Board (Solar Control)"
+ desc = "Allows for the construction of circuit boards used to build a solar control console"
+ id = "solarcontrol"
+ req_tech = list("programming" = 2, "powerstorage" = 2)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/solar_control
+ category = list("Computer Boards")
+
+/datum/design/ordercomp
+ name = "Console Board (Supply Ordering Console)"
+ desc = "Allows for the construction of circuit boards used to build a supply ordering console."
+ id = "ordercomp"
+ req_tech = list("programming" = 2)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/ordercomp
+ category = list("Computer Boards")
+
+/datum/design/supplycomp
+ name = "Console Board (Supply Shuttle Console)"
+ desc = "Allows for the construction of circuit boards used to build a supply shuttle console."
+ id = "supplycomp"
+ req_tech = list("programming" = 3)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/supplycomp
+ category = list("Computer Boards")
+
+/datum/design/comm_monitor
+ name = "Console Board (Telecommunications Monitoring Console)"
+ desc = "Allows for the construction of circuit boards used to build a telecommunications monitor."
+ id = "comm_monitor"
+ req_tech = list("programming" = 3)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/comm_monitor
+ category = list("Computer Boards")
+
+/datum/design/comm_server
+ name = "Console Board (Telecommunications Server Monitoring Console)"
+ desc = "Allows for the construction of circuit boards used to build a telecommunication server browser and monitor."
+ id = "comm_server"
+ req_tech = list("programming" = 3)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/comm_server
+ category = list("Computer Boards")
+
+/datum/design/comm_traffic
+ name = "Console Board (Telecommunications Traffic Control Console)"
+ desc = "Allows for the construction of circuit boards used to build a telecommunications traffic control console."
+ id = "comm_traffic"
+ req_tech = list("programming" = 3)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/comm_traffic
+ category = list("Computer Boards")
+
+/datum/design/telesci_console
+ name = "Console Board (Telepad Control Console)"
+ desc = "Allows for the construction of circuit boards used to build a telescience console."
+ id = "telesci_console"
+ req_tech = list("programming" = 3, "bluespace" = 2)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/telesci_console
+ category = list("Computer Boards")
+
+/datum/design/teleconsole
+ name = "Console Board (Teleporter Console)"
+ desc = "Allows for the construction of circuit boards used to build a teleporter control console."
+ id = "teleconsole"
+ req_tech = list("programming" = 3, "bluespace" = 2)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/teleporter
+ category = list("Computer Boards")
\ No newline at end of file
diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm
index bbd989182c1..545c447709d 100644
--- a/code/modules/research/designs/machine_designs.dm
+++ b/code/modules/research/designs/machine_designs.dm
@@ -2,124 +2,7 @@
//////////Machine Boards///////////
///////////////////////////////////
-datum/design/clonepod
- name = "Machine Board (Cloning Pod)"
- desc = "Allows for the construction of circuit boards used to build a Cloning Pod."
- id = "clonepod"
- req_tech = list("programming" = 3, "biotech" = 3)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/clonepod
-
-datum/design/clonescanner
- name = "Machine Board (Cloning Scanner)"
- desc = "Allows for the construction of circuit boards used to build a Cloning Scanner."
- id = "clonescanner"
- req_tech = list("programming" = 3, "biotech" = 3)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/clonescanner
-
-datum/design/teleport_hub
- name = "Machine Board (Teleportation Hub Board)"
- desc = "Allows for the construction of circuit boards used to build a Teleportation Hub."
- id = "tele_hub"
- req_tech = list("programming" = 3, "bluespace" = 5, "materials" = 4, "engineering" = 5)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/teleporter_hub
-
-datum/design/teleport_station
- name = "Machine Board (Teleportation Station Board)"
- desc = "Allows for the construction of circuit boards used to build a Teleporter Station."
- id = "tele_station"
- req_tech = list("programming" = 4, "bluespace" = 4, "engineering" = 4)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/teleporter_station
-
-datum/design/telepad
- name = "Machine Board (Telepad Board)"
- desc = "Allows for the construction of circuit boards used to build a Telepad."
- id = "telepad"
- req_tech = list("programming" = 4, "bluespace" = 4, "materials" = 3, "engineering" = 3)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/telesci_pad
-
-datum/design/sleeper
- name = "Machine Board (Sleeper Board)"
- desc = "Allows for the construction of circuit boards used to build a Sleeper."
- id = "sleeper"
- req_tech = list("programming" = 3, "biotech" = 2, "materials" = 3, "engineering" = 3)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/sleeper
-
-datum/design/sleep_console
- name = "Machine Board (Sleeper Console)"
- desc = "Allows for the construction of circuit boards used to build a Sleeper Console."
- id = "sleeper"
- req_tech = list("programming" = 3, "biotech" = 2, "materials" = 3, "engineering" = 3)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/sleep_console
-
-datum/design/bodyscanner
- name = "Machine Board (Body Scanner Board)"
- desc = "Allows for the construction of circuit boards used to build a Body Scanner."
- id = "sleeper"
- req_tech = list("programming" = 3, "biotech" = 2, "materials" = 3, "engineering" = 3)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/bodyscanner
-
-datum/design/sleep_console
- name = "Machine Board (Body Scanner Console)"
- desc = "Allows for the construction of circuit boards used to build a Body Scanner Console."
- id = "sleeper"
- req_tech = list("programming" = 3, "biotech" = 2, "materials" = 3, "engineering" = 3)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/bodyscanner_console
-
-datum/design/cryotube
- name = "Machine Board (Cryotube Board)"
- desc = "Allows for the construction of circuit boards used to build a Cryotube."
- id = "cryotube"
- req_tech = list("programming" = 4, "biotech" = 3, "engineering" = 4)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/cryo_tube
-
-datum/design/arcadebattle
- name = "Machine Board (Battle Arcade Machine)"
- desc = "Allows for the construction of circuit boards used to build a new Arcade Machine."
- id = "arcademachinebattle"
- req_tech = list("programming" = 1)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/arcade/battle
-
-datum/design/orion_trail
- name = "Machine Board (Orion Trail Arcade Machine)"
- desc = "Allows for the construction of circuit boards used to build a new Orion Trail machine."
- id = "arcademachineonion"
- req_tech = list("programming" = 2)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/arcade/orion_trail
-
-datum/design/smes
- name = "Machine Board (SMES)"
- desc = "The circuit board for a SMES."
- id = "smes"
- req_tech = list("programming" = 4, "power" = 5, "engineering" = 4)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/smes
-
-datum/design/thermomachine
+/datum/design/thermomachine
name = "Machine Board (Freezer/Heater)"
desc = "The circuit board for a Freezer/Heater."
id = "thermomachine"
@@ -127,35 +10,99 @@ datum/design/thermomachine
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/thermomachine
+ category = list ("Engineering Machinery")
-datum/design/biogenerator
- name = "Machine Board (Biogenerator)"
- desc = "The circuit board for a Biogenerator."
- id = "biogenerator"
- req_tech = list("programming" = 3, "biotech" = 2, "materials" = 3)
+/datum/design/smes
+ name = "Machine Board (SMES)"
+ desc = "The circuit board for a SMES."
+ id = "smes"
+ req_tech = list("programming" = 4, "power" = 5, "engineering" = 4)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/biogenerator
-
-datum/design/hydroponics
- name = "Machine Board (Hydroponics Tray)"
- desc = "The circuit board for a Hydroponics Tray."
- id = "hydro_tray"
- req_tech = list("programming" = 1, "biotech" = 1)
+ build_path = /obj/item/weapon/circuitboard/smes
+ category = list ("Engineering Machinery")
+
+/datum/design/telepad
+ name = "Machine Board (Telepad Board)"
+ desc = "Allows for the construction of circuit boards used to build a Telepad."
+ id = "telepad"
+ req_tech = list("programming" = 4, "bluespace" = 4, "materials" = 3, "engineering" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/hydroponics
-
-datum/design/microwave
- name = "Machine Board (Microwave)"
- desc = "The circuit board for a Microwave."
- id = "microwave"
- req_tech = list("programming" = 1)
+ build_path = /obj/item/weapon/circuitboard/telesci_pad
+ category = list ("Teleportation Machinery")
+
+/datum/design/teleport_hub
+ name = "Machine Board (Teleportation Hub)"
+ desc = "Allows for the construction of circuit boards used to build a Teleportation Hub."
+ id = "tele_hub"
+ req_tech = list("programming" = 3, "bluespace" = 5, "materials" = 4, "engineering" = 5)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/microwave
+ build_path = /obj/item/weapon/circuitboard/teleporter_hub
+ category = list ("Teleportation Machinery")
+
+/datum/design/teleport_station
+ name = "Machine Board (Teleportation Station)"
+ desc = "Allows for the construction of circuit boards used to build a Teleporter Station."
+ id = "tele_station"
+ req_tech = list("programming" = 4, "bluespace" = 4, "engineering" = 4)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/teleporter_station
+ category = list ("Teleportation Machinery")
+
+/datum/design/bodyscanner
+ name = "Machine Board (Body Scanner)"
+ desc = "Allows for the construction of circuit boards used to build a Body Scanner."
+ id = "sleeper"
+ req_tech = list("programming" = 3, "biotech" = 2, "materials" = 3, "engineering" = 3)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/bodyscanner
+ category = list ("Medical Machinery")
-datum/design/chem_dispenser
+/datum/design/sleep_console
+ name = "Machine Board (Body Scanner Console)"
+ desc = "Allows for the construction of circuit boards used to build a Body Scanner Console."
+ id = "sleeper"
+ req_tech = list("programming" = 3, "biotech" = 2, "materials" = 3, "engineering" = 3)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/bodyscanner_console
+ category = list ("Medical Machinery")
+
+/datum/design/clonepod
+ name = "Machine Board (Cloning Pod)"
+ desc = "Allows for the construction of circuit boards used to build a Cloning Pod."
+ id = "clonepod"
+ req_tech = list("programming" = 3, "biotech" = 3)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/clonepod
+ category = list ("Medical Machinery")
+
+/datum/design/clonescanner
+ name = "Machine Board (Cloning Scanner)"
+ desc = "Allows for the construction of circuit boards used to build a Cloning Scanner."
+ id = "clonescanner"
+ req_tech = list("programming" = 3, "biotech" = 3)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/clonescanner
+ category = list ("Medical Machinery")
+
+/datum/design/cryotube
+ name = "Machine Board (Cryotube Board)"
+ desc = "Allows for the construction of circuit boards used to build a Cryotube."
+ id = "cryotube"
+ req_tech = list("programming" = 4, "biotech" = 3, "engineering" = 4)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/cryo_tube
+ category = list ("Medical Machinery")
+
+/datum/design/chem_dispenser
name = "Machine Board (Portable Chem Dispenser)"
desc = "The circuit board for a Portable Chem Dispenser."
id = "chem_dispenser"
@@ -163,35 +110,49 @@ datum/design/chem_dispenser
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/chem_dispenser
-
-datum/design/destructive_analyzer
- name = "Machine Board (Destructive Analyzer)"
- desc = "The circuit board for a Destructive Analyzer."
- id = "destructive_analyzer"
- req_tech = list("programming" = 2, "magnets" = 2, "engineering" = 2)
+ category = list ("Medical Machinery")
+
+/datum/design/sleeper
+ name = "Machine Board (Sleeper)"
+ desc = "Allows for the construction of circuit boards used to build a Sleeper."
+ id = "sleeper"
+ req_tech = list("programming" = 3, "biotech" = 2, "materials" = 3, "engineering" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/destructive_analyzer
+ build_path = /obj/item/weapon/circuitboard/sleeper
+ category = list ("Medical Machinery")
-datum/design/protolathe
- name = "Machine Board (Protolathe)"
- desc = "The circuit board for a Protolathe."
- id = "protolathe"
- req_tech = list("programming" = 2, "engineering" = 2)
+/datum/design/sleep_console
+ name = "Machine Board (Sleeper Console)"
+ desc = "Allows for the construction of circuit boards used to build a Sleeper Console."
+ id = "sleeper"
+ req_tech = list("programming" = 3, "biotech" = 2, "materials" = 3, "engineering" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/protolathe
-
-datum/design/circuit_imprinter
- name = "Machine Board (Circuit Imprinter)"
- desc = "The circuit board for a Circuit Imprinter."
- id = "circuit_imprinter"
- req_tech = list("programming" = 2, "engineering" = 2)
+ build_path = /obj/item/weapon/circuitboard/sleep_console
+ category = list ("Medical Machinery")
+
+/datum/design/biogenerator
+ name = "Machine Board (Biogenerator)"
+ desc = "The circuit board for a Biogenerator."
+ id = "biogenerator"
+ req_tech = list("programming" = 3, "biotech" = 2, "materials" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/circuit_imprinter
+ build_path = /obj/item/weapon/circuitboard/biogenerator
+ category = list ("Hydroponics Machinery")
-datum/design/autolathe
+/datum/design/hydroponics
+ name = "Machine Board (Hydroponics Tray)"
+ desc = "The circuit board for a Hydroponics Tray."
+ id = "hydro_tray"
+ req_tech = list("programming" = 1, "biotech" = 1)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/hydroponics
+ category = list ("Hydroponics Machinery")
+
+/datum/design/autolathe
name = "Machine Board (Autolathe)"
desc = "The circuit board for an Autolathe."
id = "autolathe"
@@ -199,26 +160,19 @@ datum/design/autolathe
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/autolathe
-
-datum/design/rdserver
- name = "Machine Board (R&D Server)"
- desc = "The circuit board for an R&D Server"
- id = "rdserver"
- req_tech = list("programming" = 3)
+ category = list("Research Machinery")
+
+/datum/design/circuit_imprinter
+ name = "Machine Board (Circuit Imprinter)"
+ desc = "The circuit board for a Circuit Imprinter."
+ id = "circuit_imprinter"
+ req_tech = list("programming" = 2, "engineering" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/rdserver
-
-datum/design/mechfab
- name = "Machine Board (Exosuit Fabricator)"
- desc = "The circuit board for an Exosuit Fabricator"
- id = "mechfab"
- req_tech = list("programming" = 3, "engineering" = 3)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/mechfab
-
-datum/design/cyborgrecharger
+ build_path = /obj/item/weapon/circuitboard/circuit_imprinter
+ category = list("Research Machinery")
+
+/datum/design/cyborgrecharger
name = "Machine Board (Cyborg Recharger)"
desc = "The circuit board for a Cyborg Recharger."
id = "cyborgrecharger"
@@ -226,8 +180,29 @@ datum/design/cyborgrecharger
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/cyborgrecharger
-
-datum/design/mech_recharger
+ category = list("Research Machinery")
+
+/datum/design/destructive_analyzer
+ name = "Machine Board (Destructive Analyzer)"
+ desc = "The circuit board for a Destructive Analyzer."
+ id = "destructive_analyzer"
+ req_tech = list("programming" = 2, "magnets" = 2, "engineering" = 2)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/destructive_analyzer
+ category = list("Research Machinery")
+
+/datum/design/mechfab
+ name = "Machine Board (Exosuit Fabricator)"
+ desc = "The circuit board for an Exosuit Fabricator"
+ id = "mechfab"
+ req_tech = list("programming" = 3, "engineering" = 3)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/mechfab
+ category = list("Research Machinery")
+
+/datum/design/mech_recharger
name = "Machine Board (Mech Bay Recharger)"
desc = "The circuit board for a Mech Bay Recharger."
id = "mech_recharger"
@@ -235,12 +210,64 @@ datum/design/mech_recharger
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mech_recharger
+ category = list("Research Machinery")
-datum/design/vendor
+/datum/design/protolathe
+ name = "Machine Board (Protolathe)"
+ desc = "The circuit board for a Protolathe."
+ id = "protolathe"
+ req_tech = list("programming" = 2, "engineering" = 2)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/protolathe
+ category = list("Research Machinery")
+
+/datum/design/rdserver
+ name = "Machine Board (R&D Server)"
+ desc = "The circuit board for an R&D Server"
+ id = "rdserver"
+ req_tech = list("programming" = 3)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/rdserver
+ category = list("Research Machinery")
+
+/datum/design/arcadebattle
+ name = "Machine Board (Battle Arcade Machine)"
+ desc = "Allows for the construction of circuit boards used to build a new Arcade Machine."
+ id = "arcademachinebattle"
+ req_tech = list("programming" = 1)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/arcade/battle
+ category = list ("Misc. Machinery")
+
+/datum/design/microwave
+ name = "Machine Board (Microwave)"
+ desc = "The circuit board for a Microwave."
+ id = "microwave"
+ req_tech = list("programming" = 1)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/microwave
+ category = list ("Misc. Machinery")
+
+/datum/design/orion_trail
+ name = "Machine Board (Orion Trail Arcade Machine)"
+ desc = "Allows for the construction of circuit boards used to build a new Orion Trail machine."
+ id = "arcademachineonion"
+ req_tech = list("programming" = 2)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/arcade/orion_trail
+ category = list ("Misc. Machinery")
+
+/datum/design/vendor
name = "Machine Board (Vendor)"
desc = "The circuit board for a Vendor."
id = "vendor"
req_tech = list("programming" = 1)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/vendor
\ No newline at end of file
+ build_path = /obj/item/weapon/circuitboard/vendor
+ category = list ("Misc. Machinery")
\ No newline at end of file
diff --git a/code/modules/research/designs/mecha_designs.dm b/code/modules/research/designs/mecha_designs.dm
index 821eeca63b4..eb450831554 100644
--- a/code/modules/research/designs/mecha_designs.dm
+++ b/code/modules/research/designs/mecha_designs.dm
@@ -3,7 +3,7 @@
///////////////////////////////////
// Ripley
-datum/design/ripley_main
+/datum/design/ripley_main
name = "Circuit Design (APLU \"Ripley\" Central Control module)"
desc = "Allows for the construction of a \"Ripley\" Central Control module."
id = "ripley_main"
@@ -11,8 +11,9 @@ datum/design/ripley_main
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/ripley/main
+ category = list("Exosuit Modules")
-datum/design/ripley_peri
+/datum/design/ripley_peri
name = "Circuit Design (APLU \"Ripley\" Peripherals Control module)"
desc = "Allows for the construction of a \"Ripley\" Peripheral Control module."
id = "ripley_peri"
@@ -20,9 +21,10 @@ datum/design/ripley_peri
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/ripley/peripherals
+ category = list("Exosuit Modules")
// Odysseus
-datum/design/odysseus_main
+/datum/design/odysseus_main
name = "Circuit Design (\"Odysseus\" Central Control module)"
desc = "Allows for the construction of a \"Odysseus\" Central Control module."
id = "odysseus_main"
@@ -30,8 +32,9 @@ datum/design/odysseus_main
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/odysseus/main
+ category = list("Exosuit Modules")
-datum/design/odysseus_peri
+/datum/design/odysseus_peri
name = "Circuit Design (\"Odysseus\" Peripherals Control module)"
desc = "Allows for the construction of a \"Odysseus\" Peripheral Control module."
id = "odysseus_peri"
@@ -39,9 +42,10 @@ datum/design/odysseus_peri
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/odysseus/peripherals
+ category = list("Exosuit Modules")
// Gygax
-datum/design/gygax_main
+/datum/design/gygax_main
name = "Circuit Design (\"Gygax\" Central Control module)"
desc = "Allows for the construction of a \"Gygax\" Central Control module."
id = "gygax_main"
@@ -49,8 +53,9 @@ datum/design/gygax_main
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/gygax/main
+ category = list("Exosuit Modules")
-datum/design/gygax_peri
+/datum/design/gygax_peri
name = "Circuit Design (\"Gygax\" Peripherals Control module)"
desc = "Allows for the construction of a \"Gygax\" Peripheral Control module."
id = "gygax_peri"
@@ -58,8 +63,9 @@ datum/design/gygax_peri
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/gygax/peripherals
+ category = list("Exosuit Modules")
-datum/design/gygax_targ
+/datum/design/gygax_targ
name = "Circuit Design (\"Gygax\" Weapons & Targeting Control module)"
desc = "Allows for the construction of a \"Gygax\" Weapons & Targeting Control module."
id = "gygax_targ"
@@ -67,9 +73,10 @@ datum/design/gygax_targ
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/gygax/targeting
+ category = list("Exosuit Modules")
// Durand
-datum/design/durand_main
+/datum/design/durand_main
name = "Circuit Design (\"Durand\" Central Control module)"
desc = "Allows for the construction of a \"Durand\" Central Control module."
id = "durand_main"
@@ -77,8 +84,9 @@ datum/design/durand_main
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/durand/main
+ category = list("Exosuit Modules")
-datum/design/durand_peri
+/datum/design/durand_peri
name = "Circuit Design (\"Durand\" Peripherals Control module)"
desc = "Allows for the construction of a \"Durand\" Peripheral Control module."
id = "durand_peri"
@@ -86,8 +94,9 @@ datum/design/durand_peri
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/durand/peripherals
+ category = list("Exosuit Modules")
-datum/design/durand_targ
+/datum/design/durand_targ
name = "Circuit Design (\"Durand\" Weapons & Targeting Control module)"
desc = "Allows for the construction of a \"Durand\" Weapons & Targeting Control module."
id = "durand_targ"
@@ -95,9 +104,10 @@ datum/design/durand_targ
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/durand/targeting
+ category = list("Exosuit Modules")
// Phazon
-datum/design/phazon_main
+/datum/design/phazon_main
name = "Exosuit Design (\"Phazon\" Central Control module)"
desc = "Allows for the construction of a \"Phazon\" Central Control module."
id = "phazon_main"
@@ -105,8 +115,9 @@ datum/design/phazon_main
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/phazon/main
+ category = list("Exosuit Modules")
-datum/design/phazon_peri
+/datum/design/phazon_peri
name = "Exosuit Design (\"Phazon\" Peripherals Control module)"
desc = "Allows for the construction of a \"Phazon\" Peripheral Control module."
id = "phazon_peri"
@@ -114,8 +125,9 @@ datum/design/phazon_peri
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/phazon/peripherals
+ category = list("Exosuit Modules")
-datum/design/phazon_targ
+/datum/design/phazon_targ
name = "Exosuit Design (\"Phazon\" Weapons & Targeting Control module)"
desc = "Allows for the construction of a \"Phazon\" Weapons & Targeting Control module."
id = "phazon_targ"
@@ -123,9 +135,10 @@ datum/design/phazon_targ
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/phazon/targeting
+ category = list("Exosuit Modules")
// H.O.N.K.
-datum/design/honker_main
+/datum/design/honker_main
name = "Circuit Design (\"H.O.N.K\" Central Control module)"
desc = "Allows for the construction of a \"H.O.N.K\" Central Control module."
id = "honker_main"
@@ -133,8 +146,9 @@ datum/design/honker_main
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/honker/main
+ category = list("Exosuit Modules")
-datum/design/honker_peri
+/datum/design/honker_peri
name = "Circuit Design (\"H.O.N.K\" Peripherals Control module)"
desc = "Allows for the construction of a \"H.O.N.K\" Peripheral Control module."
id = "honker_peri"
@@ -142,8 +156,9 @@ datum/design/honker_peri
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/honker/peripherals
+ category = list("Exosuit Modules")
-datum/design/honker_targ
+/datum/design/honker_targ
name = "Circuit Design (\"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"
@@ -151,13 +166,15 @@ datum/design/honker_targ
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/honker/targeting
+ category = list("Exosuit Modules")
// Space pod
-/datum/design/spacepod_main
+//datum/design/spacepod_main
name = "Circuit Design (Space Pod Mainboard)"
desc = "Allows for the construction of a Space Pod mainboard."
id = "spacepod_main"
req_tech = list("programming" = 4)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/mecha/pod
\ No newline at end of file
+ build_path = /obj/item/weapon/circuitboard/mecha/pod
+ category = list("Exosuit Modules")
\ No newline at end of file
diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm
index 8304c56784f..ce382212d65 100644
--- a/code/modules/research/designs/mechfabricator_designs.dm
+++ b/code/modules/research/designs/mechfabricator_designs.dm
@@ -195,16 +195,6 @@
construction_time = 130
category = list("Odysseus")
-/*/datum/design/odysseus_armor
- name = "Exosuit Armor (\"Odysseus\")"
- id = "odysseus_armor"
- build_type = MECHFAB
- build_path = /obj/item/mecha_parts/part/odysseus_armor
- materials = list("$metal"=15000)
- construction_time = 200
- category = list("Odysseus")
- */
-
//Gygax
/datum/design/gygax_chassis
name = "Exosuit Chassis (\"Gygax\")"
@@ -415,7 +405,6 @@
construction_time = 200
category = list("H.O.N.K")
-
//Phazon
/datum/design/phazon_chassis
name = "Exosuit Chassis (\"Phazon\")"
@@ -490,17 +479,17 @@
category = list("Phazon")
//Exosuit Equipment
-/datum/design/mech_hydraulic_clamp
- name = "Exosuit Engineering Equipement (Hydraulic Clamp)"
- id = "mech_hydraulic_clamp"
+/datum/design/mech_cable_layer
+ name = "Exosuit Engineering Equipment (Cable Layer)"
+ id = "mech_cable_layer"
build_type = MECHFAB
- build_path = /obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp
+ build_path = /obj/item/mecha_parts/mecha_equipment/tool/cable_layer
materials = list("$metal"=10000)
construction_time = 100
category = list("Exosuit Equipment")
-
+
/datum/design/mech_drill
- name = "Exosuit Engineering Equipement (Drill)"
+ name = "Exosuit Engineering Equipment (Drill)"
id = "mech_drill"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/mecha_equipment/tool/drill
@@ -509,25 +498,25 @@
category = list("Exosuit Equipment")
/datum/design/mech_extinguisher
- name = "Exosuit Engineering Equipement (Extinguisher)"
+ name = "Exosuit Engineering Equipment (Extinguisher)"
id = "mech_extinguisher"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/mecha_equipment/tool/extinguisher
materials = list("$metal"=10000)
construction_time = 100
category = list("Exosuit Equipment")
-
-/datum/design/mech_cable_layer
- name = "Exosuit Engineering Equipement (Cable Layer)"
- id = "mech_cable_layer"
+
+/datum/design/mech_hydraulic_clamp
+ name = "Exosuit Engineering Equipment (Hydraulic Clamp)"
+ id = "mech_hydraulic_clamp"
build_type = MECHFAB
- build_path = /obj/item/mecha_parts/mecha_equipment/tool/cable_layer
+ build_path = /obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp
materials = list("$metal"=10000)
construction_time = 100
category = list("Exosuit Equipment")
/datum/design/mech_sleeper
- name = "Exosuit Medical Equipement (Mounted Sleeper)"
+ name = "Exosuit Medical Equipment (Mounted Sleeper)"
id = "mech_sleeper"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/mecha_equipment/tool/sleeper
@@ -536,7 +525,7 @@
category = list("Exosuit Equipment")
/datum/design/mech_syringe_gun
- name = "Exosuit Medical Equipement (Syringe Gun)"
+ name = "Exosuit Medical Equipment (Syringe Gun)"
id = "mech_syringe_gun"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/mecha_equipment/tool/syringe_gun
@@ -545,7 +534,7 @@
category = list("Exosuit Equipment")
/datum/design/mech_generator
- name = "Exosuit Equipement (Plasma Generator)"
+ name = "Exosuit Equipment (Plasma Generator)"
id = "mech_generator"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/mecha_equipment/generator
@@ -571,6 +560,24 @@
construction_time = 100
category = list("Exosuit Equipment")
+/datum/design/mech_banana_mortar
+ name = "H.O.N.K Banana Mortar"
+ id = "mech_banana_mortar"
+ build_type = MECHFAB
+ build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/banana_mortar
+ materials = list("$metal"=20000,"$bananium"=5000)
+ construction_time = 300
+ category = list("Exosuit Equipment")
+
+/datum/design/mech_honker
+ name = "HoNkER BlAsT 5000"
+ id = "mech_honker"
+ build_type = MECHFAB
+ build_path = /obj/item/mecha_parts/mecha_equipment/weapon/honker
+ materials = list("$metal"=20000,"$bananium"=10000)
+ construction_time = 500
+ category = list("Exosuit Equipment")
+
/datum/design/mech_mousetrap_mortar
name = "H.O.N.K Mousetrap Mortar"
id = "mech_mousetrap_mortar"
@@ -580,34 +587,35 @@
construction_time = 300
category = list("Exosuit Equipment")
-/datum/design/mech_banana_mortar
- name = "H.O.N.K Banana Mortar"
- id = "mech_banana_mortar"
- build_type = MECHFAB
- build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/banana_mortar
- materials = list("$metal"=20000,"$bananium"=5000)
- construction_time = 300
- category = list("Exosuit Equipment")
-
-/datum/design/mech_honker
- name = "HoNkER BlAsT 5000"
- id = "mech_honker"
- build_type = MECHFAB
- build_path = /obj/item/mecha_parts/mecha_equipment/weapon/honker
- materials = list("$metal"=20000,"$bananium"=10000)
- construction_time = 500
- category = list("Exosuit Equipment")
-
//Cyborg Upgrade Modules
-/datum/design/borg_upgrade_reset
- name = "Cyborg Upgrade Module (Reset Module)"
- id = "borg_upgrade_reset"
+/datum/design/borg_syndicate_module
+ name = "Borg Illegal Weapons Upgrade"
+ desc = "Allows for the construction of illegal upgrades for cyborgs"
+ id = "borg_syndicate_module"
build_type = MECHFAB
- build_path = /obj/item/borg/upgrade/reset
- materials = list("$metal"=10000)
+ req_tech = list("combat" = 4, "syndicate" = 3)
+ build_path = /obj/item/borg/upgrade/syndicate
+ category = "Cyborg Upgrade Modules"
+ category = list("Cyborg Upgrade Modules")
+
+/datum/design/borg_upgrade_jetpack
+ name = "Cyborg Upgrade Module (Mining Jetpack)"
+ id = "borg_upgrade_jetpack"
+ build_type = MECHFAB
+ build_path = /obj/item/borg/upgrade/jetpack
+ materials = list("$metal"=10000,"$plasma"=15000,"$uranium" = 20000)
construction_time = 120
category = list("Cyborg Upgrade Modules")
-
+
+/datum/design/borg_upgrade_tasercooler
+ name = "Cyborg Upgrade Module (Rapid Taser Cooling Module)"
+ id = "borg_upgrade_tasercooler"
+ build_type = MECHFAB
+ build_path = /obj/item/borg/upgrade/tasercooler
+ materials = list("$metal"=80000 , "$glass"=6000 , "$gold"= 2000, "$diamond" = 500)
+ construction_time = 120
+ category = list("Cyborg Upgrade Modules")
+
/datum/design/borg_upgrade_rename
name = "Cyborg Upgrade Module (Rename Module)"
id = "borg_upgrade_rename"
@@ -616,6 +624,15 @@
materials = list("$metal"=35000)
construction_time = 120
category = list("Cyborg Upgrade Modules")
+
+/datum/design/borg_upgrade_reset
+ name = "Cyborg Upgrade Module (Reset Module)"
+ id = "borg_upgrade_reset"
+ build_type = MECHFAB
+ build_path = /obj/item/borg/upgrade/reset
+ materials = list("$metal"=10000)
+ construction_time = 120
+ category = list("Cyborg Upgrade Modules")
/datum/design/borg_upgrade_restart
name = "Cyborg Upgrade Module (Restart Module)"
@@ -635,24 +652,6 @@
construction_time = 120
category = list("Cyborg Upgrade Modules")
-/datum/design/borg_upgrade_tasercooler
- name = "Cyborg Upgrade Module (Rapid Taser Cooling Module)"
- id = "borg_upgrade_tasercooler"
- build_type = MECHFAB
- build_path = /obj/item/borg/upgrade/tasercooler
- materials = list("$metal"=80000 , "$glass"=6000 , "$gold"= 2000, "$diamond" = 500)
- construction_time = 120
- category = list("Cyborg Upgrade Modules")
-
-/datum/design/borg_upgrade_jetpack
- name = "Cyborg Upgrade Module (Mining Jetpack)"
- id = "borg_upgrade_jetpack"
- build_type = MECHFAB
- build_path = /obj/item/borg/upgrade/jetpack
- materials = list("$metal"=10000,"$plasma"=15000,"$uranium" = 20000)
- construction_time = 120
- category = list("Cyborg Upgrade Modules")
-
//Misc
/datum/design/mecha_tracking
name = "Exosuit Tracking Beacon"
diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm
index b4e41c13fd2..eff717c590f 100644
--- a/code/modules/research/designs/medical_designs.dm
+++ b/code/modules/research/designs/medical_designs.dm
@@ -1,18 +1,7 @@
/////////////////////////////////////////
////////////Medical Tools////////////////
/////////////////////////////////////////
-
-datum/design/mass_spectrometer
- name = "Mass-Spectrometer"
- desc = "A device for analyzing chemicals in the blood."
- id = "mass_spectrometer"
- req_tech = list("biotech" = 2, "magnets" = 2)
- build_type = PROTOLATHE
- materials = list("$metal" = 30, "$glass" = 20)
- reliability_base = 76
- build_path = /obj/item/device/mass_spectrometer
-
-datum/design/adv_mass_spectrometer
+/datum/design/adv_mass_spectrometer
name = "Advanced Mass-Spectrometer"
desc = "A device for analyzing chemicals in the blood and their quantities."
id = "adv_mass_spectrometer"
@@ -21,18 +10,9 @@ datum/design/adv_mass_spectrometer
materials = list("$metal" = 30, "$glass" = 20)
reliability_base = 74
build_path = "/obj/item/device/mass_spectrometer/adv"
-
-datum/design/reagent_scanner
- name = "Reagent Scanner"
- desc = "A device for identifying chemicals."
- id = "reagent_scanner"
- req_tech = list("biotech" = 2, "magnets" = 2)
- build_type = PROTOLATHE
- materials = list("$metal" = 30, "$glass" = 20)
- reliability_base = 76
- build_path = /obj/item/device/reagent_scanner
-
-datum/design/adv_reagent_scanner
+ category = list("Medical")
+
+/datum/design/adv_reagent_scanner
name = "Advanced Reagent Scanner"
desc = "A device for identifying chemicals and their proportions."
id = "adv_reagent_scanner"
@@ -41,60 +21,9 @@ datum/design/adv_reagent_scanner
materials = list("$metal" = 30, "$glass" = 20)
reliability_base = 74
build_path = /obj/item/device/reagent_scanner/adv
-
-datum/design/cyborg_analyzer
- name = "Cyborg Analyzer"
- desc = "A hand-held scanner able to diagnose robotic injuries."
- id = "cyborg_analyzer"
- req_tech = list("programming" = 2, "biotech" = 2, "magnets" = 2)
- build_type = PROTOLATHE
- materials = list("$metal" = 30, "$glass" = 20)
- reliability_base = 74
- build_path = /obj/item/device/robotanalyzer
-
-datum/design/mmi
- name = "Man-Machine Interface"
- desc = "The Warrior's bland acronym, MMI, obscures the true horror of this monstrosity."
- id = "mmi"
- req_tech = list("programming" = 2, "biotech" = 3)
- build_type = PROTOLATHE | MECHFAB
- materials = list("$metal" = 1000, "$glass" = 500)
- reliability_base = 76
- build_path = /obj/item/device/mmi
- category = "Misc"
-
-datum/design/mmi_radio
- name = "Radio-enabled Man-Machine Interface"
- desc = "The Warrior's bland acronym, MMI, obscures the true horror of this monstrosity. This one comes with a built-in radio."
- id = "mmi_radio"
- req_tech = list("programming" = 2, "biotech" = 4)
- build_type = PROTOLATHE | MECHFAB
- materials = list("$metal" = 1200, "$glass" = 500)
- reliability_base = 74
- build_path = /obj/item/device/mmi/radio_enabled
- category = "Misc"
-
-datum/design/synthetic_flash
- name = "Flash"
- desc = "A synthetic flash used mostly in borg construction."
- id = "sflash"
- req_tech = list("magnets" = 3, "combat" = 2)
- build_type = MECHFAB
- materials = list("$metal" = 750, "$glass" = 750)
- reliability_base = 76
- build_path = /obj/item/device/flash/synthetic
- category = "Misc"
-
-datum/design/nanopaste
- name = "nanopaste"
- desc = "A tube of paste containing swarms of repair nanites. Very effective in repairing robotic machinery."
- id = "nanopaste"
- req_tech = list("materials" = 4, "engineering" = 3)
- build_type = PROTOLATHE
- materials = list("$metal" = 7000, "$glass" = 7000)
- build_path = /obj/item/stack/nanopaste
-
-datum/design/bluespacebeaker
+ category = list("Medical")
+
+/datum/design/bluespacebeaker
name = "bluespace beaker"
desc = "A bluespace beaker, powered by experimental bluespace technology and Element Cuban combined with the Compound Pete. Can hold up to 300 units."
id = "bluespacebeaker"
@@ -103,49 +32,9 @@ datum/design/bluespacebeaker
materials = list("$metal" = 3000, "$plasma" = 3000, "$diamond" = 500)
reliability_base = 76
build_path = /obj/item/weapon/reagent_containers/glass/beaker/bluespace
- category = "Misc"
-
-datum/design/noreactbeaker
- name = "cryostasis beaker"
- desc = "A cryostasis beaker that allows for chemical storage without reactions. Can hold up to 50 units."
- id = "splitbeaker"
- req_tech = list("materials" = 2)
- build_type = PROTOLATHE
- materials = list("$metal" = 3000)
- reliability_base = 76
- build_path = /obj/item/weapon/reagent_containers/glass/beaker/noreact
- category = "Misc"
-
-datum/design/defib
- name = "Defibrillator"
- desc = "A device that delivers powerful shocks to detachable paddles that resuscitate incapacitated patients."
- id = "defib"
- req_tech = list("materials" = 7, "biotech" = 5, "powerstorage" = 5)
- build_type = PROTOLATHE
- materials = list("$metal" = 5000, "$glass" = 2000, "$silver" = 1000)
- reliability = 76
- build_path = /obj/item/weapon/defibrillator
- category = "Misc"
-
-datum/design/implanter
- name = "Implanter"
- desc = "A basic implanter for injecting implants"
- id = "implanter"
- req_tech = list("materials" = 2, "biotech" = 3)
- build_type = PROTOLATHE
- materials = list("$metal" = 50, "$glass" = 50)
- build_path = "/obj/item/weapon/implanter"
-
-datum/design/implant_free
- name = "Freedom Implant"
- desc = "An implant which allows the user to instantly escape from restraints."
- id = "implant_free"
- req_tech = list("syndicate" = 2, "biotech" = 3)
- build_type = PROTOLATHE
- materials = list("$metal" = 50, "$glass" = 50)
- build_path = /obj/item/weapon/implantcase/freedom
-
-datum/design/implant_chem
+ category = list("Medical")
+
+/datum/design/implant_chem
name = "Chemical Implant"
desc = "An implant which can be filled with various chemicals, and then injected on command."
id = "implant_chem"
@@ -154,8 +43,62 @@ datum/design/implant_chem
materials = list("$metal" = 50, "$glass" = 50)
build_path = /obj/item/weapon/implantcase/chem
locked = 1
-
-datum/design/implant_loyal
+ category = list("Medical")
+
+/datum/design/noreactbeaker
+ name = "Cryostasis Beaker"
+ desc = "A cryostasis beaker that allows for chemical storage without reactions. Can hold up to 50 units."
+ id = "splitbeaker"
+ req_tech = list("materials" = 2)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 3000)
+ reliability_base = 76
+ build_path = /obj/item/weapon/reagent_containers/glass/beaker/noreact
+ category = list("Medical")
+
+/datum/design/cyborg_analyzer
+ name = "Cyborg Analyzer"
+ desc = "A hand-held scanner able to diagnose robotic injuries."
+ id = "cyborg_analyzer"
+ req_tech = list("programming" = 2, "biotech" = 2, "magnets" = 2)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 30, "$glass" = 20)
+ reliability_base = 74
+ build_path = /obj/item/device/robotanalyzer
+ category = list("Medical")
+
+/datum/design/defib
+ name = "Defibrillator"
+ desc = "A device that delivers powerful shocks to detachable paddles that resuscitate incapacitated patients."
+ id = "defib"
+ req_tech = list("materials" = 7, "biotech" = 5, "powerstorage" = 5)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 5000, "$glass" = 2000, "$silver" = 1000)
+ reliability = 76
+ build_path = /obj/item/weapon/defibrillator
+ category = list("Medical")
+
+/datum/design/implant_free
+ name = "Freedom Implant"
+ desc = "An implant which allows the user to instantly escape from restraints."
+ id = "implant_free"
+ req_tech = list("syndicate" = 2, "biotech" = 3)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 50, "$glass" = 50)
+ build_path = /obj/item/weapon/implantcase/freedom
+ category = list("Medical")
+
+/datum/design/implanter
+ name = "Implanter"
+ desc = "A basic implanter for injecting implants"
+ id = "implanter"
+ req_tech = list("materials" = 2, "biotech" = 3)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 50, "$glass" = 50)
+ build_path = "/obj/item/weapon/implanter"
+ category = list("Medical")
+
+/datum/design/implant_loyal
name = "Loyalty Implant"
desc = "An implant which makes its carrier loyal to Nanotrasen."
id = "implant_loyal"
@@ -163,4 +106,80 @@ datum/design/implant_loyal
build_type = PROTOLATHE
materials = list("$metal" = 7000, "$glass" = 7000)
build_path = /obj/item/weapon/implantcase/loyalty
- locked = 1
\ No newline at end of file
+ locked = 1
+ category = list("Medical")
+
+/datum/design/mmi
+ name = "Man-Machine Interface"
+ desc = "The Warrior's bland acronym, MMI, obscures the true horror of this monstrosity."
+ id = "mmi"
+ req_tech = list("programming" = 2, "biotech" = 3)
+ build_type = PROTOLATHE | MECHFAB
+ materials = list("$metal" = 1000, "$glass" = 500)
+ reliability_base = 76
+ build_path = /obj/item/device/mmi
+ category = list("Misc","Medical")
+
+/datum/design/mass_spectrometer
+ name = "Mass-Spectrometer"
+ desc = "A device for analyzing chemicals in the blood."
+ id = "mass_spectrometer"
+ req_tech = list("biotech" = 2, "magnets" = 2)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 30, "$glass" = 20)
+ reliability_base = 76
+ build_path = /obj/item/device/mass_spectrometer
+ category = list("Medical")
+
+/datum/design/posibrain
+ name = "Positronic Brain"
+ desc = "Allows for the construction of a positronic brain"
+ id = "posibrain"
+ req_tech = list("engineering" = 4, "materials" = 6, "bluespace" = 2, "programming" = 4)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 2000, "$glass" = 1000, "$silver" = 1000, "$gold" = 500, "$plasma" = 500, "$diamond" = 100)
+ build_path = /obj/item/device/mmi/posibrain
+ category = list("Misc","Medical")
+
+/datum/design/mmi_radio
+ name = "Radio-Enabled Man-Machine Interface"
+ desc = "The Warrior's bland acronym, MMI, obscures the true horror of this monstrosity. This one comes with a built-in radio."
+ id = "mmi_radio"
+ req_tech = list("programming" = 2, "biotech" = 4)
+ build_type = PROTOLATHE | MECHFAB
+ materials = list("$metal" = 1200, "$glass" = 500)
+ reliability_base = 74
+ build_path = /obj/item/device/mmi/radio_enabled
+ category = list("Misc","Medical")
+
+/datum/design/nanopaste
+ name = "Nanopaste"
+ desc = "A tube of paste containing swarms of repair nanites. Very effective in repairing robotic machinery."
+ id = "nanopaste"
+ req_tech = list("materials" = 4, "engineering" = 3)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 7000, "$glass" = 7000)
+ build_path = /obj/item/stack/nanopaste
+ category = list("Medical")
+
+/datum/design/reagent_scanner
+ name = "Reagent Scanner"
+ desc = "A device for identifying chemicals."
+ id = "reagent_scanner"
+ req_tech = list("biotech" = 2, "magnets" = 2)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 30, "$glass" = 20)
+ reliability_base = 76
+ build_path = /obj/item/device/reagent_scanner
+ category = list("Medical")
+
+/datum/design/synthetic_flash
+ name = "Flash"
+ desc = "A synthetic flash used mostly in borg construction."
+ id = "sflash"
+ req_tech = list("magnets" = 3, "combat" = 2)
+ build_type = MECHFAB
+ materials = list("$metal" = 750, "$glass" = 750)
+ reliability_base = 76
+ build_path = /obj/item/device/flash/synthetic
+ category = list("Misc")
diff --git a/code/modules/research/designs/power_designs.dm b/code/modules/research/designs/power_designs.dm
index 3ecced18709..2d9e87fe1de 100644
--- a/code/modules/research/designs/power_designs.dm
+++ b/code/modules/research/designs/power_designs.dm
@@ -2,37 +2,7 @@
////////////Power Designs////////////////
/////////////////////////////////////////
-datum/design/pacman
- name = "PACMAN-type Generator Board"
- desc = "The circuit board that for a PACMAN-type portable generator."
- id = "pacman"
- req_tech = list("programming" = 3, "plasmatech" = 3, "powerstorage" = 3, "engineering" = 3)
- build_type = IMPRINTER
- reliability_base = 79
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/pacman
-
-datum/design/superpacman
- name = "SUPERPACMAN-type Generator Board"
- desc = "The circuit board that for a SUPERPACMAN-type portable generator."
- id = "superpacman"
- req_tech = list("programming" = 3, "powerstorage" = 4, "engineering" = 4)
- build_type = IMPRINTER
- reliability_base = 76
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/pacman/super
-
-datum/design/mrspacman
- name = "MRSPACMAN-type Generator Board"
- desc = "The circuit board that for a MRSPACMAN-type portable generator."
- id = "mrspacman"
- req_tech = list("programming" = 3, "powerstorage" = 5, "engineering" = 5)
- build_type = IMPRINTER
- reliability_base = 74
- materials = list("$glass" = 2000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/pacman/mrs
-
-datum/design/basic_cell
+/datum/design/basic_cell
name = "Basic Power Cell"
desc = "A basic power cell that holds 1000 units of energy"
id = "basic_cell"
@@ -41,8 +11,9 @@ datum/design/basic_cell
materials = list("$metal" = 700, "$glass" = 50)
build_path = /obj/item/weapon/cell
category = "Misc"
+ category = list("Misc","Power Designs")
-datum/design/high_cell
+/datum/design/high_cell
name = "High-Capacity Power Cell"
desc = "A power cell that holds 10000 units of energy"
id = "high_cell"
@@ -50,20 +21,9 @@ datum/design/high_cell
build_type = PROTOLATHE | AUTOLATHE | MECHFAB
materials = list("$metal" = 700, "$glass" = 60)
build_path = /obj/item/weapon/cell/high
- category = "Misc"
-
-datum/design/super_cell
- name = "Super-Capacity Power Cell"
- desc = "A power cell that holds 20000 units of energy"
- id = "super_cell"
- req_tech = list("powerstorage" = 3, "materials" = 2)
- reliability_base = 75
- build_type = PROTOLATHE | MECHFAB
- materials = list("$metal" = 700, "$glass" = 70)
- build_path = /obj/item/weapon/cell/super
- category = "Misc"
-
-datum/design/hyper_cell
+ category = list("Misc","Power Designs")
+
+/datum/design/hyper_cell
name = "Hyper-Capacity Power Cell"
desc = "A power cell that holds 30000 units of energy"
id = "hyper_cell"
@@ -72,4 +32,48 @@ datum/design/hyper_cell
build_type = PROTOLATHE | MECHFAB
materials = list("$metal" = 400, "$gold" = 150, "$silver" = 150, "$glass" = 70)
build_path = /obj/item/weapon/cell/hyper
- category = "Misc"
\ No newline at end of file
+ category = list("Misc","Power Designs")
+
+/datum/design/super_cell
+ name = "Super-Capacity Power Cell"
+ desc = "A power cell that holds 20000 units of energy"
+ id = "super_cell"
+ req_tech = list("powerstorage" = 3, "materials" = 2)
+ reliability_base = 75
+ build_type = PROTOLATHE | MECHFAB
+ materials = list("$metal" = 700, "$glass" = 70)
+ build_path = /obj/item/weapon/cell/super
+ category = list("Misc","Power Designs")
+
+/datum/design/pacman
+ name = "PACMAN-type Generator Board"
+ desc = "The circuit board that for a PACMAN-type portable generator."
+ id = "pacman"
+ req_tech = list("programming" = 3, "plasmatech" = 3, "powerstorage" = 3, "engineering" = 3)
+ build_type = IMPRINTER
+ reliability_base = 79
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/pacman
+ category = list("Engineering Machinery")
+
+/datum/design/mrspacman
+ name = "MRSPACMAN-type Generator Board"
+ desc = "The circuit board that for a MRSPACMAN-type portable generator."
+ id = "mrspacman"
+ req_tech = list("programming" = 3, "powerstorage" = 5, "engineering" = 5)
+ build_type = IMPRINTER
+ reliability_base = 74
+ materials = list("$glass" = 2000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/pacman/mrs
+ category = list("Engineering Machinery")
+
+/datum/design/superpacman
+ name = "SUPERPACMAN-type Generator Board"
+ desc = "The circuit board that for a SUPERPACMAN-type portable generator."
+ id = "superpacman"
+ req_tech = list("programming" = 3, "powerstorage" = 4, "engineering" = 4)
+ build_type = IMPRINTER
+ reliability_base = 76
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/pacman/super
+ category = list("Engineering Machinery")
diff --git a/code/modules/research/designs/stock_parts_designs.dm b/code/modules/research/designs/stock_parts_designs.dm
index 807b6f290d9..c98376f66e0 100644
--- a/code/modules/research/designs/stock_parts_designs.dm
+++ b/code/modules/research/designs/stock_parts_designs.dm
@@ -2,17 +2,7 @@
/////////////Stock Parts////////////////
////////////////////////////////////////
-datum/design/RPED
- name = "Rapid Part Exchange Device"
- desc = "Special mechanical module made to store, sort, and apply standard machine parts."
- id = "rped"
- req_tech = list("engineering" = 3,
- "materials" = 3)
- build_type = PROTOLATHE
- materials = list("$metal" = 15000, "$glass" = 5000) //hardcore
- build_path = /obj/item/weapon/storage/part_replacer
-
-datum/design/basic_capacitor
+/datum/design/basic_capacitor
name = "Basic Capacitor"
desc = "A stock part used in the construction of various devices."
id = "basic_capacitor"
@@ -20,8 +10,9 @@ datum/design/basic_capacitor
build_type = PROTOLATHE | AUTOLATHE
materials = list("$metal" = 50, "$glass" = 50)
build_path = /obj/item/weapon/stock_parts/capacitor
+ category = list("Stock Parts")
-datum/design/basic_sensor
+/datum/design/basic_sensor
name = "Basic Scanning Module"
desc = "A stock part used in the construction of various devices."
id = "basic_sensor"
@@ -29,8 +20,9 @@ datum/design/basic_sensor
build_type = PROTOLATHE | AUTOLATHE
materials = list("$metal" = 50, "$glass" = 20)
build_path = /obj/item/weapon/stock_parts/scanning_module
+ category = list("Stock Parts")
-datum/design/micro_mani
+/datum/design/micro_mani
name = "Micro Manipulator"
desc = "A stock part used in the construction of various devices."
id = "micro_mani"
@@ -38,8 +30,9 @@ datum/design/micro_mani
build_type = PROTOLATHE | AUTOLATHE
materials = list("$metal" = 30)
build_path = /obj/item/weapon/stock_parts/manipulator
+ category = list("Stock Parts")
-datum/design/basic_micro_laser
+/datum/design/basic_micro_laser
name = "Basic Micro-Laser"
desc = "A stock part used in the construction of various devices."
id = "basic_micro_laser"
@@ -47,8 +40,9 @@ datum/design/basic_micro_laser
build_type = PROTOLATHE | AUTOLATHE
materials = list("$metal" = 10, "$glass" = 20)
build_path = /obj/item/weapon/stock_parts/micro_laser
+ category = list("Stock Parts")
-datum/design/basic_matter_bin
+/datum/design/basic_matter_bin
name = "Basic Matter Bin"
desc = "A stock part used in the construction of various devices."
id = "basic_matter_bin"
@@ -56,8 +50,9 @@ datum/design/basic_matter_bin
build_type = PROTOLATHE | AUTOLATHE
materials = list("$metal" = 80)
build_path = /obj/item/weapon/stock_parts/matter_bin
+ category = list("Stock Parts")
-datum/design/adv_capacitor
+/datum/design/adv_capacitor
name = "Advanced Capacitor"
desc = "A stock part used in the construction of various devices."
id = "adv_capacitor"
@@ -65,8 +60,9 @@ datum/design/adv_capacitor
build_type = PROTOLATHE
materials = list("$metal" = 50, "$glass" = 50)
build_path = /obj/item/weapon/stock_parts/capacitor/adv
+ category = list("Stock Parts")
-datum/design/adv_sensor
+/datum/design/adv_sensor
name = "Advanced Scanning Module"
desc = "A stock part used in the construction of various devices."
id = "adv_sensor"
@@ -74,8 +70,9 @@ datum/design/adv_sensor
build_type = PROTOLATHE
materials = list("$metal" = 50, "$glass" = 20)
build_path = /obj/item/weapon/stock_parts/scanning_module/adv
+ category = list("Stock Parts")
-datum/design/nano_mani
+/datum/design/nano_mani
name = "Nano Manipulator"
desc = "A stock part used in the construction of various devices."
id = "nano_mani"
@@ -83,8 +80,9 @@ datum/design/nano_mani
build_type = PROTOLATHE
materials = list("$metal" = 30)
build_path = /obj/item/weapon/stock_parts/manipulator/nano
+ category = list("Stock Parts")
-datum/design/high_micro_laser
+/datum/design/high_micro_laser
name = "High-Power Micro-Laser"
desc = "A stock part used in the construction of various devices."
id = "high_micro_laser"
@@ -92,8 +90,9 @@ datum/design/high_micro_laser
build_type = PROTOLATHE
materials = list("$metal" = 10, "$glass" = 20)
build_path = /obj/item/weapon/stock_parts/micro_laser/high
+ category = list("Stock Parts")
-datum/design/adv_matter_bin
+/datum/design/adv_matter_bin
name = "Advanced Matter Bin"
desc = "A stock part used in the construction of various devices."
id = "adv_matter_bin"
@@ -101,8 +100,9 @@ datum/design/adv_matter_bin
build_type = PROTOLATHE
materials = list("$metal" = 80)
build_path = /obj/item/weapon/stock_parts/matter_bin/adv
+ category = list("Stock Parts")
-datum/design/super_capacitor
+/datum/design/super_capacitor
name = "Super Capacitor"
desc = "A stock part used in the construction of various devices."
id = "super_capacitor"
@@ -111,8 +111,9 @@ datum/design/super_capacitor
reliability_base = 71
materials = list("$metal" = 50, "$glass" = 50, "$gold" = 20)
build_path = /obj/item/weapon/stock_parts/capacitor/super
+ category = list("Stock Parts")
-datum/design/phasic_sensor
+/datum/design/phasic_sensor
name = "Phasic Scanning Module"
desc = "A stock part used in the construction of various devices."
id = "phasic_sensor"
@@ -121,8 +122,9 @@ datum/design/phasic_sensor
materials = list("$metal" = 50, "$glass" = 20, "$silver" = 10)
reliability_base = 72
build_path = /obj/item/weapon/stock_parts/scanning_module/phasic
+ category = list("Stock Parts")
-datum/design/pico_mani
+/datum/design/pico_mani
name = "Pico Manipulator"
desc = "A stock part used in the construction of various devices."
id = "pico_mani"
@@ -131,8 +133,9 @@ datum/design/pico_mani
materials = list("$metal" = 30)
reliability_base = 73
build_path = /obj/item/weapon/stock_parts/manipulator/pico
+ category = list("Stock Parts")
-datum/design/ultra_micro_laser
+/datum/design/ultra_micro_laser
name = "Ultra-High-Power Micro-Laser"
desc = "A stock part used in the construction of various devices."
id = "ultra_micro_laser"
@@ -141,8 +144,9 @@ datum/design/ultra_micro_laser
materials = list("$metal" = 10, "$glass" = 20, "$uranium" = 10)
reliability_base = 70
build_path = /obj/item/weapon/stock_parts/micro_laser/ultra
+ category = list("Stock Parts")
-datum/design/super_matter_bin
+/datum/design/super_matter_bin
name = "Super Matter Bin"
desc = "A stock part used in the construction of various devices."
id = "super_matter_bin"
@@ -150,4 +154,15 @@ datum/design/super_matter_bin
build_type = PROTOLATHE
materials = list("$metal" = 80)
reliability_base = 75
- build_path = /obj/item/weapon/stock_parts/matter_bin/super
\ No newline at end of file
+ build_path = /obj/item/weapon/stock_parts/matter_bin/super
+ category = list("Stock Parts")
+
+/datum/design/RPED
+ name = "Rapid Part Exchange Device"
+ desc = "Special mechanical module made to store, sort, and apply standard machine parts."
+ id = "rped"
+ req_tech = list("engineering" = 3, "materials" = 3)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 15000, "$glass" = 5000) //hardcore
+ build_path = /obj/item/weapon/storage/part_replacer
+ category = list("Stock Parts")
\ No newline at end of file
diff --git a/code/modules/research/designs/telecomms_designs.dm b/code/modules/research/designs/telecomms_designs.dm
index 51358d02172..2f60fc78311 100644
--- a/code/modules/research/designs/telecomms_designs.dm
+++ b/code/modules/research/designs/telecomms_designs.dm
@@ -1,16 +1,7 @@
////////////////////////////////////////
//////////Telecomms Equipment///////////
////////////////////////////////////////
-datum/design/subspace_receiver
- name = "Machine Board (Subspace Receiver)"
- desc = "Allows for the construction of Subspace Receiver equipment."
- id = "s-receiver"
- req_tech = list("programming" = 2, "engineering" = 1, "bluespace" = 1)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/telecomms/receiver
-
-datum/design/telecomms_bus
+/datum/design/telecomms_bus
name = "Machine Board (Bus Mainframe)"
desc = "Allows for the construction of Telecommunications Bus Mainframes."
id = "s-bus"
@@ -18,8 +9,9 @@ datum/design/telecomms_bus
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/telecomms/bus
-
-datum/design/telecomms_hub
+ category = list("Subspace Telecomms")
+
+/datum/design/telecomms_hub
name = "Machine Board (Hub Mainframe)"
desc = "Allows for the construction of Telecommunications Hub Mainframes."
id = "s-hub"
@@ -27,17 +19,10 @@ datum/design/telecomms_hub
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/telecomms/hub
+ category = list("Subspace Telecomms")
-datum/design/telecomms_relay
- name = "Machine Board (Relay Mainframe)"
- desc = "Allows for the construction of Telecommunications Relay Mainframes."
- id = "s-relay"
- req_tech = list("programming" = 1, "engineering" = 2, "bluespace" = 2)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/telecomms/relay
-datum/design/telecomms_processor
+/datum/design/telecomms_processor
name = "Machine Board (Processor Unit)"
desc = "Allows for the construction of Telecommunications Processor equipment."
id = "s-processor"
@@ -45,8 +30,19 @@ datum/design/telecomms_processor
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/telecomms/processor
+ category = list("Subspace Telecomms")
+
+/datum/design/telecomms_relay
+ name = "Machine Board (Relay Mainframe)"
+ desc = "Allows for the construction of Telecommunications Relay Mainframes."
+ id = "s-relay"
+ req_tech = list("programming" = 1, "engineering" = 2, "bluespace" = 2)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/telecomms/relay
+ category = list("Subspace Telecomms")
-datum/design/telecomms_server
+/datum/design/telecomms_server
name = "Machine Board (Server Mainframe)"
desc = "Allows for the construction of Telecommunications Servers."
id = "s-server"
@@ -54,8 +50,9 @@ datum/design/telecomms_server
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/telecomms/server
+ category = list("Subspace Telecomms")
-datum/design/subspace_broadcaster
+/datum/design/subspace_broadcaster
name = "Machine Board (Subspace Broadcaster)"
desc = "Allows for the construction of Subspace Broadcasting equipment."
id = "s-broadcaster"
@@ -63,53 +60,19 @@ datum/design/subspace_broadcaster
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/telecomms/broadcaster
-
-datum/design/subspace_ansible
- name = "Subspace Ansible"
- desc = "A compact module capable of sensing extradimensional activity."
- id = "s-ansible"
- req_tech = list("programming" = 2, "magnets" = 2, "materials" = 2, "bluespace" = 1)
- build_type = PROTOLATHE
- materials = list("$metal" = 80, "$silver" = 20)
- build_path = /obj/item/weapon/stock_parts/subspace/ansible
-
-datum/design/hyperwave_filter
- name = "Hyperwave Filter"
- desc = "A tiny device capable of filtering and converting super-intense radiowaves."
- id = "s-filter"
- req_tech = list("programming" = 2, "magnets" = 2)
- build_type = PROTOLATHE
- materials = list("$metal" = 40, "$silver" = 10)
- build_path = /obj/item/weapon/stock_parts/subspace/filter
-
-datum/design/subspace_amplifier
- name = "Subspace Amplifier"
- desc = "A compact micro-machine capable of amplifying weak subspace transmissions."
- id = "s-amplifier"
- req_tech = list("programming" = 2, "magnets" = 2, "materials" = 2, "bluespace" = 1)
- build_type = PROTOLATHE
- materials = list("$metal" = 10, "$gold" = 30, "$uranium" = 15)
- build_path = /obj/item/weapon/stock_parts/subspace/amplifier
-
-datum/design/subspace_treatment
- name = "Subspace Treatment Disk"
- desc = "A compact micro-machine capable of stretching out hyper-compressed radio waves."
- id = "s-treatment"
- req_tech = list("programming" = 2, "magnets" = 1, "materials" = 2, "bluespace" = 1)
- build_type = PROTOLATHE
- materials = list("$metal" = 10, "$silver" = 20)
- build_path = /obj/item/weapon/stock_parts/subspace/treatment
-
-datum/design/subspace_analyzer
- name = "Subspace Analyzer"
- desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths."
- id = "s-analyzer"
- req_tech = list("programming" = 2, "magnets" = 2, "materials" = 2, "bluespace" = 1)
- build_type = PROTOLATHE
- materials = list("$metal" = 10, "$gold" = 15)
- build_path = /obj/item/weapon/stock_parts/subspace/analyzer
-
-datum/design/subspace_crystal
+ category = list("Subspace Telecomms")
+
+/datum/design/subspace_receiver
+ name = "Machine Board (Subspace Receiver)"
+ desc = "Allows for the construction of Subspace Receiver equipment."
+ id = "s-receiver"
+ req_tech = list("programming" = 2, "engineering" = 1, "bluespace" = 1)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/telecomms/receiver
+ category = list("Subspace Telecomms")
+
+/datum/design/subspace_crystal
name = "Ansible Crystal"
desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths."
id = "s-crystal"
@@ -117,8 +80,49 @@ datum/design/subspace_crystal
build_type = PROTOLATHE
materials = list("$glass" = 1000, "$silver" = 20, "$gold" = 20)
build_path = /obj/item/weapon/stock_parts/subspace/crystal
+ category = list("Stock Parts")
-datum/design/subspace_transmitter
+/datum/design/hyperwave_filter
+ name = "Hyperwave Filter"
+ desc = "A tiny device capable of filtering and converting super-intense radiowaves."
+ id = "s-filter"
+ req_tech = list("programming" = 2, "magnets" = 2)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 40, "$silver" = 10)
+ build_path = /obj/item/weapon/stock_parts/subspace/filter
+ category = list("Stock Parts")
+
+/datum/design/subspace_amplifier
+ name = "Subspace Amplifier"
+ desc = "A compact micro-machine capable of amplifying weak subspace transmissions."
+ id = "s-amplifier"
+ req_tech = list("programming" = 2, "magnets" = 2, "materials" = 2, "bluespace" = 1)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 10, "$gold" = 30, "$uranium" = 15)
+ build_path = /obj/item/weapon/stock_parts/subspace/amplifier
+ category = list("Stock Parts")
+
+/datum/design/subspace_analyzer
+ name = "Subspace Analyzer"
+ desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths."
+ id = "s-analyzer"
+ req_tech = list("programming" = 2, "magnets" = 2, "materials" = 2, "bluespace" = 1)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 10, "$gold" = 15)
+ build_path = /obj/item/weapon/stock_parts/subspace/analyzer
+ category = list("Stock Parts")
+
+/datum/design/subspace_ansible
+ name = "Subspace Ansible"
+ desc = "A compact module capable of sensing extradimensional activity."
+ id = "s-ansible"
+ req_tech = list("programming" = 2, "magnets" = 2, "materials" = 2, "bluespace" = 1)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 80, "$silver" = 20)
+ build_path = /obj/item/weapon/stock_parts/subspace/ansible
+ category = list("Stock Parts")
+
+/datum/design/subspace_transmitter
name = "Subspace Transmitter"
desc = "A large piece of equipment used to open a window into the subspace dimension."
id = "s-transmitter"
@@ -126,3 +130,14 @@ datum/design/subspace_transmitter
build_type = PROTOLATHE
materials = list("$glass" = 100, "$silver" = 10, "$uranium" = 15)
build_path = /obj/item/weapon/stock_parts/subspace/transmitter
+ category = list("Stock Parts")
+
+/datum/design/subspace_treatment
+ name = "Subspace Treatment Disk"
+ desc = "A compact micro-machine capable of stretching out hyper-compressed radio waves."
+ id = "s-treatment"
+ req_tech = list("programming" = 2, "magnets" = 1, "materials" = 2, "bluespace" = 1)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 10, "$silver" = 20)
+ build_path = /obj/item/weapon/stock_parts/subspace/treatment
+ category = list("Stock Parts")
diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm
index 9a8532724b5..adeb3859e9c 100644
--- a/code/modules/research/designs/weapon_designs.dm
+++ b/code/modules/research/designs/weapon_designs.dm
@@ -2,7 +2,7 @@
/////////////////Weapons/////////////////
/////////////////////////////////////////
-datum/design/nuclear_gun
+/datum/design/nuclear_gun
name = "Advanced Energy Gun"
desc = "An energy gun with an experimental miniaturized reactor."
id = "nuclear_gun"
@@ -12,28 +12,9 @@ datum/design/nuclear_gun
reliability_base = 76
build_path = /obj/item/weapon/gun/energy/gun/nuclear
locked = 1
+ category = list("Weapons")
-datum/design/stunrevolver
- name = "Stun Revolver"
- desc = "A high-tech revolver that fires internal, reusable stun cartidges in a revolving cylinder. The stun cartridges can be recharged using a conventional energy weapon recharger."
- id = "stunrevolver"
- req_tech = list("combat" = 3, "materials" = 3, "powerstorage" = 2)
- build_type = PROTOLATHE
- materials = list("$metal" = 4000)
- build_path = /obj/item/weapon/gun/energy/stunrevolver
- locked = 1
-
-datum/design/lasercannon
- name = "Laser Cannon"
- desc = "A heavy duty laser cannon."
- id = "lasercannon"
- req_tech = list("combat" = 4, "materials" = 3, "powerstorage" = 3)
- build_type = PROTOLATHE
- materials = list("$metal" = 10000, "$glass" = 2000, "$diamond" = 2000)
- build_path = /obj/item/weapon/gun/energy/lasercannon
- locked = 1
-
-datum/design/decloner
+/datum/design/decloner
name = "Decloner"
desc = "Your opponent will bubble into a messy pile of goop."
id = "decloner"
@@ -42,18 +23,9 @@ datum/design/decloner
materials = list("$gold" = 5000,"$uranium" = 10000, "mutagen" = 40)
build_path = /obj/item/weapon/gun/energy/decloner
locked = 1
-
-datum/design/rapidsyringe
- name = "Rapid Syringe Gun"
- desc = "A gun that fires many syringes."
- id = "rapidsyringe"
- req_tech = list("combat" = 3, "materials" = 3, "engineering" = 3, "biotech" = 2)
- build_type = PROTOLATHE
- materials = list("$metal" = 5000, "$glass" = 1000)
- build_path = /obj/item/weapon/gun/syringe/rapidsyringe
- locked = 1
-
-datum/design/largecrossbow
+ category = list("Weapons")
+
+/datum/design/largecrossbow
name = "Energy Crossbow"
desc = "A reverse-engineered energy crossbow favored by syndicate infiltration teams and carp hunters."
id = "largecrossbow"
@@ -62,18 +34,9 @@ datum/design/largecrossbow
materials = list("$metal" = 5000, "$glass" = 1500, "$uranium" = 1500, "$silver" = 1500)
build_path = /obj/item/weapon/gun/energy/crossbow/largecrossbow
locked = 1
-
-datum/design/temp_gun
- name = "Temperature Gun"
- desc = "A gun that shoots temperature bullet energy things to change temperature."//Change it if you want
- id = "temp_gun"
- req_tech = list("combat" = 3, "materials" = 4, "powerstorage" = 3, "magnets" = 2)
- build_type = PROTOLATHE
- materials = list("$metal" = 5000, "$glass" = 500, "$silver" = 3000)
- build_path = /obj/item/weapon/gun/energy/temperature
- locked = 1
-
-datum/design/flora_gun
+ category = list("Weapons")
+
+/datum/design/flora_gun
name = "Floral Somatoray"
desc = "A tool that discharges controlled radiation which induces mutation in plant cells. Harmless to other organic life."
id = "flora_gun"
@@ -81,37 +44,9 @@ datum/design/flora_gun
build_type = PROTOLATHE
materials = list("$metal" = 2000, "$glass" = 500, "radium" = 20)
build_path = /obj/item/weapon/gun/energy/floragun
-
-datum/design/large_grenade
- name = "Large Grenade"
- desc = "A grenade that affects a larger area and use larger containers."
- id = "large_Grenade"
- req_tech = list("combat" = 3, "materials" = 2)
- build_type = PROTOLATHE
- materials = list("$metal" = 3000)
- reliability_base = 79
- build_path = /obj/item/weapon/grenade/chem_grenade/large
-
-datum/design/smg
- name = "Prototype Submachine Gun"
- desc = "A prototype weapon made using lightweight materials on a traditional frame, designed to fire standard 9mm rounds."
- id = "smg"
- req_tech = list("combat" = 4, "materials" = 3)
- build_type = PROTOLATHE
- materials = list("$metal" = 8000, "$silver" = 2000, "$diamond" = 1000)
- build_path = /obj/item/weapon/gun/projectile/automatic
- locked = 1
-
-datum/design/mag_smg
- name = "Submachine Gun Magazine (9mm)"
- desc = "A 20-round magazine for the prototype submachine gun."
- id = "mag_smg"
- req_tech = list("combat" = 4, "materials" = 3)
- build_type = PROTOLATHE
- materials = list("$metal" = 2000)
- build_path = /obj/item/ammo_box/magazine/smgm9mm
-
-datum/design/ionrifle
+ category = list("Weapons")
+
+/datum/design/ionrifle
name = "Ion Rifle"
desc = "How to dismantle a cyborg : The gun."
id = "ionrifle"
@@ -120,8 +55,74 @@ datum/design/ionrifle
materials = list("$silver" = 4000, "$metal" = 6000, "$uranium" = 1000)
build_path = /obj/item/weapon/gun/energy/ionrifle
locked = 1
+ category = list("Weapons")
-datum/design/stunshell
+/datum/design/large_grenade
+ name = "Large Grenade"
+ desc = "A grenade that affects a larger area and use larger containers."
+ id = "large_Grenade"
+ req_tech = list("combat" = 3, "materials" = 2)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 3000)
+ reliability_base = 79
+ build_path = /obj/item/weapon/grenade/chem_grenade/large
+ category = list("Weapons")
+
+/datum/design/lasercannon
+ name = "Laser Cannon"
+ desc = "A heavy duty laser cannon."
+ id = "lasercannon"
+ req_tech = list("combat" = 4, "materials" = 3, "powerstorage" = 3)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 10000, "$glass" = 2000, "$diamond" = 2000)
+ build_path = /obj/item/weapon/gun/energy/lasercannon
+ locked = 1
+ category = list("Weapons")
+
+/datum/design/plasmapistol
+ name = "Plasma Pistol"
+ desc = "A specialized firearm designed to fire lethal bolts of toxins."
+ id = "ppistol"
+ req_tech = list("combat" = 5, "plasmatech" = 4)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 5000, "$glass" = 1000, "$plasma" = 3000)
+ build_path = /obj/item/weapon/gun/energy/toxgun
+ locked = 1
+ category = list("Weapons")
+
+/datum/design/smg
+ name = "Prototype Submachine Gun"
+ desc = "A prototype weapon made using lightweight materials on a traditional frame, designed to fire standard 9mm rounds."
+ id = "smg"
+ req_tech = list("combat" = 4, "materials" = 3)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 8000, "$silver" = 2000, "$diamond" = 1000)
+ build_path = /obj/item/weapon/gun/projectile/automatic
+ locked = 1
+ category = list("Weapons")
+
+/datum/design/mag_smg
+ name = "Prototype Submachine Gun Magazine (9mm)"
+ desc = "A 20-round magazine for the prototype submachine gun."
+ id = "mag_smg"
+ req_tech = list("combat" = 4, "materials" = 3)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 2000)
+ build_path = /obj/item/ammo_box/magazine/smgm9mm
+ category = list("Weapons")
+
+/datum/design/rapidsyringe
+ name = "Rapid Syringe Gun"
+ desc = "A gun that fires many syringes."
+ id = "rapidsyringe"
+ req_tech = list("combat" = 3, "materials" = 3, "engineering" = 3, "biotech" = 2)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 5000, "$glass" = 1000)
+ build_path = /obj/item/weapon/gun/syringe/rapidsyringe
+ locked = 1
+ category = list("Weapons")
+
+/datum/design/stunshell
name = "Stun Shell"
desc = "A stunning shell for a shotgun."
id = "stunshell"
@@ -129,17 +130,31 @@ datum/design/stunshell
build_type = PROTOLATHE
materials = list("$metal" = 200)
build_path = /obj/item/ammo_casing/shotgun/stunslug
-
-datum/design/techshell
- name = "Unloaded Technological Shotshell"
- desc = "A high-tech shotgun shell which can be loaded with materials to produce unique effects."
- id = "techshotshell"
- req_tech = list("combat" = 3, "materials" = 3, "powerstorage" = 4, "magnets" = 3)
+ category = list("Weapons")
+
+/datum/design/stunrevolver
+ name = "Stun Revolver"
+ desc = "A high-tech revolver that fires internal, reusable stun cartidges in a revolving cylinder. The stun cartridges can be recharged using a conventional energy weapon recharger."
+ id = "stunrevolver"
+ req_tech = list("combat" = 3, "materials" = 3, "powerstorage" = 2)
build_type = PROTOLATHE
- materials = list("$metal" = 1000, "$glass" = 200, "$silver" = 300)
- build_path = /obj/item/ammo_casing/shotgun/techshell
+ materials = list("$metal" = 4000)
+ build_path = /obj/item/weapon/gun/energy/stunrevolver
+ locked = 1
+ category = list("Weapons")
-datum/design/suppressor
+/datum/design/temp_gun
+ name = "Temperature Gun"
+ desc = "A gun that shoots temperature bullet energy things to change temperature."//Change it if you want
+ id = "temp_gun"
+ req_tech = list("combat" = 3, "materials" = 4, "powerstorage" = 3, "magnets" = 2)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 5000, "$glass" = 500, "$silver" = 3000)
+ build_path = /obj/item/weapon/gun/energy/temperature
+ locked = 1
+ category = list("Weapons")
+
+/datum/design/suppressor
name = "Universal Suppressor"
desc = "A reverse-engineered universal suppressor that fits on most small arms with threaded barrels."
id = "suppressor"
@@ -147,8 +162,19 @@ datum/design/suppressor
build_type = PROTOLATHE
materials = list("$metal" = 2000, "$silver" = 500)
build_path = /obj/item/weapon/suppressor
+ category = list("Weapons")
+
+/datum/design/techshell
+ name = "Unloaded Technological Shotshell"
+ desc = "A high-tech shotgun shell which can be loaded with materials to produce unique effects."
+ id = "techshotshell"
+ req_tech = list("combat" = 3, "materials" = 3, "powerstorage" = 4, "magnets" = 3)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 1000, "$glass" = 200, "$silver" = 300)
+ build_path = /obj/item/ammo_casing/shotgun/techshell
+ category = list("Weapons")
-datum/design/xray
+/datum/design/xray
name = "Xray Laser Gun"
desc = "Not quite as menacing as it sounds"
id = "xray"
@@ -157,13 +183,4 @@ datum/design/xray
materials = list("$gold" = 5000,"$uranium" = 10000, "$metal" = 4000)
build_path = /obj/item/weapon/gun/energy/xray
locked = 1
-
-datum/design/plasmapistol
- name = "plasma pistol"
- desc = "A specialized firearm designed to fire lethal bolts of toxins."
- id = "ppistol"
- req_tech = list("combat" = 5, "plasmatech" = 4)
- build_type = PROTOLATHE
- materials = list("$metal" = 5000, "$glass" = 1000, "$plasma" = 3000)
- build_path = /obj/item/weapon/gun/energy/toxgun
- locked = 1
\ No newline at end of file
+ category = list("Weapons")
\ No newline at end of file
diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm
index a98f89e1d88..b1ddc3eb62a 100644
--- a/code/modules/research/protolathe.dm
+++ b/code/modules/research/protolathe.dm
@@ -24,6 +24,19 @@ Note: Must be placed west/left of and R&D console to function.
var/clown_amount = 0.0
var/efficiency_coeff
+ var/list/categories = list(
+ "Bluespace",
+ "Communication",
+ "Equipment",
+ "Janitorial",
+ "Medical",
+ "Mining",
+ "Miscellaneous",
+ "Power",
+ "Stock Parts",
+ "Weapons"
+ )
+
reagents = new()
diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm
index d5b30548dc3..7999d40c187 100644
--- a/code/modules/research/rdconsole.dm
+++ b/code/modules/research/rdconsole.dm
@@ -47,7 +47,9 @@ won't update every console in existence) but it's more of a hassle to do. Also,
var/id = 0 //ID of the computer (for server restrictions).
var/sync = 1 //If sync = 0, it doesn't show up on Server Control Console
- req_access = list(access_tox) //Data and setting manipulation requires scientist access.
+ req_access = list(access_research) //Data and setting manipulation requires scientist access.
+
+ var/selected_category
/obj/machinery/computer/rdconsole/proc/CallTechName(var/ID) //A simple helper proc to find the name of a tech with a given ID.
@@ -124,7 +126,12 @@ won't update every console in existence) but it's more of a hassle to do. Also,
C.files.AddDesign2Known(D)
C.files.RefreshResearch()
-
+/obj/machinery/computer/rdconsole/proc/Maximize()
+ files.known_tech=files.possible_tech
+ for(var/datum/tech/KT in files.known_tech)
+ if(KT.level < KT.max_level)
+ KT.level=KT.max_level
+
/obj/machinery/computer/rdconsole/New()
..()
files = new /datum/research(src) //Setup the research data holder.
@@ -162,7 +169,6 @@ won't update every console in existence) but it's more of a hassle to do. Also,
playsound(src.loc, 'sound/effects/sparks4.ogg', 75, 1)
emagged = 1
user << "You you disable the security protocols"
-
else
..()
src.updateUsrDialog()
@@ -179,6 +185,9 @@ won't update every console in existence) but it's more of a hassle to do. Also,
var/temp_screen = text2num(href_list["menu"])
screen = temp_screen
+ if(href_list["category"])
+ selected_category = href_list["category"]
+
else if(href_list["updt_tech"]) //Update the research holder with information from the technology disk.
screen = 0.0
spawn(50)
@@ -239,6 +248,18 @@ won't update every console in existence) but it's more of a hassle to do. Also,
linked_destroy.loaded_item = null
linked_destroy.icon_state = "d_analyzer"
screen = 2.1
+
+ else if(href_list["maxresearch"]) //Eject the item inside the destructive analyzer.
+ if(!usr.client.holder) return
+ screen = 0.0
+ if(alert("Are you sure you want to maximize research levels?","Confirmation","Yes","No")=="No")
+ return
+ message_admins("[key_name_admin(usr)] has maximized the research levels.")
+ spawn(30)
+ Maximize()
+ screen = 1.0
+ updateUsrDialog()
+ griefProtection() //Update centcomm too
else if(href_list["deconstruct"]) //Deconstruct the item in the destructive analyzer and update the research holder.
if(linked_destroy)
@@ -413,7 +434,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
else
new_item.loc = linked_lathe.loc
linked_lathe.busy = 0
- screen = 3.1
+ screen = 3.15
updateUsrDialog()
else if(href_list["imprint"]) //Causes the Circuit Imprinter to build something.
@@ -719,6 +740,8 @@ won't update every console in existence) but it's more of a hassle to do. Also,
dat += "Disconnect from Research Network
"
dat += "Device Linkage Menu
"
dat += "Lock Console
"
+ if(user.client.holder)
+ dat += "\[ADMIN\] Maximize Research Levels
"
dat += "Reset R&D Database "
if(1.7) //R&D device linkage
@@ -778,31 +801,44 @@ won't update every console in existence) but it's more of a hassle to do. Also,
dat += "Protolathe Menu:
"
dat += "Material Amount: [linked_lathe.TotalMaterials()] / [linked_lathe.max_material_storage]
"
dat += "Chemical Volume: [linked_lathe.reagents.total_volume] / [linked_lathe.reagents.maximum_volume]
"
+
+ dat += list_categories(linked_lathe.categories, 3.15)
+
+ //Grouping designs by categories, to improve readability
+ if(3.15)
+ dat += "Main Menu"
+ dat += "Protolathe Menu"
+ dat += "Browsing [selected_category]:
"
+ dat += "
Material Amount: [linked_lathe.TotalMaterials()] / [linked_lathe.max_material_storage]
"
+ dat += "
Chemical Volume: [linked_lathe.reagents.total_volume] / [linked_lathe.reagents.maximum_volume]
"
+
var/coeff = linked_lathe.efficiency_coeff
for(var/datum/design/D in files.known_designs)
- if(!(D.build_type & PROTOLATHE))
+ if(!(selected_category in D.category)|| !(D.build_type & PROTOLATHE))
continue
- var/temp_dat = "[D.name]"
var/temp_material
var/c = 50
var/t
for(var/M in D.materials)
t = linked_lathe.check_mat(D, M)
+ temp_material += " | "
if (!t)
- temp_material += "
[D.materials[M]/coeff] [CallMaterialName(M)]"
+ temp_material += "
[D.materials[M]/coeff] [CallMaterialName(M)]"
else
temp_material += " [D.materials[M]/coeff] [CallMaterialName(M)]"
c = min(c,t)
if (c)
- dat += "*
[temp_dat]"
+ dat += "
[D.name]"
if(c >= 5.0)
dat += "
x5"
if(c >= 10.0)
dat += "
x10"
dat += "[temp_material]"
else
- dat += "*
[temp_dat][temp_material]"
+ dat += "
[D.name][temp_material]"
+ if(D.locked)
+ dat += "
(LOCKED)"
dat += "
"
dat += "
"
@@ -880,23 +916,35 @@ won't update every console in existence) but it's more of a hassle to do. Also,
dat += "Circuit Imprinter Menu:
"
dat += "Material Amount: [linked_imprinter.TotalMaterials()]
"
dat += "Chemical Volume: [linked_imprinter.reagents.total_volume]
"
+
+ dat += list_categories(linked_imprinter.categories, 4.15)
+
+ if(4.15)
+ dat += "Main Menu"
+ dat += "Circuit Imprinter Menu"
+ dat += "Browsing [selected_category]:
"
+ dat += "Material Amount: [linked_imprinter.TotalMaterials()]
"
+ dat += "Chemical Volume: [linked_imprinter.reagents.total_volume]
"
+
var/coeff = linked_imprinter.efficiency_coeff
for(var/datum/design/D in files.known_designs)
- if(!(D.build_type & IMPRINTER))
+ if(!(selected_category in D.category) || !(D.build_type & IMPRINTER))
continue
- var/temp_dat = "[D.name]"
var/temp_materials
var/check_materials = 1
for(var/M in D.materials)
+ temp_materials += " | "
if (!linked_imprinter.check_mat(D, M))
check_materials = 0
- temp_materials += "
[D.materials[M]/coeff] [CallMaterialName(M)]"
+ temp_materials += "
[D.materials[M]/coeff] [CallMaterialName(M)]"
else
temp_materials += " [D.materials[M]/coeff] [CallMaterialName(M)]"
if (check_materials)
- dat += "*
[temp_dat][temp_materials]
"
+ dat += "
[D.name][temp_materials]
"
else
- dat += "*
[temp_dat][temp_materials]
"
+ dat += "
[D.name][temp_materials]
"
+ if(D.locked)
+ dat += "
(LOCKED)"
dat += "
"
if(4.2)
@@ -931,11 +979,30 @@ won't update every console in existence) but it's more of a hassle to do. Also,
if(linked_imprinter.diamond_amount >= 2000) dat += "All"
dat += ""
- var/datum/browser/popup = new(user, "rndconsole", name, 420, 450)
+ var/datum/browser/popup = new(user, "rndconsole", name, 700, 550)
popup.set_content(dat)
popup.open()
return
+//helper proc, which return a table containing categories
+/obj/machinery/computer/rdconsole/proc/list_categories(var/list/categories, var/menu_num as num)
+ if(!categories)
+ return
+
+ var/line_length = 1
+ var/dat = ""
+
+ for(var/C in categories)
+ if(line_length > 2)
+ dat += "
"
+ line_length = 1
+
+ dat += "| [C] | "
+ line_length++
+
+ dat += "
"
+ return dat
+
/obj/machinery/computer/rdconsole/robotics
name = "Robotics R&D Console"
desc = "A console used to interface with R&D tools."
diff --git a/code/modules/research/research.dm b/code/modules/research/research.dm
index b41fc5a224e..b5f5beb05a8 100644
--- a/code/modules/research/research.dm
+++ b/code/modules/research/research.dm
@@ -140,6 +140,26 @@ research holder datum.
D.reliability = min(100, D.reliability + rand(1,3))
if(I.crit_fail)
D.reliability = min(100, D.reliability + rand(3, 5))
+
+/datum/research/proc/FindDesignByID(var/id)
+ for(var/datum/design/D in known_designs)
+ if(D.id == id)
+ return D
+
+//Autolathe files
+/datum/research/autolathe/New()
+ for(var/T in (typesof(/datum/tech) - /datum/tech))
+ possible_tech += new T(src)
+ for(var/path in typesof(/datum/design) - /datum/design)
+ var/datum/design/D = new path(src)
+ possible_designs += D
+ if((D.build_type & AUTOLATHE) && ("initial" in D.category)) //autolathe starts without hacked designs
+ AddDesign2Known(D)
+
+/datum/research/autolathe/AddDesign2Known(var/datum/design/D)
+ if(!(D.build_type & AUTOLATHE))
+ return
+ ..()
/***************************************************************
** Technology Datums **
diff --git a/maps/cyberiad.dmm b/maps/cyberiad.dmm
index 23dddeda56d..28b04c020db 100644
--- a/maps/cyberiad.dmm
+++ b/maps/cyberiad.dmm
@@ -3716,7 +3716,7 @@
"btx" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics)
"bty" = (/obj/machinery/atmospherics/pipe/manifold{_color = "red"; dir = 1; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics)
"btz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics)
-"btA" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = 6},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/clothing/head/welding{pixel_x = -3; pixel_y = 5},/obj/item/clothing/glasses/welding,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics)
+"btA" = (/obj/structure/closet/wardrobe/robotics_black,/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics)
"btB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area)
"btC" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/manifold{_color = "red"; dir = 1; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/medical/research{name = "Research Division"})
"btD" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
@@ -4224,7 +4224,7 @@
"bDl" = (/obj/machinery/optable{name = "Robotics Operating Table"},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics)
"bDm" = (/obj/machinery/computer/operating{name = "Robotics Operating Computer"},/obj/machinery/light,/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics)
"bDn" = (/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics)
-"bDo" = (/obj/structure/closet/wardrobe/robotics_black,/obj/item/device/radio/headset/headset_sci{pixel_x = -3},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics)
+"bDo" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = 6},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/clothing/head/welding{pixel_x = -3; pixel_y = 5},/obj/item/clothing/glasses/welding,/obj/structure/disposalpipe/segment{dir = 4},/obj/item/device/radio/headset/headset_sci{pixel_x = -3},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics)
"bDp" = (/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"})
"bDq" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bDr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 9; icon_state = "whitehall"},/area/medical/research{name = "Research Division"})
@@ -12810,13 +12810,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabmsbmsbmsbmsbmsbmsbmsbmsbmsbmsbmsbopboqborbosbotboubovbowboxaaibioboyboybozboAaaqaUkbeKaSLaaiaaiaaiaaiaaiaaiaaiaaibmDboBaaiaaiaaiaaiaflaaiaaiaaiaaiboCblhboDaaiboEboFbllbllbllbllblnboGaaibCrabuaaiaaiaaiaaiaaiaaiaaiaflaaiboNboOboPboQboRboSboTaaiboUboVboVaaiaaiaaiaaiaaiaaiaaiaaqaaqboWboXboYboYboXboWaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqboZaaqaaqaaqaaqaaqaaibpaaoybpbbidbidbpcbpcaaiaaiaaiaaiaaibpdbohbohbogbohbidbohbohbohbohbpeaaiaaiaaiaaibpfaaiaaiaaiaaiaaiaaiaaiaaiaaiaaaaaaaaaaaaaNmaNmaNmaNmaNmaNmaaaaNmaNmaNmaNmaNmaNmaaaaaaaaaaaaaaaaaaaaabikbikbikbikbikbikbikbikbikaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabmsbmsbmsbmsbmsbmsbmsbmsbmsbmsbmsaGLaGMaESbpgbotbotbphbpibotaaibpjbpjbpjbpkbplaaqaUkbeKaSLaaqbpmbpnbpobppbpqaaibprbmDbpsaaibptaaibpubpvbpwbpxbpyaaqbpzblhbpAaaibpBbpCbpDbpEbpFbpGbpHaaiaaibFOaaibxBbFNbFNbFNbuKaaiaaaaflaaibpPbpQbpRbpSboRblzbpTaaibpUbpVbpWaaibpXbpYbpZbqabqbbqcbqdbqebqfbqgbqhbqhbqgbqibqjbqkaaqbqlbqmbqnbqoaaqbqpbqqbqrbqsbqtbqubqubqvaaibqwabnaaibqxaaibqybqyaaibqzbqAbqBaaibqCbqDbqCaaibqEbohbpeaaibqFeJLbqFaaibqHbqIaaibqJbqKbqLaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNmaNmaNmaNmaNmaNmaaaaNmaNmaNmaNmaNmaNmaaaaaaaaaaaaaaaaaaaaabikbikbikbikbikbikbikbikbikaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabmsbmsbmsbmsbmsbmsbmsbmsbmsbmsaaabqMaHYbqNbqObotbotbphbpibqPaaibqQbqQbqQbqQbqRaaqaUkbeKaSLaaqbqSbqTbqUbqTbqVaaibqWbqXbqYbqZbraaaibrbbrcbrdbrdbrebrfbrgblhbrhaaibriaaKaaqaaqaaqaaibrjaaibrkbCsacDbEtbEvbEwbExbFMacfceFbrqaaibrrblzbrsbrtboRbrublzaaibrvbrwbrxaaibrybrzbrAbrBbrCbrDbrEbqhbqhbqhbqhbqhbqhbqhbrFbrGbrHbrIbrJbrKbrLaaqbrMbrNbrObrPbrQbrRbrNbqvaaibqwabnbrSbrTbrUbrVbrWaaqbrXbrYbrXbrZbsabsbbscaaiaaqbsdamsaaibsebsfbsgbshbsheJyaaibsibsjbskaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNmaNmaNmaNmaNmaNmaaaaNmaNmaNmaNmaNmaNmaaaaaaaaaaaaaaaaaaaaabikbikbikbikbikbikbikbikbikaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabslazUaaiaaiaaiaoNaoPazUaoNaoPaaiaoNaoPaaiaaiaaiaaibsmbotbotbotbphbpibotaaibsnbsobpjbpjbpkaaqbmBbeKbspaaqbsqbsrbssbstbsuaaibsvbswbsxbrabraaaibsybszbsAbsBbsCbsDbsEbsFbsGacfbsHbsIbsJbsKabIbsLbsMacfbsNcheacfchdcfKchdcfKbFPacfceFbsPacfbsQbsRbsSbsTbsUbsVbsWacfbsXbpVbpVaaibsYbsZbtabtbbtcaaibrEbqhbqhbqhbqhbqhbqhbqhbtdbtebtfbtgbthbtibtjaaqbtkbtlbtmbrPbqvbrRbtnbtoaaibtpbtqbtrbtsbtsbttbtubtvbtwbtwbtwbtxbtybtzbtAbtBbtCbtDbtEbtBbtFbtGbtHbtHbtHbtIaaibtJbsjbtKaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNmaNmaNmaNmaNmaaaaNmaNmaNmaNmaNmaaaaaaaaaaaaaaaaaaaaaaaabikbikbikbikbikbikbikbikbikaaaaaaaaaaaaaaaaaaaaaaaaaPnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabslazUaaiaaiaaiaoNaoPazUaoNaoPaaiaoNaoPaaiaaiaaiaaibsmbotbotbotbphbpibotaaibsnbsobpjbpjbpkaaqbmBbeKbspaaqbsqbsrbssbstbsuaaibsvbswbsxbrabraaaibsybszbsAbsBbsCbsDbsEbsFbsGacfbsHbsIbsJbsKabIbsLbsMacfbsNcheacfchdcfKchdcfKbFPacfceFbsPacfbsQbsRbsSbsTbsUbsVbsWacfbsXbpVbpVaaibsYbsZbtabtbbtcaaibrEbqhbqhbqhbqhbqhbqhbqhbtdbtebtfbtgbthbtibtjaaqbtkbtlbtmbrPbqvbrRbtnbtoaaibtpbtqbtrbtsbtsbttbtubtvbtwbtwbtwbtxbtybtzbDobtBbtCbtDbtEbtBbtFbtGbtHbtHbtHbtIaaibtJbsjbtKaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNmaNmaNmaNmaNmaaaaNmaNmaNmaNmaNmaaaaaaaaaaaaaaaaaaaaaaaabikbikbikbikbikbikbikbikbikaaaaaaaaaaaaaaaaaaaaaaaaaPnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtLbtLbtLbtLbtLbtLbtLbtLbtLbtLbtLbtLbtLaaaaEdbpgbotbotbotbphbpibotaaibqQbqQbtMbmzbmzbtNaUkbeKaSLaaqbtObtPbtQbtRbtSaaibtTbtUbtVbtWbtXaaibtYbtZbuabubbucbudbuebufbugbuhbuibuibujbukabXbAObumacDbunbuoaaibANbExcfIbEvbEqaaiaaabuuaaiabnbuvaaiaaiaaiaaibuwaaibuxbpVbuyacDbuzbuAbuBbuCbuDaaibuEbuFbuGbuHbuIbuJbFLbuLbrFbuMaaqbuNbthbuObuPaaqbuQbuRbrObrPbqvbrRbrNbqvaaibqwabnbuSbuTbuUbuVbuWaGEbuXbuYbuZbvabvbbvcbvdaaibvebvfbvgaaibvhbvibvjbshbvkbvlaaibtJbsjbvmaaiaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabikbikbikbikbikbikbikbikbikaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtLbtLbtLbtLbtLbtLbtLbtLbtLbtLbtLbtLbtLaaaaBabvnbvobotbotbvpbpibvqaaiaaqbvrbvsbvtaaqaaqbmBbeKaSLaaqbvubvvbvwbvxbvyaaibrabswbvzbrabraaaibvAbvBbvCbChbvEaaqbvFbvGbvHaaibvIaaqaaqaoyaaqaaKbvJaaibvKbuoaaicfHbFNbFNbFNbAMaaiaaabuuaaibvPbvQbvRbvSbvTabIbvUabIbvVbpVbvWaaibpXbvXbvYbvZbwabwbbwcbwdbwebwfbwgbwhbwibwjbwkbwlboXbwmbwnbwobwpaaqbwqbwrbwsbwtbwubwvbwubqvaaibwwbwxbwybwzbwzbwAbwBbwCbwDbwEbwFbwGbwHbwIbwJaaibwKbvfbwLaaibwMbwNbwObshbshbwPaaibsibsjbwQaaiaaaaaaaaaaaaaabbwRbwSbwTbwSbwTbwSbwUaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabikbikbikbikbikbikbikbikbikaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtLbtLbtLbtLbtLbtLbtLbtLbtLbtLbtLbtLbtLaEQaERaESbwVbotbotbphbwWbwXacfbwYbkPbwZbxabxbaaqaUkbeKaSLaaqaGLbxcbxdbxeaTbaaibxfbxgbxhbxibxjaaibxkbxlbxmbxnbxkaaqbxobxpbxqaaiaaiaaibxrbxsbxtbxubxvaaibFObuoaaibJcbKpbxDcetbxEaaiaaabrnaaibxGbxHbxIaaqbxJaaqbxKaaqbxLbpVbxMaaiaGLbxNbxcbxObxPaaqbxQbxRbxSbxTbxUbxUbxVbxWbxXbxYaaqaaKbxZaoyaaqaaqaaqaaKbyaaoyaaqaaiaaiaaibybbycabnbydbuTbuUbyebwzbyfbygbyhbyhbyibrXbyjbykbylaaibsdbymaaibynbyobshbypbyqbyraaibtJbysaaiaaiaaaaaaaaaaaaaabbytbyubyvbywbywbyxbytaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabikbikbikbikbikbikbikbikbikaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyybyybyybyybyyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtLbtLbtLbtLbtLbtLbtLbtLbtLbtLbtLbtLbtLbyzbyAbyBbyCbotbotbyDbyEbyFacDbyGbjEbyHbyIbyJaaqaUkbeKaSLbyKbyLbyMbyNbyObyPaaiaaiaaiaaiaaiaaiaaibyQbyRbySbyTbyUaaqbyVbyWbyXbyYbyZbzabzbbzcbzdbzebzfaaibvMbvLacDbusbxxbpObvObxwacfceFbvNaaibzkbzlbzmaaqbznaaqbzoaaqbzpbpVbzqaaibzrbzsbztbzubzvabIbzwbzxabIabIbzybzzabIabIbzAbzBaAvaAybzCbzDbzEbzFbzGbzHbzIbzJbzKaaibzLbzMbzNbzOabnbzPbzQbzRbzSbzTaaqbzUbyhbyhbzVbzWbyjbzXaaibzYbzYbzZaaibBFbAbbAcbAdbshbBJaaibtJbAfaaiaaaaaaaaaaaaaaaaabbAgbAhbyvbywbyvbAibwTaabaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabikbikbikbikbikbikbikbikbikaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyybyybyybyybyybyybyyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtLbtLbtLbtLbtLbtLbtLbtLbtLbtLbtLbtLbtLaGLaGMaESbpgbotbotbAjbotbotaaibAkbkNbAlbAmbAnabIaSJbkRbeLaaqbAobrcbApbAqbAraaqbAsbAtbAubAvbAwbAxbAybAzbAqbAAbABaaqbxobpVbACbADbAEbAFbAGbAHbAIbAJbAKaaibvKbuoaaibuqbrobNybrobpKaaiaaabrnaaiabnaaiaaiaaiaaiaaibARaaibASbpVbzqaaibATbAUbAUbAVbAWaaqbAXbAYbAZbBabBbbBcbBdbAZbBebBfbBgbBhbBibBjbBkbBlbBmbBnbBobBpbBqcolbBsbBtbBubBvbBwbBxbBxbBybBzbBAaaqbBBbrXbrXbBCbBDbyjbBEbAabBGbBHbBIaaqbAebBKaTbbBLbkzaaiaaibBMaaiaaibBNbBObBObBObBPaaibytbywbyvbywbywbBQbytaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabikbikbikbikbikbikbikbikbikaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyybyybyybyybyybyybyybyybyyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtLbtLbtLbtLbtLbtLbtLbtLbtLbtLbtLbtLbtLbBRbBSbqNbqObotbotbAjbotbotaaibBTbjDbBUbBVbBWbBXbBYbBZaSLaaqbCabrcbApbAqbCbaaqbCcbCdbrdbrdbCebCfbCgbAzbAqbvDbCibCjbxobpVbCkbaybAEbClbCmbCnbCobCpbCqbCrabubJbaaiaaibpObpOblvbpJaaiaaabrnaaibCubCvbCwbCxbCybCzbCAacfbCBbpVbzqbwbbCCbCDbCEbCFbCGaaqbCHbCIbCJbCKbCLbCMbCNbCObCPbCQbCRbCSbCTbCUbCVbCWbCXbCYbCZbDabDbaaibDcbDdbDebDfaaibDgbDhbDibDjbDjaaqbDkbDlbDmaaqbDnbyjbDoaaqbDpbDqbDrbDsbDtbDubDvbDwbDxbDybDzbDAbDBbDCbDDbDDbDEbDFbDGbDHbDIbwSbwTbDJbwTbwSbDKaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabikbikbikbikbikbikbikbikbikaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyybyybyybyybyybyybyybyybyyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtLbtLbtLbtLbtLbtLbtLbtLbtLbtLbtLbtLbtLbBRbBSbqNbqObotbotbAjbotbotaaibBTbjDbBUbBVbBWbBXbBYbBZaSLaaqbCabrcbApbAqbCbaaqbCcbCdbrdbrdbCebCfbCgbAzbAqbvDbCibCjbxobpVbCkbaybAEbClbCmbCnbCobCpbCqbCrabubJbaaiaaibpObpOblvbpJaaiaaabrnaaibCubCvbCwbCxbCybCzbCAacfbCBbpVbzqbwbbCCbCDbCEbCFbCGaaqbCHbCIbCJbCKbCLbCMbCNbCObCPbCQbCRbCSbCTbCUbCVbCWbCXbCYbCZbDabDbaaibDcbDdbDebDfaaibDgbDhbDibDjbDjaaqbDkbDlbDmaaqbDnbyjbtAaaqbDpbDqbDrbDsbDtbDubDvbDwbDxbDybDzbDAbDBbDCbDDbDDbDEbDFbDGbDHbDIbwSbwTbDJbwTbwSbDKaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabikbikbikbikbikbikbikbikbikaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyybyybyybyybyybyybyybyybyyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtLbtLbtLbtLbtLbtLbtLbtLbtLbtLbtLbtLbtLaaabDLbpgbotbotbotbDMbotbotaaibDNbDObDPbDQbDRaolbDSbDTaSLaaqbDUbDVbDWbDXbDYbDZbEabEbbEcbEdbEebDZbEfbEgbEhbEibEjaaqbEkbpVbCkbaybAEaaibElbEmbEnbEobEpabnblubErbEsacfacfbLQbEuacfceFceFbpMaaibEybEzbEAbEBbECbECbEDbEEbEFbpVbEGaaiaaqbEHbkzbEIbEJaaqbCHbEKaaqbELbEMbCMbENaaqbCHbEObEPaaqaaqaaqaoyaaqaaqaaqbEQamzaaqaaiaaibERaaqaaqaaiaaiaaqaaKaaqaaqaaqaaqaaqaaqaaqbESbETeGxaaqbEUbEVbEWbEXbEXbEYbEZbFabFbbFcbFdbFebFfbFgbFhbFhbFibDtbFjaaibFkbFlbFmbFnaaibFoaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabikbikbikbikbikbikbikbikbikaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyybyybyybyybyybyybyybyybyyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazUaaiaaiaaiaoNaoPazUaoNaoPaaiaoNaoPaaiaaiaaiaaiaaiaaiaaqaaqaaqaaqaztaolaolaolaolaolbFpbFqbFrbFsbFtbFubFvbrdbFwbrdbFxbAxbFybrdbAqbrdbFzbkzbxobpVbFAbFBbFCaaibFDbFEbFFbFGbFHabnbFIbFJbFKbsObuteJqbulaaqaaaaaaaaaaaibFTbFUbFVbFVbFWbFXbFYaaibFZbGabzqbQKbGcbGdbGebGfbGgbGhbGibCIbkzbGjbGkbGlbGmbkzbCHbEObEPbGnbGobGpbGqbGrbGsbGtbGubGvaaqbGwbGxbGybGzbGAbGBbGCbDybGDbEXbEXbGEbGFbEXbGGbGHbGIbGJbGKbEXbGLbGMbGNbGObGPbGQaaiabnaaiaaiaaibBMaaiaaibBNbBPaaibGRbGSbGTbGUbGVbGWbGXbGYaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyybyybyybyybyybyybyybyybyyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGZbGZbGZbGZbGZbGZbGZaaaaaabADbHabHbbHcbHbbHbbHdbHebHfbHgbHebHhbHcbHbbHibHbbHjbHbamzbHkbrdbHlbrdbFxbHmbHnbHobAqbHpbHqbHrbxobpVbHsbHtbAEaaibHubHvbHwbEmbHxabnbHybHzbrlaaqbALbrmbpNaaqaaaaaaaaaaaibHHbHIbHJbHKbFWbFXbFYaaibHLbHMbHNbHObHPbHQbHRbHSbHTbHUbHVbHWaaqaaqbHXbHYaaqaaqbCHbEObEPbkzbHZbIabIabIabIbbIabIcbIdbIebIfbIgbIhbIhbIibIjbIkbIlbImbDtbDtbInbDtbIobDtbIpbDtbIqbIrbIrbIsbItbIubIvbIwbzjbIybIzbIAbIBaaibICbIDaaaaaaaaaaaibIEbIFbIGbIHbIIbIJbIKaaiaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/paradise.dme b/paradise.dme
index 4942646dc5e..7e82539fe1f 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -1428,6 +1428,7 @@
#include "code\modules\research\research.dm"
#include "code\modules\research\server.dm"
#include "code\modules\research\designs\AI_module_designs.dm"
+#include "code\modules\research\designs\autolathe_designs.dm"
#include "code\modules\research\designs\comp_board_designs.dm"
#include "code\modules\research\designs\machine_designs.dm"
#include "code\modules\research\designs\mecha_designs.dm"