diff --git a/code/datums/wires/autolathe.dm b/code/datums/wires/autolathe.dm
index ccfa7f10221..80f5b4ace97 100644
--- a/code/datums/wires/autolathe.dm
+++ b/code/datums/wires/autolathe.dm
@@ -27,7 +27,7 @@ var/const/AUTOLATHE_DISABLE_WIRE = 4
var/obj/machinery/autolathe/A = holder
switch(index)
if(AUTOLATHE_HACK_WIRE)
- A.hacked = !mended
+ A.adjust_hacked(!mended)
if(AUTOLATHE_SHOCK_WIRE)
A.shocked = !mended
if(AUTOLATHE_DISABLE_WIRE)
@@ -39,10 +39,10 @@ var/const/AUTOLATHE_DISABLE_WIRE = 4
var/obj/machinery/autolathe/A = holder
switch(index)
if(AUTOLATHE_HACK_WIRE)
- A.hacked = !A.hacked
+ A.adjust_hacked(!A.hacked)
spawn(50)
if(A && !IsIndexCut(index))
- A.hacked = 0
+ A.adjust_hacked(0)
Interact(usr)
if(AUTOLATHE_SHOCK_WIRE)
A.shocked = !A.shocked
diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm
index ca428f7c6c2..b94220d792b 100644
--- a/code/game/machinery/autolathe.dm
+++ b/code/game/machinery/autolathe.dm
@@ -1,74 +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/empty(), \
- new /obj/item/device/tape(), \
- 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/newscaster_frame(), \
- 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/electropack(), \
- new /obj/item/weapon/weldingtool/largetank(), \
- new /obj/item/weapon/restraints/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."
@@ -98,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(
+ "Tools",
+ "Electronics",
+ "Construction",
+ "T-Comm",
+ "Security",
+ "Medical",
+ "Misc"
+ )
+
/obj/machinery/autolathe/New()
..()
component_parts = list()
@@ -110,13 +54,30 @@ 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(!is_operational())
+ return
+
if(shocked && !(stat & NOPOWER))
shock(user,50)
- regular_win(user)
+
+ 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, 400, 500)
+ popup.set_content(dat)
+ popup.open()
+
return
/obj/machinery/autolathe/attackby(obj/item/O, mob/user)
@@ -198,73 +159,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()
@@ -278,45 +234,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
@@ -330,3 +312,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 a19eaff4eb4..958ed65f986 100644
--- a/code/modules/research/circuitprinter.dm
+++ b/code/modules/research/circuitprinter.dm
@@ -17,6 +17,19 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
var/efficiency_coeff
reagents = new()
+ var/list/categories = list(
+ "AI Modules",
+ "Computer Boards",
+ "Teleportation Machinery",
+ "Medical Machinery",
+ "Engineering Machinery",
+ "Exosuit Modules",
+ "Hydroponics Machinery",
+ "Subspace Telecomms",
+ "Research Machinery",
+ "Misc. Machinery"
+ )
+
/obj/machinery/r_n_d/circuit_imprinter/New()
..()
component_parts = list()
diff --git a/code/modules/research/designs/AI_module_designs.dm b/code/modules/research/designs/AI_module_designs.dm
index d91e8efb90a..9915b0eb92c 100644
--- a/code/modules/research/designs/AI_module_designs.dm
+++ b/code/modules/research/designs/AI_module_designs.dm
@@ -2,79 +2,89 @@
//////////AI Module Disks//////////
///////////////////////////////////
-datum/design/safeguard_module
- name = "AI Module(Safeguard)"
+
+/datum/design/safeguard_module
+ name = "Module Design (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/onehuman_module
- name = "AI Module (OneHuman)"
+/datum/design/onehuman_module
+ name = "Module Design (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/protectstation_module
- name = "AI Module (ProtectStation)"
+/datum/design/protectstation_module
+ name = "Module Design (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
+ category = list("AI Modules")
-datum/design/quarantine_module
- name = "AI Module (Quarantine)"
+/datum/design/quarantine_module
+ name = "Module Design (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
+ category = list("AI Modules")
-datum/design/oxygen_module
- name = "AI Module (OxygenIsToxicToHumans)"
+
+/datum/design/oxygen_module
+ name = "Module Design (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/freeform_module
- name = "AI Module (Freeform)"
+/datum/design/freeform_module
+ name = "Module Design (Freeform)"
desc = "Allows for the construction of a Freeform AI Module."
id = "freeform_module"
req_tech = list("programming" = 4, "materials" = 4)
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/reset_module
- name = "AI Module (Reset)"
+/datum/design/reset_module
+ name = "Module Design (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, "$gold" = 100)
build_path = /obj/item/weapon/aiModule/reset
+ category = list("AI Modules")
-datum/design/purge_module
- name = "AI Module (Purge)"
+/datum/design/purge_module
+ name = "Module Design (Purge)"
desc = "Allows for the construction of a Purge AI Module."
id = "purge_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/reset/purge
+ category = list("AI Modules")
-datum/design/freeformcore_module
+/datum/design/freeformcore_module
name = "AI Core Module (Freeform)"
desc = "Allows for the construction of a Freeform AI Core Module."
id = "freeformcore_module"
@@ -82,48 +92,54 @@ datum/design/freeformcore_module
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/asimov
- name = "AI Core Module (Asimov)"
+/datum/design/asimov
+ name = "Core Module Design (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/paladin_module
- name = "AI Core Module (P.A.L.A.D.I.N.)"
+/datum/design/paladin_module
+ name = "Core Module Design (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 = "AI Core Module (T.Y.R.A.N.T.)"
+/datum/design/tyrant_module
+ name = "Core Module Design (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")
-datum/design/corporate_module
- name = "AI Core Module (Corporate)"
+/datum/design/corporate_module
+ name = "Core Module Design (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 = "AI Core Module (Custom)"
+/datum/design/custom_module
+ name = "Core Module Design (Custom)"
desc = "Allows for the construction of a Custom AI Core Module."
id = "custom_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/custom
\ No newline at end of file
+ build_path = /obj/item/weapon/aiModule/core/full/custom
+ 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..8eca25e1066
--- /dev/null
+++ b/code/modules/research/designs/autolathe_designs.dm
@@ -0,0 +1,492 @@
+///////////////////////////////////
+//////////Autolathe Designs ///////
+///////////////////////////////////
+
+/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/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/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/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/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/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/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/screwdriver
+ name = "Screwdriver"
+ id = "screwdriver"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 75)
+ build_path = /obj/item/weapon/screwdriver
+ 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/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/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/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/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/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/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", "Misc")
+
+/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/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/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/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/kitchen_knife
+ name = "Kitchen knife"
+ id = "kitchen_knife"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 12000)
+ build_path = /obj/item/weapon/kitchenknife
+ category = list("initial","Misc")
+
+/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/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/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/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/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/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/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/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/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/recorder
+ name = "Universal recorder"
+ id = "recorder"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 60, "$glass" = 30)
+ build_path = /obj/item/device/taperecorder/empty
+ category = list("initial", "Misc")
+
+/datum/design/tape
+ name = "Tape"
+ id = "tape"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 20, "$glass" = 5)
+ build_path = /obj/item/device/tape
+ category = list("initial", "Misc")
+
+/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", "Misc")
+
+/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", "T-Comm")
+
+/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", "T-Comm")
+
+/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", "T-Comm")
+
+/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", "Misc")
+
+/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", "Misc")
+
+/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", "Misc")
+
+/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/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/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/newscaster_frame
+ name = "Newscaster frame"
+ id = "newscaster_frame"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 14000, "$glass" = 8000)
+ build_path = /obj/item/newscaster_frame
+ category = list("initial", "Construction")
+
+/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/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", "Misc")
+
+//hacked autolathe recipes
+/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/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/electropack
+ name = "Electropack"
+ id = "electropack"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 10000, "$glass" = 2500)
+ build_path = /obj/item/device/electropack
+ category = list("hacked", "Tools")
+
+/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/handcuffs
+ name = "Handcuffs"
+ id = "handcuffs"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 500)
+ build_path = /obj/item/weapon/restraints/handcuffs
+ 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")
+
+/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/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/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/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/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/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/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")
diff --git a/code/modules/research/designs/comp_board_designs.dm b/code/modules/research/designs/comp_board_designs.dm
index 599e9700966..297a1eaa353 100644
--- a/code/modules/research/designs/comp_board_designs.dm
+++ b/code/modules/research/designs/comp_board_designs.dm
@@ -1,6 +1,6 @@
///////////////////Computer Boards///////////////////////////////////
-datum/design/seccamera
+/datum/design/seccamera
name = "Computer Design (Security)"
desc = "Allows for the construction of circuit boards used to build security camera computers."
id = "seccamera"
@@ -8,8 +8,9 @@ datum/design/seccamera
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/security
+ category = list("Computer Boards")
-datum/design/aicore
+/datum/design/aicore
name = "AI Design (AI Core)"
desc = "Allows for the construction of circuit boards used to build new AI cores."
id = "aicore"
@@ -17,8 +18,9 @@ datum/design/aicore
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/aicore
+ category = list("Computer Boards")
-datum/design/aiupload
+/datum/design/aiupload
name = "Computer Design (AI Upload)"
desc = "Allows for the construction of circuit boards used to build an AI Upload Console."
id = "aiupload"
@@ -26,8 +28,9 @@ datum/design/aiupload
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/aiupload
+ category = list("Computer Boards")
-datum/design/borgupload
+/datum/design/borgupload
name = "Computer Design (Cyborg Upload)"
desc = "Allows for the construction of circuit boards used to build a Cyborg Upload Console."
id = "borgupload"
@@ -35,8 +38,9 @@ datum/design/borgupload
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/borgupload
+ category = list("Computer Boards")
-datum/design/med_data
+/datum/design/med_data
name = "Computer Design (Medical Records)"
desc = "Allows for the construction of circuit boards used to build a medical records console."
id = "med_data"
@@ -44,8 +48,9 @@ datum/design/med_data
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/med_data
+ category = list("Computer Boards")
-datum/design/operating
+/datum/design/operating
name = "Computer Design (Operating Computer)"
desc = "Allows for the construction of circuit boards used to build an operating computer console."
id = "operating"
@@ -53,8 +58,9 @@ datum/design/operating
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/operating
+ category = list("Computer Boards")
-datum/design/pandemic
+/datum/design/pandemic
name = "Computer Design (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"
@@ -62,8 +68,9 @@ datum/design/pandemic
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/pandemic
+ category = list("Computer Boards")
-datum/design/scan_console
+/datum/design/scan_console
name = "Computer Design (DNA Machine)"
desc = "Allows for the construction of circuit boards used to build a new DNA scanning console."
id = "scan_console"
@@ -71,8 +78,9 @@ datum/design/scan_console
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/scan_consolenew
+ category = list("Computer Boards")
-datum/design/comconsole
+/datum/design/comconsole
name = "Computer Design (Communications)"
desc = "Allows for the construction of circuit boards used to build a communications console."
id = "comconsole"
@@ -80,8 +88,9 @@ datum/design/comconsole
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/communications
+ category = list("Computer Boards")
-datum/design/idcardconsole
+/datum/design/idcardconsole
name = "Computer Design (ID Console)"
desc = "Allows for the construction of circuit boards used to build an ID computer."
id = "idcardconsole"
@@ -89,8 +98,9 @@ datum/design/idcardconsole
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/card
+ category = list("Computer Boards")
-datum/design/crewconsole
+/datum/design/crewconsole
name = "Computer Design (Crew monitoring computer)"
desc = "Allows for the construction of circuit boards used to build a Crew monitoring computer."
id = "crewconsole"
@@ -98,8 +108,9 @@ datum/design/crewconsole
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/crew
+ category = list("Computer Boards")
-datum/design/teleconsole
+/datum/design/teleconsole
name = "Computer Design (Teleporter Console)"
desc = "Allows for the construction of circuit boards used to build a teleporter control console."
id = "teleconsole"
@@ -107,8 +118,9 @@ datum/design/teleconsole
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/teleporter
+ category = list("Computer Boards")
-datum/design/secdata
+/datum/design/secdata
name = "Computer Design (Security Records Console)"
desc = "Allows for the construction of circuit boards used to build a security records console."
id = "secdata"
@@ -116,8 +128,9 @@ datum/design/secdata
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/secure_data
+ category = list("Computer Boards")
-datum/design/atmosalerts
+/datum/design/atmosalerts
name = "Computer Design (Atmosphere Alert)"
desc = "Allows for the construction of circuit boards used to build an atmosphere alert console."
id = "atmosalerts"
@@ -125,8 +138,9 @@ datum/design/atmosalerts
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
+/datum/design/air_management
name = "Computer Design (Atmospheric Monitor)"
desc = "Allows for the construction of circuit boards used to build an Atmospheric Monitor."
id = "air_management"
@@ -134,8 +148,9 @@ datum/design/air_management
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/air_management
+ category = list("Computer Boards")
-datum/design/robocontrol
+/datum/design/robocontrol
name = "Computer Design (Robotics Control Console)"
desc = "Allows for the construction of circuit boards used to build a Robotics Control console."
id = "robocontrol"
@@ -143,8 +158,9 @@ datum/design/robocontrol
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/robotics
+ category = list("Computer Boards")
-datum/design/clonecontrol
+/datum/design/clonecontrol
name = "Computer Design (Cloning Machine Console)"
desc = "Allows for the construction of circuit boards used to build a new Cloning Machine console."
id = "clonecontrol"
@@ -152,8 +168,9 @@ datum/design/clonecontrol
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/cloning
+ category = list("Computer Boards")
-datum/design/clonepod
+/datum/design/clonepod
name = "Machine Design (Clone Pod)"
desc = "Allows for the construction of circuit boards used to build a Cloning Pod."
id = "clonepod"
@@ -161,8 +178,9 @@ datum/design/clonepod
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/clonepod
+ category = list("Computer Boards")
-datum/design/clonescanner
+/datum/design/clonescanner
name = "Machine Design (Cloning Scanner)"
desc = "Allows for the construction of circuit boards used to build a Cloning Scanner."
id = "clonescanner"
@@ -170,8 +188,9 @@ datum/design/clonescanner
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/clonescanner
+ category = list("Computer Boards")
-datum/design/arcadebattle
+/datum/design/arcadebattle
name = "Computer Design (Battle Arcade Machine)"
desc = "Allows for the construction of circuit boards used to build a new arcade machine."
id = "arcademachine"
@@ -179,8 +198,9 @@ datum/design/arcadebattle
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/arcade/battle
+ category = list("Computer Boards")
-datum/design/orion_trail
+/datum/design/orion_trail
name = "Computer Design (Orion Trail Arcade Machine)"
desc = "Allows for the construction of circuit boards used to build a new Orion Trail machine."
id = "arcademachine"
@@ -188,8 +208,9 @@ datum/design/orion_trail
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/arcade/orion_trail
+ category = list("Computer Boards")
-datum/design/orion_trail
+/datum/design/orion_trail
name = "Computer Design (Slot Machine)"
desc = "Allows for the construction of circuit boards used to build a new slot machine."
id = "slotmachine"
@@ -197,8 +218,9 @@ datum/design/orion_trail
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/slot_machine
+ category = list("Computer Boards")
-datum/design/powermonitor
+/datum/design/powermonitor
name = "Computer Design (Power Monitor)"
desc = "Allows for the construction of circuit boards used to build a new power monitor."
id = "powermonitor"
@@ -206,8 +228,9 @@ datum/design/powermonitor
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/powermonitor
+ category = list("Computer Boards")
-datum/design/solarcontrol
+/datum/design/solarcontrol
name = "Computer Design (Solar Control)"
desc = "Allows for the construction of circuit boards used to build a solar control console."
id = "solarcontrol"
@@ -215,8 +238,9 @@ datum/design/solarcontrol
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/solar_control
+ category = list("Computer Boards")
-datum/design/prisonmanage
+/datum/design/prisonmanage
name = "Computer Design (Prisoner Management Console)"
desc = "Allows for the construction of circuit boards used to build a prisoner management console."
id = "prisonmanage"
@@ -224,8 +248,9 @@ datum/design/prisonmanage
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/prisoner
+ category = list("Computer Boards")
-datum/design/mechacontrol
+/datum/design/mechacontrol
name = "Computer Design (Exosuit Control Console)"
desc = "Allows for the construction of circuit boards used to build an exosuit control console."
id = "mechacontrol"
@@ -233,8 +258,9 @@ datum/design/mechacontrol
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha_control
+ category = list("Computer Boards")
-datum/design/mechapower
+/datum/design/mechapower
name = "Computer Design (Mech Bay Power Control Console)"
desc = "Allows for the construction of circuit boards used to build a mech bay power control console."
id = "mechapower"
@@ -242,8 +268,9 @@ datum/design/mechapower
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/rdconsole
+/datum/design/rdconsole
name = "Computer Design (R&D Console)"
desc = "Allows for the construction of circuit boards used to build a new R&D console."
id = "rdconsole"
@@ -251,8 +278,9 @@ datum/design/rdconsole
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/rdconsole
+ category = list("Computer Boards")
-datum/design/ordercomp
+/datum/design/ordercomp
name = "Computer Design (Supply ordering console)"
desc = "Allows for the construction of circuit boards used to build a Supply ordering console."
id = "ordercomp"
@@ -260,8 +288,9 @@ datum/design/ordercomp
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/ordercomp
+ category = list("Computer Boards")
-datum/design/supplycomp
+/datum/design/supplycomp
name = "Computer Design (Supply shuttle console)"
desc = "Allows for the construction of circuit boards used to build a Supply shuttle console."
id = "supplycomp"
@@ -269,8 +298,9 @@ datum/design/supplycomp
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/supplycomp
+ category = list("Computer Boards")
-datum/design/mining
+/datum/design/mining
name = "Computer Design (Outpost Status Display)"
desc = "Allows for the construction of circuit boards used to build an outpost status display console."
id = "mining"
@@ -278,8 +308,9 @@ datum/design/mining
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mining
+ category = list("Computer Boards")
-datum/design/comm_monitor
+/datum/design/comm_monitor
name = "Computer Design (Telecommunications Monitoring Console)"
desc = "Allows for the construction of circuit boards used to build a telecommunications monitor."
id = "comm_monitor"
@@ -287,8 +318,9 @@ datum/design/comm_monitor
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
+/datum/design/comm_server
name = "Computer Design (Telecommunications Server Monitoring Console)"
desc = "Allows for the construction of circuit boards used to build a telecommunication server browser and monitor."
id = "comm_server"
@@ -296,8 +328,9 @@ datum/design/comm_server
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/comm_server
+ category = list("Computer Boards")
-datum/design/message_monitor
+/datum/design/message_monitor
name = "Computer Design (Messaging Monitor Console)"
desc = "Allows for the construction of circuit boards used to build a messaging monitor console."
id = "message_monitor"
@@ -305,8 +338,9 @@ datum/design/message_monitor
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/message_monitor
+ category = list("Computer Boards")
-datum/design/comm_traffic
+/datum/design/comm_traffic
name = "Computer Design (Telecommunications Traffic Control Console)"
desc = "Allows for the construction of circuit boards used to build a telecommunications traffic control console."
id = "comm_traffic"
@@ -314,8 +348,9 @@ datum/design/comm_traffic
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
+/datum/design/telesci_console
name = "Computer Design (Telepad Control Console Board)"
desc = "Allows for the construction of circuit boards used to build a telescience console."
id = "telesci_console"
@@ -323,12 +358,14 @@ datum/design/telesci_console
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/telesci_console
+ category = list("Computer Boards")
-datum/design/aifixer
+/datum/design/aifixer
name = "Computer Design (AI Integrity Restorer)"
desc = "Allows for the construction of circuit boards used to build an AI Integrity Restorer."
id = "aifixer"
req_tech = list("programming" = 3, "biotech" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/aifixer
\ No newline at end of file
+ build_path = /obj/item/weapon/circuitboard/aifixer
+ category = list("Computer Boards")
diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm
index bc0d01dd8fb..bcd39b203e3 100644
--- a/code/modules/research/designs/machine_designs.dm
+++ b/code/modules/research/designs/machine_designs.dm
@@ -2,7 +2,7 @@
//////////////MISC Boards///////////////
////////////////////////////////////////
-datum/design/smes
+/datum/design/smes
name = "Machine Design (SMES Board)"
desc = "The circuit board for a SMES."
id = "smes"
@@ -10,8 +10,9 @@ datum/design/smes
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/smes
+ category = list ("Engineering Machinery")
-datum/design/turbine_computer
+/datum/design/turbine_computer
name = "Computer Design (Power Turbine Console Board)"
desc = "The circuit board for a power turbine console."
id = "power_turbine_console"
@@ -19,8 +20,9 @@ datum/design/turbine_computer
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/turbine_computer
+ category = list ("Engineering Machinery")
-datum/design/power_compressor
+/datum/design/power_compressor
name = "Machine Design (Power Compressor Board)"
desc = "The circuit board for a power compressor."
id = "power_compressor"
@@ -28,8 +30,9 @@ datum/design/power_compressor
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/power_compressor
+ category = list ("Engineering Machinery")
-datum/design/power_turbine
+/datum/design/power_turbine
name = "Machine Design (Power Turbine Board)"
desc = "The circuit board for a power turbine."
id = "power_turbine"
@@ -37,53 +40,9 @@ datum/design/power_turbine
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/power_turbine
+ category = list ("Engineering Machinery")
-datum/design/teleport_station
- name = "Machine Design (Teleportation Station Board)"
- desc = "The circuit board for a teleportation 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/teleport_hub
- name = "Machine Design (Teleportation Hub Board)"
- desc = "The circuit board for 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/telepad
- name = "Machine Design (Telepad Board)"
- desc = "The circuit board for a telescience 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 Design (Sleeper Board)"
- desc = "The circuit board for 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/cryotube
- name = "Machine Design (Cryotube Board)"
- desc = "The circuit board for 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/thermomachine
+/datum/design/thermomachine
name = "Machine Design (Freezer/Heater Board)"
desc = "The circuit board for a freezer/heater."
id = "thermomachine"
@@ -91,35 +50,59 @@ 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 Design (Biogenerator Board)"
- desc = "The circuit board for a biogenerator."
- id = "biogenerator"
- req_tech = list("programming" = 3, "biotech" = 2, "materials" = 3)
+/datum/design/teleport_station
+ name = "Machine Design (Teleportation Station Board)"
+ desc = "The circuit board for a teleportation 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/biogenerator
+ build_path = /obj/item/weapon/circuitboard/teleporter_station
+ category = list ("Teleportation Machinery")
-datum/design/hydroponics
- name = "Machine Design (Hydroponics Tray Board)"
- desc = "The circuit board for a hydroponics tray."
- id = "hydro_tray"
- req_tech = list("programming" = 1, "biotech" = 1)
+/datum/design/teleport_hub
+ name = "Machine Design (Teleportation Hub Board)"
+ desc = "The circuit board for 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/hydroponics
+ build_path = /obj/item/weapon/circuitboard/teleporter_hub
+ category = list ("Teleportation Machinery")
-datum/design/microwave
- name = "Machine Design (Microwave Board)"
- desc = "The circuit board for a microwave."
- id = "microwave"
- req_tech = list("programming" = 1)
+/datum/design/telepad
+ name = "Machine Design (Telepad Board)"
+ desc = "The circuit board for a telescience 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/microwave
+ build_path = /obj/item/weapon/circuitboard/telesci_pad
+ category = list ("Teleportation Machinery")
-datum/design/chem_dispenser
+/datum/design/sleeper
+ name = "Machine Design (Sleeper Board)"
+ desc = "The circuit board for 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
+ category = list ("Medical Machinery")
+
+/datum/design/cryotube
+ name = "Machine Design (Cryotube Board)"
+ desc = "The circuit board for 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 Design (Portable Chem Dispenser Board)"
desc = "The circuit board for a portable chem dispenser."
id = "chem_dispenser"
@@ -127,8 +110,29 @@ datum/design/chem_dispenser
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/chem_dispenser
+ category = list ("Medical Machinery")
-datum/design/destructive_analyzer
+/datum/design/biogenerator
+ name = "Machine Design (Biogenerator Board)"
+ 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/biogenerator
+ category = list ("Hydroponics Machinery")
+
+/datum/design/hydroponics
+ name = "Machine Design (Hydroponics Tray Board)"
+ 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/destructive_analyzer
name = "Machine Design (Destructive Analyzer Board)"
desc = "The circuit board for a destructive analyzer."
id = "destructive_analyzer"
@@ -136,8 +140,9 @@ datum/design/destructive_analyzer
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/destructive_analyzer
+ category = list("Research Machinery")
-datum/design/protolathe
+/datum/design/protolathe
name = "Machine Design (Protolathe Board)"
desc = "The circuit board for a protolathe."
id = "protolathe"
@@ -145,8 +150,9 @@ datum/design/protolathe
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/protolathe
+ category = list("Research Machinery")
-datum/design/circuit_imprinter
+/datum/design/circuit_imprinter
name = "Machine Design (Circuit Imprinter Board)"
desc = "The circuit board for a circuit imprinter."
id = "circuit_imprinter"
@@ -154,17 +160,9 @@ datum/design/circuit_imprinter
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/circuit_imprinter
+ category = list("Research Machinery")
-datum/design/autolathe
- name = "Machine Design (Autolathe Board)"
- desc = "The circuit board for an autolathe."
- id = "autolathe"
- req_tech = list("programming" = 2, "engineering" = 2)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/autolathe
-
-datum/design/rdservercontrol
+/datum/design/rdservercontrol
name = "Computer Design (R&D Server Control Console Board)"
desc = "The circuit board for an R&D Server Control Console."
id = "rdservercontrol"
@@ -172,8 +170,9 @@ datum/design/rdservercontrol
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/rdservercontrol
+ category = list("Research Machinery")
-datum/design/rdserver
+/datum/design/rdserver
name = "Machine Design (R&D Server Board)"
desc = "The circuit board for an R&D Server."
id = "rdserver"
@@ -181,8 +180,9 @@ datum/design/rdserver
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/rdserver
+ category = list("Research Machinery")
-datum/design/mechfab
+/datum/design/mechfab
name = "Machine Design (Exosuit Fabricator Board)"
desc = "The circuit board for an Exosuit Fabricator."
id = "mechfab"
@@ -190,8 +190,9 @@ datum/design/mechfab
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mechfab
+ category = list("Research Machinery")
-datum/design/cyborgrecharger
+/datum/design/cyborgrecharger
name = "Machine Design (Cyborg Recharger Board)"
desc = "The circuit board for a Cyborg Recharger."
id = "cyborgrecharger"
@@ -199,8 +200,9 @@ datum/design/cyborgrecharger
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/cyborgrecharger
+ category = list("Research Machinery")
-datum/design/mech_recharger
+/datum/design/mech_recharger
name = "Machine Design (Mechbay Recharger Board)"
desc = "The circuit board for a Mechbay Recharger."
id = "mech_recharger"
@@ -208,8 +210,29 @@ 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/microwave
+ name = "Machine Design (Microwave Board)"
+ 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/autolathe
+ name = "Machine Design (Autolathe Board)"
+ desc = "The circuit board for an autolathe."
+ id = "autolathe"
+ req_tech = list("programming" = 2, "engineering" = 2)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/autolathe
+ category = list ("Misc. Machinery")
+
+/datum/design/vendor
name = "Machine Design (Vendor Board)"
desc = "The circuit board for a Vendor."
id = "vendor"
@@ -217,8 +240,9 @@ datum/design/vendor
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/vendor
+ category = list ("Misc. Machinery")
-datum/design/ore_redemption
+/datum/design/ore_redemption
name = "Machine Design (Ore Redemption Board)"
desc = "The circuit board for an Ore Redemption machine."
id = "ore_redemption"
@@ -226,13 +250,15 @@ datum/design/ore_redemption
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/ore_redemption
+ category = list ("Misc. Machinery")
-datum/design/mining_equipment_vendor
+/datum/design/mining_equipment_vendor
name = "Machine Design (Mining Rewards Vender Board)"
desc = "The circuit board for a Mining Rewards Vender."
id = "mining_equipment_vendor"
req_tech = list("programming" = 1, "engineering" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/mining_equipment_vendor
\ No newline at end of file
+ build_path = /obj/item/weapon/circuitboard/mining_equipment_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 08d65a3a975..479c91de938 100644
--- a/code/modules/research/designs/mecha_designs.dm
+++ b/code/modules/research/designs/mecha_designs.dm
@@ -10,6 +10,7 @@ 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
name = "Exosuit Module (APLU \"Ripley\" Peripherals Control module)"
@@ -19,6 +20,7 @@ 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")
datum/design/odysseus_main
name = "Exosuit Module (\"Odysseus\" Central Control module)"
@@ -28,6 +30,7 @@ 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
name = "Exosuit Module (\"Odysseus\" Peripherals Control module)"
@@ -37,6 +40,7 @@ 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")
datum/design/gygax_main
name = "Exosuit Module (\"Gygax\" Central Control module)"
@@ -46,6 +50,7 @@ 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
name = "Exosuit Module (\"Gygax\" Peripherals Control module)"
@@ -55,6 +60,7 @@ 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
name = "Exosuit Module (\"Gygax\" Weapons & Targeting Control module)"
@@ -64,6 +70,7 @@ 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")
datum/design/durand_main
name = "Exosuit Module (\"Durand\" Central Control module)"
@@ -73,6 +80,7 @@ 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
name = "Exosuit Module (\"Durand\" Peripherals Control module)"
@@ -82,6 +90,7 @@ 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
name = "Exosuit Module (\"Durand\" Weapons & Targeting Control module)"
@@ -91,6 +100,7 @@ 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")
datum/design/honker_main
name = "Exosuit Module (\"H.O.N.K\" Central Control module)"
@@ -100,6 +110,7 @@ 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
name = "Exosuit Module (\"H.O.N.K\" Peripherals Control module)"
@@ -109,6 +120,7 @@ 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
name = "Exosuit Module (\"H.O.N.K\" Weapons & Targeting Control module)"
@@ -118,6 +130,7 @@ 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")
datum/design/phazon_main
name = "Exosuit Module (\"Phazon\" Central Control module)"
@@ -127,6 +140,7 @@ 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
name = "Exosuit Module (\"Phazon\" Peripherals Control module)"
@@ -136,6 +150,7 @@ 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
name = "Exosuit Module (\"Phazon\" Weapons & Targeting Control module)"
@@ -145,6 +160,7 @@ 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")
////////////////////////////////////////
/////////// Mecha Equpment /////////////
@@ -346,4 +362,4 @@ datum/design/mech_generator_nuclear
build_path = /obj/item/mecha_parts/mecha_equipment/generator/nuclear
materials = list("$metal"=10000,"$glass"=1000,"$silver"=500)
construction_time = 100
- category = list("Exosuit Equipment")
\ No newline at end of file
+ category = list("Exosuit Equipment")
diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm
index 6e5143a5e07..013841c43c9 100644
--- a/code/modules/research/designs/medical_designs.dm
+++ b/code/modules/research/designs/medical_designs.dm
@@ -11,6 +11,7 @@ datum/design/mass_spectrometer
materials = list("$metal" = 30, "$glass" = 20)
reliability = 76
build_path = /obj/item/device/mass_spectrometer
+ category = list("Medical Designs")
datum/design/adv_mass_spectrometer
name = "Advanced Mass-Spectrometer"
@@ -21,6 +22,7 @@ datum/design/adv_mass_spectrometer
materials = list("$metal" = 30, "$glass" = 20)
reliability = 74
build_path = /obj/item/device/mass_spectrometer/adv
+ category = list("Medical Designs")
datum/design/mmi
name = "Man-Machine Interface"
@@ -32,7 +34,7 @@ datum/design/mmi
construction_time = 75
reliability = 76
build_path = /obj/item/device/mmi
- category = list("Misc")
+ category = list("Misc","Medical Designs")
datum/design/mmi_radio
name = "Radio-enabled Man-Machine Interface"
@@ -44,7 +46,7 @@ datum/design/mmi_radio
construction_time = 75
reliability = 74
build_path = /obj/item/device/mmi/radio_enabled
- category = list("Misc")
+ category = list("Misc","Medical Designs")
datum/design/synthetic_flash
name = "Flash"
@@ -67,7 +69,7 @@ datum/design/bluespacebeaker
materials = list("$metal" = 3000, "$plasma" = 3000, "$diamond" = 500)
reliability = 76
build_path = /obj/item/weapon/reagent_containers/glass/beaker/bluespace
- category = list("Misc")
+ category = list("Misc","Medical Designs")
datum/design/noreactbeaker
name = "Cryostasis Beaker"
@@ -78,7 +80,7 @@ datum/design/noreactbeaker
materials = list("$metal" = 3000)
reliability = 76
build_path = /obj/item/weapon/reagent_containers/glass/beaker/noreact
- category = list("Misc")
+ category = list("Medical Designs")
datum/design/bluespacebodybag
name = "Bluespace body bag"
@@ -89,7 +91,7 @@ datum/design/bluespacebodybag
materials = list("$metal" = 3000, "$plasma" = 2000, "$diamond" = 500)
reliability = 76
build_path = /obj/item/bodybag/bluespace
- category = list("Misc")
+ category = list("Medical Designs")
datum/design/defib
name = "Defibrillator"
@@ -100,4 +102,4 @@ datum/design/defib
materials = list("$metal" = 5000, "$glass" = 2000, "$silver" = 1000)
reliability = 76
build_path = /obj/item/weapon/defibrillator
- category = list("Misc")
\ No newline at end of file
+ category = list("Medical Designs")
diff --git a/code/modules/research/designs/power_designs.dm b/code/modules/research/designs/power_designs.dm
index 7e83426acfc..73cb40dc456 100644
--- a/code/modules/research/designs/power_designs.dm
+++ b/code/modules/research/designs/power_designs.dm
@@ -9,9 +9,9 @@ datum/design/basic_cell
req_tech = list("powerstorage" = 1)
build_type = PROTOLATHE | AUTOLATHE |MECHFAB
materials = list("$metal" = 700, "$glass" = 50)
- build_path = /obj/item/weapon/stock_parts/cell
construction_time=100
- category = list("Misc")
+ build_path = /obj/item/weapon/stock_parts/cell
+ category = list("Misc","Power Designs")
datum/design/high_cell
name = "High-Capacity Power Cell"
@@ -22,7 +22,7 @@ datum/design/high_cell
materials = list("$metal" = 700, "$glass" = 60)
construction_time=100
build_path = /obj/item/weapon/stock_parts/cell/high
- category = list("Misc")
+ category = list("Misc","Power Designs")
datum/design/super_cell
name = "Super-Capacity Power Cell"
@@ -34,7 +34,7 @@ datum/design/super_cell
materials = list("$metal" = 700, "$glass" = 70)
construction_time=100
build_path = /obj/item/weapon/stock_parts/cell/super
- category = list("Misc")
+ category = list("Misc","Power Designs")
datum/design/hyper_cell
name = "Hyper-Capacity Power Cell"
@@ -46,7 +46,7 @@ datum/design/hyper_cell
materials = list("$metal" = 400, "$gold" = 150, "$silver" = 150, "$glass" = 80)
construction_time=100
build_path = /obj/item/weapon/stock_parts/cell/hyper
- category = list("Misc")
+ category = list("Misc","Power Designs")
datum/design/light_replacer
name = "Light Replacer"
@@ -56,6 +56,7 @@ datum/design/light_replacer
build_type = PROTOLATHE
materials = list("$metal" = 1500, "$silver" = 150, "$glass" = 3000)
build_path = /obj/item/device/lightreplacer
+ category = list("Power Designs")
datum/design/pacman
name = "Machine Design (PACMAN-type Generator Board)"
@@ -85,4 +86,4 @@ datum/design/mrspacman
build_type = IMPRINTER
reliability = 74
materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/pacman/mrs
\ No newline at end of file
+ build_path = /obj/item/weapon/circuitboard/pacman/mrs
diff --git a/code/modules/research/designs/stock_parts_designs.dm b/code/modules/research/designs/stock_parts_designs.dm
index 1268e86079a..638ef2d97ab 100644
--- a/code/modules/research/designs/stock_parts_designs.dm
+++ b/code/modules/research/designs/stock_parts_designs.dm
@@ -2,7 +2,7 @@
/////////////Stock Parts////////////////
////////////////////////////////////////
-datum/design/RPED
+/datum/design/RPED
name = "Rapid Part Exchange Device"
desc = "Special mechanical module made to store, sort, and apply standard machine parts."
id = "rped"
@@ -11,8 +11,10 @@ datum/design/RPED
build_type = PROTOLATHE
materials = list("$metal" = 15000, "$glass" = 5000) //hardcore
build_path = /obj/item/weapon/storage/part_replacer
+ category = list("Stock Parts")
-datum/design/basic_capacitor
+//Capacitors
+/datum/design/basic_capacitor
name = "Basic Capacitor"
desc = "A stock part used in the construction of various devices."
id = "basic_capacitor"
@@ -20,44 +22,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_scanning
- name = "Basic Scanning Module"
- desc = "A stock part used in the construction of various devices."
- id = "basic_scanning"
- req_tech = list("magnets" = 1)
- build_type = PROTOLATHE | AUTOLATHE
- materials = list("$metal" = 50, "$glass" = 20)
- build_path = /obj/item/weapon/stock_parts/scanning_module
-
-datum/design/micro_mani
- name = "Micro Manipulator"
- desc = "A stock part used in the construction of various devices."
- id = "micro_mani"
- req_tech = list("materials" = 1, "programming" = 1)
- build_type = PROTOLATHE | AUTOLATHE
- materials = list("$metal" = 30)
- build_path = /obj/item/weapon/stock_parts/manipulator
-
-datum/design/basic_micro_laser
- name = "Basic Micro-Laser"
- desc = "A stock part used in the construction of various devices."
- id = "basic_micro_laser"
- req_tech = list("magnets" = 1)
- build_type = PROTOLATHE | AUTOLATHE
- materials = list("$metal" = 10, "$glass" = 20)
- build_path = /obj/item/weapon/stock_parts/micro_laser
-
-datum/design/basic_matter_bin
- name = "Basic Matter Bin"
- desc = "A stock part used in the construction of various devices."
- id = "basic_matter_bin"
- req_tech = list("materials" = 1)
- build_type = PROTOLATHE | AUTOLATHE
- materials = list("$metal" = 80)
- build_path = /obj/item/weapon/stock_parts/matter_bin
-
-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 +32,31 @@ 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_scanning
+/datum/design/super_capacitor
+ name = "Super Capacitor"
+ desc = "A stock part used in the construction of various devices."
+ id = "super_capacitor"
+ req_tech = list("powerstorage" = 5, "materials" = 4)
+ build_type = PROTOLATHE
+ reliability = 71
+ materials = list("$metal" = 50, "$glass" = 50, "$gold" = 20)
+ build_path = /obj/item/weapon/stock_parts/capacitor/super
+ category = list("Stock Parts")
+
+//Scanning modules
+/datum/design/basic_scanning
+ name = "Basic Scanning Module"
+ desc = "A stock part used in the construction of various devices."
+ id = "basic_scanning"
+ req_tech = list("magnets" = 1)
+ 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/adv_scanning
name = "Advanced Scanning Module"
desc = "A stock part used in the construction of various devices."
id = "adv_scanning"
@@ -74,8 +64,31 @@ datum/design/adv_scanning
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/phasic_scanning
+ name = "Phasic Scanning Module"
+ desc = "A stock part used in the construction of various devices."
+ id = "phasic_scanning"
+ req_tech = list("magnets" = 5, "materials" = 3)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 50, "$glass" = 20, "$silver" = 10)
+ reliability = 72
+ build_path = /obj/item/weapon/stock_parts/scanning_module/phasic
+ category = list("Stock Parts")
+
+//Maipulators
+/datum/design/micro_mani
+ name = "Micro Manipulator"
+ desc = "A stock part used in the construction of various devices."
+ id = "micro_mani"
+ req_tech = list("materials" = 1, "programming" = 1)
+ build_type = PROTOLATHE | AUTOLATHE
+ materials = list("$metal" = 30)
+ build_path = /obj/item/weapon/stock_parts/manipulator
+ category = list("Stock Parts")
+
+/datum/design/nano_mani
name = "Nano Manipulator"
desc = "A stock part used in the construction of various devices."
id = "nano_mani"
@@ -83,6 +96,29 @@ 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/pico_mani
+ name = "Pico Manipulator"
+ desc = "A stock part used in the construction of various devices."
+ id = "pico_mani"
+ req_tech = list("materials" = 5, "programming" = 2)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 30)
+ reliability = 73
+ build_path = /obj/item/weapon/stock_parts/manipulator/pico
+ category = list("Stock Parts")
+
+//Micro-lasers
+/datum/design/basic_micro_laser
+ name = "Basic Micro-Laser"
+ desc = "A stock part used in the construction of various devices."
+ id = "basic_micro_laser"
+ req_tech = list("magnets" = 1)
+ 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/high_micro_laser
name = "High-Power Micro-Laser"
@@ -92,45 +128,7 @@ datum/design/high_micro_laser
build_type = PROTOLATHE
materials = list("$metal" = 10, "$glass" = 20)
build_path = /obj/item/weapon/stock_parts/micro_laser/high
-
-datum/design/adv_matter_bin
- name = "Advanced Matter Bin"
- desc = "A stock part used in the construction of various devices."
- id = "adv_matter_bin"
- req_tech = list("materials" = 3)
- build_type = PROTOLATHE
- materials = list("$metal" = 80)
- build_path = /obj/item/weapon/stock_parts/matter_bin/adv
-
-datum/design/super_capacitor
- name = "Super Capacitor"
- desc = "A stock part used in the construction of various devices."
- id = "super_capacitor"
- req_tech = list("powerstorage" = 5, "materials" = 4)
- build_type = PROTOLATHE
- reliability = 71
- materials = list("$metal" = 50, "$glass" = 50, "$gold" = 20)
- build_path = /obj/item/weapon/stock_parts/capacitor/super
-
-datum/design/phasic_scanning
- name = "Phasic Scanning Module"
- desc = "A stock part used in the construction of various devices."
- id = "phasic_scanning"
- req_tech = list("magnets" = 5, "materials" = 3)
- build_type = PROTOLATHE
- materials = list("$metal" = 50, "$glass" = 20, "$silver" = 10)
- reliability = 72
- build_path = /obj/item/weapon/stock_parts/scanning_module/phasic
-
-datum/design/pico_mani
- name = "Pico Manipulator"
- desc = "A stock part used in the construction of various devices."
- id = "pico_mani"
- req_tech = list("materials" = 5, "programming" = 2)
- build_type = PROTOLATHE
- materials = list("$metal" = 30)
- reliability = 73
- build_path = /obj/item/weapon/stock_parts/manipulator/pico
+ category = list("Stock Parts")
datum/design/ultra_micro_laser
name = "Ultra-High-Power Micro-Laser"
@@ -141,6 +139,27 @@ datum/design/ultra_micro_laser
materials = list("$metal" = 10, "$glass" = 20, "$uranium" = 10)
reliability = 70
build_path = /obj/item/weapon/stock_parts/micro_laser/ultra
+ category = list("Stock Parts")
+
+datum/design/basic_matter_bin
+ name = "Basic Matter Bin"
+ desc = "A stock part used in the construction of various devices."
+ id = "basic_matter_bin"
+ req_tech = list("materials" = 1)
+ build_type = PROTOLATHE | AUTOLATHE
+ materials = list("$metal" = 80)
+ build_path = /obj/item/weapon/stock_parts/matter_bin
+ category = list("Stock Parts")
+
+datum/design/adv_matter_bin
+ name = "Advanced Matter Bin"
+ desc = "A stock part used in the construction of various devices."
+ id = "adv_matter_bin"
+ req_tech = list("materials" = 3)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 80)
+ build_path = /obj/item/weapon/stock_parts/matter_bin/adv
+ category = list("Stock Parts")
datum/design/super_matter_bin
name = "Super Matter Bin"
@@ -151,7 +170,9 @@ datum/design/super_matter_bin
materials = list("$metal" = 80)
reliability = 75
build_path = /obj/item/weapon/stock_parts/matter_bin/super
+ category = list("Stock Parts")
+//T-Comms devices
datum/design/subspace_ansible
name = "Subspace Ansible"
desc = "A compact module capable of sensing extradimensional activity."
@@ -160,6 +181,7 @@ datum/design/subspace_ansible
build_type = PROTOLATHE
materials = list("$metal" = 80, "$silver" = 20)
build_path = /obj/item/weapon/stock_parts/subspace/ansible
+ category = list("Stock Parts")
datum/design/hyperwave_filter
name = "Hyperwave Filter"
@@ -169,6 +191,7 @@ datum/design/hyperwave_filter
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"
@@ -178,6 +201,7 @@ datum/design/subspace_amplifier
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_treatment
name = "Subspace Treatment Disk"
@@ -187,6 +211,7 @@ datum/design/subspace_treatment
build_type = PROTOLATHE
materials = list("$metal" = 10, "$silver" = 20)
build_path = /obj/item/weapon/stock_parts/subspace/treatment
+ category = list("Stock Parts")
datum/design/subspace_analyzer
name = "Subspace Analyzer"
@@ -196,6 +221,7 @@ datum/design/subspace_analyzer
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_crystal
name = "Ansible Crystal"
@@ -205,6 +231,7 @@ 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
name = "Subspace Transmitter"
@@ -213,4 +240,5 @@ datum/design/subspace_transmitter
req_tech = list("magnets" = 3, "materials" = 3, "bluespace" = 2)
build_type = PROTOLATHE
materials = list("$glass" = 100, "$silver" = 10, "$uranium" = 15)
- build_path = /obj/item/weapon/stock_parts/subspace/transmitter
\ No newline at end of file
+ build_path = /obj/item/weapon/stock_parts/subspace/transmitter
+ 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 e4de22f4fdd..d43f9c6cdde 100644
--- a/code/modules/research/designs/telecomms_designs.dm
+++ b/code/modules/research/designs/telecomms_designs.dm
@@ -2,7 +2,7 @@
/////Subspace Telecomms////////////
///////////////////////////////////
-datum/design/subspace_receiver
+/datum/design/subspace_receiver
name = "Machine Design (Subspace Receiver)"
desc = "Allows for the construction of Subspace Receiver equipment."
id = "s-receiver"
@@ -10,8 +10,9 @@ datum/design/subspace_receiver
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/telecomms/receiver
+ category = list("Subspace Telecomms")
-datum/design/telecomms_bus
+/datum/design/telecomms_bus
name = "Machine Design (Bus Mainframe)"
desc = "Allows for the construction of Telecommunications Bus Mainframes."
id = "s-bus"
@@ -19,8 +20,9 @@ datum/design/telecomms_bus
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/telecomms/bus
+ category = list("Subspace Telecomms")
-datum/design/telecomms_hub
+/datum/design/telecomms_hub
name = "Machine Design (Hub Mainframe)"
desc = "Allows for the construction of Telecommunications Hub Mainframes."
id = "s-hub"
@@ -28,8 +30,9 @@ 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
+/datum/design/telecomms_relay
name = "Machine Design (Relay Mainframe)"
desc = "Allows for the construction of Telecommunications Relay Mainframes."
id = "s-relay"
@@ -37,8 +40,9 @@ datum/design/telecomms_relay
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/telecomms/relay
+ category = list("Subspace Telecomms")
-datum/design/telecomms_processor
+/datum/design/telecomms_processor
name = "Machine Design (Processor Unit)"
desc = "Allows for the construction of Telecommunications Processor equipment."
id = "s-processor"
@@ -46,8 +50,9 @@ 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_server
+/datum/design/telecomms_server
name = "Machine Design (Server Mainframe)"
desc = "Allows for the construction of Telecommunications Servers."
id = "s-server"
@@ -55,12 +60,14 @@ 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 Design (Subspace Broadcaster)"
desc = "Allows for the construction of Subspace Broadcasting equipment."
id = "s-broadcaster"
req_tech = list("programming" = 2, "engineering" = 2, "bluespace" = 1)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/telecomms/broadcaster
\ No newline at end of file
+ build_path = /obj/item/weapon/circuitboard/telecomms/broadcaster
+ category = list("Subspace Telecomms")
\ No newline at end of file
diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm
index 02b30f3552d..fa35c34bacf 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,8 +12,9 @@ datum/design/nuclear_gun
reliability = 76
build_path = /obj/item/weapon/gun/energy/gun/nuclear
locked = 1
+ category = list("Weapons")
-datum/design/stunrevolver
+/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"
@@ -22,8 +23,9 @@ datum/design/stunrevolver
materials = list("$metal" = 4000)
build_path = /obj/item/weapon/gun/energy/stunrevolver
locked = 1
+ category = list("Weapons")
-datum/design/tele_shield
+/datum/design/tele_shield
name = "Telescopic Riot Shield"
desc = "An advanced riot shield made of lightweight materials that collapses for easy storage."
id = "tele_shield"
@@ -32,8 +34,9 @@ datum/design/tele_shield
materials = list("$metal" = 4000, "$glass" = 5000, "$silver" = 300)
build_path = /obj/item/weapon/shield/riot/tele
locked = 1
+ category = list("Weapons")
-datum/design/lasercannon
+/datum/design/lasercannon
name = "Laser Cannon"
desc = "A heavy duty laser cannon."
id = "lasercannon"
@@ -42,8 +45,9 @@ datum/design/lasercannon
materials = list("$metal" = 10000, "$glass" = 2000, "$diamond" = 2000)
build_path = /obj/item/weapon/gun/energy/lasercannon
locked = 1
+ category = list("Weapons")
-datum/design/decloner
+/datum/design/decloner
name = "Decloner"
desc = "Your opponent will bubble into a messy pile of goop."
id = "decloner"
@@ -52,18 +56,9 @@ datum/design/decloner
materials = list("$gold" = 5000,"$uranium" = 10000, "mutagen" = 40)
build_path = /obj/item/weapon/gun/energy/decloner
locked = 1
-/*
-datum/design/chemsprayer
- name = "Chem Sprayer"
- desc = "An advanced chem spraying device."
- id = "chemsprayer"
- req_tech = list("combat" = 3, "materials" = 3, "engineering" = 3, "biotech" = 2)
- build_type = PROTOLATHE
- materials = list("$metal" = 5000, "$glass" = 1000)
- reliability = 100
- build_path = /obj/item/weapon/chemsprayer"
-*/
-datum/design/rapidsyringe
+ category = list("Weapons")
+
+/datum/design/rapidsyringe
name = "Rapid Syringe Gun"
desc = "A gun that fires many syringes."
id = "rapidsyringe"
@@ -71,8 +66,9 @@ datum/design/rapidsyringe
build_type = PROTOLATHE
materials = list("$metal" = 5000, "$glass" = 1000)
build_path = /obj/item/weapon/gun/syringe/rapidsyringe
+ category = list("Weapons")
-datum/design/largecrossbow
+/datum/design/largecrossbow
name = "Energy Crossbow"
desc = "A reverse-engineered energy crossbow favored by syndicate infiltration teams and carp hunters."
id = "largecrossbow"
@@ -81,8 +77,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
+ category = list("Weapons")
-datum/design/temp_gun
+/datum/design/temp_gun
name = "Temperature Gun"
desc = "A gun that shoots temperature bullet energythings to change temperature."//Change it if you want
id = "temp_gun"
@@ -91,8 +88,9 @@ datum/design/temp_gun
materials = list("$metal" = 5000, "$glass" = 500, "$silver" = 3000)
build_path = /obj/item/weapon/gun/energy/temperature
locked = 1
+ category = list("Weapons")
-datum/design/flora_gun
+/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"
@@ -100,8 +98,9 @@ datum/design/flora_gun
build_type = PROTOLATHE
materials = list("$metal" = 2000, "$glass" = 500, "radium" = 20)
build_path = /obj/item/weapon/gun/energy/floragun
+ category = list("Weapons")
-datum/design/large_grenade
+/datum/design/large_grenade
name = "Large Grenade"
desc = "A grenade that affects a larger area and use larger containers."
id = "large_Grenade"
@@ -110,8 +109,9 @@ datum/design/large_grenade
materials = list("$metal" = 3000)
reliability = 79
build_path = /obj/item/weapon/grenade/chem_grenade/large
+ category = list("Weapons")
-datum/design/smg
+/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"
@@ -120,17 +120,9 @@ datum/design/smg
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 = "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/xray
+/datum/design/xray
name = "Xray Laser Gun"
desc = "Not quite as menacing as it sounds"
id = "xray"
@@ -139,8 +131,9 @@ datum/design/xray
materials = list("$gold" = 5000,"$uranium" = 10000, "$metal" = 4000)
build_path = /obj/item/weapon/gun/energy/xray
locked = 1
+ category = list("Weapons")
-datum/design/ionrifle
+/datum/design/ionrifle
name = "Ion Rifle"
desc = "How to dismantle a cyborg : The gun."
id = "ionrifle"
@@ -149,8 +142,9 @@ 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/wormhole_projector
+/datum/design/wormhole_projector
name = "Bluespace Wormhole Projector"
desc = "A projector that emits high density quantum-coupled bluespace beams."
id = "wormholeprojector"
@@ -159,8 +153,9 @@ datum/design/wormhole_projector
materials = list("$silver" = 1000, "$metal" = 5000, "$diamond" = 3000)
build_path = /obj/item/weapon/gun/energy/wormhole_projector
locked = 1
+ category = list("Weapons")
-datum/design/reciever
+/datum/design/reciever
name = "Modular Reciever"
desc = "A prototype modular reciever and trigger assembly for a variety of firearms."
id = "reciever"
@@ -168,8 +163,19 @@ datum/design/reciever
build_type = PROTOLATHE
materials = list("$metal" = 6500, "$silver" = 500)
build_path = /obj/item/weaponcrafting/reciever
+ category = list("Weapons")
-datum/design/stunshell
+/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
+ category = list("Ammo")
+
+/datum/design/stunshell
name = "Stun Shell"
desc = "A stunning shell for a shotgun."
id = "stunshell"
@@ -177,8 +183,9 @@ datum/design/stunshell
build_type = PROTOLATHE
materials = list("$metal" = 200)
build_path = /obj/item/ammo_casing/shotgun/stunslug
+ category = list("Ammo")
-datum/design/techshell
+/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"
@@ -186,8 +193,9 @@ datum/design/techshell
build_type = PROTOLATHE
materials = list("$metal" = 1000, "$glass" = 200, "$silver" = 300)
build_path = /obj/item/ammo_casing/shotgun/techshell
+ category = list("Ammo")
-datum/design/suppressor
+/datum/design/suppressor
name = "Universal Suppressor"
desc = "A reverse-engineered universal suppressor that fits on most small arms with threaded barrels."
id = "suppressor"
@@ -195,3 +203,4 @@ datum/design/suppressor
build_type = PROTOLATHE
materials = list("$metal" = 2000, "$silver" = 500)
build_path = /obj/item/weapon/suppressor
+ category = list("Weapons")
diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm
index d4affb8af14..771d53cd16e 100644
--- a/code/modules/research/protolathe.dm
+++ b/code/modules/research/protolathe.dm
@@ -25,6 +25,14 @@ Note: Must be placed west/left of and R&D console to function.
var/adamantine_amount = 0.0
var/efficiency_coeff
+ var/list/categories = list(
+ "Power Designs",
+ "Stock Parts",
+ "Medical Designs",
+ "Weapons",
+ "Ammo",
+ )
+
reagents = new()
diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm
index 124bbf8599c..7c695ffe718 100644
--- a/code/modules/research/rdconsole.dm
+++ b/code/modules/research/rdconsole.dm
@@ -49,6 +49,8 @@ won't update every console in existence) but it's more of a hassle to do. Also,
req_access = list(access_tox) //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.
var/datum/tech/check_tech
@@ -179,6 +181,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)
@@ -413,7 +418,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.
@@ -778,31 +783,42 @@ 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]"
dat += "
"
dat += "
"
@@ -880,23 +896,33 @@ 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]
"
dat += "
"
if(4.2)
@@ -931,11 +957,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, 460, 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 ef765b17f9e..6fa8bb0536a 100644
--- a/code/modules/research/research.dm
+++ b/code/modules/research/research.dm
@@ -159,6 +159,26 @@ research holder datum.
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/tgstation.dme b/tgstation.dme
index ccf56de608c..1ee1c28cfe7 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -1285,6 +1285,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"