diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index b5800590a9..aa11f4bd8b 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -1747,7 +1747,18 @@
J.spawn_positions = -1
message_admins("[key_name_admin(usr)] has removed the cap on security officers.")
return
- //hahaha
+ if (href_list["rnd_max"])
+ for(var/obj/machinery/computer/rdconsole/C in world)
+ for(var/datum/tech/T in C.files.known_tech)
+ T.level = 6
+ C.files.RefreshResearch()
+
+ for(var/obj/machinery/r_n_d/server/C in world)
+ for(var/datum/tech/T in C.files.known_tech)
+ T.level = 6
+ C.files.RefreshResearch()
+
+ owner:rnd_check_designs()
///////////////////////////////////////////////////////////////////////////////////////////////Panels
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index f2a9d4a073..15c2f7fb32 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -141,6 +141,7 @@
verbs += /client/proc/callprocobj
verbs += /client/proc/cmd_debug_prints
verbs += /client/proc/cmd_debug_blood
+ verbs += /client/proc/rnd_check_designs
if (holder.level >= 5)//Game Admin********************************************************************
verbs += /obj/admins/proc/view_txt_log
@@ -422,6 +423,7 @@
verbs -= /client/proc/radioalert
verbs -= /client/proc/cmd_debug_prints
verbs -= /client/proc/cmd_debug_blood
+ verbs -= /client/proc/rnd_check_designs
return
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index f11e01b277..3e03a28f4a 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -862,4 +862,31 @@ Traitors and the like can also be revived with the previous role mostly intact.
ticker.random_players = 1
+/client/proc/rnd_check_designs()
+ set category = "Debug"
+ set name = "Check RnD Designs"
+ set desc = "Check validity of RnD data of the consoles and server."
+ if (!holder)
+ src << "Only administrators may use this command."
+ return
+
+ var/dat = "
RnD Check"
+
+ for(var/obj/machinery/computer/rdconsole/C in world)
+ dat += "[C.name] - RnD Console
"
+ for(var/datum/design/D in C.files.known_designs)
+ if(!text2path(D.build_path))
+ dat += "[D.name]'s has invalid build path [D.build_path]
"
+ dat += "
"
+
+ for(var/obj/machinery/r_n_d/server/C in world)
+ dat += "[C.name] - Server
"
+ for(var/datum/design/D in C.files.known_designs)
+ if(!text2path(D.build_path))
+ dat += "[D.name]'s has invalid build path [D.build_path]
"
+ dat += "
"
+
+ dat += "
Max out tech levels."
+
+ usr << browse(dat, "window=chk_design")
\ No newline at end of file
diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm
index 233e811338..57a9a5557a 100644
--- a/code/modules/research/designs.dm
+++ b/code/modules/research/designs.dm
@@ -330,6 +330,7 @@ datum
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/circuitboard/supplycomp"
+ /* is not a thing
mining
name = "Circuit Design (Outpost Status Display)"
desc = "Allows for the construction of circuit boards used to build an outpost status display console."
@@ -338,6 +339,7 @@ datum
build_type = IMPRINTER
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/circuitboard/mining"
+ */
firealarm
name = "Circuit Design (Fire Alarm)"
@@ -533,30 +535,34 @@ datum
req_tech = list("programming" = 4, "engineering" = 3, "bluespace" = 2)
build_type = IMPRINTER
materials = list("$glass" = 2000, "acid" = 20)
+ build_path = "/obj/item/weapon/circuitboard/telecomms/receiver"
telecomms_bus
- name = "Circuit Design (Bus Mainframe)"
+ name = "Circuit Design (Telecom Bus Mainframe)"
desc = "Allows for the construction of Telecommunications Bus Mainframes."
id = "s-bus"
req_tech = list("programming" = 4, "engineering" = 4)
build_type = IMPRINTER
materials = list("$glass" = 2000, "acid" = 20)
+ build_path = "/obj/item/weapon/circuitboard/telecomms/bus"
telecomms_processor
- name = "Circuit Design (Processor Unit)"
+ name = "Circuit Design (Telecom Processor Unit)"
desc = "Allows for the construction of Telecommunications Processor equipment."
id = "s-processor"
req_tech = list("programming" = 4, "engineering" = 4)
build_type = IMPRINTER
materials = list("$glass" = 2000, "acid" = 20)
+ build_path = "/obj/item/weapon/circuitboard/telecomms/processor"
telecomms_server
- name = "Circuit Design (Subspace Receiver)"
+ name = "Circuit Design (Telecom Server)"
desc = "Allows for the construction of Telecommunications Servers."
id = "s-server"
req_tech = list("programming" = 4, "engineering" = 4)
build_type = IMPRINTER
materials = list("$glass" = 2000, "acid" = 20)
+ build_path = "/obj/item/weapon/circuitboard/telecomms/server"
subspace_broadcaster
name = "Circuit Design (Subspace Broadcaster)"
@@ -565,6 +571,7 @@ datum
req_tech = list("programming" = 4, "engineering" = 4, "bluespace" = 2)
build_type = IMPRINTER
materials = list("$glass" = 2000, "acid" = 20)
+ build_path = "/obj/item/weapon/circuitboard/telecomms/broadcaster"
///////////////////////////////////