diff --git a/_maps/RandomRuins/SpaceRuins/deepstorage.dmm b/_maps/RandomRuins/SpaceRuins/deepstorage.dmm
index 7bbf634d695..51daaeb0132 100644
--- a/_maps/RandomRuins/SpaceRuins/deepstorage.dmm
+++ b/_maps/RandomRuins/SpaceRuins/deepstorage.dmm
@@ -104,7 +104,7 @@
"bZ" = (/obj/machinery/vending/hydroseeds{slogan_delay = 700},/turf/open/floor/plasteel,/area/ruin/unpowered)
"ca" = (/obj/machinery/light/small{dir = 8},/turf/open/floor/plasteel/floorgrime,/area/ruin/unpowered)
"cb" = (/obj/structure/chair/office/dark,/turf/open/floor/plasteel/floorgrime,/area/ruin/unpowered)
-"cc" = (/obj/structure/computerframe,/turf/open/floor/plasteel,/area/ruin/unpowered)
+"cc" = (/obj/structure/frame/computer,/turf/open/floor/plasteel,/area/ruin/unpowered)
"cd" = (/obj/structure/table/reinforced,/obj/machinery/computer/security/telescreen{dir = 1; name = "Bunker Entrance"; network = list("Bunker1"); pixel_x = 0; pixel_y = 2},/turf/open/floor/plasteel,/area/ruin/unpowered)
"ce" = (/obj/structure/table/reinforced,/obj/machinery/button/door{id = "bunker1"; name = "Inner Doors"; pixel_y = 6},/obj/machinery/button/door{id = "bunker2"; name = "Outer Doors"; pixel_y = -4},/turf/open/floor/plasteel/floorgrime,/area/ruin/unpowered)
"cf" = (/obj/machinery/door/poddoor{id = "bunker1"; name = "Bunker Door"; tag = "inner"},/turf/open/floor/plating,/area/ruin/unpowered)
diff --git a/_maps/RandomRuins/SpaceRuins/mechtransport.dmm b/_maps/RandomRuins/SpaceRuins/mechtransport.dmm
index a89e9b0d62c..b0c1f95d53f 100644
--- a/_maps/RandomRuins/SpaceRuins/mechtransport.dmm
+++ b/_maps/RandomRuins/SpaceRuins/mechtransport.dmm
@@ -7,7 +7,7 @@
"g" = (/obj/structure/closet/crate/secure/loot,/turf/open/floor/plasteel/shuttle,/area/ruin/powered)
"h" = (/obj/structure/table,/obj/machinery/button/door{id = "mechaship1"; name = "Mecha Cargo Ship Doors"},/turf/open/floor/plasteel/shuttle,/area/ruin/powered)
"i" = (/obj/structure/table,/obj/effect/decal/cleanable/dirt,/turf/open/floor/plasteel/shuttle,/area/ruin/powered)
-"j" = (/obj/structure/computerframe,/turf/open/floor/plasteel/shuttle,/area/ruin/powered)
+"j" = (/obj/structure/frame/computer,/turf/open/floor/plasteel/shuttle,/area/ruin/powered)
"k" = (/obj/effect/decal/cleanable/vomit/old,/turf/open/floor/plasteel/shuttle,/area/ruin/powered)
"l" = (/obj/effect/decal/remains/human,/turf/open/floor/plasteel/shuttle,/area/ruin/powered)
"m" = (/obj/effect/decal/cleanable/dirt,/turf/open/floor/plasteel/shuttle,/area/ruin/powered)
diff --git a/_maps/RandomRuins/SpaceRuins/onehalf.dmm b/_maps/RandomRuins/SpaceRuins/onehalf.dmm
index e4e78df2b49..d5af9dd9789 100644
--- a/_maps/RandomRuins/SpaceRuins/onehalf.dmm
+++ b/_maps/RandomRuins/SpaceRuins/onehalf.dmm
@@ -105,8 +105,8 @@
"ca" = (/obj/structure/table/reinforced,/obj/item/device/flashlight/lamp,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge)
"cb" = (/obj/structure/table/reinforced,/obj/item/weapon/paper,/obj/item/weapon/pen,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge)
"cc" = (/obj/structure/closet/emcloset,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge)
-"cd" = (/obj/machinery/light{dir = 1},/obj/structure/computerframe,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge)
-"ce" = (/obj/structure/computerframe,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge)
+"cd" = (/obj/machinery/light{dir = 1},/obj/structure/frame/computer,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge)
+"ce" = (/obj/structure/frame/computer,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge)
"cf" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{cell_type = 2500; dir = 1; name = "Bridge APC"; pixel_y = 24},/turf/open/floor/plasteel,/area/ruin/onehalf/bridge)
"cg" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/table/reinforced,/obj/item/stack/spacecash/c500{pixel_y = 8},/obj/item/stack/spacecash/c1000,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge)
"ch" = (/obj/structure/girder/reinforced,/turf/open/floor/plating/airless,/area/space)
diff --git a/_maps/RandomRuins/SpaceRuins/turretedoutpost.dmm b/_maps/RandomRuins/SpaceRuins/turretedoutpost.dmm
index 8368eef3e58..2403575403f 100644
--- a/_maps/RandomRuins/SpaceRuins/turretedoutpost.dmm
+++ b/_maps/RandomRuins/SpaceRuins/turretedoutpost.dmm
@@ -3,7 +3,7 @@
"c" = (/obj/structure/grille,/turf/open/floor/plating,/area/ruin/unpowered)
"d" = (/turf/closed/wall/r_wall,/area/ruin/unpowered)
"e" = (/obj/structure/table/reinforced,/obj/item/weapon/stock_parts/cell/hyper,/turf/open/floor/plasteel,/area/ruin/unpowered)
-"f" = (/obj/structure/computerframe,/turf/open/floor/plasteel,/area/ruin/unpowered)
+"f" = (/obj/structure/frame/computer,/turf/open/floor/plasteel,/area/ruin/unpowered)
"g" = (/turf/open/floor/plasteel,/area/ruin/unpowered)
"h" = (/obj/machinery/light{dir = 1},/turf/open/floor/plasteel,/area/ruin/unpowered)
"i" = (/obj/machinery/door/airlock/external,/turf/open/floor/plating,/area/ruin/unpowered)
diff --git a/_maps/RandomZLevels/Academy.dmm b/_maps/RandomZLevels/Academy.dmm
index 72d1d2d19ee..6ef98e0b2ae 100644
--- a/_maps/RandomZLevels/Academy.dmm
+++ b/_maps/RandomZLevels/Academy.dmm
@@ -2,7 +2,7 @@
"ab" = (/turf/closed/wall/r_wall,/area/awaymission/academy/headmaster)
"ac" = (/mob/living/simple_animal/hostile/carp/ranged{faction = list("wizard")},/turf/open/space,/area/space)
"ad" = (/obj/structure/filingcabinet/filingcabinet,/turf/open/floor/carpet,/area/awaymission/academy/headmaster)
-"ae" = (/obj/structure/computerframe{anchored = 1},/turf/open/floor/carpet,/area/awaymission/academy/headmaster)
+"ae" = (/obj/structure/frame/computer{anchored = 1},/turf/open/floor/carpet,/area/awaymission/academy/headmaster)
"af" = (/obj/structure/table/reinforced,/obj/item/weapon/pen/red,/turf/open/floor/carpet,/area/awaymission/academy/headmaster)
"ag" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/blue,/turf/open/floor/carpet,/area/awaymission/academy/headmaster)
"ah" = (/turf/open/floor/carpet,/area/awaymission/academy/headmaster)
@@ -401,7 +401,7 @@
"hK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/item/weapon/caution,/turf/open/floor/plasteel{icon_state = "green"; dir = 4},/area/awaymission/academy/academyaft)
"hL" = (/obj/structure/mecha_wreckage/durand,/turf/open/floor/plating,/area/awaymission/academy/classrooms)
"hM" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
-"hN" = (/obj/machinery/constructable_frame/machine_frame,/turf/open/floor/plating,/area/awaymission/academy/academyaft)
+"hN" = (/obj/structure/frame/machine,/turf/open/floor/plating,/area/awaymission/academy/academyaft)
"hO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plating,/area/awaymission/academy/academyaft)
"hP" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/open/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
"hQ" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/open/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
@@ -423,7 +423,7 @@
"ig" = (/obj/item/stack/cable_coil/random,/turf/open/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
"ih" = (/obj/structure/rack,/obj/item/stack/sheet/mineral/plasma{amount = 50},/turf/open/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
"ii" = (/turf/open/floor/grass,/area/awaymission/academy/academyaft)
-"ij" = (/obj/structure/rack,/obj/item/weapon/circuitboard/telecomms/broadcaster,/obj/item/weapon/circuitboard/telecomms/receiver,/obj/item/weapon/circuitboard/telecomms/relay,/turf/open/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
+"ij" = (/obj/structure/rack,/obj/item/weapon/circuitboard/machine/telecomms/broadcaster,/obj/item/weapon/circuitboard/machine/telecomms/receiver,/obj/item/weapon/circuitboard/machine/telecomms/relay,/turf/open/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
"ik" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/open/floor/plasteel,/area/awaymission/academy/academyaft)
"il" = (/turf/open/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/academy/academyaft)
"im" = (/obj/structure/mirror{pixel_y = 28},/turf/open/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/academy/academyaft)
diff --git a/_maps/RandomZLevels/centcomAway.dmm b/_maps/RandomZLevels/centcomAway.dmm
index 4366496499d..10bb875ef54 100644
--- a/_maps/RandomZLevels/centcomAway.dmm
+++ b/_maps/RandomZLevels/centcomAway.dmm
@@ -259,7 +259,7 @@
"eY" = (/turf/closed/wall,/area/awaymission/centcomAway/courtroom)
"eZ" = (/obj/structure/table,/obj/item/weapon/storage/lockbox,/turf/open/floor/plasteel/shuttle,/area/awaymission/centcomAway/hangar)
"fa" = (/obj/structure/table,/turf/open/floor/plasteel/shuttle,/area/awaymission/centcomAway/hangar)
-"fb" = (/obj/structure/computerframe,/turf/open/floor/plasteel/shuttle,/area/awaymission/centcomAway/hangar)
+"fb" = (/obj/structure/frame/computer,/turf/open/floor/plasteel/shuttle,/area/awaymission/centcomAway/hangar)
"fc" = (/obj/structure/table,/obj/item/weapon/clipboard,/obj/item/weapon/pen,/turf/open/floor/plasteel/shuttle,/area/awaymission/centcomAway/hangar)
"fd" = (/obj/structure/table,/obj/item/weapon/paper_bin,/turf/open/floor/plasteel/shuttle,/area/awaymission/centcomAway/hangar)
"fe" = (/turf/open/floor/plasteel{icon_state = "green"; dir = 10},/area/awaymission/centcomAway/general)
@@ -471,7 +471,7 @@
"jc" = (/turf/open/floor/plasteel{icon_state = "ironsand4"; dir = 8; heat_capacity = 1},/area/awaymission/centcomAway/general)
"jd" = (/obj/structure/table/wood{dir = 10},/turf/open/floor/plasteel{icon_state = "grimy"},/area/awaymission/centcomAway/general)
"je" = (/obj/structure/chair{dir = 1},/turf/open/floor/plasteel{icon_state = "grimy"},/area/awaymission/centcomAway/general)
-"jf" = (/obj/structure/computerframe,/turf/open/floor/plasteel{icon_state = "grimy"},/area/awaymission/centcomAway/general)
+"jf" = (/obj/structure/frame/computer,/turf/open/floor/plasteel{icon_state = "grimy"},/area/awaymission/centcomAway/general)
"jg" = (/obj/structure/table/reinforced,/obj/item/weapon/pen,/turf/open/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/general)
"jh" = (/obj/structure/chair{dir = 8},/turf/open/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/general)
"ji" = (/obj/structure/closet/secure_closet/personal,/turf/open/floor/plasteel{icon_state = "vault"; dir = 1},/area/awaymission/centcomAway/hangar)
@@ -636,7 +636,7 @@
"ml" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/open/floor/plasteel{icon_state = "vault"; dir = 8},/area/awaymission/centcomAway/cafe)
"mm" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/turf/open/floor/plasteel{icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome)
"mn" = (/obj/structure/table,/turf/open/floor/plasteel{icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome)
-"mo" = (/obj/structure/computerframe,/turf/open/floor/plasteel{icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome)
+"mo" = (/obj/structure/frame/computer,/turf/open/floor/plasteel{icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome)
"mp" = (/obj/structure/closet/secure_closet/bar,/turf/open/floor/plasteel{icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome)
"mq" = (/obj/structure/table,/obj/item/weapon/storage/box/handcuffs,/turf/open/floor/plasteel{icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome)
"mr" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/electrical,/turf/open/floor/plasteel{icon_state = "redyellowfull"; dir = 5},/area/awaymission/centcomAway/thunderdome)
diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm
index ec6efe1a4c1..94372ad1e39 100644
--- a/_maps/RandomZLevels/moonoutpost19.dmm
+++ b/_maps/RandomZLevels/moonoutpost19.dmm
@@ -415,7 +415,7 @@
"hY" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/turf/open/floor/plasteel{icon_state = "cafeteria"; dir = 5},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"hZ" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/computer/security/telescreen{desc = "Used for monitoring the research division and the labs within."; name = "research monitor"; network = list("MO19X","MO19R")},/turf/open/floor/plasteel{icon_state = "cafeteria"; dir = 5},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"ia" = (/obj/machinery/computer/aifixer,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plasteel{icon_state = "cafeteria"; dir = 5},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
-"ib" = (/obj/structure/rack,/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/circuitboard/teleporter,/turf/open/floor/plasteel{dir = 9; heat_capacity = 1e+006; icon_state = "warnwhite"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
+"ib" = (/obj/structure/rack,/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/circuitboard/computer/teleporter,/turf/open/floor/plasteel{dir = 9; heat_capacity = 1e+006; icon_state = "warnwhite"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"ic" = (/obj/structure/rack,/obj/item/device/paicard{pixel_x = 4},/turf/open/floor/plasteel{dir = 1; heat_capacity = 1e+006; icon_state = "warnwhite"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"id" = (/obj/structure/rack,/turf/open/floor/plasteel{dir = 5; heat_capacity = 1e+006; icon_state = "warnwhite"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
"ie" = (/obj/machinery/door/airlock/glass_medical{glass = 0; id_tag = ""; name = "Research Division"; opacity = 1; req_access_txt = "201"; req_one_access_txt = "0"},/turf/open/floor/plasteel{heat_capacity = 1e+006; icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"})
diff --git a/_maps/RandomZLevels/research.dmm b/_maps/RandomZLevels/research.dmm
index 58e77da0d87..b58f159b2e6 100644
--- a/_maps/RandomZLevels/research.dmm
+++ b/_maps/RandomZLevels/research.dmm
@@ -19,7 +19,7 @@
"as" = (/mob/living/simple_animal/hostile/syndicate/ranged,/turf/open/floor/plasteel/shuttle/red/syndicate,/area/awaymission/research/interior/engineering)
"at" = (/obj/machinery/suit_storage_unit/engine,/turf/open/floor/plating,/area/awaymission/research/interior/engineering)
"au" = (/turf/open/floor/plating,/area/awaymission/research/interior/engineering)
-"av" = (/obj/item/weapon/shard{icon_state = "small"},/obj/machinery/constructable_frame/machine_frame,/obj/item/weapon/circuitboard/smes,/obj/item/weapon/stock_parts/cell/high,/obj/item/weapon/stock_parts/cell/high/empty,/turf/open/floor/plating,/area/awaymission/research/interior/engineering)
+"av" = (/obj/item/weapon/shard{icon_state = "small"},/obj/structure/frame/machine,/obj/item/weapon/circuitboard/machine/smes,/obj/item/weapon/stock_parts/cell/high,/obj/item/weapon/stock_parts/cell/high/empty,/turf/open/floor/plating,/area/awaymission/research/interior/engineering)
"aw" = (/obj/item/weapon/shard{icon_state = "small"},/turf/open/floor/plasteel/whiteyellow/side,/area/awaymission/research/interior/engineering)
"ax" = (/obj/structure/flora/kirbyplants{icon_state = "plant-20"; layer = 4.1; pixel_y = 3},/turf/open/floor/plasteel/whiteyellow/corner{tag = "icon-whiteyellowcorner (WEST)"; icon_state = "whiteyellowcorner"; dir = 8},/area/awaymission/research/interior/engineering)
"ay" = (/obj/structure/chair{dir = 8},/mob/living/simple_animal/hostile/syndicate,/turf/open/floor/plasteel/shuttle/red/syndicate,/area/awaymission/research/interior/engineering)
diff --git a/_maps/RandomZLevels/snowdin.dmm b/_maps/RandomZLevels/snowdin.dmm
index 209ebe93ddd..fd12bea52ab 100644
--- a/_maps/RandomZLevels/snowdin.dmm
+++ b/_maps/RandomZLevels/snowdin.dmm
@@ -329,7 +329,7 @@
"gq" = (/turf/open/floor/plasteel/stairs/right{baseturf = /turf/open/floor/plating/asteroid/snow; temperature = 140},/area/awaymission/snowdin/cave)
"gr" = (/turf/open/floor/plating,/turf/open/floor/plating/snowed,/area/awaymission/snowdin/post)
"gs" = (/obj/structure/girder,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/asteroid/snow; icon = 'icons/turf/snow.dmi'; temperature = 140},/area/awaymission/snowdin/post)
-"gt" = (/obj/machinery/constructable_frame/machine_frame,/obj/item/weapon/circuitboard/smes,/obj/item/weapon/stock_parts/cell/high,/obj/item/weapon/stock_parts/cell/high,/obj/machinery/light/small{dir = 1},/turf/open/floor/plating{baseturf = /turf/open/floor/plating/asteroid/snow},/area/awaymission/snowdin/post)
+"gt" = (/obj/structure/frame/machine,/obj/item/weapon/circuitboard/machine/smes,/obj/item/weapon/stock_parts/cell/high,/obj/item/weapon/stock_parts/cell/high,/obj/machinery/light/small{dir = 1},/turf/open/floor/plating{baseturf = /turf/open/floor/plating/asteroid/snow},/area/awaymission/snowdin/post)
"gu" = (/obj/item/weapon/stock_parts/cell/high/empty,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/asteroid/snow},/area/awaymission/snowdin/post)
"gv" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/asteroid/snow},/area/awaymission/snowdin/post)
"gw" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/electrical,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/asteroid/snow},/area/awaymission/snowdin/post)
@@ -464,7 +464,7 @@
"iY" = (/obj/machinery/light/small,/turf/open/floor/plating/asteroid/snow,/area/awaymission/snowdin)
"iZ" = (/obj/machinery/light/small,/turf/open/floor/plating/snowed,/area/awaymission/snowdin)
"ja" = (/obj/item/weapon/shard,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/asteroid/snow; icon = 'icons/turf/snow.dmi'; temperature = 140},/area/awaymission/snowdin)
-"jb" = (/obj/structure/computerframe,/turf/open/floor/plasteel/shuttle{baseturf = /turf/open/floor/plating/asteroid/snow; icon_state = "shuttlefloor4"; temperature = 180},/area/awaymission/snowdin)
+"jb" = (/obj/structure/frame/computer,/turf/open/floor/plasteel/shuttle{baseturf = /turf/open/floor/plating/asteroid/snow; icon_state = "shuttlefloor4"; temperature = 180},/area/awaymission/snowdin)
"jc" = (/obj/machinery/door/poddoor/shutters{id = "garagesnow3"},/turf/open/floor/plating{baseturf = /turf/open/floor/plating/asteroid/snow},/area/awaymission/snowdin/post)
"jd" = (/obj/machinery/door/airlock/external{req_access_txt = "150"},/turf/open/floor/plating{baseturf = /turf/open/floor/plating/asteroid/snow; icon = 'icons/turf/snow.dmi'; temperature = 140},/area/awaymission/snowdin/sekret)
"je" = (/turf/open/floor/plating{baseturf = /turf/open/floor/plating/asteroid/snow; icon = 'icons/turf/snow.dmi'; temperature = 140},/area/awaymission/snowdin/sekret)
diff --git a/_maps/map_files/AsteroidStation/AsteroidStation.dmm b/_maps/map_files/AsteroidStation/AsteroidStation.dmm
index f30468aae07..7aa34319ef8 100644
--- a/_maps/map_files/AsteroidStation/AsteroidStation.dmm
+++ b/_maps/map_files/AsteroidStation/AsteroidStation.dmm
@@ -81,7 +81,7 @@
},
/area/shuttle/syndicate)
"aan" = (
-/obj/structure/computerframe,
+/obj/structure/frame/computer,
/turf/open/floor/plasteel/shuttle{
icon_state = "shuttlefloor4"
},
@@ -4024,17 +4024,17 @@
/area/storage/tech)
"ajc" = (
/obj/structure/rack,
-/obj/item/weapon/circuitboard/pandemic{
+/obj/item/weapon/circuitboard/computer/pandemic{
pixel_x = -3;
pixel_y = 3
},
-/obj/item/weapon/circuitboard/rdconsole,
-/obj/item/weapon/circuitboard/rdserver{
+/obj/item/weapon/circuitboard/computer/rdconsole,
+/obj/item/weapon/circuitboard/machine/rdserver{
pixel_x = 3;
pixel_y = -3
},
-/obj/item/weapon/circuitboard/destructive_analyzer,
-/obj/item/weapon/circuitboard/protolathe,
+/obj/item/weapon/circuitboard/machine/destructive_analyzer,
+/obj/item/weapon/circuitboard/machine/protolathe,
/turf/open/floor/plasteel{
dir = 5;
icon_state = "yellow"
@@ -4042,11 +4042,11 @@
/area/storage/tech)
"ajd" = (
/obj/structure/rack,
-/obj/item/weapon/circuitboard/robotics{
+/obj/item/weapon/circuitboard/computer/robotics{
pixel_x = -2;
pixel_y = 2
},
-/obj/item/weapon/circuitboard/mecha_control{
+/obj/item/weapon/circuitboard/computer/mecha_control{
pixel_x = 1;
pixel_y = -1
},
@@ -4064,11 +4064,11 @@
/area/storage/tech)
"ajf" = (
/obj/structure/rack,
-/obj/item/weapon/circuitboard/borgupload{
+/obj/item/weapon/circuitboard/computer/borgupload{
pixel_x = -1;
pixel_y = 1
},
-/obj/item/weapon/circuitboard/aiupload{
+/obj/item/weapon/circuitboard/computer/aiupload{
pixel_x = 2;
pixel_y = -2
},
@@ -4076,14 +4076,14 @@
/area/storage/tech)
"ajg" = (
/obj/structure/rack,
-/obj/item/weapon/circuitboard/message_monitor{
+/obj/item/weapon/circuitboard/computer/message_monitor{
pixel_y = -5
},
-/obj/item/weapon/circuitboard/crew{
+/obj/item/weapon/circuitboard/computer/crew{
pixel_x = -1;
pixel_y = 1
},
-/obj/item/weapon/circuitboard/arcade/battle,
+/obj/item/weapon/circuitboard/computer/arcade/battle,
/turf/open/floor/plasteel{
dir = 9;
icon_state = "yellow"
@@ -4483,14 +4483,14 @@
/area/storage/tech)
"ajW" = (
/obj/structure/rack,
-/obj/item/weapon/circuitboard/cloning,
-/obj/item/weapon/circuitboard/med_data{
+/obj/item/weapon/circuitboard/computer/cloning,
+/obj/item/weapon/circuitboard/computer/med_data{
pixel_x = 3;
pixel_y = -3
},
-/obj/item/weapon/circuitboard/clonescanner,
-/obj/item/weapon/circuitboard/clonepod,
-/obj/item/weapon/circuitboard/scan_consolenew,
+/obj/item/weapon/circuitboard/machine/clonescanner,
+/obj/item/weapon/circuitboard/machine/clonepod,
+/obj/item/weapon/circuitboard/computer/scan_consolenew,
/turf/open/floor/plasteel{
dir = 4;
icon_state = "yellow"
@@ -4508,12 +4508,12 @@
/area/storage/tech)
"ajY" = (
/obj/structure/rack,
-/obj/item/weapon/circuitboard/mining,
-/obj/item/weapon/circuitboard/autolathe{
+/obj/item/weapon/circuitboard/computer/mining,
+/obj/item/weapon/circuitboard/machine/autolathe{
pixel_x = 3;
pixel_y = -3
},
-/obj/item/weapon/circuitboard/communications{
+/obj/item/weapon/circuitboard/computer/communications{
pixel_x = 5;
pixel_y = -5
},
@@ -4895,15 +4895,15 @@
/area/storage/tech)
"akI" = (
/obj/structure/rack,
-/obj/item/weapon/circuitboard/secure_data{
+/obj/item/weapon/circuitboard/computer/secure_data{
pixel_x = -2;
pixel_y = 2
},
-/obj/item/weapon/circuitboard/security{
+/obj/item/weapon/circuitboard/computer/security{
pixel_x = 1;
pixel_y = -1
},
-/obj/item/weapon/circuitboard/card{
+/obj/item/weapon/circuitboard/computer/card{
pixel_x = 2;
pixel_y = -2
},
@@ -4969,15 +4969,15 @@
/area/storage/tech)
"akO" = (
/obj/structure/rack,
-/obj/item/weapon/circuitboard/powermonitor{
+/obj/item/weapon/circuitboard/computer/powermonitor{
pixel_x = -2;
pixel_y = 2
},
-/obj/item/weapon/circuitboard/stationalert{
+/obj/item/weapon/circuitboard/computer/stationalert{
pixel_x = 1;
pixel_y = -1
},
-/obj/item/weapon/circuitboard/atmos_alert{
+/obj/item/weapon/circuitboard/computer/atmos_alert{
pixel_x = 3;
pixel_y = -3
},
@@ -10985,14 +10985,14 @@
/area/tcommsat/computer)
"axw" = (
/obj/structure/rack,
-/obj/item/weapon/circuitboard/telecomms/processor,
-/obj/item/weapon/circuitboard/telecomms/processor,
-/obj/item/weapon/circuitboard/telecomms/receiver,
-/obj/item/weapon/circuitboard/telecomms/server,
-/obj/item/weapon/circuitboard/telecomms/server,
-/obj/item/weapon/circuitboard/telecomms/bus,
-/obj/item/weapon/circuitboard/telecomms/bus,
-/obj/item/weapon/circuitboard/telecomms/broadcaster,
+/obj/item/weapon/circuitboard/machine/telecomms/processor,
+/obj/item/weapon/circuitboard/machine/telecomms/processor,
+/obj/item/weapon/circuitboard/machine/telecomms/receiver,
+/obj/item/weapon/circuitboard/machine/telecomms/server,
+/obj/item/weapon/circuitboard/machine/telecomms/server,
+/obj/item/weapon/circuitboard/machine/telecomms/bus,
+/obj/item/weapon/circuitboard/machine/telecomms/bus,
+/obj/item/weapon/circuitboard/machine/telecomms/broadcaster,
/obj/machinery/atmospherics/components/unary/vent_scrubber{
on = 1
},
@@ -13581,13 +13581,13 @@
name = "Construction Site"
})
"aBX" = (
-/obj/machinery/constructable_frame/machine_frame,
+/obj/structure/frame/machine,
/turf/open/floor/plating,
/area/construction/Storage{
name = "Construction Site"
})
"aBY" = (
-/obj/structure/computerframe,
+/obj/structure/frame/computer,
/turf/open/floor/plating,
/area/construction/Storage{
name = "Construction Site"
@@ -25626,7 +25626,7 @@
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
-/obj/item/weapon/circuitboard/solar_control,
+/obj/item/weapon/circuitboard/computer/solar_control,
/obj/item/weapon/electronics/tracker,
/turf/open/floor/plasteel{
icon_state = "yellow"
@@ -45842,7 +45842,7 @@
/turf/open/floor/plasteel/airless,
/area/mine/abandoned)
"bOd" = (
-/obj/structure/computerframe{
+/obj/structure/frame/computer{
anchored = 1
},
/obj/effect/decal/cleanable/cobweb2,
@@ -47113,7 +47113,7 @@
pixel_x = 31
},
/obj/structure/rack,
-/obj/item/weapon/circuitboard/teleporter,
+/obj/item/weapon/circuitboard/computer/teleporter,
/obj/item/weapon/circuitboard/aicore{
pixel_x = -2;
pixel_y = 4
diff --git a/_maps/map_files/BirdStation/BirdStation.dmm b/_maps/map_files/BirdStation/BirdStation.dmm
index 5ecccfef356..2ce75a3cb31 100644
--- a/_maps/map_files/BirdStation/BirdStation.dmm
+++ b/_maps/map_files/BirdStation/BirdStation.dmm
@@ -9,7 +9,7 @@
"aai" = (/obj/structure/table,/obj/item/device/flashlight/lamp{pixel_x = 4; pixel_y = 1},/turf/open/floor/plasteel/shuttle{icon_state = "shuttlefloor4"},/area/shuttle/syndicate)
"aaj" = (/obj/machinery/computer/shuttle/syndicate,/turf/open/floor/plasteel/shuttle{icon_state = "shuttlefloor4"},/area/shuttle/syndicate)
"aak" = (/obj/structure/table,/obj/machinery/button/door{id = "syndieshutters"; name = "remote shutter control"; req_access_txt = "150"},/turf/open/floor/plasteel/shuttle{icon_state = "shuttlefloor4"},/area/shuttle/syndicate)
-"aal" = (/obj/structure/computerframe,/turf/open/floor/plasteel/shuttle{icon_state = "shuttlefloor4"},/area/shuttle/syndicate)
+"aal" = (/obj/structure/frame/computer,/turf/open/floor/plasteel/shuttle{icon_state = "shuttlefloor4"},/area/shuttle/syndicate)
"aam" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/turf/open/floor/plasteel/shuttle{icon_state = "shuttlefloor4"},/area/shuttle/syndicate)
"aan" = (/obj/structure/chair/comfy/black{dir = 1; icon_state = "comfychair"; name = "pilot's chair"},/turf/open/floor/plasteel/shuttle{icon_state = "shuttlefloor4"},/area/shuttle/syndicate)
"aao" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 10},/obj/item/device/multitool,/turf/open/floor/plasteel/shuttle{icon_state = "shuttlefloor4"},/area/shuttle/syndicate)
@@ -75,7 +75,7 @@
"abw" = (/obj/structure/table/optable,/turf/open/floor/plasteel/shuttle{icon_state = "shuttlefloor4"},/area/shuttle/syndicate)
"abx" = (/obj/structure/table,/obj/item/weapon/scalpel,/obj/item/weapon/retractor,/obj/item/weapon/hemostat,/obj/item/weapon/surgical_drapes,/turf/open/floor/plasteel/shuttle{icon_state = "shuttlefloor4"},/area/shuttle/syndicate)
"aby" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating,/area/shuttle/syndicate)
-"abz" = (/obj/structure/computerframe,/obj/item/weapon/paper{info = "
Teleporter Instruction
- Install circuit board, glass and wiring to complete Teleporter Control Console
- Use a screwdriver, wirecutter and screwdriver again on the Teleporter Station to connect it
- Set destination with Teleporter Control Computer
- Activate Teleporter Hub with Teleporter Station
"; name = "Teleporter Instructions"},/turf/open/floor/plasteel/shuttle{icon_state = "shuttlefloor4"},/area/shuttle/syndicate)
+"abz" = (/obj/structure/frame/computer,/obj/item/weapon/paper{info = "Teleporter Instruction
- Install circuit board, glass and wiring to complete Teleporter Control Console
- Use a screwdriver, wirecutter and screwdriver again on the Teleporter Station to connect it
- Set destination with Teleporter Control Computer
- Activate Teleporter Hub with Teleporter Station
"; name = "Teleporter Instructions"},/turf/open/floor/plasteel/shuttle{icon_state = "shuttlefloor4"},/area/shuttle/syndicate)
"abA" = (/obj/machinery/teleport/station,/turf/open/floor/plasteel/shuttle{icon_state = "shuttlefloor4"},/area/shuttle/syndicate)
"abB" = (/obj/machinery/teleport/hub/syndicate,/turf/open/floor/plasteel/shuttle{icon_state = "shuttlefloor4"},/area/shuttle/syndicate)
"abC" = (/turf/open/floor/plasteel/black,/area/engine/engineering)
@@ -694,7 +694,7 @@
"anr" = (/obj/machinery/computer/arcade,/turf/open/floor/plating,/area/maintenance/fsmaint)
"ans" = (/obj/structure/chair/stool,/obj/machinery/light/small{dir = 1},/turf/open/floor/wood,/area/maintenance/fsmaint)
"ant" = (/obj/structure/flora/kirbyplants{anchored = 1; icon_state = "plant-05"; layer = 4.1; name = "incredibly heavy plant"},/turf/open/floor/wood,/area/maintenance/fsmaint)
-"anu" = (/obj/structure/closet/crate{name = "solar pack crate"},/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/weapon/circuitboard/solar_control,/obj/item/weapon/electronics/tracker,/obj/item/weapon/paper/solar,/turf/open/floor/plating,/area/maintenance/fsmaint)
+"anu" = (/obj/structure/closet/crate{name = "solar pack crate"},/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/weapon/circuitboard/computer/solar_control,/obj/item/weapon/electronics/tracker,/obj/item/weapon/paper/solar,/turf/open/floor/plating,/area/maintenance/fsmaint)
"anv" = (/obj/structure/grille,/turf/open/floor/plating,/area/maintenance/fsmaint)
"anw" = (/obj/structure/cable/cyan{icon_state = "1-2"},/turf/open/floor/plasteel,/area/maintenance/fsmaint)
"anx" = (/obj/structure/cable/cyan{icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/open/floor/plasteel,/area/engine/engineering)
@@ -1555,7 +1555,7 @@
"aDU" = (/obj/structure/cable/cyan{icon_state = "4-8"},/turf/open/floor/plasteel,/area/maintenance/asmaint2)
"aDV" = (/obj/structure/cable/cyan{icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/cyan/hidden,/turf/open/floor/plasteel/warning/corner,/area/maintenance/asmaint2)
"aDW" = (/obj/item/weapon/ed209_assembly,/obj/structure/cable/cyan{icon_state = "0-2"},/turf/open/floor/plating,/area/maintenance/asmaint2)
-"aDX" = (/obj/structure/table,/obj/item/weapon/circuitboard/circuit_imprinter,/turf/open/floor/plating,/area/maintenance/asmaint2)
+"aDX" = (/obj/structure/table,/obj/item/weapon/circuitboard/machine/circuit_imprinter,/turf/open/floor/plating,/area/maintenance/asmaint2)
"aDY" = (/turf/closed/wall/shuttle{icon_state = "swall8"; dir = 2},/area/shuttle/escape)
"aDZ" = (/obj/structure/grille,/obj/structure/window/shuttle,/turf/open/floor/plating,/area/shuttle/escape)
"aEa" = (/turf/closed/wall/shuttle{icon_state = "swall4"; dir = 2},/area/shuttle/escape)
@@ -2460,7 +2460,7 @@
"aVr" = (/obj/structure/closet/wardrobe/white/medical,/obj/item/weapon/storage/box/bodybags,/turf/open/floor/plasteel/white,/area/security/warden)
"aVs" = (/obj/structure/closet{name = "chem implant closet"},/obj/item/weapon/reagent_containers/glass/bottle/cyanide,/obj/item/weapon/reagent_containers/glass/bottle/initropidril,/obj/item/weapon/reagent_containers/glass/bottle/coniine,/obj/item/weapon/reagent_containers/glass/bottle/sodium_thiopental,/obj/item/weapon/storage/box/chemimp,/obj/item/weapon/storage/box/trackimp,/obj/item/weapon/gun/syringe,/obj/item/weapon/storage/box/syringes,/turf/open/floor/plasteel/white,/area/security/warden)
"aVt" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular,/obj/item/clothing/mask/surgical,/obj/item/weapon/reagent_containers/spray/cleaner,/obj/machinery/camera/autoname{icon_state = "camera"; dir = 6},/obj/item/clothing/gloves/color/latex/nitrile,/turf/open/floor/plasteel/white,/area/security/warden)
-"aVu" = (/obj/structure/closet/crate{name = "solar pack crate"},/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/weapon/circuitboard/solar_control,/obj/item/weapon/electronics/tracker,/obj/item/weapon/paper/solar,/turf/open/floor/plating,/area/toxins/xenobiology)
+"aVu" = (/obj/structure/closet/crate{name = "solar pack crate"},/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/weapon/circuitboard/computer/solar_control,/obj/item/weapon/electronics/tracker,/obj/item/weapon/paper/solar,/turf/open/floor/plating,/area/toxins/xenobiology)
"aVv" = (/obj/machinery/button/flasher{id = "permaflash"; name = "perma flasher button"; pixel_x = 0; pixel_y = 28},/turf/open/floor/plasteel,/area/security/brig)
"aVw" = (/obj/effect/spawner/structure/window/reinforced,/obj/machinery/door/poddoor/shutters/preopen{id = "perma shutter"; name = "perma brig window shutter"},/turf/open/floor/plating,/area/security/brig)
"aVx" = (/obj/structure/cable/cyan{icon_state = "1-2"},/turf/open/floor/plasteel/warnwhite{icon_state = "warnwhite"; dir = 4},/area/medical/medbay)
@@ -2501,7 +2501,7 @@
"aWg" = (/obj/structure/cable/cyan{icon_state = "1-2"},/turf/open/floor/plasteel,/area/maintenance/asmaint2)
"aWh" = (/obj/structure/table,/obj/machinery/recharger,/turf/open/floor/plasteel{icon_state = "showroomfloor"},/area/maintenance/asmaint2)
"aWi" = (/obj/structure/table,/obj/item/device/flashlight/seclite,/obj/item/clothing/suit/armor/vest,/obj/machinery/light{dir = 1},/obj/item/weapon/restraints/legcuffs/beartrap,/obj/item/weapon/restraints/legcuffs/beartrap,/turf/open/floor/plasteel{icon_state = "showroomfloor"},/area/maintenance/asmaint2)
-"aWj" = (/obj/item/weapon/circuitboard/security,/turf/open/floor/plating,/area/maintenance/asmaint2)
+"aWj" = (/obj/item/weapon/circuitboard/computer/security,/turf/open/floor/plating,/area/maintenance/asmaint2)
"aWk" = (/obj/structure/window/reinforced,/obj/structure/flora/kirbyplants{icon_state = "plant-17"; layer = 4.1},/turf/open/floor/plasteel/whitebot,/area/maintenance/fore{name = "Security Maintenance"})
"aWl" = (/obj/machinery/vending/assist,/turf/open/floor/plasteel/warning{icon_state = "warning"; dir = 10},/area/maintenance/fore{name = "Security Maintenance"})
"aWm" = (/obj/structure/table,/obj/item/clothing/gloves/color/fyellow,/obj/item/clothing/gloves/color/fyellow,/obj/item/clothing/gloves/color/fyellow,/turf/open/floor/plasteel/warning,/area/maintenance/fore{name = "Security Maintenance"})
@@ -2592,8 +2592,8 @@
"aXT" = (/obj/structure/chair{dir = 8},/obj/effect/landmark{name = "JoinLate"},/turf/open/floor/plasteel/shuttle,/area/shuttle/arrival)
"aXU" = (/obj/effect/landmark{name = "JoinLate"},/turf/open/floor/plasteel/shuttle,/area/shuttle/arrival)
"aXV" = (/obj/item/device/flashlight/seclite{name = "dusty seclite"; on = 1},/turf/open/floor/plating/asteroid{name = "dirt"},/area/maintenance/asmaint2)
-"aXW" = (/obj/item/weapon/circuitboard/card,/turf/open/floor/plasteel{icon_state = "showroomfloor"},/area/maintenance/asmaint2)
-"aXX" = (/obj/structure/computerframe,/turf/open/floor/plasteel{icon_state = "showroomfloor"},/area/maintenance/asmaint2)
+"aXW" = (/obj/item/weapon/circuitboard/computer/card,/turf/open/floor/plasteel{icon_state = "showroomfloor"},/area/maintenance/asmaint2)
+"aXX" = (/obj/structure/frame/computer,/turf/open/floor/plasteel{icon_state = "showroomfloor"},/area/maintenance/asmaint2)
"aXY" = (/obj/structure/flora/kirbyplants{icon_state = "plant-16"; layer = 4.1},/turf/open/floor/plasteel/white,/area/maintenance/fore{name = "Security Maintenance"})
"aXZ" = (/turf/open/floor/plasteel/bot,/area/maintenance/fore{name = "Security Maintenance"})
"aYa" = (/obj/machinery/atmospherics/pipe/simple/cyan/hidden{icon_state = "intact"; dir = 10},/turf/open/floor/plasteel,/area/maintenance/fore{name = "Security Maintenance"})
@@ -2784,7 +2784,7 @@
"bbD" = (/obj/effect/spawner/lootdrop{loot = list(/obj/item/organ/gland/bloody = 7, /obj/item/organ/gland/bodysnatch = 4, /obj/item/organ/gland/egg = 7, /obj/item/organ/gland/emp = 3, /obj/item/organ/gland/mindshock = 5, /obj/item/organ/gland/plasma = 7, /obj/item/organ/gland/pop = 5, /obj/item/organ/gland/slime = 4, /obj/item/organ/gland/spiderman = 5, /obj/item/organ/gland/ventcrawling = 1, /obj/item/organ/body_egg/alien_embryo = 1, /obj/item/organ/hivelord_core = 2); lootcount = 3; name = "organ spawner"},/obj/structure/closet/secure_closet{name = "xenobiology research materials locker"; req_access_txt = "55"},/turf/open/floor/plasteel/white,/area/toxins/xenobiology)
"bbE" = (/mob/living/simple_animal/mouse/brown,/turf/open/floor/wood,/area/maintenance/fore{name = "Security Maintenance"})
"bbF" = (/obj/effect/spawner/lootdrop/crate_spawner,/turf/open/floor/plating,/area/maintenance/fore{name = "Security Maintenance"})
-"bbG" = (/obj/structure/closet/crate{name = "solar pack crate"},/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/weapon/circuitboard/solar_control,/obj/item/weapon/electronics/tracker,/obj/item/weapon/paper/solar,/turf/open/floor/plating,/area/maintenance/fore{name = "Security Maintenance"})
+"bbG" = (/obj/structure/closet/crate{name = "solar pack crate"},/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/weapon/circuitboard/computer/solar_control,/obj/item/weapon/electronics/tracker,/obj/item/weapon/paper/solar,/turf/open/floor/plating,/area/maintenance/fore{name = "Security Maintenance"})
"bbH" = (/obj/machinery/door/airlock/external{req_access_txt = "13"},/obj/structure/cable/cyan{icon_state = "1-2"},/turf/open/floor/plating,/area/maintenance/fore{name = "Security Maintenance"})
"bbI" = (/obj/machinery/atmospherics/pipe/simple/cyan/hidden{icon_state = "intact"; dir = 5},/turf/open/floor/plating,/area/maintenance/fore{name = "Security Maintenance"})
"bbJ" = (/obj/structure/cable/cyan{icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/cyan/hidden{icon_state = "intact"; dir = 4},/turf/open/floor/plasteel,/area/maintenance/fore{name = "Security Maintenance"})
@@ -2854,7 +2854,7 @@
"bcV" = (/obj/item/weapon/storage/box/lights/mixed,/turf/open/floor/plating,/area/maintenance/asmaint)
"bcW" = (/obj/structure/closet/firecloset,/turf/open/floor/plating,/area/maintenance/asmaint)
"bcX" = (/obj/structure/reagent_dispensers/fueltank,/turf/open/floor/plating,/area/maintenance/asmaint)
-"bcY" = (/obj/structure/table,/obj/item/weapon/circuitboard/autolathe,/turf/open/floor/plating,/area/maintenance/asmaint2)
+"bcY" = (/obj/structure/table,/obj/item/weapon/circuitboard/machine/autolathe,/turf/open/floor/plating,/area/maintenance/asmaint2)
"bcZ" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/electrical,/turf/open/floor/plating,/area/maintenance/asmaint2)
"bda" = (/turf/open/floor/plasteel/shuttle,/turf/closed/wall/shuttle/interior{icon_state = "swall_f9"},/area/shuttle/transport)
"bdb" = (/obj/structure/chair{dir = 4},/turf/open/floor/plasteel/shuttle,/area/shuttle/transport)
diff --git a/_maps/map_files/DreamStation/dreamstation04.dmm b/_maps/map_files/DreamStation/dreamstation04.dmm
index 87cdb1c609c..d9b8f0cce5b 100644
--- a/_maps/map_files/DreamStation/dreamstation04.dmm
+++ b/_maps/map_files/DreamStation/dreamstation04.dmm
@@ -1434,7 +1434,7 @@
},
/area/shuttle/syndicate)
"acC" = (
-/obj/structure/computerframe,
+/obj/structure/frame/computer,
/turf/open/floor/plasteel/shuttle{
icon_state = "shuttlefloor4"
},
@@ -2533,7 +2533,7 @@
},
/area/shuttle/abandoned)
"aeG" = (
-/obj/structure/computerframe{
+/obj/structure/frame/computer{
anchored = 1
},
/turf/open/floor/plasteel/shuttle{
@@ -2838,7 +2838,7 @@
},
/area/shuttle/abandoned)
"afo" = (
-/obj/item/weapon/circuitboard/operating,
+/obj/item/weapon/circuitboard/computer/operating,
/turf/open/floor/plasteel/shuttle{
icon_state = "shuttlefloor3"
},
@@ -5745,8 +5745,8 @@
/turf/open/floor/plating,
/area/maintenance/fpmaint2)
"alK" = (
-/obj/structure/computerframe,
-/obj/item/weapon/circuitboard/operating,
+/obj/structure/frame/computer,
+/obj/item/weapon/circuitboard/computer/operating,
/turf/open/floor/plating,
/area/maintenance/fpmaint2)
"alL" = (
@@ -5889,7 +5889,7 @@
/turf/open/floor/plating,
/area/maintenance/fpmaint2)
"amj" = (
-/obj/item/weapon/circuitboard/sleeper,
+/obj/item/weapon/circuitboard/machine/sleeper,
/obj/structure/mirror{
pixel_x = 28
},
@@ -6259,7 +6259,7 @@
/turf/open/floor/plating,
/area/maintenance/fpmaint2)
"amV" = (
-/obj/machinery/constructable_frame/machine_frame,
+/obj/structure/frame/machine,
/turf/open/floor/plating,
/area/maintenance/fpmaint2)
"amW" = (
@@ -6807,32 +6807,32 @@
"aop" = (
/obj/structure/table,
/obj/item/weapon/stock_parts/manipulator,
-/obj/item/weapon/circuitboard/microwave,
+/obj/item/weapon/circuitboard/machine/microwave,
/turf/open/floor/plating{
broken = 1;
icon_state = "platingdmg3"
},
/area/maintenance/asmaint)
"aoq" = (
-/obj/machinery/constructable_frame/machine_frame,
+/obj/structure/frame/machine,
/turf/open/floor/plating,
/area/maintenance/asmaint)
"aor" = (
-/obj/structure/computerframe{
+/obj/structure/frame/computer{
anchored = 1
},
-/obj/item/weapon/circuitboard/arcade/orion_trail,
+/obj/item/weapon/circuitboard/computer/arcade/orion_trail,
/turf/open/floor/plating,
/area/maintenance/asmaint)
"aos" = (
-/obj/structure/computerframe{
+/obj/structure/frame/computer{
anchored = 1
},
/turf/open/floor/plating,
/area/maintenance/asmaint)
"aot" = (
/obj/structure/table,
-/obj/machinery/constructable_frame/machine_frame,
+/obj/structure/frame/machine,
/turf/open/floor/plating,
/area/maintenance/asmaint)
"aou" = (
@@ -10768,7 +10768,7 @@
/obj/structure/rack,
/obj/item/weapon/light/tube,
/obj/effect/spawner/lootdrop/maintenance,
-/obj/item/weapon/circuitboard/protolathe,
+/obj/item/weapon/circuitboard/machine/protolathe,
/turf/open/floor/plating,
/area/maintenance/asmaint)
"awc" = (
@@ -17763,7 +17763,7 @@
/area/maintenance/atmos_control)
"aJM" = (
/obj/structure/rack,
-/obj/item/weapon/circuitboard/circuit_imprinter,
+/obj/item/weapon/circuitboard/machine/circuit_imprinter,
/obj/item/trash/chips,
/turf/open/floor/plating,
/area/maintenance/atmos_control)
@@ -23619,11 +23619,11 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/robotics{
+/obj/item/weapon/circuitboard/computer/robotics{
pixel_x = -2;
pixel_y = 2
},
-/obj/item/weapon/circuitboard/mecha_control{
+/obj/item/weapon/circuitboard/computer/mecha_control{
pixel_x = 1;
pixel_y = -1
},
@@ -23651,11 +23651,11 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/borgupload{
+/obj/item/weapon/circuitboard/computer/borgupload{
pixel_x = -1;
pixel_y = 1
},
-/obj/item/weapon/circuitboard/aiupload{
+/obj/item/weapon/circuitboard/computer/aiupload{
pixel_x = 2;
pixel_y = -2
},
@@ -23675,15 +23675,15 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/crew{
+/obj/item/weapon/circuitboard/computer/crew{
pixel_x = -1;
pixel_y = 1
},
-/obj/item/weapon/circuitboard/card{
+/obj/item/weapon/circuitboard/computer/card{
pixel_x = 2;
pixel_y = -2
},
-/obj/item/weapon/circuitboard/communications{
+/obj/item/weapon/circuitboard/computer/communications{
pixel_x = 5;
pixel_y = -5
},
@@ -23847,7 +23847,7 @@
/turf/open/floor/plating,
/area/maintenance/fore)
"aVH" = (
-/obj/structure/computerframe{
+/obj/structure/frame/computer{
anchored = 1
},
/turf/open/floor/plating{
@@ -23862,7 +23862,7 @@
/turf/open/floor/plating,
/area/maintenance/asmaint)
"aVJ" = (
-/obj/machinery/constructable_frame/machine_frame,
+/obj/structure/frame/machine,
/obj/effect/spawner/lootdrop{
loot = list(/obj/item/stack/sheet/metal = 1, /obj/item/stack/rods = 2, /obj/item/weapon/shard = 2, "" = 3);
lootcount = 2;
@@ -27242,16 +27242,16 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/cloning{
+/obj/item/weapon/circuitboard/computer/cloning{
pixel_x = 0
},
-/obj/item/weapon/circuitboard/med_data{
+/obj/item/weapon/circuitboard/computer/med_data{
pixel_x = 3;
pixel_y = -3
},
-/obj/item/weapon/circuitboard/clonescanner,
-/obj/item/weapon/circuitboard/clonepod,
-/obj/item/weapon/circuitboard/scan_consolenew,
+/obj/item/weapon/circuitboard/machine/clonescanner,
+/obj/item/weapon/circuitboard/machine/clonepod,
+/obj/item/weapon/circuitboard/computer/scan_consolenew,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
@@ -27262,11 +27262,11 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/secure_data{
+/obj/item/weapon/circuitboard/computer/secure_data{
pixel_x = -2;
pixel_y = 2
},
-/obj/item/weapon/circuitboard/security{
+/obj/item/weapon/circuitboard/computer/security{
pixel_x = 1;
pixel_y = -1
},
@@ -27281,12 +27281,12 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/mining,
-/obj/item/weapon/circuitboard/autolathe{
+/obj/item/weapon/circuitboard/computer/mining,
+/obj/item/weapon/circuitboard/machine/autolathe{
pixel_x = 3;
pixel_y = -3
},
-/obj/item/weapon/circuitboard/arcade/battle,
+/obj/item/weapon/circuitboard/computer/arcade/battle,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
@@ -27402,7 +27402,7 @@
"bcx" = (
/obj/structure/rack,
/obj/effect/spawner/lootdrop/maintenance,
-/obj/item/weapon/circuitboard/rdconsole,
+/obj/item/weapon/circuitboard/computer/rdconsole,
/obj/item/weapon/stock_parts/console_screen,
/turf/open/floor/plating{
broken = 1;
@@ -28690,21 +28690,21 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/pandemic{
+/obj/item/weapon/circuitboard/computer/pandemic{
pixel_x = -3;
pixel_y = 3
},
-/obj/item/weapon/circuitboard/rdconsole,
-/obj/item/weapon/circuitboard/rdserver{
+/obj/item/weapon/circuitboard/computer/rdconsole,
+/obj/item/weapon/circuitboard/machine/rdserver{
pixel_x = 3;
pixel_y = -3
},
-/obj/item/weapon/circuitboard/destructive_analyzer,
-/obj/item/weapon/circuitboard/protolathe,
-/obj/item/weapon/circuitboard/aifixer,
-/obj/item/weapon/circuitboard/teleporter,
-/obj/item/weapon/circuitboard/circuit_imprinter,
-/obj/item/weapon/circuitboard/mechfab,
+/obj/item/weapon/circuitboard/machine/destructive_analyzer,
+/obj/item/weapon/circuitboard/machine/protolathe,
+/obj/item/weapon/circuitboard/computer/aifixer,
+/obj/item/weapon/circuitboard/computer/teleporter,
+/obj/item/weapon/circuitboard/machine/circuit_imprinter,
+/obj/item/weapon/circuitboard/machine/mechfab,
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
tag = "icon-manifold-b-f (NORTH)";
dir = 1
@@ -28716,15 +28716,15 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/powermonitor{
+/obj/item/weapon/circuitboard/computer/powermonitor{
pixel_x = -2;
pixel_y = 2
},
-/obj/item/weapon/circuitboard/stationalert{
+/obj/item/weapon/circuitboard/computer/stationalert{
pixel_x = 1;
pixel_y = -1
},
-/obj/item/weapon/circuitboard/atmos_alert{
+/obj/item/weapon/circuitboard/computer/atmos_alert{
pixel_x = 3;
pixel_y = -3
},
@@ -28736,12 +28736,12 @@
/area/storage/tech)
"bfd" = (
/obj/structure/rack,
-/obj/item/weapon/circuitboard/telecomms/processor,
-/obj/item/weapon/circuitboard/telecomms/receiver,
-/obj/item/weapon/circuitboard/telecomms/server,
-/obj/item/weapon/circuitboard/telecomms/bus,
-/obj/item/weapon/circuitboard/telecomms/broadcaster,
-/obj/item/weapon/circuitboard/message_monitor{
+/obj/item/weapon/circuitboard/machine/telecomms/processor,
+/obj/item/weapon/circuitboard/machine/telecomms/receiver,
+/obj/item/weapon/circuitboard/machine/telecomms/server,
+/obj/item/weapon/circuitboard/machine/telecomms/bus,
+/obj/item/weapon/circuitboard/machine/telecomms/broadcaster,
+/obj/item/weapon/circuitboard/computer/message_monitor{
pixel_y = -5
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -37083,7 +37083,7 @@
/turf/open/floor/plating,
/area/maintenance/fpmaint)
"buF" = (
-/obj/machinery/constructable_frame/machine_frame,
+/obj/structure/frame/machine,
/turf/open/floor/plating,
/area/maintenance/fpmaint)
"buG" = (
@@ -38399,7 +38399,7 @@
/turf/open/floor/plating,
/area/maintenance/fpmaint)
"bwK" = (
-/obj/machinery/constructable_frame/machine_frame,
+/obj/structure/frame/machine,
/obj/machinery/power/apc{
aidisabled = 0;
auto_name = 1;
@@ -47438,7 +47438,7 @@
/turf/open/floor/plating,
/area/maintenance/fpmaint)
"bMn" = (
-/obj/structure/computerframe,
+/obj/structure/frame/computer,
/turf/open/floor/plating,
/area/maintenance/fpmaint)
"bMo" = (
@@ -61853,7 +61853,7 @@
},
/area/toxins/lab)
"cog" = (
-/obj/machinery/constructable_frame/machine_frame,
+/obj/structure/frame/machine,
/turf/open/floor/plasteel{
icon_state = "white"
},
@@ -62568,18 +62568,18 @@
},
/area/maintenance/electrical)
"cpA" = (
-/obj/structure/computerframe,
+/obj/structure/frame/computer,
/turf/open/floor/plasteel{
icon_state = "floorgrime"
},
/area/construction)
"cpB" = (
-/obj/structure/computerframe,
+/obj/structure/frame/computer,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plating,
/area/construction)
"cpC" = (
-/obj/structure/computerframe,
+/obj/structure/frame/computer,
/obj/machinery/airalarm{
pixel_y = 23
},
@@ -62600,7 +62600,7 @@
},
/area/construction)
"cpE" = (
-/obj/machinery/constructable_frame/machine_frame,
+/obj/structure/frame/machine,
/turf/open/floor/plasteel{
icon_state = "floorgrime"
},
@@ -65375,7 +65375,7 @@
pixel_x = -2;
pixel_y = 4
},
-/obj/item/weapon/circuitboard/teleporter,
+/obj/item/weapon/circuitboard/computer/teleporter,
/obj/item/device/aicard,
/obj/structure/cable/pink{
tag = "icon-2-8";
@@ -72100,7 +72100,7 @@
"cHe" = (
/obj/structure/closet/crate,
/obj/item/weapon/reagent_containers/food/snacks/mint,
-/obj/item/weapon/circuitboard/destructive_analyzer,
+/obj/item/weapon/circuitboard/machine/destructive_analyzer,
/turf/open/floor/plating,
/area/maintenance/asmaint2)
"cHf" = (
@@ -74722,8 +74722,8 @@
},
/area/maintenance/asmaint2)
"cLX" = (
-/obj/machinery/constructable_frame/machine_frame,
-/obj/item/weapon/circuitboard/chem_master,
+/obj/structure/frame/machine,
+/obj/item/weapon/circuitboard/machine/chem_master,
/turf/open/floor/plating,
/area/maintenance/asmaint2)
"cLY" = (
diff --git a/_maps/map_files/EfficiencyStation/EfficiencyStation.dmm b/_maps/map_files/EfficiencyStation/EfficiencyStation.dmm
index 65a5dd9837b..b15f8f1c392 100644
--- a/_maps/map_files/EfficiencyStation/EfficiencyStation.dmm
+++ b/_maps/map_files/EfficiencyStation/EfficiencyStation.dmm
@@ -588,7 +588,7 @@
},
/area/shuttle/syndicate)
"abt" = (
-/obj/structure/computerframe,
+/obj/structure/frame/computer,
/turf/open/floor/plasteel/shuttle{
icon_state = "shuttlefloor4"
},
@@ -1956,7 +1956,7 @@
desc = "A thin layer of dust coating the floor.";
name = "dust"
},
-/obj/machinery/constructable_frame/machine_frame{
+/obj/structure/frame/machine{
desc = "A NanoTrasen hypersleep chamber - this one appears broken. There are exposed bolts for easy detachment using a wrench.";
dir = 8;
icon = 'icons/obj/Cryogenic2.dmi';
@@ -1992,7 +1992,7 @@
desc = "A thin layer of dust coating the floor.";
name = "dust"
},
-/obj/machinery/constructable_frame/machine_frame{
+/obj/structure/frame/machine{
desc = "A NanoTrasen hypersleep chamber - this one appears broken. There are exposed bolts for easy detachment using a wrench.";
dir = 4;
icon = 'icons/obj/Cryogenic2.dmi';
@@ -2202,8 +2202,8 @@
},
/area/shuttle/abandoned)
"adV" = (
-/obj/machinery/constructable_frame/machine_frame,
-/obj/item/weapon/circuitboard/chem_dispenser,
+/obj/structure/frame/machine,
+/obj/item/weapon/circuitboard/machine/chem_dispenser,
/obj/effect/decal/cleanable/dirt{
desc = "A thin layer of dust coating the floor.";
name = "dust"
@@ -2213,7 +2213,7 @@
},
/area/shuttle/abandoned)
"adW" = (
-/obj/machinery/constructable_frame/machine_frame,
+/obj/structure/frame/machine,
/obj/effect/decal/cleanable/oil,
/obj/effect/decal/cleanable/dirt{
desc = "A thin layer of dust coating the floor.";
@@ -2777,7 +2777,7 @@
},
/area/shuttle/abandoned)
"aeR" = (
-/obj/machinery/constructable_frame/machine_frame,
+/obj/structure/frame/machine,
/obj/effect/decal/cleanable/dirt{
desc = "A thin layer of dust coating the floor.";
name = "dust"
@@ -2787,8 +2787,8 @@
},
/area/shuttle/abandoned)
"aeS" = (
-/obj/machinery/constructable_frame/machine_frame,
-/obj/item/weapon/circuitboard/autolathe,
+/obj/structure/frame/machine,
+/obj/item/weapon/circuitboard/machine/autolathe,
/obj/effect/decal/cleanable/dirt{
desc = "A thin layer of dust coating the floor.";
name = "dust"
@@ -3524,8 +3524,8 @@
},
/area/shuttle/abandoned)
"aga" = (
-/obj/machinery/constructable_frame/machine_frame,
-/obj/item/weapon/circuitboard/cyborgrecharger,
+/obj/structure/frame/machine,
+/obj/item/weapon/circuitboard/machine/cyborgrecharger,
/obj/effect/decal/cleanable/oil,
/obj/effect/decal/cleanable/dirt{
desc = "A thin layer of dust coating the floor.";
@@ -4212,7 +4212,7 @@
},
/area/shuttle/abandoned)
"ahk" = (
-/obj/structure/computerframe,
+/obj/structure/frame/computer,
/obj/effect/decal/cleanable/dirt{
desc = "A thin layer of dust coating the floor.";
name = "dust"
@@ -4244,7 +4244,7 @@
},
/area/shuttle/abandoned)
"ahn" = (
-/obj/structure/computerframe,
+/obj/structure/frame/computer,
/obj/effect/decal/cleanable/dirt{
desc = "A thin layer of dust coating the floor.";
name = "dust"
@@ -14688,7 +14688,7 @@
pixel_x = -2;
pixel_y = 4
},
-/obj/item/weapon/circuitboard/teleporter,
+/obj/item/weapon/circuitboard/computer/teleporter,
/turf/open/floor/plasteel{
dir = 6;
icon_state = "warnwhite"
@@ -17007,11 +17007,11 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/robotics{
+/obj/item/weapon/circuitboard/computer/robotics{
pixel_x = -2;
pixel_y = 2
},
-/obj/item/weapon/circuitboard/mecha_control{
+/obj/item/weapon/circuitboard/computer/mecha_control{
pixel_x = 1;
pixel_y = -1
},
@@ -17022,15 +17022,15 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/crew{
+/obj/item/weapon/circuitboard/computer/crew{
pixel_x = -1;
pixel_y = 1
},
-/obj/item/weapon/circuitboard/card{
+/obj/item/weapon/circuitboard/computer/card{
pixel_x = 2;
pixel_y = -2
},
-/obj/item/weapon/circuitboard/communications{
+/obj/item/weapon/circuitboard/computer/communications{
pixel_x = 5;
pixel_y = -5
},
@@ -17041,11 +17041,11 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/borgupload{
+/obj/item/weapon/circuitboard/computer/borgupload{
pixel_x = -1;
pixel_y = 1
},
-/obj/item/weapon/circuitboard/aiupload{
+/obj/item/weapon/circuitboard/computer/aiupload{
pixel_x = 2;
pixel_y = -2
},
@@ -19057,14 +19057,14 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/cloning,
-/obj/item/weapon/circuitboard/med_data{
+/obj/item/weapon/circuitboard/computer/cloning,
+/obj/item/weapon/circuitboard/computer/med_data{
pixel_x = 3;
pixel_y = -3
},
-/obj/item/weapon/circuitboard/clonescanner,
-/obj/item/weapon/circuitboard/clonepod,
-/obj/item/weapon/circuitboard/scan_consolenew,
+/obj/item/weapon/circuitboard/machine/clonescanner,
+/obj/item/weapon/circuitboard/machine/clonepod,
+/obj/item/weapon/circuitboard/computer/scan_consolenew,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
@@ -19691,11 +19691,11 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/secure_data{
+/obj/item/weapon/circuitboard/computer/secure_data{
pixel_x = -2;
pixel_y = 2
},
-/obj/item/weapon/circuitboard/security{
+/obj/item/weapon/circuitboard/computer/security{
pixel_x = 1;
pixel_y = -1
},
@@ -20334,15 +20334,15 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/powermonitor{
+/obj/item/weapon/circuitboard/computer/powermonitor{
pixel_x = -2;
pixel_y = 2
},
-/obj/item/weapon/circuitboard/stationalert{
+/obj/item/weapon/circuitboard/computer/stationalert{
pixel_x = 1;
pixel_y = -1
},
-/obj/item/weapon/circuitboard/atmos_alert{
+/obj/item/weapon/circuitboard/computer/atmos_alert{
pixel_x = 3;
pixel_y = -3
},
@@ -21705,18 +21705,18 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/pandemic{
+/obj/item/weapon/circuitboard/computer/pandemic{
pixel_x = -3;
pixel_y = 3
},
-/obj/item/weapon/circuitboard/rdconsole,
-/obj/item/weapon/circuitboard/rdserver{
+/obj/item/weapon/circuitboard/computer/rdconsole,
+/obj/item/weapon/circuitboard/machine/rdserver{
pixel_x = 3;
pixel_y = -3
},
-/obj/item/weapon/circuitboard/destructive_analyzer,
-/obj/item/weapon/circuitboard/protolathe,
-/obj/item/weapon/circuitboard/aifixer,
+/obj/item/weapon/circuitboard/machine/destructive_analyzer,
+/obj/item/weapon/circuitboard/machine/protolathe,
+/obj/item/weapon/circuitboard/computer/aifixer,
/obj/machinery/light_switch{
pixel_x = -25
},
@@ -22455,12 +22455,12 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/mining,
-/obj/item/weapon/circuitboard/autolathe{
+/obj/item/weapon/circuitboard/computer/mining,
+/obj/item/weapon/circuitboard/machine/autolathe{
pixel_x = 3;
pixel_y = -3
},
-/obj/item/weapon/circuitboard/arcade/battle,
+/obj/item/weapon/circuitboard/computer/arcade/battle,
/obj/machinery/light/small{
dir = 8
},
@@ -23206,12 +23206,12 @@
/area/hallway/primary/starboard)
"aOL" = (
/obj/structure/rack,
-/obj/item/weapon/circuitboard/telecomms/processor,
-/obj/item/weapon/circuitboard/telecomms/receiver,
-/obj/item/weapon/circuitboard/telecomms/server,
-/obj/item/weapon/circuitboard/telecomms/bus,
-/obj/item/weapon/circuitboard/telecomms/broadcaster,
-/obj/item/weapon/circuitboard/message_monitor{
+/obj/item/weapon/circuitboard/machine/telecomms/processor,
+/obj/item/weapon/circuitboard/machine/telecomms/receiver,
+/obj/item/weapon/circuitboard/machine/telecomms/server,
+/obj/item/weapon/circuitboard/machine/telecomms/bus,
+/obj/item/weapon/circuitboard/machine/telecomms/broadcaster,
+/obj/item/weapon/circuitboard/computer/message_monitor{
pixel_y = -5
},
/turf/open/floor/plating,
@@ -44400,7 +44400,7 @@
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
-/obj/item/weapon/circuitboard/solar_control,
+/obj/item/weapon/circuitboard/computer/solar_control,
/obj/item/weapon/electronics/tracker,
/obj/item/weapon/paper/solar,
/obj/structure/cable{
diff --git a/_maps/map_files/MetaStation/MetaStation.v41I.dmm b/_maps/map_files/MetaStation/MetaStation.v41I.dmm
index bbec2be5967..43d40cb3424 100644
--- a/_maps/map_files/MetaStation/MetaStation.v41I.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.v41I.dmm
@@ -20887,7 +20887,7 @@
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
-/obj/item/weapon/circuitboard/solar_control,
+/obj/item/weapon/circuitboard/computer/solar_control,
/obj/item/weapon/electronics/tracker,
/obj/item/weapon/paper/solar,
/turf/open/floor/plasteel{
@@ -31654,15 +31654,15 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/powermonitor{
+/obj/item/weapon/circuitboard/computer/powermonitor{
pixel_x = -2;
pixel_y = 2
},
-/obj/item/weapon/circuitboard/stationalert{
+/obj/item/weapon/circuitboard/computer/stationalert{
pixel_x = 1;
pixel_y = -1
},
-/obj/item/weapon/circuitboard/atmos_alert{
+/obj/item/weapon/circuitboard/computer/atmos_alert{
pixel_x = 3;
pixel_y = -3
},
@@ -31675,11 +31675,11 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/secure_data{
+/obj/item/weapon/circuitboard/computer/secure_data{
pixel_x = -2;
pixel_y = 2
},
-/obj/item/weapon/circuitboard/security{
+/obj/item/weapon/circuitboard/computer/security{
pixel_x = 1;
pixel_y = -1
},
@@ -31696,16 +31696,16 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/cloning{
+/obj/item/weapon/circuitboard/computer/cloning{
pixel_x = 0
},
-/obj/item/weapon/circuitboard/med_data{
+/obj/item/weapon/circuitboard/computer/med_data{
pixel_x = 3;
pixel_y = -3
},
-/obj/item/weapon/circuitboard/clonescanner,
-/obj/item/weapon/circuitboard/clonepod,
-/obj/item/weapon/circuitboard/scan_consolenew,
+/obj/item/weapon/circuitboard/machine/clonescanner,
+/obj/item/weapon/circuitboard/machine/clonepod,
+/obj/item/weapon/circuitboard/computer/scan_consolenew,
/turf/open/floor/plasteel{
icon_state = "dark"
},
@@ -33760,11 +33760,11 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/borgupload{
+/obj/item/weapon/circuitboard/computer/borgupload{
pixel_x = -1;
pixel_y = 1
},
-/obj/item/weapon/circuitboard/aiupload{
+/obj/item/weapon/circuitboard/computer/aiupload{
pixel_x = 2;
pixel_y = -2
},
@@ -33804,14 +33804,14 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/message_monitor{
+/obj/item/weapon/circuitboard/computer/message_monitor{
pixel_y = -5
},
-/obj/item/weapon/circuitboard/arcade/battle{
+/obj/item/weapon/circuitboard/computer/arcade/battle{
pixel_x = -4;
pixel_y = 2
},
-/obj/item/weapon/circuitboard/arcade/orion_trail{
+/obj/item/weapon/circuitboard/computer/arcade/orion_trail{
pixel_x = 4
},
/turf/open/floor/plasteel{
@@ -33823,8 +33823,8 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/mining,
-/obj/item/weapon/circuitboard/autolathe{
+/obj/item/weapon/circuitboard/computer/mining,
+/obj/item/weapon/circuitboard/machine/autolathe{
pixel_x = 3;
pixel_y = -3
},
@@ -33837,17 +33837,17 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/pandemic{
+/obj/item/weapon/circuitboard/computer/pandemic{
pixel_x = -3;
pixel_y = 3
},
-/obj/item/weapon/circuitboard/rdconsole,
-/obj/item/weapon/circuitboard/rdserver{
+/obj/item/weapon/circuitboard/computer/rdconsole,
+/obj/item/weapon/circuitboard/machine/rdserver{
pixel_x = 3;
pixel_y = -3
},
-/obj/item/weapon/circuitboard/destructive_analyzer,
-/obj/item/weapon/circuitboard/protolathe,
+/obj/item/weapon/circuitboard/machine/destructive_analyzer,
+/obj/item/weapon/circuitboard/machine/protolathe,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel{
icon_state = "dark"
@@ -34518,15 +34518,15 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/crew{
+/obj/item/weapon/circuitboard/computer/crew{
pixel_x = -1;
pixel_y = 1
},
-/obj/item/weapon/circuitboard/card{
+/obj/item/weapon/circuitboard/computer/card{
pixel_x = 2;
pixel_y = -2
},
-/obj/item/weapon/circuitboard/communications{
+/obj/item/weapon/circuitboard/computer/communications{
pixel_x = 5;
pixel_y = -5
},
@@ -35451,11 +35451,11 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/robotics{
+/obj/item/weapon/circuitboard/computer/robotics{
pixel_x = -2;
pixel_y = 2
},
-/obj/item/weapon/circuitboard/mecha_control{
+/obj/item/weapon/circuitboard/computer/mecha_control{
pixel_x = 1;
pixel_y = -1
},
@@ -56963,14 +56963,14 @@
/area/bridge)
"bOg" = (
/obj/structure/rack,
-/obj/item/weapon/circuitboard/telecomms/processor,
-/obj/item/weapon/circuitboard/telecomms/processor,
-/obj/item/weapon/circuitboard/telecomms/receiver,
-/obj/item/weapon/circuitboard/telecomms/server,
-/obj/item/weapon/circuitboard/telecomms/server,
-/obj/item/weapon/circuitboard/telecomms/bus,
-/obj/item/weapon/circuitboard/telecomms/bus,
-/obj/item/weapon/circuitboard/telecomms/broadcaster,
+/obj/item/weapon/circuitboard/machine/telecomms/processor,
+/obj/item/weapon/circuitboard/machine/telecomms/processor,
+/obj/item/weapon/circuitboard/machine/telecomms/receiver,
+/obj/item/weapon/circuitboard/machine/telecomms/server,
+/obj/item/weapon/circuitboard/machine/telecomms/server,
+/obj/item/weapon/circuitboard/machine/telecomms/bus,
+/obj/item/weapon/circuitboard/machine/telecomms/bus,
+/obj/item/weapon/circuitboard/machine/telecomms/broadcaster,
/obj/machinery/atmospherics/components/unary/vent_pump{
dir = 1;
on = 1
@@ -79097,7 +79097,7 @@
pixel_x = -2;
pixel_y = 4
},
-/obj/item/weapon/circuitboard/teleporter,
+/obj/item/weapon/circuitboard/computer/teleporter,
/turf/open/floor/plasteel{
icon_state = "cafeteria";
dir = 5
@@ -96286,7 +96286,7 @@
},
/area/shuttle/syndicate)
"cXz" = (
-/obj/structure/computerframe,
+/obj/structure/frame/computer,
/turf/open/floor/plasteel/shuttle{
icon_state = "shuttlefloor4"
},
@@ -97775,8 +97775,8 @@
},
/area/shuttle/abandoned)
"daw" = (
-/obj/machinery/constructable_frame/machine_frame,
-/obj/item/weapon/circuitboard/cyborgrecharger,
+/obj/structure/frame/machine,
+/obj/item/weapon/circuitboard/machine/cyborgrecharger,
/obj/effect/decal/cleanable/oil,
/obj/effect/decal/cleanable/dirt{
desc = "A thin layer of dust coating the floor.";
@@ -97944,7 +97944,7 @@
},
/area/shuttle/abandoned)
"daO" = (
-/obj/structure/computerframe,
+/obj/structure/frame/computer,
/obj/effect/decal/cleanable/cobweb,
/obj/effect/decal/cleanable/dirt{
desc = "A thin layer of dust coating the floor.";
@@ -98040,7 +98040,7 @@
desc = "A thin layer of dust coating the floor.";
name = "dust"
},
-/obj/machinery/constructable_frame/machine_frame{
+/obj/structure/frame/machine{
desc = "A NanoTrasen hypersleep chamber - this one appears broken. There are exposed bolts for easy detachment using a wrench.";
dir = 1;
icon = 'icons/obj/Cryogenic2.dmi';
@@ -98057,7 +98057,7 @@
desc = "A thin layer of dust coating the floor.";
name = "dust"
},
-/obj/machinery/constructable_frame/machine_frame{
+/obj/structure/frame/machine{
desc = "A NanoTrasen hypersleep chamber - this one appears broken. There are exposed bolts for easy detachment using a wrench.";
dir = 1;
icon = 'icons/obj/Cryogenic2.dmi';
@@ -98352,7 +98352,7 @@
desc = "A thin layer of dust coating the floor.";
name = "dust"
},
-/obj/machinery/constructable_frame/machine_frame{
+/obj/structure/frame/machine{
desc = "A NanoTrasen hypersleep chamber - this one appears broken. There are exposed bolts for easy detachment using a wrench.";
dir = 2;
icon = 'icons/obj/Cryogenic2.dmi';
@@ -98369,7 +98369,7 @@
desc = "A thin layer of dust coating the floor.";
name = "dust"
},
-/obj/machinery/constructable_frame/machine_frame{
+/obj/structure/frame/machine{
desc = "A NanoTrasen hypersleep chamber - this one appears broken. There are exposed bolts for easy detachment using a wrench.";
dir = 2;
icon = 'icons/obj/Cryogenic2.dmi';
@@ -98465,7 +98465,7 @@
},
/area/shuttle/abandoned)
"dbC" = (
-/obj/structure/computerframe,
+/obj/structure/frame/computer,
/obj/effect/decal/cleanable/dirt{
desc = "A thin layer of dust coating the floor.";
name = "dust"
@@ -98643,7 +98643,7 @@
},
/area/shuttle/abandoned)
"dbS" = (
-/obj/machinery/constructable_frame/machine_frame,
+/obj/structure/frame/machine,
/obj/effect/decal/cleanable/oil,
/obj/effect/decal/cleanable/dirt{
desc = "A thin layer of dust coating the floor.";
@@ -98654,8 +98654,8 @@
},
/area/shuttle/abandoned)
"dbT" = (
-/obj/machinery/constructable_frame/machine_frame,
-/obj/item/weapon/circuitboard/autolathe,
+/obj/structure/frame/machine,
+/obj/item/weapon/circuitboard/machine/autolathe,
/obj/effect/decal/cleanable/dirt{
desc = "A thin layer of dust coating the floor.";
name = "dust"
@@ -98787,8 +98787,8 @@
/turf/open/floor/plasteel/shuttle,
/area/shuttle/abandoned)
"dcd" = (
-/obj/machinery/constructable_frame/machine_frame,
-/obj/item/weapon/circuitboard/chem_dispenser,
+/obj/structure/frame/machine,
+/obj/item/weapon/circuitboard/machine/chem_dispenser,
/obj/effect/decal/cleanable/dirt{
desc = "A thin layer of dust coating the floor.";
name = "dust"
@@ -98798,7 +98798,7 @@
},
/area/shuttle/abandoned)
"dce" = (
-/obj/machinery/constructable_frame/machine_frame,
+/obj/structure/frame/machine,
/obj/effect/decal/cleanable/dirt{
desc = "A thin layer of dust coating the floor.";
name = "dust"
diff --git a/_maps/map_files/MiniStation/MiniStation.dmm b/_maps/map_files/MiniStation/MiniStation.dmm
index aaebffe3620..4220fed6d56 100644
--- a/_maps/map_files/MiniStation/MiniStation.dmm
+++ b/_maps/map_files/MiniStation/MiniStation.dmm
@@ -13107,7 +13107,7 @@
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
-/obj/item/weapon/circuitboard/solar_control,
+/obj/item/weapon/circuitboard/computer/solar_control,
/obj/item/weapon/electronics/tracker,
/obj/item/weapon/paper/solar,
/turf/open/floor/plating{
@@ -13528,7 +13528,7 @@
/turf/open/floor/plasteel,
/area/engine/engineering)
"Cw" = (
-/obj/structure/computerframe,
+/obj/structure/frame/computer,
/turf/open/floor/plasteel/shuttle{
icon_state = "shuttlefloor4"
},
@@ -15520,7 +15520,7 @@
/turf/open/floor/plating,
/area/shuttle/syndicate)
"Hd" = (
-/obj/structure/computerframe,
+/obj/structure/frame/computer,
/obj/item/weapon/paper{
info = "Teleporter Instruction
- Install circuit board, glass and wiring to complete Teleporter Control Console
- Use a screwdriver, wirecutter and screwdriver again on the Teleporter Station to connect it
- Set destination with Teleporter Control Computer
- Activate Teleporter Hub with Teleporter Station
";
name = "Teleporter Instructions"
diff --git a/_maps/map_files/TgStation/tgstation.2.1.3.dmm b/_maps/map_files/TgStation/tgstation.2.1.3.dmm
index 4b6ad4ccfca..ee5c7cfc719 100644
--- a/_maps/map_files/TgStation/tgstation.2.1.3.dmm
+++ b/_maps/map_files/TgStation/tgstation.2.1.3.dmm
@@ -7034,7 +7034,7 @@
/area/maintenance/fpmaint2)
"ann" = (
/obj/item/weapon/electronics/airalarm,
-/obj/item/weapon/circuitboard/seed_extractor,
+/obj/item/weapon/circuitboard/machine/seed_extractor,
/obj/structure/table,
/obj/effect/spawner/lootdrop/maintenance{
lootcount = 4;
@@ -7502,7 +7502,7 @@
/area/maintenance/fpmaint2)
"aoo" = (
/obj/structure/rack,
-/obj/item/weapon/circuitboard/monkey_recycler,
+/obj/item/weapon/circuitboard/machine/monkey_recycler,
/turf/open/floor/plating,
/area/maintenance/fpmaint2)
"aop" = (
@@ -10443,11 +10443,11 @@
/obj/item/weapon/shard{
icon_state = "medium"
},
-/obj/item/weapon/circuitboard/operating,
+/obj/item/weapon/circuitboard/computer/operating,
/turf/open/floor/plating,
/area/maintenance/fpmaint2)
"auZ" = (
-/obj/structure/computerframe,
+/obj/structure/frame/computer,
/turf/open/floor/plating,
/area/maintenance/fpmaint2)
"ava" = (
@@ -35006,7 +35006,7 @@
/turf/open/floor/plating,
/area/maintenance/asmaint2)
"buA" = (
-/obj/structure/computerframe,
+/obj/structure/frame/computer,
/turf/open/floor/plasteel/shuttle{
icon_state = "shuttlefloor4"
},
@@ -41168,11 +41168,11 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/borgupload{
+/obj/item/weapon/circuitboard/computer/borgupload{
pixel_x = -1;
pixel_y = 1
},
-/obj/item/weapon/circuitboard/aiupload{
+/obj/item/weapon/circuitboard/computer/aiupload{
pixel_x = 2;
pixel_y = -2
},
@@ -41199,36 +41199,36 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/pandemic{
+/obj/item/weapon/circuitboard/computer/pandemic{
pixel_x = -3;
pixel_y = 3
},
-/obj/item/weapon/circuitboard/rdconsole,
-/obj/item/weapon/circuitboard/rdserver{
+/obj/item/weapon/circuitboard/computer/rdconsole,
+/obj/item/weapon/circuitboard/machine/rdserver{
pixel_x = 3;
pixel_y = -3
},
-/obj/item/weapon/circuitboard/destructive_analyzer,
-/obj/item/weapon/circuitboard/protolathe,
+/obj/item/weapon/circuitboard/machine/destructive_analyzer,
+/obj/item/weapon/circuitboard/machine/protolathe,
/obj/structure/cable{
d1 = 1;
d2 = 2;
icon_state = "1-2"
},
-/obj/item/weapon/circuitboard/aifixer,
-/obj/item/weapon/circuitboard/teleporter,
-/obj/item/weapon/circuitboard/circuit_imprinter,
-/obj/item/weapon/circuitboard/mechfab,
+/obj/item/weapon/circuitboard/computer/aifixer,
+/obj/item/weapon/circuitboard/computer/teleporter,
+/obj/item/weapon/circuitboard/machine/circuit_imprinter,
+/obj/item/weapon/circuitboard/machine/mechfab,
/turf/open/floor/plating,
/area/storage/tech)
"bGx" = (
/obj/structure/rack,
-/obj/item/weapon/circuitboard/telecomms/processor,
-/obj/item/weapon/circuitboard/telecomms/receiver,
-/obj/item/weapon/circuitboard/telecomms/server,
-/obj/item/weapon/circuitboard/telecomms/bus,
-/obj/item/weapon/circuitboard/telecomms/broadcaster,
-/obj/item/weapon/circuitboard/message_monitor{
+/obj/item/weapon/circuitboard/machine/telecomms/processor,
+/obj/item/weapon/circuitboard/machine/telecomms/receiver,
+/obj/item/weapon/circuitboard/machine/telecomms/server,
+/obj/item/weapon/circuitboard/machine/telecomms/bus,
+/obj/item/weapon/circuitboard/machine/telecomms/broadcaster,
+/obj/item/weapon/circuitboard/computer/message_monitor{
pixel_y = -5
},
/turf/open/floor/plating,
@@ -41238,12 +41238,12 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/mining,
-/obj/item/weapon/circuitboard/autolathe{
+/obj/item/weapon/circuitboard/computer/mining,
+/obj/item/weapon/circuitboard/machine/autolathe{
pixel_x = 3;
pixel_y = -3
},
-/obj/item/weapon/circuitboard/arcade/battle,
+/obj/item/weapon/circuitboard/computer/arcade/battle,
/turf/open/floor/plating,
/area/storage/tech)
"bGz" = (
@@ -41848,15 +41848,15 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/crew{
+/obj/item/weapon/circuitboard/computer/crew{
pixel_x = -1;
pixel_y = 1
},
-/obj/item/weapon/circuitboard/card{
+/obj/item/weapon/circuitboard/computer/card{
pixel_x = 2;
pixel_y = -2
},
-/obj/item/weapon/circuitboard/communications{
+/obj/item/weapon/circuitboard/computer/communications{
pixel_x = 5;
pixel_y = -5
},
@@ -42787,11 +42787,11 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/robotics{
+/obj/item/weapon/circuitboard/computer/robotics{
pixel_x = -2;
pixel_y = 2
},
-/obj/item/weapon/circuitboard/mecha_control{
+/obj/item/weapon/circuitboard/computer/mecha_control{
pixel_x = 1;
pixel_y = -1
},
@@ -42813,16 +42813,16 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/cloning{
+/obj/item/weapon/circuitboard/computer/cloning{
pixel_x = 0
},
-/obj/item/weapon/circuitboard/med_data{
+/obj/item/weapon/circuitboard/computer/med_data{
pixel_x = 3;
pixel_y = -3
},
-/obj/item/weapon/circuitboard/clonescanner,
-/obj/item/weapon/circuitboard/clonepod,
-/obj/item/weapon/circuitboard/scan_consolenew,
+/obj/item/weapon/circuitboard/machine/clonescanner,
+/obj/item/weapon/circuitboard/machine/clonepod,
+/obj/item/weapon/circuitboard/computer/scan_consolenew,
/turf/open/floor/plating,
/area/storage/tech)
"bJl" = (
@@ -42830,15 +42830,15 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/powermonitor{
+/obj/item/weapon/circuitboard/computer/powermonitor{
pixel_x = -2;
pixel_y = 2
},
-/obj/item/weapon/circuitboard/stationalert{
+/obj/item/weapon/circuitboard/computer/stationalert{
pixel_x = 1;
pixel_y = -1
},
-/obj/item/weapon/circuitboard/atmos_alert{
+/obj/item/weapon/circuitboard/computer/atmos_alert{
pixel_x = 3;
pixel_y = -3
},
@@ -42849,11 +42849,11 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/secure_data{
+/obj/item/weapon/circuitboard/computer/secure_data{
pixel_x = -2;
pixel_y = 2
},
-/obj/item/weapon/circuitboard/security{
+/obj/item/weapon/circuitboard/computer/security{
pixel_x = 1;
pixel_y = -1
},
@@ -56170,7 +56170,7 @@
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
-/obj/item/weapon/circuitboard/solar_control,
+/obj/item/weapon/circuitboard/computer/solar_control,
/obj/item/weapon/electronics/tracker,
/obj/item/weapon/paper/solar,
/turf/open/floor/plasteel,
@@ -63494,7 +63494,7 @@
},
/area/shuttle/abandoned)
"czy" = (
-/obj/structure/computerframe{
+/obj/structure/frame/computer{
anchored = 1
},
/turf/open/floor/plasteel/shuttle{
diff --git a/_maps/map_files/generic/z3.dmm b/_maps/map_files/generic/z3.dmm
index 16243f9502c..140b55a7d2b 100644
--- a/_maps/map_files/generic/z3.dmm
+++ b/_maps/map_files/generic/z3.dmm
@@ -32,7 +32,7 @@
"cj" = (/turf/open/floor/plasteel/airless,/area/tcommsat/chamber)
"ck" = (/obj/structure/table,/obj/item/weapon/paper,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber)
"cl" = (/obj/structure/table,/obj/item/weapon/paper_bin,/obj/item/weapon/pen/blue,/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel/airless,/area/tcommsat/chamber)
-"cm" = (/obj/structure/computerframe,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber)
+"cm" = (/obj/structure/frame/computer,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber)
"cn" = (/obj/structure/table,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber)
"co" = (/obj/item/weapon/reagent_containers/food/snacks/meat/slab/synthmeat{name = "Cuban Pete-Meat"},/turf/open/floor/engine,/area/tcommsat/chamber)
"cp" = (/obj/structure/grille,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber)
@@ -99,7 +99,7 @@
"dz" = (/obj/effect/decal/cleanable/blood,/obj/item/weapon/scalpel{pixel_y = 12},/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber)
"dA" = (/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber)
"dB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating,/area/tcommsat/chamber)
-"dC" = (/obj/structure/rack,/obj/item/weapon/circuitboard/teleporter,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber)
+"dC" = (/obj/structure/rack,/obj/item/weapon/circuitboard/computer/teleporter,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber)
"dD" = (/obj/item/device/radio/off,/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber)
"dE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/open/floor/plating,/area/tcommsat/chamber)
"dF" = (/obj/effect/decal/cleanable/oil,/turf/open/floor/plating/airless,/area/tcommsat/chamber)
@@ -159,11 +159,11 @@
"eH" = (/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/turf/open/floor/plasteel{dir = 10; icon_state = "warning"},/area/tcommsat/chamber)
"eI" = (/turf/open/floor/plasteel{dir = 2; icon_state = "warning"},/area/tcommsat/chamber)
"eJ" = (/obj/machinery/light/small{dir = 4},/turf/open/floor/plasteel{dir = 6; icon_state = "warning"},/area/tcommsat/chamber)
-"eL" = (/obj/structure/computerframe,/turf/open/floor/plating,/area/tcommsat/chamber)
+"eL" = (/obj/structure/frame/computer,/turf/open/floor/plating,/area/tcommsat/chamber)
"eM" = (/obj/machinery/teleport/station,/turf/open/floor/plating,/area/tcommsat/chamber)
"eN" = (/obj/machinery/teleport/hub,/turf/open/floor/plating,/area/tcommsat/chamber)
"eO" = (/turf/closed/wall/r_wall,/area/AIsattele)
-"eP" = (/obj/structure/computerframe,/turf/open/floor/plating/airless,/area/AIsattele)
+"eP" = (/obj/structure/frame/computer,/turf/open/floor/plating/airless,/area/AIsattele)
"eQ" = (/obj/machinery/teleport/station,/turf/open/floor/plating/airless,/area/AIsattele)
"eR" = (/obj/machinery/teleport/hub,/turf/open/floor/plating/airless,/area/AIsattele)
"eS" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plating/airless,/area/AIsattele)
@@ -184,7 +184,7 @@
"fh" = (/obj/item/weapon/shard,/obj/item/weapon/electronics/apc,/turf/open/floor/plating/airless,/area/AIsattele)
"fi" = (/obj/structure/closet,/turf/open/floor/plating/airless,/area/AIsattele)
"fj" = (/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/turf/open/floor/plating/airless,/area/AIsattele)
-"fk" = (/obj/structure/closet/crate,/obj/item/device/aicard,/obj/item/device/multitool,/obj/item/weapon/weldingtool,/obj/item/weapon/wrench,/obj/item/weapon/circuitboard/teleporter,/turf/open/floor/plating/airless,/area/AIsattele)
+"fk" = (/obj/structure/closet/crate,/obj/item/device/aicard,/obj/item/device/multitool,/obj/item/weapon/weldingtool,/obj/item/weapon/wrench,/obj/item/weapon/circuitboard/computer/teleporter,/turf/open/floor/plating/airless,/area/AIsattele)
"fl" = (/obj/structure/reagent_dispensers/fueltank,/turf/open/floor/plating/airless,/area/AIsattele)
"fm" = (/obj/structure/lattice,/turf/open/space,/area/AIsattele)
"fn" = (/obj/structure/girder,/turf/open/floor/plating/airless,/area/AIsattele)
diff --git a/_maps/map_files/generic/z4.dmm b/_maps/map_files/generic/z4.dmm
index aec065d7d4f..9ebfeee4a01 100644
--- a/_maps/map_files/generic/z4.dmm
+++ b/_maps/map_files/generic/z4.dmm
@@ -41,7 +41,7 @@
"aO" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel{icon_state = "cafeteria"},/area/djstation)
"aP" = (/obj/structure/table,/obj/item/device/radio/intercom{broadcasting = 1; dir = 8; freerange = 1; listening = 0; name = "Pirate Radio Broadcast Channel"; pixel_x = 0},/turf/open/floor/plasteel{icon_state = "cafeteria"},/area/djstation)
"aQ" = (/obj/structure/table,/obj/item/weapon/paper/djstation,/turf/open/floor/plasteel{icon_state = "cafeteria"},/area/djstation)
-"aR" = (/obj/structure/computerframe{anchored = 1},/turf/open/floor/plasteel{icon_state = "grimy"},/area/djstation)
+"aR" = (/obj/structure/frame/computer{anchored = 1},/turf/open/floor/plasteel{icon_state = "grimy"},/area/djstation)
"aS" = (/obj/structure/chair{dir = 8},/turf/open/floor/plasteel{icon_state = "grimy"},/area/djstation)
"aT" = (/obj/machinery/light/small,/turf/open/floor/plasteel{icon_state = "grimy"},/area/djstation)
"aU" = (/obj/structure/closet,/turf/open/floor/plasteel{icon_state = "grimy"},/area/djstation)
@@ -147,8 +147,8 @@
"cQ" = (/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/gravity_generator)
"cR" = (/obj/structure/window/fulltile,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary)
"cS" = (/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel,/area/derelict/bridge/access)
-"cT" = (/obj/structure/computerframe,/turf/open/floor/plasteel,/area/derelict/bridge)
-"cU" = (/obj/structure/computerframe,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/open/floor/plasteel,/area/derelict/bridge)
+"cT" = (/obj/structure/frame/computer,/turf/open/floor/plasteel,/area/derelict/bridge)
+"cU" = (/obj/structure/frame/computer,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/open/floor/plasteel,/area/derelict/bridge)
"cV" = (/obj/structure/table,/turf/open/floor/plasteel,/area/derelict/bridge)
"cW" = (/obj/machinery/computer/security,/turf/open/floor/plasteel,/area/derelict/bridge)
"cX" = (/obj/structure/table,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/turf/open/floor/plasteel,/area/derelict/bridge)
@@ -246,7 +246,7 @@
"eL" = (/obj/item/stack/cable_coil/cut,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine)
"eM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine)
"eN" = (/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/singularity_engine)
-"eO" = (/obj/structure/computerframe,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload)
+"eO" = (/obj/structure/frame/computer,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload)
"eP" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light/small,/turf/open/floor/plasteel,/area/derelict/solar_control)
"eQ" = (/obj/structure/closet,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/open/floor/plasteel,/area/derelict/solar_control)
"eR" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plating/airless,/area/derelict/singularity_engine)
@@ -359,7 +359,7 @@
"gU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/hallway/primary)
"gV" = (/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel,/area/derelict/arrival)
"gW" = (/obj/structure/table,/obj/machinery/light/small{dir = 1},/obj/item/weapon/electronics/airlock,/turf/open/floor/plasteel/airless,/area/derelict/bridge/access)
-"gX" = (/obj/structure/rack,/obj/item/weapon/circuitboard/autolathe,/obj/item/weapon/circuitboard/protolathe{pixel_x = -5; pixel_y = -3},/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload)
+"gX" = (/obj/structure/rack,/obj/item/weapon/circuitboard/machine/autolathe,/obj/item/weapon/circuitboard/machine/protolathe{pixel_x = -5; pixel_y = -3},/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload)
"gY" = (/turf/open/floor/plasteel{dir = 4; icon_state = "chapel"},/area/derelict/medical/chapel)
"gZ" = (/turf/open/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel)
"ha" = (/obj/item/weapon/shard{icon_state = "small"},/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical)
@@ -378,7 +378,7 @@
"hn" = (/obj/structure/closet/emcloset,/turf/open/floor/plasteel,/area/derelict/arrival)
"ho" = (/obj/structure/window/reinforced,/turf/open/space,/area/space)
"hp" = (/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/hallway/primary)
-"hq" = (/obj/structure/rack,/obj/item/weapon/circuitboard/circuit_imprinter,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload)
+"hq" = (/obj/structure/rack,/obj/item/weapon/circuitboard/machine/circuit_imprinter,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload)
"hr" = (/obj/structure/window/reinforced,/turf/open/floor/plasteel{dir = 4; icon_state = "chapel"},/area/derelict/medical/chapel)
"hs" = (/obj/structure/window/reinforced,/turf/open/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel)
"ht" = (/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/floor/plating/airless,/area/derelict/hallway/primary)
@@ -389,7 +389,7 @@
"hy" = (/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical)
"hz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical)
"hA" = (/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/medical)
-"hB" = (/obj/structure/computerframe,/obj/item/weapon/circuitboard/rdconsole,/turf/open/floor/plasteel/airless,/area/derelict/bridge/ai_upload)
+"hB" = (/obj/structure/frame/computer,/obj/item/weapon/circuitboard/computer/rdconsole,/turf/open/floor/plasteel/airless,/area/derelict/bridge/ai_upload)
"hC" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/space)
"hD" = (/obj/item/weapon/shard,/turf/open/floor/plating/airless,/area/space)
"hE" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plating/airless,/area/space)
@@ -416,7 +416,7 @@
"ia" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating,/area/derelict/arrival)
"ib" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating,/area/derelict/arrival)
"ic" = (/obj/structure/window/reinforced{dir = 1},/turf/open/space,/area/space)
-"id" = (/obj/structure/rack,/obj/item/weapon/circuitboard/smes,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload)
+"id" = (/obj/structure/rack,/obj/item/weapon/circuitboard/machine/smes,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload)
"ie" = (/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/space)
"if" = (/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plasteel{dir = 4; icon_state = "chapel"},/area/derelict/medical/chapel)
"ig" = (/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel)
@@ -522,7 +522,7 @@
"kp" = (/obj/item/stack/rods,/turf/open/floor/plasteel/airless,/area/derelict/hallway/secondary)
"kq" = (/obj/structure/door_assembly/door_assembly_mai{name = "airlock assembly"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/secondary)
"kr" = (/obj/structure/grille,/turf/open/floor/plating/airless,/area/derelict/bridge/ai_upload)
-"ks" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/constructable_frame/machine_frame,/obj/item/weapon/stock_parts/console_screen,/turf/open/floor/plating/airless,/area/derelict/gravity_generator)
+"ks" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/frame/machine,/obj/item/weapon/stock_parts/console_screen,/turf/open/floor/plating/airless,/area/derelict/gravity_generator)
"kt" = (/obj/item/weapon/wirecutters,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/secondary)
"ku" = (/obj/structure/reagent_dispensers/fueltank,/turf/open/floor/plasteel/airless,/area/derelict/se_solar)
"kv" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/item/drone_shell,/turf/open/floor/plasteel/airless,/area/derelict/se_solar)
@@ -571,7 +571,7 @@
"lo" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/item/wallframe/apc,/turf/open/floor/plating/airless,/area/derelict/gravity_generator)
"lp" = (/obj/machinery/door/window,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload)
"lq" = (/obj/item/weapon/ore/slag,/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/gravity_generator)
-"lr" = (/obj/structure/rack,/obj/item/weapon/circuitboard/smes,/turf/open/floor/plasteel,/area/derelict/bridge/access)
+"lr" = (/obj/structure/rack,/obj/item/weapon/circuitboard/machine/smes,/turf/open/floor/plasteel,/area/derelict/bridge/access)
"ls" = (/obj/item/weapon/stock_parts/matter_bin,/turf/open/space,/area/space)
"lt" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "derelictsolar"; name = "Derelict Solar Array"},/turf/open/floor/plasteel/airless,/area/solar/derelict_aft)
"lu" = (/obj/effect/spawner/lootdrop/maintenance,/turf/open/space,/area/space)
@@ -659,7 +659,7 @@
"mY" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 4},/turf/open/floor/plasteel/airless,/area/derelict/atmospherics)
"mZ" = (/obj/machinery/light{dir = 1},/turf/open/floor/plasteel/airless,/area/derelict/bridge/ai_upload)
"na" = (/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/bridge/ai_upload)
-"nb" = (/obj/structure/rack,/obj/item/weapon/circuitboard/microwave,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload)
+"nb" = (/obj/structure/rack,/obj/item/weapon/circuitboard/machine/microwave,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload)
"nc" = (/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/bridge/ai_upload)
"nd" = (/turf/open/space,/area/derelict/bridge/ai_upload)
"ne" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{icon_state = "intact"; dir = 5},/turf/open/floor/plating/airless,/area/derelict/atmospherics)
@@ -669,11 +669,11 @@
"ni" = (/obj/structure/window/reinforced,/turf/open/floor/plasteel/airless,/area/derelict/atmospherics)
"nj" = (/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/atmospherics)
"nk" = (/obj/machinery/power/apc{dir = 8; name = "Worn-out APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/open/floor/plasteel/airless,/area/derelict/bridge/ai_upload)
-"nl" = (/obj/structure/computerframe,/turf/open/floor/plasteel/airless,/area/derelict/bridge/ai_upload)
+"nl" = (/obj/structure/frame/computer,/turf/open/floor/plasteel/airless,/area/derelict/bridge/ai_upload)
"nm" = (/obj/machinery/door/airlock/external,/turf/open/floor/plasteel,/area/derelict/solar_control)
"nn" = (/turf/open/floor/plasteel{icon_state = "damaged2"; initial_gas_mix = "TEMP=2.7"},/area/derelict/atmospherics)
"no" = (/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/atmospherics)
-"np" = (/obj/structure/rack,/obj/item/weapon/circuitboard/cryo_tube,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload)
+"np" = (/obj/structure/rack,/obj/item/weapon/circuitboard/machine/cryo_tube,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload)
"nq" = (/obj/machinery/light,/turf/open/floor/plasteel/airless,/area/derelict/bridge/ai_upload)
"nr" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/closed/wall/r_wall,/area/derelict/bridge/ai_upload)
"ns" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/closed/wall/r_wall,/area/derelict/bridge/ai_upload)
@@ -712,7 +712,7 @@
"nZ" = (/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel/airless,/area/space)
"oa" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/open/floor/plating/airless,/area/derelict/singularity_engine)
"ob" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/open/floor/plating/airless,/area/derelict/singularity_engine)
-"oc" = (/obj/structure/computerframe,/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/medical)
+"oc" = (/obj/structure/frame/computer,/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/medical)
"od" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel,/area/derelict/arrival)
"oe" = (/obj/machinery/light{dir = 1},/obj/item/weapon/shard{icon_state = "small"},/turf/open/floor/plating/airless,/area/derelict/medical)
"of" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/turf/open/space,/area/space)
@@ -745,7 +745,7 @@
"oG" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel)
"oH" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/weapon/reagent_containers/glass/beaker,/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical)
"oI" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel)
-"oJ" = (/obj/structure/computerframe,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary)
+"oJ" = (/obj/structure/frame/computer,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary)
"oK" = (/obj/item/weapon/reagent_containers/glass/beaker,/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/medical)
"oL" = (/obj/structure/closet/wardrobe/genetics_white,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical)
"oM" = (/obj/machinery/door/airlock/command{name = "Teleporter Room"},/turf/open/floor/plasteel/airless,/area/derelict/medical/chapel)
@@ -780,7 +780,7 @@
"pp" = (/obj/effect/decal/cleanable/blood/splatter,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary)
"pq" = (/obj/structure/window/fulltile,/turf/open/space,/area/derelict/atmospherics)
"pr" = (/obj/structure/closet/wardrobe/orange,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/obj/item/weapon/shovel/spade,/obj/item/weapon/cultivator,/turf/open/floor/plasteel/airless,/area/space)
-"ps" = (/obj/structure/computerframe,/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel/airless,/area/derelict/atmospherics)
+"ps" = (/obj/structure/frame/computer,/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel/airless,/area/derelict/atmospherics)
"pt" = (/obj/machinery/light/small,/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/atmospherics)
"pu" = (/obj/structure/lattice,/turf/open/space,/area/derelict/atmospherics)
"pv" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/open/floor/plating/airless,/area/derelict/hallway/primary)
@@ -835,7 +835,7 @@
"qu" = (/obj/structure/lattice/catwalk,/turf/open/space,/area/solar/derelict_aft)
"qv" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/open/space,/area/solar/derelict_aft)
"qw" = (/obj/item/device/aicard,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/bridge/ai_upload)
-"qx" = (/obj/structure/rack,/obj/item/weapon/circuitboard/solar_control,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload)
+"qx" = (/obj/structure/rack,/obj/item/weapon/circuitboard/computer/solar_control,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload)
"qy" = (/obj/item/ammo_casing/a357{pixel_x = -5},/obj/item/ammo_casing/a357{pixel_x = 5; pixel_y = 6},/obj/item/ammo_casing/a357,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary)
"qz" = (/obj/machinery/porta_turret_cover,/turf/open/floor/plasteel/airless,/area/derelict/bridge/ai_upload)
"qA" = (/obj/structure/table,/obj/item/device/assembly/flash/handheld,/turf/open/floor/plasteel/airless,/area/derelict/bridge/access)
diff --git a/_maps/map_files/generic/z6.dmm b/_maps/map_files/generic/z6.dmm
index 82a78c133c6..8044fc094c2 100644
--- a/_maps/map_files/generic/z6.dmm
+++ b/_maps/map_files/generic/z6.dmm
@@ -186,7 +186,7 @@
"dD" = (/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/awaymission/BMPship/Aft)
"dE" = (/obj/structure/table,/obj/item/weapon/paper{info = "I'm no scientist, but judging from the design and components, it seems to be some kind of teleporter. This thing is gonna be worth a lot of cash to the right man. The boys are excited, as they have every right to be, and I've let them crack into that case of beer we got. I normally wouldn't allow such a thing, but this is a time for celebration! It's not like a couple drinks will hurt anything."; name = "Captain's log entry"},/turf/open/floor/carpet,/area/awaymission/BMPship/Fore)
"dF" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/open/floor/carpet,/area/awaymission/BMPship/Fore)
-"dG" = (/obj/structure/computerframe{anchored = 1},/turf/open/floor/carpet,/area/awaymission/BMPship/Fore)
+"dG" = (/obj/structure/frame/computer{anchored = 1},/turf/open/floor/carpet,/area/awaymission/BMPship/Fore)
"dH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/carpet,/area/awaymission/BMPship/Fore)
"dI" = (/obj/machinery/hydroponics,/turf/open/floor/plasteel{icon_state = "green"; dir = 10},/area/awaymission/BMPship/Midship)
"dJ" = (/turf/open/floor/plasteel{icon_state = "green"},/area/awaymission/BMPship/Midship)
@@ -344,8 +344,8 @@
"gF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/open/floor/plating,/area/awaymission/BMPship/Aft)
"gG" = (/turf/closed/wall/shuttle{icon_state = "swallc2"},/area/awaymission/BMPship/Aft)
"gH" = (/turf/open/floor/plating/airless{icon_state = "platingdmg2"},/turf/closed/wall/shuttle{dir = 3; icon_state = "swall_f10"; layer = 2},/area/awaymission/BMPship/Fore)
-"gI" = (/obj/structure/computerframe{anchored = 1},/turf/open/floor/plating/airless{icon_state = "panelscorched"},/area/awaymission/BMPship/Fore)
-"gJ" = (/obj/structure/computerframe{anchored = 1},/turf/open/floor/plating/airless{icon_state = "platingdmg1"},/area/awaymission/BMPship/Fore)
+"gI" = (/obj/structure/frame/computer{anchored = 1},/turf/open/floor/plating/airless{icon_state = "panelscorched"},/area/awaymission/BMPship/Fore)
+"gJ" = (/obj/structure/frame/computer{anchored = 1},/turf/open/floor/plating/airless{icon_state = "platingdmg1"},/area/awaymission/BMPship/Fore)
"gK" = (/obj/machinery/light/small,/turf/open/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
"gL" = (/turf/open/floor/plasteel{icon_state = "platingdmg3"},/area/awaymission/BMPship/Midship)
"gM" = (/turf/open/floor/plasteel{icon_state = "platingdmg1"},/area/awaymission/BMPship/Midship)
diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm
index 68cc017cfd3..253c17eeeb0 100644
--- a/code/game/machinery/Sleeper.dm
+++ b/code/game/machinery/Sleeper.dm
@@ -25,16 +25,20 @@
/obj/machinery/sleeper/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
- component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
- component_parts += new /obj/item/stack/cable_coil(null, 1)
- component_parts += new /obj/item/weapon/circuitboard/sleeper(null)
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/sleeper(null)
+ B.apply_default_parts(src)
update_icon()
+/obj/item/weapon/circuitboard/machine/sleeper
+ name = "circuit board (Sleeper)"
+ build_path = /obj/machinery/sleeper
+ origin_tech = "programming=3;biotech=2;engineering=3;materials=3"
+ req_components = list(
+ /obj/item/weapon/stock_parts/matter_bin = 1,
+ /obj/item/weapon/stock_parts/manipulator = 1,
+ /obj/item/stack/cable_coil = 1,
+ /obj/item/weapon/stock_parts/console_screen = 2)
+
/obj/machinery/sleeper/RefreshParts()
var/E
for(var/obj/item/weapon/stock_parts/matter_bin/B in component_parts)
@@ -186,4 +190,4 @@
/obj/machinery/sleeper/old
- icon_state = "oldpod"
+ icon_state = "oldpod"
diff --git a/code/game/machinery/announcement_system.dm b/code/game/machinery/announcement_system.dm
index 393f2f4f600..529e77bf55a 100644
--- a/code/game/machinery/announcement_system.dm
+++ b/code/game/machinery/announcement_system.dm
@@ -32,14 +32,19 @@ var/list/announcement_systems = list()
announcement_systems += src
radio = new /obj/item/device/radio/headset/ai(src)
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/announcement_system(null)
- component_parts += new /obj/item/stack/cable_coil(null, 2)
- component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/announcement_system(null)
+ B.apply_default_parts(src)
update_icon()
+/obj/item/weapon/circuitboard/machine/announcement_system
+ name = "circuit board (Announcement System)"
+ build_path = /obj/machinery/announcement_system
+ origin_tech = "programming=3;bluespace=2"
+ req_components = list(
+ /obj/item/stack/cable_coil = 2,
+ /obj/item/weapon/stock_parts/console_screen = 1)
+
/obj/machinery/announcement_system/update_icon()
if(is_operational())
icon_state = (panel_open ? "AAS_On_Open" : "AAS_On")
@@ -178,4 +183,4 @@ var/list/announcement_systems = list()
/obj/machinery/announcement_system/emag_act()
if(!emagged)
emagged = 1
- act_up()
+ act_up()
\ No newline at end of file
diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm
index 5e03d4b9dc3..4014ad407ec 100644
--- a/code/game/machinery/autolathe.dm
+++ b/code/game/machinery/autolathe.dm
@@ -47,20 +47,23 @@
/obj/machinery/autolathe/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/autolathe(null)
- component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
- component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
- component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
materials = new /datum/material_container(src, list(MAT_METAL=1, MAT_GLASS=1))
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/autolathe(null)
+ B.apply_default_parts(src)
wires = new /datum/wires/autolathe(src)
files = new /datum/research/autolathe(src)
matching_designs = list()
+/obj/item/weapon/circuitboard/machine/autolathe
+ name = "circuit board (Autolathe)"
+ build_path = /obj/machinery/autolathe
+ origin_tech = "engineering=2;programming=2"
+ req_components = list(
+ /obj/item/weapon/stock_parts/matter_bin = 3,
+ /obj/item/weapon/stock_parts/manipulator = 1,
+ /obj/item/weapon/stock_parts/console_screen = 1)
+
/obj/machinery/autolathe/Destroy()
qdel(wires)
wires = null
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index 604fb26bed0..b6a576e12f5 100644
--- a/code/game/machinery/cloning.dm
+++ b/code/game/machinery/cloning.dm
@@ -25,16 +25,8 @@
/obj/machinery/clonepod/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/clonepod(null)
- component_parts += new /obj/item/weapon/stock_parts/scanning_module(null)
- component_parts += new /obj/item/weapon/stock_parts/scanning_module(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
- component_parts += new /obj/item/stack/cable_coil(null, 1)
- component_parts += new /obj/item/stack/cable_coil(null, 1)
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/clonepod(null)
+ B.apply_default_parts(src)
/obj/machinery/clonepod/RefreshParts()
speed_coeff = 0
@@ -47,6 +39,16 @@
if(heal_level > 100)
heal_level = 100
+/obj/item/weapon/circuitboard/machine/clonepod
+ name = "circuit board (Clone Pod)"
+ build_path = /obj/machinery/clonepod
+ origin_tech = "programming=3;biotech=3"
+ req_components = list(
+ /obj/item/stack/cable_coil = 2,
+ /obj/item/weapon/stock_parts/scanning_module = 2,
+ /obj/item/weapon/stock_parts/manipulator = 2,
+ /obj/item/weapon/stock_parts/console_screen = 1)
+
//The return of data disks?? Just for transferring between genetics machine/cloning machine.
//TO-DO: Make the genetics machine accept them.
/obj/item/weapon/disk/data
diff --git a/code/game/machinery/computer/Operating.dm b/code/game/machinery/computer/Operating.dm
index ea7a6a1c704..0989ee50a59 100644
--- a/code/game/machinery/computer/Operating.dm
+++ b/code/game/machinery/computer/Operating.dm
@@ -3,7 +3,7 @@
desc = "Used to monitor the vitals of a patient during surgery."
icon_screen = "crew"
icon_keyboard = "med_key"
- circuit = /obj/item/weapon/circuitboard/operating
+ circuit = /obj/item/weapon/circuitboard/computer/operating
var/mob/living/carbon/human/patient = null
var/obj/structure/table/optable/table = null
diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm
index 69c53cf517b..962fb705408 100644
--- a/code/game/machinery/computer/aifixer.dm
+++ b/code/game/machinery/computer/aifixer.dm
@@ -4,7 +4,7 @@
req_access = list(access_captain, access_robotics, access_heads)
var/mob/living/silicon/ai/occupier = null
var/active = 0
- circuit = /obj/item/weapon/circuitboard/aifixer
+ circuit = /obj/item/weapon/circuitboard/computer/aifixer
icon_keyboard = "tech_key"
icon_screen = "ai-fixer"
diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm
index 9c036f6cbf0..1b50cab81af 100644
--- a/code/game/machinery/computer/arcade.dm
+++ b/code/game/machinery/computer/arcade.dm
@@ -44,7 +44,7 @@
// If it's a generic arcade machine, pick a random arcade
// circuit board for it and make the new machine
if(!circuit)
- var/choice = pick(subtypesof(/obj/item/weapon/circuitboard/arcade))
+ var/choice = pick(subtypesof(/obj/item/weapon/circuitboard/computer/arcade))
var/obj/item/weapon/circuitboard/CB = new choice()
new CB.build_path(loc, CB)
qdel(src)
@@ -93,7 +93,7 @@
name = "arcade machine"
desc = "Does not support Pinball."
icon_state = "arcade"
- circuit = /obj/item/weapon/circuitboard/arcade/battle
+ circuit = /obj/item/weapon/circuitboard/computer/arcade/battle
var/enemy_name = "Space Villian"
var/temp = "Winners don't use space drugs" //Temporary message, for attack messages, etc
var/player_hp = 30 //Player health/attack points
@@ -327,7 +327,7 @@
name = "The Orion Trail"
desc = "Learn how our ancestors got to Orion, and have fun in the process!"
icon_state = "arcade"
- circuit = /obj/item/weapon/circuitboard/arcade/orion_trail
+ circuit = /obj/item/weapon/circuitboard/computer/arcade/orion_trail
var/busy = 0 //prevent clickspam that allowed people to ~speedrun~ the game.
var/engine = 0
var/hull = 0
diff --git a/code/game/machinery/computer/atmos_alert.dm b/code/game/machinery/computer/atmos_alert.dm
index e6f306e03c8..6d3587d5507 100644
--- a/code/game/machinery/computer/atmos_alert.dm
+++ b/code/game/machinery/computer/atmos_alert.dm
@@ -1,7 +1,7 @@
/obj/machinery/computer/atmos_alert
name = "atmospheric alert console"
desc = "Used to monitor the station's air alarms."
- circuit = /obj/item/weapon/circuitboard/atmos_alert
+ circuit = /obj/item/weapon/circuitboard/computer/atmos_alert
icon_screen = "alert:0"
icon_keyboard = "atmos_key"
var/list/priority_alarms = list()
diff --git a/code/game/machinery/computer/atmos_control.dm b/code/game/machinery/computer/atmos_control.dm
index 32e3ae5c38e..3f40993ffad 100644
--- a/code/game/machinery/computer/atmos_control.dm
+++ b/code/game/machinery/computer/atmos_control.dm
@@ -68,7 +68,7 @@
desc = "Used to monitor the station's atmospherics sensors."
icon_screen = "tank"
icon_keyboard = "atmos_key"
- circuit = /obj/item/weapon/circuitboard/atmos_control
+ circuit = /obj/item/weapon/circuitboard/computer/atmos_control
var/frequency = 1441
var/list/sensors = list(
@@ -146,7 +146,7 @@
var/input_tag
var/output_tag
frequency = 1441
- circuit = /obj/item/weapon/circuitboard/atmos_control/tank
+ circuit = /obj/item/weapon/circuitboard/computer/atmos_control/tank
var/list/input_info
var/list/output_info
diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm
index 620b7f37e6a..73717cf3f7c 100644
--- a/code/game/machinery/computer/buildandrepair.dm
+++ b/code/game/machinery/computer/buildandrepair.dm
@@ -1,292 +1,10 @@
-//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
-
-/obj/structure/computerframe
- density = 1
- anchored = 0
- name = "computer-frame"
- icon = 'icons/obj/stock_parts.dmi'
+/obj/structure/frame/computer
+ name = "computer frame"
icon_state = "0"
- var/state = 0
- var/obj/item/weapon/circuitboard/circuit = null
-// weight = 1.0E8
-
-/obj/item/weapon/circuitboard
- density = 0
anchored = 0
- w_class = 2
- name = "circuit board"
- icon = 'icons/obj/module.dmi'
- icon_state = "id_mod"
- item_state = "electronic"
- origin_tech = "programming=2"
- materials = list(MAT_GLASS=200)
- var/frequency = null
- var/build_path = null
- var/board_type = "computer"
- var/list/req_components = null
- var/powernet = null
- var/list/records = null
- var/frame_desc = null
+ state = 0
-/obj/item/weapon/circuitboard/turbine_computer
- name = "circuit board (Turbine Computer)"
- build_path = /obj/machinery/computer/turbine_computer
- origin_tech = "programming=4;engineering=4;powerstorage=4"
-/obj/item/weapon/circuitboard/telesci_console
- name = "circuit board (Telescience Console)"
- build_path = /obj/machinery/computer/telescience
- origin_tech = "programming=3;bluespace=2"
-/obj/item/weapon/circuitboard/message_monitor
- name = "circuit board (Message Monitor)"
- build_path = /obj/machinery/computer/message_monitor
- origin_tech = "programming=3"
-/obj/item/weapon/circuitboard/security
- name = "circuit board (Security)"
- build_path = /obj/machinery/computer/security
-/obj/item/weapon/circuitboard/aicore
- name = "circuit board (AI core)"
- origin_tech = "programming=4;biotech=2"
- board_type = "other"
-/obj/item/weapon/circuitboard/aiupload
- name = "circuit board (AI Upload)"
- build_path = /obj/machinery/computer/upload/ai
- origin_tech = "programming=4"
-/obj/item/weapon/circuitboard/borgupload
- name = "circuit board (Cyborg Upload)"
- build_path = /obj/machinery/computer/upload/borg
- origin_tech = "programming=4"
-/obj/item/weapon/circuitboard/med_data
- name = "circuit board (Medical Records Console)"
- build_path = /obj/machinery/computer/med_data
-/obj/item/weapon/circuitboard/pandemic
- name = "circuit board (PanD.E.M.I.C. 2200)"
- build_path = /obj/machinery/computer/pandemic
- origin_tech = "programming=2;biotech=2"
-/obj/item/weapon/circuitboard/scan_consolenew
- name = "circuit board (DNA Machine)"
- build_path = /obj/machinery/computer/scan_consolenew
- origin_tech = "programming=2;biotech=2"
-/obj/item/weapon/circuitboard/communications
- name = "circuit board (Communications)"
- build_path = /obj/machinery/computer/communications
- origin_tech = "programming=2;magnets=2"
- var/lastTimeUsed = 0
-
-/obj/item/weapon/circuitboard/card
- name = "circuit board (ID Console)"
- build_path = /obj/machinery/computer/card
-/obj/item/weapon/circuitboard/card/centcom
- name = "circuit board (Centcom ID Console)"
- build_path = /obj/machinery/computer/card/centcom
-/obj/item/weapon/circuitboard/card/minor
- name = "circuit board (Department Management Console)"
- build_path = /obj/machinery/computer/card/minor
- var/target_dept = 1
-//obj/item/weapon/circuitboard/shield
-// name = "Circuit board (Shield Control)"
-// build_path = /obj/machinery/computer/stationshield
-/obj/item/weapon/circuitboard/teleporter
- name = "circuit board (Teleporter)"
- build_path = /obj/machinery/computer/teleporter
- origin_tech = "programming=2;bluespace=2"
-/obj/item/weapon/circuitboard/secure_data
- name = "circuit board (Security Records Console)"
- build_path = /obj/machinery/computer/secure_data
-/obj/item/weapon/circuitboard/stationalert
- name = "circuit board (Station Alerts)"
- build_path = /obj/machinery/computer/station_alert
-/*/obj/item/weapon/circuitboard/atmospheresiphonswitch
- name = "circuit board (Atmosphere siphon control)"
- build_path = /obj/machinery/computer/atmosphere/siphonswitch*/
-/obj/item/weapon/circuitboard/atmos_control
- name = "circuit board (Atmospheric Monitor)"
- build_path = /obj/machinery/computer/atmos_control
-/obj/item/weapon/circuitboard/atmos_control/tank
- name = "circuit board (Tank Control)"
- build_path = /obj/machinery/computer/atmos_control/tank
- origin_tech = "programming=2;engineering=3;materials=2"
-/obj/item/weapon/circuitboard/atmos_alert
- name = "circuit board (Atmospheric Alert)"
- build_path = /obj/machinery/computer/atmos_alert
-/obj/item/weapon/circuitboard/pod
- name = "circuit board (Massdriver control)"
- build_path = /obj/machinery/computer/pod
-/obj/item/weapon/circuitboard/robotics
- name = "circuit board (Robotics Control)"
- build_path = /obj/machinery/computer/robotics
- origin_tech = "programming=3"
-/obj/item/weapon/circuitboard/cloning
- name = "circuit board (Cloning)"
- build_path = /obj/machinery/computer/cloning
- origin_tech = "programming=3;biotech=3"
-/obj/item/weapon/circuitboard/arcade/battle
- name = "circuit board (Arcade Battle)"
- build_path = /obj/machinery/computer/arcade/battle
- origin_tech = "programming=1"
-/obj/item/weapon/circuitboard/arcade/orion_trail
- name = "circuit board (Orion Trail)"
- build_path = /obj/machinery/computer/arcade/orion_trail
-/obj/item/weapon/circuitboard/turbine_control
- name = "circuit board (Turbine control)"
- build_path = /obj/machinery/computer/turbine_computer
-/obj/item/weapon/circuitboard/solar_control
- name = "circuit board (Solar Control)" //name fixed 250810
- build_path = /obj/machinery/power/solar_control
- origin_tech = "programming=2;powerstorage=2"
-/obj/item/weapon/circuitboard/powermonitor
- name = "circuit board (Power Monitor)" //name fixed 250810
- build_path = /obj/machinery/computer/monitor
-/obj/item/weapon/circuitboard/olddoor
- name = "circuit board (DoorMex)"
- build_path = /obj/machinery/computer/pod/old
-/obj/item/weapon/circuitboard/syndicatedoor
- name = "circuit board (ProComp Executive)"
- build_path = /obj/machinery/computer/pod/old/syndicate
-/obj/item/weapon/circuitboard/swfdoor
- name = "circuit board (Magix)"
- build_path = /obj/machinery/computer/pod/old/swf
-/obj/item/weapon/circuitboard/prisoner
- name = "circuit board (Prisoner Management Console)"
- build_path = /obj/machinery/computer/prisoner
-/obj/item/weapon/circuitboard/rdconsole
- name = "circuit board (RD Console)"
- build_path = /obj/machinery/computer/rdconsole/core
-/obj/item/weapon/circuitboard/mecha_control
- name = "circuit board (Exosuit Control Console)"
- build_path = /obj/machinery/computer/mecha
-/obj/item/weapon/circuitboard/rdservercontrol
- name = "circuit board (R&D Server Control)"
- build_path = /obj/machinery/computer/rdservercontrol
-/obj/item/weapon/circuitboard/crew
- name = "circuit board (Crew Monitoring Console)"
- build_path = /obj/machinery/computer/crew
- origin_tech = "programming=3;biotech=2;magnets=2"
-/obj/item/weapon/circuitboard/mech_bay_power_console
- name = "circuit board (Mech Bay Power Control Console)"
- build_path = /obj/machinery/computer/mech_bay_power_console
- origin_tech = "programming=2;powerstorage=3"
-/obj/item/weapon/circuitboard/cargo
- name = "circuit board (Supply Console)"
- build_path = /obj/machinery/computer/cargo
- origin_tech = "programming=3"
- var/contraband = 0
- var/emagged = 0
-/obj/item/weapon/circuitboard/cargo/request
- name = "circuit board (Supply Request Console)"
- build_path = /obj/machinery/computer/cargo/request
-/obj/item/weapon/circuitboard/operating
- name = "circuit board (Operating Computer)"
- build_path = /obj/machinery/computer/operating
- origin_tech = "programming=2;biotech=2"
-/obj/item/weapon/circuitboard/mining
- name = "circuit board (Outpost Status Display)"
- build_path = /obj/machinery/computer/security/mining
-/obj/item/weapon/circuitboard/comm_monitor
- name = "circuit board (Telecommunications Monitor)"
- build_path = /obj/machinery/computer/telecomms/monitor
- origin_tech = "programming=3"
-/obj/item/weapon/circuitboard/comm_server
- name = "circuit board (Telecommunications Server Monitor)"
- build_path = /obj/machinery/computer/telecomms/server
- origin_tech = "programming=3"
-/obj/item/weapon/circuitboard/shuttle
- name = "circuit board (Shuttle)"
- build_path = /obj/machinery/computer/shuttle
- var/shuttleId
- var/possible_destinations = ""
-/obj/item/weapon/circuitboard/labor_shuttle
- name = "circuit board (Labor Shuttle)"
- build_path = /obj/machinery/computer/shuttle/labor
-/obj/item/weapon/circuitboard/labor_shuttle/one_way
- name = "circuit board (Prisoner Shuttle Console)"
- build_path = /obj/machinery/computer/shuttle/labor/one_way
-/obj/item/weapon/circuitboard/ferry
- name = "circuit board (Transport Ferry)"
- build_path = /obj/machinery/computer/shuttle/ferry
-/obj/item/weapon/circuitboard/ferry/request
- name = "circuit board (Transport Ferry Console)"
- build_path = /obj/machinery/computer/shuttle/ferry/request
-/obj/item/weapon/circuitboard/mining_shuttle
- name = "circuit board (Mining Shuttle)"
- build_path = /obj/machinery/computer/shuttle/mining
-/obj/item/weapon/circuitboard/white_ship
- name = "circuit board (White Ship)"
- build_path = /obj/machinery/computer/shuttle/white_ship
-/obj/item/weapon/circuitboard/holodeck// Not going to let people get this, but it's just here for future
- name = "circuit board (Holodeck Control)"
- build_path = /obj/machinery/computer/holodeck
- origin_tech = "programming=4"
-/obj/item/weapon/circuitboard/aifixer
- name = "circuit board (AI Integrity Restorer)"
- build_path = /obj/machinery/computer/aifixer
- origin_tech = "programming=3;biotech=2"
-/*/obj/item/weapon/circuitboard/prison_shuttle
- name = "circuit board (Prison Shuttle)"
- build_path = /obj/machinery/computer/prison_shuttle*/
-/obj/item/weapon/circuitboard/slot_machine
- name = "circuit board (Slot Machine)"
- build_path = /obj/machinery/computer/slot_machine
- origin_tech = "programming=1"
-/obj/item/weapon/circuitboard/libraryconsole
- name = "circuit board (Library Visitor Console)"
- build_path = /obj/machinery/computer/libraryconsole
- origin_tech = "programming=1"
-
-/obj/item/weapon/circuitboard/card/minor/attackby(obj/item/I, mob/user, params)
- if(istype(I,/obj/item/device/multitool))
- var/list/dept_list = list("general","security","medical","science","engineering")
- var/choice = input("Currently set to [dept_list[target_dept]] personnel database. Changing to:","Multitool-Circuitboard interface") as null|anything in dept_list
- if(choice)
- target_dept = dept_list.Find(choice)
- return
-
-/obj/item/weapon/circuitboard/cargo/attackby(obj/item/I, mob/user, params)
- if(istype(I,/obj/item/device/multitool))
- if(!emagged)
- contraband = !contraband
- user << "Receiver spectrum set to [contraband ? "Broad" : "Standard"]."
- else
- user << "The spectrum chip is unresponsive."
- if(istype(I,/obj/item/weapon/card/emag))
- if(!emagged)
- contraband = TRUE
- emagged = TRUE
- user << "You adjust [src]'s routing and receiver spectrum, unlocking special supplies and contraband."
-
-/obj/item/weapon/circuitboard/rdconsole/attackby(obj/item/I, mob/user, params)
- if(istype(I,/obj/item/weapon/screwdriver))
- if(build_path == /obj/machinery/computer/rdconsole/core)
- name = "circuit board (RD Console - Robotics)"
- build_path = /obj/machinery/computer/rdconsole/robotics
- user << "Access protocols successfully updated."
- else
- name = "circuit board (RD Console)"
- build_path = /obj/machinery/computer/rdconsole/core
- user << "Defaulting access protocols."
- return
-
-/obj/item/weapon/circuitboard/libraryconsole/attackby(obj/item/I, mob/user, params)
- if(istype(I,/obj/item/weapon/screwdriver))
- if(build_path == /obj/machinery/computer/libraryconsole/bookmanagement)
- name = "circuit board (Library Visitor Console)"
- build_path = /obj/machinery/computer/libraryconsole
- user << "Defaulting access protocols."
- else
- name = "circuit board (Book Inventory Management Console)"
- build_path = /obj/machinery/computer/libraryconsole/bookmanagement
- user << "Access protocols successfully updated."
- return
-
-/obj/item/weapon/circuitboard/shuttle/attackby(obj/item/I, mob/user, params)
- if(istype(I, /obj/item/device/multitool))
- var/chosen_id = round(input(usr, "Choose an ID number (-1 for reset):", "Input an Integer", null) as num|null)
- if(chosen_id >= 0)
- shuttleId = chosen_id
- else
- shuttleId = initial(shuttleId)
- return
-
-/obj/structure/computerframe/attackby(obj/item/P, mob/user, params)
+/obj/structure/frame/computer/attackby(obj/item/P, mob/user, params)
add_fingerprint(user)
switch(state)
if(0)
@@ -319,19 +37,19 @@
user << "You unfasten the frame."
anchored = 0
state = 0
- if(istype(P, /obj/item/weapon/circuitboard) && !circuit)
- var/obj/item/weapon/circuitboard/B = P
- if(B.board_type == "computer")
- if(!user.drop_item())
- return
- playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
- user << "You place the circuit board inside the frame."
- icon_state = "1"
- circuit = P
- circuit.add_fingerprint(user)
- P.loc = null
- else
- user << "This frame does not accept circuit boards of this type!"
+ if(istype(P, /obj/item/weapon/circuitboard/computer) && !circuit)
+ if(!user.drop_item())
+ return
+ playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
+ user << "You place the circuit board inside the frame."
+ icon_state = "1"
+ circuit = P
+ circuit.add_fingerprint(user)
+ P.loc = null
+
+ else if(istype(P, /obj/item/weapon/circuitboard) && !circuit)
+ user << "This frame does not accept circuit boards of this type!"
+
if(istype(P, /obj/item/weapon/screwdriver) && circuit)
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
user << "You screw the circuit board into place."
@@ -402,3 +120,291 @@
var/obj/B = new src.circuit.build_path (src.loc, circuit)
transfer_fingerprints_to(B)
qdel(src)
+
+
+
+/obj/item/weapon/circuitboard
+ name = "circuit board"
+ icon = 'icons/obj/module.dmi'
+ icon_state = "id_mod"
+ item_state = "electronic"
+ origin_tech = "programming=2"
+ materials = list(MAT_GLASS=1000)
+ w_class = 2
+ var/build_path = null
+
+/obj/item/weapon/circuitboard/computer/turbine_computer
+ name = "circuit board (Turbine Computer)"
+ build_path = /obj/machinery/computer/turbine_computer
+ origin_tech = "programming=4;engineering=4;powerstorage=4"
+/obj/item/weapon/circuitboard/computer/telesci_console
+ name = "circuit board (Telescience Console)"
+ build_path = /obj/machinery/computer/telescience
+ origin_tech = "programming=3;bluespace=2"
+/obj/item/weapon/circuitboard/computer/message_monitor
+ name = "circuit board (Message Monitor)"
+ build_path = /obj/machinery/computer/message_monitor
+ origin_tech = "programming=3"
+/obj/item/weapon/circuitboard/computer/security
+ name = "circuit board (Security Cameras)"
+ build_path = /obj/machinery/computer/security
+
+/obj/item/weapon/circuitboard/computer/aiupload
+ name = "circuit board (AI Upload)"
+ build_path = /obj/machinery/computer/upload/ai
+ origin_tech = "programming=4"
+/obj/item/weapon/circuitboard/computer/borgupload
+ name = "circuit board (Cyborg Upload)"
+ build_path = /obj/machinery/computer/upload/borg
+ origin_tech = "programming=4"
+/obj/item/weapon/circuitboard/computer/med_data
+ name = "circuit board (Medical Records Console)"
+ build_path = /obj/machinery/computer/med_data
+/obj/item/weapon/circuitboard/computer/pandemic
+ name = "circuit board (PanD.E.M.I.C. 2200)"
+ build_path = /obj/machinery/computer/pandemic
+ origin_tech = "programming=2;biotech=2"
+/obj/item/weapon/circuitboard/computer/scan_consolenew
+ name = "circuit board (DNA Machine)"
+ build_path = /obj/machinery/computer/scan_consolenew
+ origin_tech = "programming=2;biotech=2"
+/obj/item/weapon/circuitboard/computer/communications
+ name = "circuit board (Communications)"
+ build_path = /obj/machinery/computer/communications
+ origin_tech = "programming=2;magnets=2"
+ var/lastTimeUsed = 0
+
+/obj/item/weapon/circuitboard/computer/card
+ name = "circuit board (ID Console)"
+ build_path = /obj/machinery/computer/card
+/obj/item/weapon/circuitboard/computer/card/centcom
+ name = "circuit board (Centcom ID Console)"
+ build_path = /obj/machinery/computer/card/centcom
+
+/obj/item/weapon/circuitboard/computer/card/minor
+ name = "circuit board (Department Management Console)"
+ build_path = /obj/machinery/computer/card/minor
+ var/target_dept = 1
+ var/list/dept_list = list("General","Security","Medical","Science","Engineering")
+
+/obj/item/weapon/circuitboard/computer/card/minor/attackby(obj/item/I, mob/user, params)
+ if(istype(I, /obj/item/weapon/screwdriver))
+ target_dept = (target_dept == dept_list.len) ? 1 : (target_dept + 1)
+ user << "You set the board to \"[dept_list[target_dept]]\"."
+ else
+ return ..()
+
+/obj/item/weapon/circuitboard/computer/card/minor/examine(user)
+ ..()
+ user << "Currently set to \"[dept_list[target_dept]]\"."
+
+//obj/item/weapon/circuitboard/computer/shield
+// name = "Circuit board (Shield Control)"
+// build_path = /obj/machinery/computer/stationshield
+/obj/item/weapon/circuitboard/computer/teleporter
+ name = "circuit board (Teleporter)"
+ build_path = /obj/machinery/computer/teleporter
+ origin_tech = "programming=2;bluespace=2"
+/obj/item/weapon/circuitboard/computer/secure_data
+ name = "circuit board (Security Records Console)"
+ build_path = /obj/machinery/computer/secure_data
+/obj/item/weapon/circuitboard/computer/stationalert
+ name = "circuit board (Station Alerts)"
+ build_path = /obj/machinery/computer/station_alert
+/*/obj/item/weapon/circuitboard/computer/atmospheresiphonswitch
+ name = "circuit board (Atmosphere siphon control)"
+ build_path = /obj/machinery/computer/atmosphere/siphonswitch*/
+/obj/item/weapon/circuitboard/computer/atmos_control
+ name = "circuit board (Atmospheric Monitor)"
+ build_path = /obj/machinery/computer/atmos_control
+/obj/item/weapon/circuitboard/computer/atmos_control/tank
+ name = "circuit board (Tank Control)"
+ build_path = /obj/machinery/computer/atmos_control/tank
+ origin_tech = "programming=2;engineering=3;materials=2"
+/obj/item/weapon/circuitboard/computer/atmos_alert
+ name = "circuit board (Atmospheric Alert)"
+ build_path = /obj/machinery/computer/atmos_alert
+/obj/item/weapon/circuitboard/computer/pod
+ name = "circuit board (Massdriver control)"
+ build_path = /obj/machinery/computer/pod
+/obj/item/weapon/circuitboard/computer/robotics
+ name = "circuit board (Robotics Control)"
+ build_path = /obj/machinery/computer/robotics
+ origin_tech = "programming=3"
+/obj/item/weapon/circuitboard/computer/cloning
+ name = "circuit board (Cloning)"
+ build_path = /obj/machinery/computer/cloning
+ origin_tech = "programming=3;biotech=3"
+/obj/item/weapon/circuitboard/computer/arcade/battle
+ name = "circuit board (Arcade Battle)"
+ build_path = /obj/machinery/computer/arcade/battle
+ origin_tech = "programming=1"
+/obj/item/weapon/circuitboard/computer/arcade/orion_trail
+ name = "circuit board (Orion Trail)"
+ build_path = /obj/machinery/computer/arcade/orion_trail
+/obj/item/weapon/circuitboard/computer/turbine_control
+ name = "circuit board (Turbine control)"
+ build_path = /obj/machinery/computer/turbine_computer
+/obj/item/weapon/circuitboard/computer/solar_control
+ name = "circuit board (Solar Control)" //name fixed 250810
+ build_path = /obj/machinery/power/solar_control
+ origin_tech = "programming=2;powerstorage=2"
+/obj/item/weapon/circuitboard/computer/powermonitor
+ name = "circuit board (Power Monitor)" //name fixed 250810
+ build_path = /obj/machinery/computer/monitor
+/obj/item/weapon/circuitboard/computer/olddoor
+ name = "circuit board (DoorMex)"
+ build_path = /obj/machinery/computer/pod/old
+/obj/item/weapon/circuitboard/computer/syndicatedoor
+ name = "circuit board (ProComp Executive)"
+ build_path = /obj/machinery/computer/pod/old/syndicate
+/obj/item/weapon/circuitboard/computer/swfdoor
+ name = "circuit board (Magix)"
+ build_path = /obj/machinery/computer/pod/old/swf
+/obj/item/weapon/circuitboard/computer/prisoner
+ name = "circuit board (Prisoner Management Console)"
+ build_path = /obj/machinery/computer/prisoner
+
+
+/obj/item/weapon/circuitboard/computer/rdconsole
+ name = "circuit board (RD Console)"
+ build_path = /obj/machinery/computer/rdconsole/core
+
+/obj/item/weapon/circuitboard/computer/rdconsole/attackby(obj/item/I, mob/user, params)
+ if(istype(I,/obj/item/weapon/screwdriver))
+ if(build_path == /obj/machinery/computer/rdconsole/core)
+ name = "circuit board (RD Console - Robotics)"
+ build_path = /obj/machinery/computer/rdconsole/robotics
+ user << "Access protocols successfully updated."
+ else
+ name = "circuit board (RD Console)"
+ build_path = /obj/machinery/computer/rdconsole/core
+ user << "Defaulting access protocols."
+ else
+ return ..()
+
+/obj/item/weapon/circuitboard/computer/mecha_control
+ name = "circuit board (Exosuit Control Console)"
+ build_path = /obj/machinery/computer/mecha
+/obj/item/weapon/circuitboard/computer/rdservercontrol
+ name = "circuit board (R&D Server Control)"
+ build_path = /obj/machinery/computer/rdservercontrol
+/obj/item/weapon/circuitboard/computer/crew
+ name = "circuit board (Crew Monitoring Console)"
+ build_path = /obj/machinery/computer/crew
+ origin_tech = "programming=3;biotech=2;magnets=2"
+/obj/item/weapon/circuitboard/computer/mech_bay_power_console
+ name = "circuit board (Mech Bay Power Control Console)"
+ build_path = /obj/machinery/computer/mech_bay_power_console
+ origin_tech = "programming=2;powerstorage=3"
+
+/obj/item/weapon/circuitboard/computer/cargo
+ name = "circuit board (Supply Console)"
+ build_path = /obj/machinery/computer/cargo
+ origin_tech = "programming=3"
+ var/contraband = 0
+ var/emagged = 0
+
+/obj/item/weapon/circuitboard/computer/cargo/attackby(obj/item/I, mob/user, params)
+ if(istype(I,/obj/item/device/multitool))
+ if(!emagged)
+ contraband = !contraband
+ user << "Receiver spectrum set to [contraband ? "Broad" : "Standard"]."
+ else
+ user << "The spectrum chip is unresponsive."
+ else if(istype(I,/obj/item/weapon/card/emag))
+ if(!emagged)
+ contraband = TRUE
+ emagged = TRUE
+ user << "You adjust [src]'s routing and receiver spectrum, unlocking special supplies and contraband."
+ else
+ return ..()
+
+
+/obj/item/weapon/circuitboard/computer/cargo/request
+ name = "circuit board (Supply Request Console)"
+ build_path = /obj/machinery/computer/cargo/request
+
+/obj/item/weapon/circuitboard/computer/operating
+ name = "circuit board (Operating Computer)"
+ build_path = /obj/machinery/computer/operating
+ origin_tech = "programming=2;biotech=2"
+/obj/item/weapon/circuitboard/computer/mining
+ name = "circuit board (Outpost Status Display)"
+ build_path = /obj/machinery/computer/security/mining
+/obj/item/weapon/circuitboard/computer/comm_monitor
+ name = "circuit board (Telecommunications Monitor)"
+ build_path = /obj/machinery/computer/telecomms/monitor
+ origin_tech = "programming=3"
+/obj/item/weapon/circuitboard/computer/comm_server
+ name = "circuit board (Telecommunications Server Monitor)"
+ build_path = /obj/machinery/computer/telecomms/server
+ origin_tech = "programming=3"
+
+/obj/item/weapon/circuitboard/computer/shuttle
+ name = "circuit board (Shuttle)"
+ build_path = /obj/machinery/computer/shuttle
+ var/shuttleId
+ var/possible_destinations = ""
+
+/obj/item/weapon/circuitboard/computer/shuttle/attackby(obj/item/I, mob/user, params)
+ if(istype(I, /obj/item/device/multitool))
+ var/chosen_id = round(input(usr, "Choose an ID number (-1 for reset):", "Input an Integer", null) as num|null)
+ if(chosen_id >= 0)
+ shuttleId = chosen_id
+ else
+ shuttleId = initial(shuttleId)
+ else
+ return ..()
+
+/obj/item/weapon/circuitboard/computer/labor_shuttle
+ name = "circuit board (Labor Shuttle)"
+ build_path = /obj/machinery/computer/shuttle/labor
+/obj/item/weapon/circuitboard/computer/labor_shuttle/one_way
+ name = "circuit board (Prisoner Shuttle Console)"
+ build_path = /obj/machinery/computer/shuttle/labor/one_way
+/obj/item/weapon/circuitboard/computer/ferry
+ name = "circuit board (Transport Ferry)"
+ build_path = /obj/machinery/computer/shuttle/ferry
+/obj/item/weapon/circuitboard/computer/ferry/request
+ name = "circuit board (Transport Ferry Console)"
+ build_path = /obj/machinery/computer/shuttle/ferry/request
+/obj/item/weapon/circuitboard/computer/mining_shuttle
+ name = "circuit board (Mining Shuttle)"
+ build_path = /obj/machinery/computer/shuttle/mining
+/obj/item/weapon/circuitboard/computer/white_ship
+ name = "circuit board (White Ship)"
+ build_path = /obj/machinery/computer/shuttle/white_ship
+/obj/item/weapon/circuitboard/computer/holodeck// Not going to let people get this, but it's just here for future
+ name = "circuit board (Holodeck Control)"
+ build_path = /obj/machinery/computer/holodeck
+ origin_tech = "programming=4"
+/obj/item/weapon/circuitboard/computer/aifixer
+ name = "circuit board (AI Integrity Restorer)"
+ build_path = /obj/machinery/computer/aifixer
+ origin_tech = "programming=3;biotech=2"
+/*/obj/item/weapon/circuitboard/computer/prison_shuttle
+ name = "circuit board (Prison Shuttle)"
+ build_path = /obj/machinery/computer/prison_shuttle*/
+/obj/item/weapon/circuitboard/computer/slot_machine
+ name = "circuit board (Slot Machine)"
+ build_path = /obj/machinery/computer/slot_machine
+ origin_tech = "programming=1"
+
+/obj/item/weapon/circuitboard/computer/libraryconsole
+ name = "circuit board (Library Visitor Console)"
+ build_path = /obj/machinery/computer/libraryconsole
+ origin_tech = "programming=1"
+
+/obj/item/weapon/circuitboard/computer/libraryconsole/attackby(obj/item/I, mob/user, params)
+ if(istype(I,/obj/item/weapon/screwdriver))
+ if(build_path == /obj/machinery/computer/libraryconsole/bookmanagement)
+ name = "circuit board (Library Visitor Console)"
+ build_path = /obj/machinery/computer/libraryconsole
+ user << "Defaulting access protocols."
+ else
+ name = "circuit board (Book Inventory Management Console)"
+ build_path = /obj/machinery/computer/libraryconsole/bookmanagement
+ user << "Access protocols successfully updated."
+ else
+ return ..()
\ No newline at end of file
diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm
index 0bdb44931a3..c13ba3af2c4 100644
--- a/code/game/machinery/computer/camera.dm
+++ b/code/game/machinery/computer/camera.dm
@@ -3,7 +3,7 @@
desc = "Used to access the various cameras on the station."
icon_screen = "cameras"
icon_keyboard = "security_key"
- circuit = /obj/item/weapon/circuitboard/security
+ circuit = /obj/item/weapon/circuitboard/computer/security
var/last_pic = 1
var/list/network = list("SS13")
var/mapping = 0//For the overview file, interesting bit of code.
@@ -177,4 +177,4 @@
icon_screen = "mining"
icon_keyboard = "mining_key"
network = list("MINE")
- circuit = "/obj/item/weapon/circuitboard/mining"
+ circuit = /obj/item/weapon/circuitboard/computer/mining
diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm
index df02f37b5cb..0bbbeda6165 100644
--- a/code/game/machinery/computer/card.dm
+++ b/code/game/machinery/computer/card.dm
@@ -10,7 +10,7 @@ var/time_last_changed_position = 0
icon_screen = "id"
icon_keyboard = "id_key"
req_one_access = list(access_heads, access_change_ids)
- circuit = /obj/item/weapon/circuitboard/card
+ circuit = /obj/item/weapon/circuitboard/computer/card
var/obj/item/weapon/card/id/scan = null
var/obj/item/weapon/card/id/modify = null
var/authenticated = 0
@@ -483,18 +483,18 @@ var/time_last_changed_position = 0
/obj/machinery/computer/card/centcom
name = "\improper Centcom identification console"
- circuit = /obj/item/weapon/circuitboard/card/centcom
+ circuit = /obj/item/weapon/circuitboard/computer/card/centcom
req_access = list(access_cent_captain)
/obj/machinery/computer/card/minor
name = "department management console"
desc = "You can use this to change ID's for specific departments."
icon_screen = "idminor"
- circuit = /obj/item/weapon/circuitboard/card/minor
+ circuit = /obj/item/weapon/circuitboard/computer/card/minor
/obj/machinery/computer/card/minor/New()
..()
- var/obj/item/weapon/circuitboard/card/minor/typed_circuit = circuit
+ var/obj/item/weapon/circuitboard/computer/card/minor/typed_circuit = circuit
if(target_dept)
typed_circuit.target_dept = target_dept
else
diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm
index fc252a50ab4..dc0b949a187 100644
--- a/code/game/machinery/computer/cloning.dm
+++ b/code/game/machinery/computer/cloning.dm
@@ -4,7 +4,7 @@
desc = "Used to clone people and manage DNA."
icon_screen = "dna"
icon_keyboard = "med_key"
- circuit = /obj/item/weapon/circuitboard/cloning
+ circuit = /obj/item/weapon/circuitboard/computer/cloning
req_access = list(access_heads) //Only used for record deletion right now.
var/obj/machinery/dna_scannernew/scanner = null //Linked scanner. For scanning.
var/obj/machinery/clonepod/pod1 = null //Linked cloning pod.
diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm
index e2a77542cee..4416ed3e8e3 100644
--- a/code/game/machinery/computer/communications.dm
+++ b/code/game/machinery/computer/communications.dm
@@ -9,7 +9,7 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12
icon_screen = "comm"
icon_keyboard = "tech_key"
req_access = list(access_heads)
- circuit = /obj/item/weapon/circuitboard/communications
+ circuit = /obj/item/weapon/circuitboard/computer/communications
var/authenticated = 0
var/auth_id = "Unknown" //Who is currently logged in?
var/list/messagetitle = list()
@@ -57,7 +57,7 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12
if(!href_list["operation"])
return
- var/obj/item/weapon/circuitboard/communications/CM = circuit
+ var/obj/item/weapon/circuitboard/computer/communications/CM = circuit
switch(href_list["operation"])
// main interface
if("main")
@@ -611,5 +611,5 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12
return ..()
/obj/machinery/computer/communications/proc/overrideCooldown()
- var/obj/item/weapon/circuitboard/communications/CM = circuit
+ var/obj/item/weapon/circuitboard/computer/communications/CM = circuit
CM.lastTimeUsed = 0
\ No newline at end of file
diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm
index 1ae36a3a43d..35ca17a8641 100644
--- a/code/game/machinery/computer/computer.dm
+++ b/code/game/machinery/computer/computer.dm
@@ -7,7 +7,7 @@
use_power = 1
idle_power_usage = 300
active_power_usage = 300
- var/obj/item/weapon/circuitboard/circuit = null // if circuit==null, computer can't disassembly
+ var/obj/item/weapon/circuitboard/computer/circuit = null // if circuit==null, computer can't disassembly
var/processing = 0
var/brightness_on = 2
var/icon_keyboard = "generic_key"
@@ -18,9 +18,8 @@
..(location)
if(C && istype(C))
circuit = C
- else
- if(circuit)
- circuit = new circuit(null)
+ else if(circuit)
+ circuit = new circuit(null)
power_change()
update_icon()
@@ -85,7 +84,7 @@
user << " You start to disconnect the monitor..."
if(do_after(user, 20/I.toolspeed, target = src))
deconstruction()
- var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc )
+ var/obj/structure/frame/computer/A = new /obj/structure/frame/computer( src.loc )
A.circuit = circuit
A.anchored = 1
circuit = null
diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm
index ad992d3aba3..ab820645505 100644
--- a/code/game/machinery/computer/crew.dm
+++ b/code/game/machinery/computer/crew.dm
@@ -6,7 +6,7 @@
use_power = 1
idle_power_usage = 250
active_power_usage = 500
- circuit = "/obj/item/weapon/circuitboard/crew"
+ circuit = /obj/item/weapon/circuitboard/computer/crew
/obj/machinery/computer/crew/attack_ai(mob/user)
if(stat & (BROKEN|NOPOWER))
diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm
index e2a29dfe536..597b90129a7 100644
--- a/code/game/machinery/computer/dna_console.dm
+++ b/code/game/machinery/computer/dna_console.dm
@@ -22,7 +22,7 @@
icon_screen = "dna"
icon_keyboard = "med_key"
density = 1
- circuit = /obj/item/weapon/circuitboard/scan_consolenew
+ circuit = /obj/item/weapon/circuitboard/computer/scan_consolenew
var/radduration = 2
var/radstrength = 1
diff --git a/code/game/machinery/computer/law.dm b/code/game/machinery/computer/law.dm
index 292fc7163b6..3c066205601 100644
--- a/code/game/machinery/computer/law.dm
+++ b/code/game/machinery/computer/law.dm
@@ -33,7 +33,7 @@
/obj/machinery/computer/upload/ai
name = "\improper AI upload console"
desc = "Used to upload laws to the AI."
- circuit = /obj/item/weapon/circuitboard/aiupload
+ circuit = /obj/item/weapon/circuitboard/computer/aiupload
/obj/machinery/computer/upload/ai/attack_hand(mob/user)
if(..())
@@ -57,7 +57,7 @@
/obj/machinery/computer/upload/borg
name = "cyborg upload console"
desc = "Used to upload laws to Cyborgs."
- circuit = /obj/item/weapon/circuitboard/borgupload
+ circuit = /obj/item/weapon/circuitboard/computer/borgupload
/obj/machinery/computer/upload/borg/attack_hand(mob/user)
if(..())
diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm
index b3e94a26be5..51c0c3e8264 100644
--- a/code/game/machinery/computer/medical.dm
+++ b/code/game/machinery/computer/medical.dm
@@ -6,7 +6,7 @@
icon_screen = "medcomp"
icon_keyboard = "med_key"
req_one_access = list(access_medical, access_forensics_lockers)
- circuit = /obj/item/weapon/circuitboard/med_data
+ circuit = /obj/item/weapon/circuitboard/computer/med_data
var/obj/item/weapon/card/id/scan = null
var/authenticated = null
var/rank = null
diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm
index cab29214d2e..8a74f5f09ee 100644
--- a/code/game/machinery/computer/message.dm
+++ b/code/game/machinery/computer/message.dm
@@ -8,7 +8,7 @@
name = "message monitor console"
desc = "Used to Monitor the crew's messages, that are sent via PDA. Can also be used to view Request Console messages."
icon_screen = "comm_logs"
- circuit = /obj/item/weapon/circuitboard/message_monitor
+ circuit = /obj/item/weapon/circuitboard/computer/message_monitor
//Server linked to.
var/obj/machinery/message_server/linkedServer = null
//Sparks effect - For emag
diff --git a/code/game/machinery/computer/prisoner.dm b/code/game/machinery/computer/prisoner.dm
index ab5a89b97e9..8a837a5af5a 100644
--- a/code/game/machinery/computer/prisoner.dm
+++ b/code/game/machinery/computer/prisoner.dm
@@ -4,7 +4,6 @@
icon_screen = "explosive"
icon_keyboard = "security_key"
req_access = list(access_brig)
- circuit = "/obj/item/weapon/circuitboard/prisoner"
var/id = 0
var/temp = null
var/status = 0
@@ -12,7 +11,7 @@
var/stop = 0
var/screen = 0 // 0 - No Access Denied, 1 - Access allowed
var/obj/item/weapon/card/id/prisoner/inserted_id
- circuit = /obj/item/weapon/circuitboard/prisoner
+ circuit = /obj/item/weapon/circuitboard/computer/prisoner
/obj/machinery/computer/prisoner/attack_hand(mob/user)
if(..())
diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm
index a71bb8d789a..1348622a0ff 100644
--- a/code/game/machinery/computer/robot.dm
+++ b/code/game/machinery/computer/robot.dm
@@ -7,7 +7,7 @@
icon_screen = "robot"
icon_keyboard = "rd_key"
req_access = list(access_robotics)
- circuit = /obj/item/weapon/circuitboard/robotics
+ circuit = /obj/item/weapon/circuitboard/computer/robotics
var/temp = null
/obj/machinery/computer/robotics/proc/can_control(mob/user, mob/living/silicon/robot/R)
diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm
index a1bf31d718e..cd113558b7c 100644
--- a/code/game/machinery/computer/security.dm
+++ b/code/game/machinery/computer/security.dm
@@ -6,7 +6,7 @@
icon_screen = "security"
icon_keyboard = "security_key"
req_one_access = list(access_security, access_forensics_lockers)
- circuit = /obj/item/weapon/circuitboard/secure_data
+ circuit = /obj/item/weapon/circuitboard/computer/secure_data
var/obj/item/weapon/card/id/scan = null
var/authenticated = null
var/rank = null
diff --git a/code/game/machinery/computer/station_alert.dm b/code/game/machinery/computer/station_alert.dm
index 70442f0dbbc..b6e5672e8f3 100644
--- a/code/game/machinery/computer/station_alert.dm
+++ b/code/game/machinery/computer/station_alert.dm
@@ -3,7 +3,7 @@
desc = "Used to access the station's automated alert system."
icon_screen = "alert:0"
icon_keyboard = "atmos_key"
- circuit = /obj/item/weapon/circuitboard/stationalert
+ circuit = /obj/item/weapon/circuitboard/computer/stationalert
var/alarms = list("Fire" = list(), "Atmosphere" = list(), "Power" = list())
/obj/machinery/computer/station_alert/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \
diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm
index 1732f1ea7fb..cc914875006 100644
--- a/code/game/machinery/constructable_frame.dm
+++ b/code/game/machinery/constructable_frame.dm
@@ -1,67 +1,78 @@
-//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
-
-/obj/machinery/constructable_frame //Made into a seperate type to make future revisions easier.
- name = "machine frame"
+/obj/structure/frame
+ name = "frame"
icon = 'icons/obj/stock_parts.dmi'
icon_state = "box_0"
density = 1
anchored = 1
- use_power = 0
var/obj/item/weapon/circuitboard/circuit = null
+ var/state = 1
+
+/obj/structure/frame/examine(user)
+ ..()
+ if(circuit)
+ user << "It has \a [circuit] installed."
+
+/obj/structure/frame/machine
+ name = "machine frame"
var/list/components = null
var/list/req_components = null
var/list/req_component_names = null // user-friendly names of components
- var/state = 1
-// unfortunately, we have to instance the objects really quickly to get the names
-// fortunately, this is only called once when the board is added and the items are immediately GC'd
-// and none of the parts do much in their constructors
-/obj/machinery/constructable_frame/proc/update_namelist()
+/obj/structure/frame/machine/examine(user)
+ ..()
+ if(state == 3 && req_components && req_component_names)
+ var/hasContent = 0
+ var/requires = "It requires"
+
+ for(var/i = 1 to req_components.len)
+ var/tname = req_components[i]
+ var/amt = req_components[tname]
+ if(amt == 0)
+ continue
+ var/use_and = i == req_components.len
+ requires += "[(hasContent ? (use_and ? ", and" : ",") : "")] [amt] [amt == 1 ? req_component_names[tname] : "[req_component_names[tname]]\s"]"
+ hasContent = 1
+
+ if(hasContent)
+ user << requires + "."
+ else
+ user << "It does not require any more components."
+
+/obj/structure/frame/machine/proc/update_namelist()
if(!req_components)
return
req_component_names = new()
for(var/tname in req_components)
- var/path = tname
- var/obj/O = new path()
- req_component_names[tname] = O.name
+ if(ispath(tname, /obj/item/stack))
+ var/obj/item/stack/S = tname
+ var/singular_name = initial(S.singular_name)
+ if(singular_name)
+ req_component_names[tname] = singular_name
+ else
+ req_component_names[tname] = initial(S.name)
+ else
+ var/obj/O = tname
+ req_component_names[tname] = initial(O.name)
-/obj/machinery/constructable_frame/proc/get_req_components_amt()
+/obj/structure/frame/machine/proc/get_req_components_amt()
var/amt = 0
for(var/path in req_components)
amt += req_components[path]
return amt
-// update description of required components remaining
-/obj/machinery/constructable_frame/proc/update_req_desc()
- if(!req_components || !req_component_names)
- return
-
- var/hasContent = 0
- desc = "Requires"
- for(var/i = 1 to req_components.len)
- var/tname = req_components[i]
- var/amt = req_components[tname]
- if(amt == 0)
- continue
- var/use_and = i == req_components.len
- desc += "[(hasContent ? (use_and ? ", and" : ",") : "")] [amt] [amt == 1 ? req_component_names[tname] : "[req_component_names[tname]]\s"]"
- hasContent = 1
-
- if(!hasContent)
- desc = "Does not require any more components."
- else
- desc += "."
-
-/obj/machinery/constructable_frame/machine_frame/attackby(obj/item/P, mob/user, params)
+/obj/structure/frame/machine/attackby(obj/item/P, mob/user, params)
if(P.crit_fail)
user << "This part is faulty, you cannot add this to the machine!"
return
switch(state)
if(1)
- if(istype(P, /obj/item/weapon/circuitboard))
+ if(istype(P, /obj/item/weapon/circuitboard/machine))
user << "The frame needs wiring first!"
- return
+
+ else if(istype(P, /obj/item/weapon/circuitboard))
+ user << "This frame does not accept circuit boards of this type!"
+
if(istype(P, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/C = P
if(C.get_amount() >= 5)
@@ -102,26 +113,26 @@
user << "You [anchored ? "un" : ""]secure [name]."
anchored = !anchored
- if(istype(P, /obj/item/weapon/circuitboard))
+ if(istype(P, /obj/item/weapon/circuitboard/machine))
if(!anchored)
user << "The frame needs to be secured first!"
return
- var/obj/item/weapon/circuitboard/B = P
- if(B.board_type == "machine")
- if(!user.drop_item())
- return
- playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
- user << "You add the circuit board to the frame."
- circuit = P
- P.loc = src
- icon_state = "box_2"
- state = 3
- components = list()
- req_components = circuit.req_components.Copy()
- update_namelist()
- update_req_desc()
- else
- user << "This frame does not accept circuit boards of this type!"
+ var/obj/item/weapon/circuitboard/machine/B = P
+ if(!user.drop_item())
+ return
+ playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
+ user << "You add the circuit board to the frame."
+ circuit = B
+ B.loc = src
+ icon_state = "box_2"
+ state = 3
+ components = list()
+ req_components = B.req_components.Copy()
+ update_namelist()
+
+ else if(istype(P, /obj/item/weapon/circuitboard))
+ user << "This frame does not accept circuit boards of this type!"
+
if(istype(P, /obj/item/weapon/wirecutters))
playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1)
user << "You remove the cables."
@@ -191,31 +202,35 @@
for(var/obj/item/weapon/stock_parts/part in added_components)
components += part
user << "[part.name] applied."
- replacer.play_rped_sound()
-
- update_req_desc()
+ if(added_components.len)
+ replacer.play_rped_sound()
return
if(istype(P, /obj/item) && get_req_components_amt())
for(var/I in req_components)
if(istype(P, I) && (req_components[I] > 0))
- if(istype(P, /obj/item/stack/cable_coil))
- var/obj/item/stack/cable_coil/CP = P
- var/cable_color = CP.item_color
- if(CP.use(1))
- var/obj/item/stack/cable_coil/CC = new /obj/item/stack/cable_coil(src, 1, cable_color)
- components += CC
- req_components[I]--
- update_req_desc()
- else
- user << "You need more cable!"
+ if(istype(P, /obj/item/stack))
+ var/obj/item/stack/S = P
+ var/used_amt = min(round(S.get_amount()), req_components[I])
+
+ if(used_amt && S.use(used_amt))
+ var/obj/item/stack/NS = locate(S.merge_type) in components
+
+ if(!NS)
+ NS = new S.merge_type(src, used_amt)
+ components += NS
+ else
+ NS.add(used_amt)
+
+ req_components[I] -= used_amt
+ user << "You add [P] to [src]."
return
if(!user.drop_item())
break
+ user << "You add [P] to [src]."
P.loc = src
components += P
req_components[I]--
- update_req_desc()
return 1
user << "You cannot add that to the machine!"
return 0
@@ -224,318 +239,61 @@
//Machine Frame Circuit Boards
/*Common Parts: Parts List: Ignitor, Timer, Infra-red laser, Infra-red sensor, t_scanner, Capacitor, Valve, sensor unit,
micro-manipulator, console screen, beaker, Microlaser, matter bin, power cells.
-Note: Once everything is added to the public areas, will add m_amt and g_amt to circuit boards since autolathe won't be able
-to destroy them and players will be able to make replacements.
*/
-/obj/item/weapon/circuitboard/vendor
- name = "circuit board (Booze-O-Mat Vendor)"
- build_path = /obj/machinery/vending/boozeomat
- board_type = "machine"
- origin_tech = "programming=1"
- req_components = list(
- /obj/item/weapon/vending_refill/boozeomat = 3)
+/obj/item/weapon/circuitboard/machine
+ var/list/req_components = null
- var/list/names_paths = list(/obj/machinery/vending/boozeomat = "Booze-O-Mat",
- /obj/machinery/vending/coffee = "Solar's Best Hot Drinks",
- /obj/machinery/vending/snack = "Getmore Chocolate Corp",
- /obj/machinery/vending/cola = "Robust Softdrinks",
- /obj/machinery/vending/cigarette = "ShadyCigs Deluxe",
- /obj/machinery/vending/autodrobe = "AutoDrobe")
+/obj/item/weapon/circuitboard/machine/proc/apply_default_parts(obj/machinery/M)
+ if(!req_components)
+ return
-/obj/item/weapon/circuitboard/vendor/attackby(obj/item/I, mob/user, params)
- if(istype(I, /obj/item/weapon/screwdriver))
- set_type(pick(names_paths), user)
+ M.component_parts = list(src)
+ loc = null
+
+ for(var/comp_path in req_components)
+ var/comp_amt = req_components[comp_path]
+ if(!comp_amt)
+ continue
+
+ if(ispath(comp_path, /obj/item/stack))
+ M.component_parts += new comp_path(null, comp_amt)
+ else
+ for(var/i in 1 to comp_amt)
+ M.component_parts += new comp_path(null)
+
+ M.RefreshParts()
-/obj/item/weapon/circuitboard/vendor/proc/set_type(typepath, mob/user)
- build_path = typepath
- name = "circuit board ([names_paths[build_path]] Vendor)"
- user << "You set the board to [names_paths[build_path]]."
- req_components = list(text2path("/obj/item/weapon/vending_refill/[copytext("[build_path]", 24)]") = 3) //Never before has i used a method as horrible as this one, im so sorry
-
-/obj/item/weapon/circuitboard/announcement_system
- name = "circuit board (Announcement System)"
- build_path = /obj/machinery/announcement_system
- board_type = "machine"
- origin_tech = "programming=3;bluespace=2"
- req_components = list(
- /obj/item/stack/cable_coil = 2,
- /obj/item/weapon/stock_parts/console_screen = 1)
-
-/obj/item/weapon/circuitboard/smes
+/obj/item/weapon/circuitboard/machine/smes
name = "circuit board (SMES)"
build_path = /obj/machinery/power/smes
- board_type = "machine"
origin_tech = "programming=4;powerstorage=5;engineering=5"
req_components = list(
/obj/item/stack/cable_coil = 5,
/obj/item/weapon/stock_parts/cell = 5,
/obj/item/weapon/stock_parts/capacitor = 1)
-/obj/item/weapon/circuitboard/emitter
- name = "circuit board (Emitter)"
- build_path = /obj/machinery/power/emitter
- board_type = "machine"
- origin_tech = "programming=4;powerstorage=5;engineering=5"
- req_components = list(
- /obj/item/weapon/stock_parts/micro_laser = 1,
- /obj/item/weapon/stock_parts/manipulator = 1)
-
-/obj/item/weapon/circuitboard/power_compressor
- name = "circuit board (Power Compressor)"
- build_path = /obj/machinery/power/compressor
- board_type = "machine"
- origin_tech = "programming=4;powerstorage=5;engineering=4"
- req_components = list(
- /obj/item/stack/cable_coil = 5,
- /obj/item/weapon/stock_parts/manipulator = 6)
-
-/obj/item/weapon/circuitboard/power_turbine
- name = "circuit board (Power Turbine)"
- build_path = /obj/machinery/power/turbine
- board_type = "machine"
- origin_tech = "programming=4;powerstorage=4;engineering=5"
- req_components = list(
- /obj/item/stack/cable_coil = 5,
- /obj/item/weapon/stock_parts/capacitor = 6)
-
-/obj/item/weapon/circuitboard/mech_recharger
- name = "circuit board (Mechbay Recharger)"
- build_path = /obj/machinery/mech_bay_recharge_port
- board_type = "machine"
- origin_tech = "programming=3;powerstorage=4;engineering=4"
- req_components = list(
- /obj/item/stack/cable_coil = 1,
- /obj/item/weapon/stock_parts/capacitor = 5)
-
-/obj/item/weapon/circuitboard/teleporter_hub
+/obj/item/weapon/circuitboard/machine/teleporter_hub
name = "circuit board (Teleporter Hub)"
build_path = /obj/machinery/teleport/hub
- board_type = "machine"
origin_tech = "programming=3;engineering=5;bluespace=5;materials=4"
req_components = list(
/obj/item/weapon/ore/bluespace_crystal = 3,
/obj/item/weapon/stock_parts/matter_bin = 1)
-/obj/item/weapon/circuitboard/teleporter_station
+/obj/item/weapon/circuitboard/machine/teleporter_station
name = "circuit board (Teleporter Station)"
build_path = /obj/machinery/teleport/station
- board_type = "machine"
origin_tech = "programming=4;engineering=4;bluespace=4"
req_components = list(
/obj/item/weapon/ore/bluespace_crystal = 2,
/obj/item/weapon/stock_parts/capacitor = 2,
/obj/item/weapon/stock_parts/console_screen = 1)
-/obj/item/weapon/circuitboard/telesci_pad
- name = "circuit board (Telepad)"
- build_path = /obj/machinery/telepad
- board_type = "machine"
- origin_tech = "programming=4;engineering=3;materials=3;bluespace=4"
- req_components = list(
- /obj/item/weapon/ore/bluespace_crystal = 2,
- /obj/item/weapon/stock_parts/capacitor = 1,
- /obj/item/stack/cable_coil = 1,
- /obj/item/weapon/stock_parts/console_screen = 1)
-
-/obj/item/weapon/circuitboard/sleeper
- name = "circuit board (Sleeper)"
- build_path = /obj/machinery/sleeper
- board_type = "machine"
- origin_tech = "programming=3;biotech=2;engineering=3;materials=3"
- req_components = list(
- /obj/item/weapon/stock_parts/matter_bin = 1,
- /obj/item/weapon/stock_parts/manipulator = 1,
- /obj/item/stack/cable_coil = 1,
- /obj/item/weapon/stock_parts/console_screen = 2)
-
-/obj/item/weapon/circuitboard/cryo_tube
- name = "circuit board (Cryotube)"
- build_path = /obj/machinery/atmospherics/components/unary/cryo_cell
- board_type = "machine"
- origin_tech = "programming=4;biotech=3;engineering=4"
- req_components = list(
- /obj/item/weapon/stock_parts/matter_bin = 1,
- /obj/item/stack/cable_coil = 1,
- /obj/item/weapon/stock_parts/console_screen = 4)
-
-/obj/item/weapon/circuitboard/thermomachine
- name = "circuit board (Thermomachine)"
- desc = "You can use a screwdriver to switch between heater and freezer."
- board_type = "machine"
- origin_tech = "programming=3;plasmatech=3"
- req_components = list(
- /obj/item/weapon/stock_parts/matter_bin = 2,
- /obj/item/weapon/stock_parts/micro_laser = 2,
- /obj/item/stack/cable_coil = 1,
- /obj/item/weapon/stock_parts/console_screen = 1)
-
-/obj/item/weapon/circuitboard/thermomachine/attackby(obj/item/I, mob/user, params)
- var/obj/item/weapon/circuitboard/freezer = /obj/item/weapon/circuitboard/thermomachine/freezer
- var/obj/item/weapon/circuitboard/heater = /obj/item/weapon/circuitboard/thermomachine/heater
- var/obj/item/weapon/circuitboard/newtype
-
- if(istype(I, /obj/item/weapon/screwdriver))
- var/new_setting = "Heater"
- playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
- if(build_path == initial(heater.build_path))
- newtype = freezer
- new_setting = "Freezer"
- else
- newtype = heater
- name = initial(newtype.name)
- build_path = initial(newtype.build_path)
- user << "You change the circuitboard setting to \"[new_setting]\"."
-
-/obj/item/weapon/circuitboard/thermomachine/freezer
- name = "circuit board (Freezer)"
- build_path = /obj/machinery/atmospherics/components/unary/thermomachine/freezer
-
-/obj/item/weapon/circuitboard/thermomachine/heater
- name = "circuit board (Heater)"
- build_path = /obj/machinery/atmospherics/components/unary/thermomachine/heater
-
-/obj/item/weapon/circuitboard/space_heater
- name = "circuit board (Space Heater)"
- build_path = /obj/machinery/space_heater
- board_type = "machine"
- origin_tech = "programming=2;engineering=2"
- req_components = list(
- /obj/item/weapon/stock_parts/micro_laser = 1,
- /obj/item/weapon/stock_parts/capacitor = 1,
- /obj/item/stack/cable_coil = 3)
-
-/obj/item/weapon/circuitboard/biogenerator
- name = "circuit board (Biogenerator)"
- build_path = /obj/machinery/biogenerator
- board_type = "machine"
- origin_tech = "programming=3;biotech=2;materials=3"
- req_components = list(
- /obj/item/weapon/stock_parts/matter_bin = 1,
- /obj/item/weapon/stock_parts/manipulator = 1,
- /obj/item/stack/cable_coil = 1,
- /obj/item/weapon/stock_parts/console_screen = 1)
-
-/obj/item/weapon/circuitboard/hydroponics
- name = "circuit board (Hydroponics Tray)"
- build_path = /obj/machinery/hydroponics/constructable
- board_type = "machine"
- origin_tech = "programming=1;biotech=1"
- req_components = list(
- /obj/item/weapon/stock_parts/matter_bin = 2,
- /obj/item/weapon/stock_parts/manipulator = 1,
- /obj/item/weapon/stock_parts/console_screen = 1)
-
-/obj/item/weapon/circuitboard/microwave
- name = "circuit board (Microwave)"
- build_path = /obj/machinery/microwave
- board_type = "machine"
- origin_tech = "programming=1"
- req_components = list(
- /obj/item/weapon/stock_parts/micro_laser = 1,
- /obj/item/weapon/stock_parts/matter_bin = 1,
- /obj/item/stack/cable_coil = 2,
- /obj/item/weapon/stock_parts/console_screen = 1)
-
-/obj/item/weapon/circuitboard/gibber
- name = "circuit board (Gibber)"
- build_path = /obj/machinery/gibber
- board_type = "machine"
- origin_tech = "programming=1"
- req_components = list(
- /obj/item/weapon/stock_parts/matter_bin = 1,
- /obj/item/weapon/stock_parts/manipulator = 1)
-
-/obj/item/weapon/circuitboard/tesla_coil
- name = "circuit board (Tesla Coil)"
- build_path = /obj/machinery/power/tesla_coil
- board_type = "machine"
- origin_tech = "programming=1"
- req_components = list(
- /obj/item/weapon/stock_parts/capacitor = 1)
-
-/obj/item/weapon/circuitboard/grounding_rod
- name = "circuit board (Grounding Rod)"
- build_path = /obj/machinery/power/grounding_rod
- board_type = "machine"
- origin_tech = "programming=1"
- req_components = list(
- /obj/item/weapon/stock_parts/capacitor = 1)
-
-/obj/item/weapon/circuitboard/processor
- name = "circuit board (Food processor)"
- build_path = /obj/machinery/processor
- board_type = "machine"
- origin_tech = "programming=1"
- req_components = list(
- /obj/item/weapon/stock_parts/matter_bin = 1,
- /obj/item/weapon/stock_parts/manipulator = 1)
-
-/obj/item/weapon/circuitboard/recycler
- name = "circuit board (Recycler)"
- build_path = /obj/machinery/recycler
- board_type = "machine"
- origin_tech = "programming=1"
- req_components = list(
- /obj/item/weapon/stock_parts/matter_bin = 1,
- /obj/item/weapon/stock_parts/manipulator = 1)
-
-/obj/item/weapon/circuitboard/seed_extractor
- name = "circuit board (Seed Extractor)"
- build_path = /obj/machinery/seed_extractor
- board_type = "machine"
- origin_tech = "programming=1"
- req_components = list(
- /obj/item/weapon/stock_parts/matter_bin = 1,
- /obj/item/weapon/stock_parts/manipulator = 1)
-
-/obj/item/weapon/circuitboard/smartfridge
- name = "circuit board (Smartfridge)"
- build_path = /obj/machinery/smartfridge
- board_type = "machine"
- origin_tech = "programming=1"
- req_components = list(
- /obj/item/weapon/stock_parts/matter_bin = 1)
-
-/obj/item/weapon/circuitboard/smartfridge/New(loc, new_type)
- if(new_type)
- build_path = new_type
-
-/obj/item/weapon/circuitboard/smartfridge/attackby(obj/item/I, mob/user, params)
- if(istype(I, /obj/item/weapon/screwdriver))
- var/list/fridges = list(/obj/machinery/smartfridge = "default",
- /obj/machinery/smartfridge/drinks = "drinks",
- /obj/machinery/smartfridge/extract = "slimes",
- /obj/machinery/smartfridge/chemistry = "chems",
- /obj/machinery/smartfridge/chemistry/virology = "viruses")
-
- var/position = fridges.Find(build_path, fridges)
- position = (position == fridges.len) ? 1 : (position + 1)
- build_path = fridges[position]
- user << "You set the board to [fridges[build_path]]."
-
-/obj/item/weapon/circuitboard/monkey_recycler
- name = "circuit board (Monkey Recycler)"
- build_path = /obj/machinery/monkey_recycler
- board_type = "machine"
- origin_tech = "programming=1"
- req_components = list(
- /obj/item/weapon/stock_parts/matter_bin = 1,
- /obj/item/weapon/stock_parts/manipulator = 1)
-
-/obj/item/weapon/circuitboard/holopad
- name = "circuit board (AI Holopad)"
- build_path = /obj/machinery/hologram/holopad
- board_type = "machine"
- origin_tech = "programming=1"
- req_components = list(
- /obj/item/weapon/stock_parts/capacitor = 1)
-
-/obj/item/weapon/circuitboard/chem_dispenser
+/obj/item/weapon/circuitboard/machine/chem_dispenser
name = "circuit board (Portable Chem Dispenser)"
build_path = /obj/machinery/chem_dispenser/constructable
- board_type = "machine"
origin_tech = "materials=4;engineering=4;programming=4;plasmatech=3;biotech=3"
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 2,
@@ -544,269 +302,12 @@ to destroy them and players will be able to make replacements.
/obj/item/weapon/stock_parts/console_screen = 1,
/obj/item/weapon/stock_parts/cell = 1)
-/obj/item/weapon/circuitboard/chem_master
- name = "circuit board (Chem Master 2999)"
- build_path = /obj/machinery/chem_master/constructable
- board_type = "machine"
- origin_tech = "materials=2;programming=2;biotech=1"
+/obj/item/weapon/circuitboard/machine/telesci_pad
+ name = "circuit board (Telepad)"
+ build_path = /obj/machinery/telepad
+ origin_tech = "programming=4;engineering=3;materials=3;bluespace=4"
req_components = list(
- /obj/item/weapon/reagent_containers/glass/beaker = 2,
- /obj/item/weapon/stock_parts/manipulator = 1,
- /obj/item/weapon/stock_parts/console_screen = 1)
-
-/obj/item/weapon/circuitboard/chem_heater
- name = "circuit board (Chemical Heater)"
- build_path = /obj/machinery/chem_heater
- board_type = "machine"
- origin_tech = "materials=2;engineering=2"
- req_components = list(
- /obj/item/weapon/stock_parts/micro_laser = 1,
- /obj/item/weapon/stock_parts/console_screen = 1)
-
-//Almost the same recipe as destructive analyzer to give people choices.
-/obj/item/weapon/circuitboard/experimentor
- name = "circuit board (E.X.P.E.R.I-MENTOR)"
- build_path = /obj/machinery/r_n_d/experimentor
- board_type = "machine"
- origin_tech = "magnets=1;engineering=1;programming=1;biotech=1;bluespace=2"
- req_components = list(
- /obj/item/weapon/stock_parts/scanning_module = 1,
- /obj/item/weapon/stock_parts/manipulator = 2,
- /obj/item/weapon/stock_parts/micro_laser = 2)
-
-
-/obj/item/weapon/circuitboard/destructive_analyzer
- name = "circuit board (Destructive Analyzer)"
- build_path = /obj/machinery/r_n_d/destructive_analyzer
- board_type = "machine"
- origin_tech = "magnets=2;engineering=2;programming=2"
- req_components = list(
- /obj/item/weapon/stock_parts/scanning_module = 1,
- /obj/item/weapon/stock_parts/manipulator = 1,
- /obj/item/weapon/stock_parts/micro_laser = 1)
-
-/obj/item/weapon/circuitboard/autolathe
- name = "circuit board (Autolathe)"
- build_path = /obj/machinery/autolathe
- board_type = "machine"
- origin_tech = "engineering=2;programming=2"
- req_components = list(
- /obj/item/weapon/stock_parts/matter_bin = 3,
- /obj/item/weapon/stock_parts/manipulator = 1,
- /obj/item/weapon/stock_parts/console_screen = 1)
-
-/obj/item/weapon/circuitboard/protolathe
- name = "circuit board (Protolathe)"
- build_path = /obj/machinery/r_n_d/protolathe
- board_type = "machine"
- origin_tech = "engineering=2;programming=2"
- req_components = list(
- /obj/item/weapon/stock_parts/matter_bin = 2,
- /obj/item/weapon/stock_parts/manipulator = 2,
- /obj/item/weapon/reagent_containers/glass/beaker = 2)
-
-
-/obj/item/weapon/circuitboard/circuit_imprinter
- name = "circuit board (Circuit Imprinter)"
- build_path = /obj/machinery/r_n_d/circuit_imprinter
- board_type = "machine"
- origin_tech = "engineering=2;programming=2"
- req_components = list(
- /obj/item/weapon/stock_parts/matter_bin = 1,
- /obj/item/weapon/stock_parts/manipulator = 1,
- /obj/item/weapon/reagent_containers/glass/beaker = 2)
-
-/obj/item/weapon/circuitboard/pacman
- name = "circuit board (PACMAN-type Generator)"
- build_path = /obj/machinery/power/port_gen/pacman
- board_type = "machine"
- origin_tech = "programming=3;powerstorage=3;plasmatech=3;engineering=3"
- req_components = list(
- /obj/item/weapon/stock_parts/matter_bin = 1,
- /obj/item/weapon/stock_parts/micro_laser = 1,
- /obj/item/stack/cable_coil = 2,
- /obj/item/weapon/stock_parts/capacitor = 1)
-
-/obj/item/weapon/circuitboard/pacman/super
- name = "circuit board (SUPERPACMAN-type Generator)"
- build_path = /obj/machinery/power/port_gen/pacman/super
- origin_tech = "programming=3;powerstorage=4;engineering=4"
-
-/obj/item/weapon/circuitboard/pacman/mrs
- name = "circuit board (MRSPACMAN-type Generator)"
- build_path = "/obj/machinery/power/port_gen/pacman/mrs"
- origin_tech = "programming=3;powerstorage=5;engineering=5"
-
-obj/item/weapon/circuitboard/rdserver
- name = "circuit board (R&D Server)"
- build_path = /obj/machinery/r_n_d/server
- board_type = "machine"
- origin_tech = "programming=3"
- req_components = list(
- /obj/item/stack/cable_coil = 2,
- /obj/item/weapon/stock_parts/scanning_module = 1)
-
-/obj/item/weapon/circuitboard/mechfab
- name = "circuit board (Exosuit Fabricator)"
- build_path = /obj/machinery/mecha_part_fabricator
- board_type = "machine"
- origin_tech = "programming=3;engineering=3"
- req_components = list(
- /obj/item/weapon/stock_parts/matter_bin = 2,
- /obj/item/weapon/stock_parts/manipulator = 1,
- /obj/item/weapon/stock_parts/micro_laser = 1,
- /obj/item/weapon/stock_parts/console_screen = 1)
-
-/obj/item/weapon/circuitboard/clonepod
- name = "circuit board (Clone Pod)"
- build_path = /obj/machinery/clonepod
- board_type = "machine"
- origin_tech = "programming=3;biotech=3"
- req_components = list(
- /obj/item/stack/cable_coil = 2,
- /obj/item/weapon/stock_parts/scanning_module = 2,
- /obj/item/weapon/stock_parts/manipulator = 2,
- /obj/item/weapon/stock_parts/console_screen = 1)
-
-/obj/item/weapon/circuitboard/clonescanner
- name = "circuit board (Cloning Scanner)"
- build_path = /obj/machinery/dna_scannernew
- board_type = "machine"
- origin_tech = "programming=2;biotech=2"
- req_components = list(
- /obj/item/weapon/stock_parts/scanning_module = 1,
- /obj/item/weapon/stock_parts/manipulator = 1,
- /obj/item/weapon/stock_parts/micro_laser = 1,
- /obj/item/weapon/stock_parts/console_screen = 1,
- /obj/item/stack/cable_coil = 2,)
-
-/obj/item/weapon/circuitboard/cyborgrecharger
- name = "circuit board (Cyborg Recharger)"
- build_path = /obj/machinery/recharge_station
- board_type = "machine"
- origin_tech = "powerstorage=3;engineering=3"
- req_components = list(
- /obj/item/weapon/stock_parts/capacitor = 2,
- /obj/item/weapon/stock_parts/cell = 1,
- /obj/item/weapon/stock_parts/manipulator = 1,)
-
-/obj/item/weapon/circuitboard/recharger
- name = "circuit board (Weapon Recharger)"
- build_path = /obj/machinery/recharger
- board_type = "machine"
- origin_tech = "powerstorage=3;engineering=3;materials=4"
- req_components = list(
- /obj/item/weapon/stock_parts/capacitor = 1,)
-
-// Telecomms circuit boards:
-
-/obj/item/weapon/circuitboard/telecomms/receiver
- name = "circuit board (Subspace Receiver)"
- build_path = /obj/machinery/telecomms/receiver
- board_type = "machine"
- origin_tech = "programming=2;engineering=2;bluespace=1"
- req_components = list(
- /obj/item/weapon/stock_parts/subspace/ansible = 1,
- /obj/item/weapon/stock_parts/subspace/filter = 1,
- /obj/item/weapon/stock_parts/manipulator = 2,
- /obj/item/weapon/stock_parts/micro_laser = 1)
-
-/obj/item/weapon/circuitboard/telecomms/hub
- name = "circuit board (Hub Mainframe)"
- build_path = /obj/machinery/telecomms/hub
- board_type = "machine"
- origin_tech = "programming=2;engineering=2"
- req_components = list(
- /obj/item/weapon/stock_parts/manipulator = 2,
- /obj/item/stack/cable_coil = 2,
- /obj/item/weapon/stock_parts/subspace/filter = 2)
-
-/obj/item/weapon/circuitboard/telecomms/relay
- name = "circuit board (Relay Mainframe)"
- build_path = /obj/machinery/telecomms/relay
- board_type = "machine"
- origin_tech = "programming=2;engineering=2;bluespace=2"
- req_components = list(
- /obj/item/weapon/stock_parts/manipulator = 2,
- /obj/item/stack/cable_coil = 2,
- /obj/item/weapon/stock_parts/subspace/filter = 2)
-
-/obj/item/weapon/circuitboard/telecomms/bus
- name = "circuit board (Bus Mainframe)"
- build_path = /obj/machinery/telecomms/bus
- board_type = "machine"
- origin_tech = "programming=2;engineering=2"
- req_components = list(
- /obj/item/weapon/stock_parts/manipulator = 2,
+ /obj/item/weapon/ore/bluespace_crystal = 2,
+ /obj/item/weapon/stock_parts/capacitor = 1,
/obj/item/stack/cable_coil = 1,
- /obj/item/weapon/stock_parts/subspace/filter = 1)
-
-/obj/item/weapon/circuitboard/telecomms/processor
- name = "circuit board (Processor Unit)"
- build_path = /obj/machinery/telecomms/processor
- board_type = "machine"
- origin_tech = "programming=2;engineering=2"
- req_components = list(
- /obj/item/weapon/stock_parts/manipulator = 3,
- /obj/item/weapon/stock_parts/subspace/filter = 1,
- /obj/item/weapon/stock_parts/subspace/treatment = 2,
- /obj/item/weapon/stock_parts/subspace/analyzer = 1,
- /obj/item/stack/cable_coil = 2,
- /obj/item/weapon/stock_parts/subspace/amplifier = 1)
-
-/obj/item/weapon/circuitboard/telecomms/server
- name = "circuit board (Telecommunication Server)"
- build_path = /obj/machinery/telecomms/server
- board_type = "machine"
- origin_tech = "programming=2;engineering=2"
- req_components = list(
- /obj/item/weapon/stock_parts/manipulator = 2,
- /obj/item/stack/cable_coil = 1,
- /obj/item/weapon/stock_parts/subspace/filter = 1)
-
-/obj/item/weapon/circuitboard/telecomms/broadcaster
- name = "circuit board (Subspace Broadcaster)"
- build_path = /obj/machinery/telecomms/broadcaster
- board_type = "machine"
- origin_tech = "programming=2;engineering=2;bluespace=1"
- req_components = list(
- /obj/item/weapon/stock_parts/manipulator = 2,
- /obj/item/stack/cable_coil = 1,
- /obj/item/weapon/stock_parts/subspace/filter = 1,
- /obj/item/weapon/stock_parts/subspace/crystal = 1,
- /obj/item/weapon/stock_parts/micro_laser/high = 2)
-/obj/item/weapon/circuitboard/ore_redemption
- name = "circuit board (Ore Redemption)"
- build_path = /obj/machinery/mineral/ore_redemption
- board_type = "machine"
- origin_tech = "programming=1;engineering=2"
- req_components = list(
- /obj/item/weapon/stock_parts/console_screen = 1,
- /obj/item/weapon/stock_parts/matter_bin = 1,
- /obj/item/weapon/stock_parts/micro_laser = 1,
- /obj/item/weapon/stock_parts/manipulator = 1,
- /obj/item/device/assembly/igniter = 1)
-
-/obj/item/weapon/circuitboard/mining_equipment_vendor
- name = "circuit board (Mining Equipment Vendor)"
- build_path = /obj/machinery/mineral/equipment_vendor
- board_type = "machine"
- origin_tech = "programming=1;engineering=2"
- req_components = list(
- /obj/item/weapon/stock_parts/console_screen = 1,
- /obj/item/weapon/stock_parts/matter_bin = 3)
-
-/obj/item/weapon/circuitboard/mining_equipment_vendor/golem
- name = "circuit board (Golem Ship Equipment Vendor)"
- build_path = /obj/machinery/mineral/equipment_vendor/golem
-
-/obj/item/weapon/circuitboard/plantgenes
- name = "circuit board (Plant DNA Manipulator)"
- build_path = /obj/machinery/plantgenes
- board_type = "machine"
- origin_tech = "programming=2;biotech=3"
- req_components = list(
- /obj/item/weapon/stock_parts/manipulator = 1,
- /obj/item/weapon/stock_parts/micro_laser = 1,
- /obj/item/weapon/stock_parts/console_screen = 1,
- /obj/item/weapon/stock_parts/scanning_module = 1,)
\ No newline at end of file
+ /obj/item/weapon/stock_parts/console_screen = 1)
\ No newline at end of file
diff --git a/code/game/machinery/dna_scanner.dm b/code/game/machinery/dna_scanner.dm
index ed656b1a1df..192ff9df7d1 100644
--- a/code/game/machinery/dna_scanner.dm
+++ b/code/game/machinery/dna_scanner.dm
@@ -15,16 +15,19 @@
/obj/machinery/dna_scannernew/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/clonescanner(null)
- component_parts += new /obj/item/weapon/stock_parts/scanning_module(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/weapon/stock_parts/micro_laser(null)
- component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
- component_parts += new /obj/item/stack/cable_coil(null, 1)
- component_parts += new /obj/item/stack/cable_coil(null, 1)
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/clonescanner(null)
+ B.apply_default_parts(src)
+/obj/item/weapon/circuitboard/machine/clonescanner
+ name = "circuit board (Cloning Scanner)"
+ build_path = /obj/machinery/dna_scannernew
+ origin_tech = "programming=2;biotech=2"
+ req_components = list(
+ /obj/item/weapon/stock_parts/scanning_module = 1,
+ /obj/item/weapon/stock_parts/manipulator = 1,
+ /obj/item/weapon/stock_parts/micro_laser = 1,
+ /obj/item/weapon/stock_parts/console_screen = 1,
+ /obj/item/stack/cable_coil = 2)
/obj/machinery/dna_scannernew/RefreshParts()
scan_level = 0
diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm
index 5d03cc6f5f2..49bf6e7d916 100644
--- a/code/game/machinery/hologram.dm
+++ b/code/game/machinery/hologram.dm
@@ -45,10 +45,15 @@ var/const/HOLOPAD_MODE = RANGE_BASED
/obj/machinery/hologram/holopad/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/holopad(null)
- component_parts += new /obj/item/weapon/stock_parts/capacitor(null)
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/holopad(null)
+ B.apply_default_parts(src)
+
+/obj/item/weapon/circuitboard/machine/holopad
+ name = "circuit board (AI Holopad)"
+ build_path = /obj/machinery/hologram/holopad
+ origin_tech = "programming=1"
+ req_components = list(/obj/item/weapon/stock_parts/capacitor = 1)
+
/obj/machinery/hologram/holopad/RefreshParts()
var/holograph_range = 4
diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm
index 7751dcb8bb6..77028a43d1a 100644
--- a/code/game/machinery/machinery.dm
+++ b/code/game/machinery/machinery.dm
@@ -347,7 +347,7 @@ Class Procs:
if(.)
deconstruction()
playsound(loc, 'sound/items/Crowbar.ogg', 50, 1)
- var/obj/machinery/constructable_frame/machine_frame/M = new /obj/machinery/constructable_frame/machine_frame(loc)
+ var/obj/structure/frame/machine/M = new /obj/structure/frame/machine(loc)
transfer_fingerprints_to(M)
M.state = 2
M.icon_state = "box_1"
@@ -396,7 +396,7 @@ Class Procs:
var/shouldplaysound = 0
if(istype(W) && component_parts)
if(panel_open || W.works_from_distance)
- var/obj/item/weapon/circuitboard/CB = locate(/obj/item/weapon/circuitboard) in component_parts
+ var/obj/item/weapon/circuitboard/machine/CB = locate(/obj/item/weapon/circuitboard/machine) in component_parts
var/P
if(W.works_from_distance)
display_parts(user)
diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm
index 3ae2ded9223..fe5d9ac35a8 100644
--- a/code/game/machinery/recharger.dm
+++ b/code/game/machinery/recharger.dm
@@ -12,10 +12,14 @@
/obj/machinery/recharger/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/recharger()
- component_parts += new /obj/item/weapon/stock_parts/capacitor()
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/recharger(null)
+ B.apply_default_parts(src)
+
+/obj/item/weapon/circuitboard/machine/recharger
+ name = "circuit board (Weapon Recharger)"
+ build_path = /obj/machinery/recharger
+ origin_tech = "powerstorage=3;engineering=3;materials=4"
+ req_components = list(/obj/item/weapon/stock_parts/capacitor = 1)
/obj/machinery/recharger/RefreshParts()
for(var/obj/item/weapon/stock_parts/capacitor/C in component_parts)
diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm
index ae9a16c729d..d7397ebabf4 100644
--- a/code/game/machinery/rechargestation.dm
+++ b/code/game/machinery/rechargestation.dm
@@ -7,7 +7,6 @@
use_power = 1
idle_power_usage = 5
active_power_usage = 1000
- var/circuitboard = "/obj/item/weapon/circuitboard/cyborgrecharger"
req_access = list(access_robotics)
var/recharge_speed
var/repairs
@@ -15,15 +14,19 @@
/obj/machinery/recharge_station/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/cyborgrecharger(null)
- component_parts += new /obj/item/weapon/stock_parts/capacitor(null)
- component_parts += new /obj/item/weapon/stock_parts/capacitor(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/weapon/stock_parts/cell/high(null)
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/cyborgrecharger(null)
+ B.apply_default_parts(src)
update_icon()
+/obj/item/weapon/circuitboard/machine/cyborgrecharger
+ name = "circuit board (Cyborg Recharger)"
+ build_path = /obj/machinery/recharge_station
+ origin_tech = "powerstorage=3;engineering=3"
+ req_components = list(
+ /obj/item/weapon/stock_parts/capacitor = 2,
+ /obj/item/weapon/stock_parts/cell = 1,
+ /obj/item/weapon/stock_parts/manipulator = 1)
+
/obj/machinery/recharge_station/RefreshParts()
recharge_speed = 0
repairs = 0
diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm
index 542975781f3..a37a0e4d14e 100644
--- a/code/game/machinery/recycler.dm
+++ b/code/game/machinery/recycler.dm
@@ -17,16 +17,20 @@ var/const/SAFETY_COOLDOWN = 100
var/datum/material_container/materials
/obj/machinery/recycler/New()
- // On us
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/recycler(null)
- component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
materials = new /datum/material_container(src, list(MAT_METAL=1, MAT_GLASS=1, MAT_PLASMA=1, MAT_SILVER=1, MAT_GOLD=1, MAT_DIAMOND=1, MAT_URANIUM=1, MAT_BANANIUM=1))
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/recycler(null)
+ B.apply_default_parts(src)
update_icon()
+/obj/item/weapon/circuitboard/machine/recycler
+ name = "circuit board (Recycler)"
+ build_path = /obj/machinery/recycler
+ origin_tech = "programming=1"
+ req_components = list(
+ /obj/item/weapon/stock_parts/matter_bin = 1,
+ /obj/item/weapon/stock_parts/manipulator = 1)
+
/obj/machinery/recycler/RefreshParts()
var/amt_made = 0
var/mat_mod = 0
diff --git a/code/game/machinery/slotmachine.dm b/code/game/machinery/slotmachine.dm
index 6322b95731d..a204918d41b 100644
--- a/code/game/machinery/slotmachine.dm
+++ b/code/game/machinery/slotmachine.dm
@@ -21,7 +21,7 @@
density = 1
use_power = 1
idle_power_usage = 50
- circuit = /obj/item/weapon/circuitboard/slot_machine
+ circuit = /obj/item/weapon/circuitboard/computer/slot_machine
var/money = 3000 //How much money it has CONSUMED
var/plays = 0
var/working = 0
diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm
index b164bc08c20..ed76ccd8768 100644
--- a/code/game/machinery/spaceheater.dm
+++ b/code/game/machinery/spaceheater.dm
@@ -24,14 +24,19 @@
/obj/machinery/space_heater/New()
..()
cell = new(src)
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/space_heater(null)
- component_parts += new /obj/item/weapon/stock_parts/capacitor(null)
- component_parts += new /obj/item/weapon/stock_parts/micro_laser(null)
- component_parts += new /obj/item/stack/cable_coil(null, 3)
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/space_heater(null)
+ B.apply_default_parts(src)
update_icon()
+/obj/item/weapon/circuitboard/machine/space_heater
+ name = "circuit board (Space Heater)"
+ build_path = /obj/machinery/space_heater
+ origin_tech = "programming=2;engineering=2"
+ req_components = list(
+ /obj/item/weapon/stock_parts/micro_laser = 1,
+ /obj/item/weapon/stock_parts/capacitor = 1,
+ /obj/item/stack/cable_coil = 3)
+
/obj/machinery/space_heater/construction()
qdel(cell)
cell = null
diff --git a/code/game/machinery/telecomms/computers/logbrowser.dm b/code/game/machinery/telecomms/computers/logbrowser.dm
index 0485e45950e..61598ca32bc 100644
--- a/code/game/machinery/telecomms/computers/logbrowser.dm
+++ b/code/game/machinery/telecomms/computers/logbrowser.dm
@@ -14,7 +14,7 @@
var/universal_translate = 0 // set to 1 if it can translate nonhuman speech
req_access = list(access_tcomsat)
- circuit = "/obj/item/weapon/circuitboard/comm_server"
+ circuit = /obj/item/weapon/circuitboard/computer/comm_server
/obj/machinery/computer/telecomms/server/attack_hand(mob/user)
if(..())
diff --git a/code/game/machinery/telecomms/computers/telemonitor.dm b/code/game/machinery/telecomms/computers/telemonitor.dm
index f7ed78a1315..0fd04b25361 100644
--- a/code/game/machinery/telecomms/computers/telemonitor.dm
+++ b/code/game/machinery/telecomms/computers/telemonitor.dm
@@ -16,7 +16,7 @@
var/network = "NULL" // the network to probe
var/temp = "" // temporary feedback messages
- circuit = "/obj/item/weapon/circuitboard/comm_monitor"
+ circuit = /obj/item/weapon/circuitboard/computer/comm_monitor
/obj/machinery/computer/telecomms/monitor/attack_hand(mob/user)
if(..())
diff --git a/code/game/machinery/telecomms/machines/broadcaster.dm b/code/game/machinery/telecomms/machines/broadcaster.dm
index 91106eae92e..c00bb1a412c 100644
--- a/code/game/machinery/telecomms/machines/broadcaster.dm
+++ b/code/game/machinery/telecomms/machines/broadcaster.dm
@@ -19,7 +19,6 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
machinetype = 5
/*heatgen = 0
delay = 7*/
- circuitboard = "/obj/item/weapon/circuitboard/telecomms/broadcaster"
/obj/machinery/telecomms/broadcaster/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from)
// Don't broadcast rejected signals
@@ -95,16 +94,19 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
/obj/machinery/telecomms/broadcaster/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/telecomms/broadcaster(null)
- component_parts += new /obj/item/weapon/stock_parts/subspace/filter(null)
- component_parts += new /obj/item/weapon/stock_parts/subspace/crystal(null)
- component_parts += new /obj/item/weapon/stock_parts/micro_laser/high(null)
- component_parts += new /obj/item/weapon/stock_parts/micro_laser/high(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/stack/cable_coil(null, 1)
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/telecomms/broadcaster(null)
+ B.apply_default_parts(src)
+
+/obj/item/weapon/circuitboard/machine/telecomms/broadcaster
+ name = "circuit board (Subspace Broadcaster)"
+ build_path = /obj/machinery/telecomms/broadcaster
+ origin_tech = "programming=2;engineering=2;bluespace=1"
+ req_components = list(
+ /obj/item/weapon/stock_parts/manipulator = 2,
+ /obj/item/stack/cable_coil = 1,
+ /obj/item/weapon/stock_parts/subspace/filter = 1,
+ /obj/item/weapon/stock_parts/subspace/crystal = 1,
+ /obj/item/weapon/stock_parts/micro_laser = 2)
/obj/machinery/telecomms/broadcaster/Destroy()
// In case message_delay is left on 1, otherwise it won't reset the list and people can't say the same thing twice anymore.
diff --git a/code/game/machinery/telecomms/machines/bus.dm b/code/game/machinery/telecomms/machines/bus.dm
index 7b747d4d332..6c98596c884 100644
--- a/code/game/machinery/telecomms/machines/bus.dm
+++ b/code/game/machinery/telecomms/machines/bus.dm
@@ -18,7 +18,6 @@
idle_power_usage = 50
machinetype = 2
//heatgen = 20
- circuitboard = "/obj/item/weapon/circuitboard/telecomms/bus"
netspeed = 40
var/change_frequency = 0
@@ -52,14 +51,17 @@
/obj/machinery/telecomms/bus/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/telecomms/bus(null)
- component_parts += new /obj/item/weapon/stock_parts/subspace/filter(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/stack/cable_coil(null, 1)
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/telecomms/bus(null)
+ B.apply_default_parts(src)
+/obj/item/weapon/circuitboard/machine/telecomms/bus
+ name = "circuit board (Bus Mainframe)"
+ build_path = /obj/machinery/telecomms/bus
+ origin_tech = "programming=2;engineering=2"
+ req_components = list(
+ /obj/item/weapon/stock_parts/manipulator = 2,
+ /obj/item/stack/cable_coil = 1,
+ /obj/item/weapon/stock_parts/subspace/filter = 1)
diff --git a/code/game/machinery/telecomms/machines/hub.dm b/code/game/machinery/telecomms/machines/hub.dm
index b52adc8cb8d..d5aebbc45fc 100644
--- a/code/game/machinery/telecomms/machines/hub.dm
+++ b/code/game/machinery/telecomms/machines/hub.dm
@@ -19,7 +19,6 @@
idle_power_usage = 80
machinetype = 7
//heatgen = 40
- circuitboard = "/obj/item/weapon/circuitboard/telecomms/hub"
long_range_link = 1
netspeed = 40
@@ -36,16 +35,17 @@
/obj/machinery/telecomms/hub/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/telecomms/hub(null)
- component_parts += new /obj/item/weapon/stock_parts/subspace/filter(null)
- component_parts += new /obj/item/weapon/stock_parts/subspace/filter(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/stack/cable_coil(null, 2)
- RefreshParts()
-
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/telecomms/hub(null)
+ B.apply_default_parts(src)
+/obj/item/weapon/circuitboard/machine/telecomms/hub
+ name = "circuit board (Hub Mainframe)"
+ build_path = /obj/machinery/telecomms/hub
+ origin_tech = "programming=2;engineering=2"
+ req_components = list(
+ /obj/item/weapon/stock_parts/manipulator = 2,
+ /obj/item/stack/cable_coil = 2,
+ /obj/item/weapon/stock_parts/subspace/filter = 2)
diff --git a/code/game/machinery/telecomms/machines/processor.dm b/code/game/machinery/telecomms/machines/processor.dm
index 18f8ee4d3e0..71cfc2ec5a6 100644
--- a/code/game/machinery/telecomms/machines/processor.dm
+++ b/code/game/machinery/telecomms/machines/processor.dm
@@ -18,7 +18,6 @@
machinetype = 3
//heatgen = 100
//delay = 5
- circuitboard = "/obj/item/weapon/circuitboard/telecomms/processor"
var/process_mode = 1 // 1 = Uncompress Signals, 0 = Compress Signals
/obj/machinery/telecomms/processor/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from)
@@ -38,22 +37,20 @@
/obj/machinery/telecomms/processor/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/telecomms/processor(null)
- component_parts += new /obj/item/weapon/stock_parts/subspace/filter(null)
- component_parts += new /obj/item/weapon/stock_parts/subspace/treatment(null)
- component_parts += new /obj/item/weapon/stock_parts/subspace/treatment(null)
- component_parts += new /obj/item/weapon/stock_parts/subspace/analyzer(null)
- component_parts += new /obj/item/weapon/stock_parts/subspace/amplifier(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/stack/cable_coil(null, 2)
- RefreshParts()
-
-
-
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/telecomms/processor(null)
+ B.apply_default_parts(src)
+/obj/item/weapon/circuitboard/machine/telecomms/processor
+ name = "circuit board (Processor Unit)"
+ build_path = /obj/machinery/telecomms/processor
+ origin_tech = "programming=2;engineering=2"
+ req_components = list(
+ /obj/item/weapon/stock_parts/manipulator = 3,
+ /obj/item/weapon/stock_parts/subspace/filter = 1,
+ /obj/item/weapon/stock_parts/subspace/treatment = 2,
+ /obj/item/weapon/stock_parts/subspace/analyzer = 1,
+ /obj/item/stack/cable_coil = 2,
+ /obj/item/weapon/stock_parts/subspace/amplifier = 1)
//Preset Processors
diff --git a/code/game/machinery/telecomms/machines/receiver.dm b/code/game/machinery/telecomms/machines/receiver.dm
index b1dc2b53c92..095bb0cfca2 100644
--- a/code/game/machinery/telecomms/machines/receiver.dm
+++ b/code/game/machinery/telecomms/machines/receiver.dm
@@ -17,7 +17,6 @@
idle_power_usage = 30
machinetype = 1
//heatgen = 0
- circuitboard = "/obj/item/weapon/circuitboard/telecomms/receiver"
/obj/machinery/telecomms/receiver/receive_signal(datum/signal/signal)
@@ -54,16 +53,18 @@
/obj/machinery/telecomms/receiver/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/telecomms/receiver(null)
- component_parts += new /obj/item/weapon/stock_parts/subspace/filter(null)
- component_parts += new /obj/item/weapon/stock_parts/subspace/ansible(null)
- component_parts += new /obj/item/weapon/stock_parts/micro_laser/high(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- RefreshParts()
-
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/telecomms/receiver(null)
+ B.apply_default_parts(src)
+/obj/item/weapon/circuitboard/machine/telecomms/receiver
+ name = "circuit board (Subspace Receiver)"
+ build_path = /obj/machinery/telecomms/receiver
+ origin_tech = "programming=2;engineering=2;bluespace=1"
+ req_components = list(
+ /obj/item/weapon/stock_parts/subspace/ansible = 1,
+ /obj/item/weapon/stock_parts/subspace/filter = 1,
+ /obj/item/weapon/stock_parts/manipulator = 2,
+ /obj/item/weapon/stock_parts/micro_laser = 1)
diff --git a/code/game/machinery/telecomms/machines/relay.dm b/code/game/machinery/telecomms/machines/relay.dm
index 51d76d47255..a11e521eea3 100644
--- a/code/game/machinery/telecomms/machines/relay.dm
+++ b/code/game/machinery/telecomms/machines/relay.dm
@@ -16,7 +16,6 @@
idle_power_usage = 30
machinetype = 8
//heatgen = 0
- circuitboard = "/obj/item/weapon/circuitboard/telecomms/relay"
netspeed = 5
long_range_link = 1
var/broadcasting = 1
@@ -48,16 +47,17 @@
/obj/machinery/telecomms/relay/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/telecomms/relay(null)
- component_parts += new /obj/item/weapon/stock_parts/subspace/filter(null)
- component_parts += new /obj/item/weapon/stock_parts/subspace/filter(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/stack/cable_coil(null, 2)
- RefreshParts()
-
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/telecomms/relay(null)
+ B.apply_default_parts(src)
+/obj/item/weapon/circuitboard/machine/telecomms/relay
+ name = "circuit board (Relay Mainframe)"
+ build_path = /obj/machinery/telecomms/relay
+ origin_tech = "programming=2;engineering=2;bluespace=2"
+ req_components = list(
+ /obj/item/weapon/stock_parts/manipulator = 2,
+ /obj/item/stack/cable_coil = 2,
+ /obj/item/weapon/stock_parts/subspace/filter = 2)
diff --git a/code/game/machinery/telecomms/machines/server.dm b/code/game/machinery/telecomms/machines/server.dm
index 9e54644b1f1..b68e618daf3 100644
--- a/code/game/machinery/telecomms/machines/server.dm
+++ b/code/game/machinery/telecomms/machines/server.dm
@@ -17,7 +17,6 @@
idle_power_usage = 15
machinetype = 4
//heatgen = 50
- circuitboard = "/obj/item/weapon/circuitboard/telecomms/server"
var/list/log_entries = list()
var/list/stored_names = list()
var/list/TrafficActions = list()
@@ -35,15 +34,19 @@
/obj/machinery/telecomms/server/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/telecomms/server(null)
- component_parts += new /obj/item/weapon/stock_parts/subspace/filter(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/stack/cable_coil(null, 1)
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/telecomms/server(null)
+ B.apply_default_parts(src)
server_radio = new()
+/obj/item/weapon/circuitboard/machine/telecomms/server
+ name = "circuit board (Telecommunication Server)"
+ build_path = /obj/machinery/telecomms/server
+ origin_tech = "programming=2;engineering=2"
+ req_components = list(
+ /obj/item/weapon/stock_parts/manipulator = 2,
+ /obj/item/stack/cable_coil = 1,
+ /obj/item/weapon/stock_parts/subspace/filter = 1)
+
/obj/machinery/telecomms/server/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from)
if(signal.data["message"])
diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm
index 161de617ea5..21aece34bb8 100644
--- a/code/game/machinery/telecomms/telecomunications.dm
+++ b/code/game/machinery/telecomms/telecomunications.dm
@@ -29,7 +29,6 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
var/toggled = 1 // Is it toggled on
var/on = 1
var/long_range_link = 0 // Can you link it across Z levels or on the otherside of the map? (Relay & Hub)
- var/circuitboard = null // string pointing to a circuitboard type
var/hide = 0 // Is it a hidden machine?
var/listening_level = 0 // 0 = auto set in New() - this is the z level that the machine is listening to.
diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm
index 38c914ecaf5..bb5479c82c9 100644
--- a/code/game/machinery/teleporter.dm
+++ b/code/game/machinery/teleporter.dm
@@ -3,7 +3,7 @@
desc = "Used to control a linked teleportation Hub and Station."
icon_screen = "teleport"
icon_keyboard = "teleport_key"
- circuit = "/obj/item/weapon/circuitboard/teleporter"
+ circuit = /obj/item/weapon/circuitboard/computer/teleporter
var/obj/item/device/gps/locked = null
var/regime_set = "Teleporter"
var/id = null
@@ -256,7 +256,7 @@
..()
link_power_station()
component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/teleporter_hub(null)
+ component_parts += new /obj/item/weapon/circuitboard/machine/teleporter_hub(null)
component_parts += new /obj/item/weapon/ore/bluespace_crystal/artificial(null)
component_parts += new /obj/item/weapon/ore/bluespace_crystal/artificial(null)
component_parts += new /obj/item/weapon/ore/bluespace_crystal/artificial(null)
@@ -364,7 +364,7 @@
/obj/machinery/teleport/station/New()
..()
component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/teleporter_station(null)
+ component_parts += new /obj/item/weapon/circuitboard/machine/teleporter_station(null)
component_parts += new /obj/item/weapon/ore/bluespace_crystal/artificial(null)
component_parts += new /obj/item/weapon/ore/bluespace_crystal/artificial(null)
component_parts += new /obj/item/weapon/stock_parts/capacitor(null)
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index 30cce02c00d..55479c7e462 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -58,14 +58,8 @@
..()
wires = new /datum/wires/vending(src)
if(refill_canister) //constructable vending machine
- component_parts = list()
- var/obj/item/weapon/circuitboard/vendor/V = new(null)
- V.set_type(type)
- component_parts += V
- component_parts += new refill_canister
- component_parts += new refill_canister
- component_parts += new refill_canister
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/vendor(null)
+ B.apply_default_parts(src)
else
build_inventory(products)
build_inventory(contraband, 1)
@@ -78,6 +72,44 @@
last_slogan = world.time + rand(0, slogan_delay)
power_change()
+/obj/item/weapon/circuitboard/machine/vendor
+ name = "circuit board (Booze-O-Mat Vendor)"
+ build_path = /obj/machinery/vending/boozeomat
+ origin_tech = "programming=1"
+ req_components = list(
+ /obj/item/weapon/vending_refill/boozeomat = 3)
+
+ var/list/names_paths = list(/obj/machinery/vending/boozeomat = "Booze-O-Mat",
+ /obj/machinery/vending/coffee = "Solar's Best Hot Drinks",
+ /obj/machinery/vending/snack = "Getmore Chocolate Corp",
+ /obj/machinery/vending/cola = "Robust Softdrinks",
+ /obj/machinery/vending/cigarette = "ShadyCigs Deluxe",
+ /obj/machinery/vending/autodrobe = "AutoDrobe")
+
+/obj/item/weapon/circuitboard/machine/vendor/attackby(obj/item/I, mob/user, params)
+ if(istype(I, /obj/item/weapon/screwdriver))
+ var/position = names_paths.Find(build_path)
+ position = (position == names_paths.len) ? 1 : (position + 1)
+ var/typepath = names_paths[position]
+
+ user << "You set the board to \"[names_paths[typepath]]\"."
+ set_type(typepath)
+ else
+ return ..()
+
+/obj/item/weapon/circuitboard/machine/vendor/proc/set_type(var/obj/machinery/vending/typepath)
+ build_path = typepath
+ name = "circuit board ([names_paths[build_path]] Vendor)"
+ req_components = list(initial(typepath.refill_canister) = 3)
+
+/obj/item/weapon/circuitboard/machine/vendor/apply_default_parts(obj/machinery/M)
+ for(var/typepath in names_paths)
+ if(istype(M, typepath))
+ set_type(typepath)
+ break
+ ..()
+
+
/obj/machinery/vending/Destroy()
qdel(wires)
wires = null
diff --git a/code/game/mecha/mech_bay.dm b/code/game/mecha/mech_bay.dm
index f3f730d4bc7..c3847474e60 100644
--- a/code/game/mecha/mech_bay.dm
+++ b/code/game/mecha/mech_bay.dm
@@ -26,17 +26,18 @@
/obj/machinery/mech_bay_recharge_port/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/mech_recharger(null)
- component_parts += new /obj/item/weapon/stock_parts/capacitor(null)
- component_parts += new /obj/item/weapon/stock_parts/capacitor(null)
- component_parts += new /obj/item/weapon/stock_parts/capacitor(null)
- component_parts += new /obj/item/weapon/stock_parts/capacitor(null)
- component_parts += new /obj/item/weapon/stock_parts/capacitor(null)
- component_parts += new /obj/item/stack/cable_coil(null, 1)
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/mech_recharger(null)
+ B.apply_default_parts(src)
recharging_turf = get_step(loc, dir)
+/obj/item/weapon/circuitboard/machine/mech_recharger
+ name = "circuit board (Mechbay Recharger)"
+ build_path = /obj/machinery/mech_bay_recharge_port
+ origin_tech = "programming=3;powerstorage=4;engineering=4"
+ req_components = list(
+ /obj/item/stack/cable_coil = 2,
+ /obj/item/weapon/stock_parts/capacitor = 5)
+
/obj/machinery/mech_bay_recharge_port/RefreshParts()
var/MC
for(var/obj/item/weapon/stock_parts/capacitor/C in component_parts)
@@ -82,7 +83,7 @@
desc = "Used to control mechbay power ports."
icon_screen = "recharge_comp"
icon_keyboard = "rd_key"
- circuit = /obj/item/weapon/circuitboard/mech_bay_power_console
+ circuit = /obj/item/weapon/circuitboard/computer/mech_bay_power_console
var/obj/machinery/mech_bay_recharge_port/recharge_port
/obj/machinery/computer/mech_bay_power_console/attack_ai(mob/user)
diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm
index 5748be75618..5de9c676059 100644
--- a/code/game/mecha/mech_fabricator.dm
+++ b/code/game/mecha/mech_fabricator.dm
@@ -46,16 +46,20 @@
/obj/machinery/mecha_part_fabricator/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/mechfab(null)
- component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
- component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/weapon/stock_parts/micro_laser(null)
- component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/mechfab(null)
+ B.apply_default_parts(src)
files = new /datum/research(src) //Setup the research data holder.
+/obj/item/weapon/circuitboard/machine/mechfab
+ name = "circuit board (Exosuit Fabricator)"
+ build_path = /obj/machinery/mecha_part_fabricator
+ origin_tech = "programming=3;engineering=3"
+ req_components = list(
+ /obj/item/weapon/stock_parts/matter_bin = 2,
+ /obj/item/weapon/stock_parts/manipulator = 1,
+ /obj/item/weapon/stock_parts/micro_laser = 1,
+ /obj/item/weapon/stock_parts/console_screen = 1)
+
/obj/machinery/mecha_part_fabricator/RefreshParts()
var/T = 0
diff --git a/code/game/mecha/mecha_control_console.dm b/code/game/mecha/mecha_control_console.dm
index ab7641dd681..0fc08605bcf 100644
--- a/code/game/mecha/mecha_control_console.dm
+++ b/code/game/mecha/mecha_control_console.dm
@@ -4,7 +4,7 @@
icon_screen = "mecha"
icon_keyboard = "tech_key"
req_access = list(access_robotics)
- circuit = "/obj/item/weapon/circuitboard/mecha_control"
+ circuit = /obj/item/weapon/circuitboard/computer/mecha_control
var/list/located = list()
var/screen = 0
var/stored_data
diff --git a/code/game/mecha/mecha_parts.dm b/code/game/mecha/mecha_parts.dm
index c14ddd5470c..40037689a9e 100644
--- a/code/game/mecha/mecha_parts.dm
+++ b/code/game/mecha/mecha_parts.dm
@@ -321,7 +321,6 @@
icon = 'icons/obj/module.dmi'
icon_state = "std_mod"
item_state = "electronic"
- board_type = "other"
flags = CONDUCT
force = 5
w_class = 2
diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index 84f474abe0a..76cf1ff5a33 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -26,11 +26,12 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \
new/datum/stack_recipe("floor tile", /obj/item/stack/tile/plasteel, 1, 4, 20), \
new/datum/stack_recipe("metal rod", /obj/item/stack/rods, 1, 2, 60), \
null, \
- new/datum/stack_recipe("computer frame", /obj/structure/computerframe, 5, time = 25, one_per_turf = 1, on_floor = 1), \
- new/datum/stack_recipe("wall girders", /obj/structure/girder, 2, time = 50, one_per_turf = 1, on_floor = 1), \
+ new/datum/stack_recipe("wall girders", /obj/structure/girder, 2, time = 40, one_per_turf = 1, on_floor = 1), \
+ null, \
+ new/datum/stack_recipe("computer frame", /obj/structure/frame/computer, 5, time = 25, one_per_turf = 1, on_floor = 1), \
+ new/datum/stack_recipe("machine frame", /obj/structure/frame/machine, 5, time = 25, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("airlock assembly", /obj/structure/door_assembly, 4, time = 50, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("firelock frame", /obj/structure/firelock_frame, 3, time = 50, one_per_turf = 1, on_floor = 1), \
- new/datum/stack_recipe("machine frame", /obj/machinery/constructable_frame/machine_frame, 5, time = 25, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("turret frame", /obj/machinery/porta_turret_construct, 5, time = 25, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("meatspike frame", /obj/structure/kitchenspike_frame, 5, time = 25, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("reflector frame", /obj/structure/reflector, 5, time = 25, one_per_turf = 1, on_floor = 1), \
diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm
index b4e7b5dd5ef..7da9e29ce27 100644
--- a/code/game/objects/items/stacks/stack.dm
+++ b/code/game/objects/items/stacks/stack.dm
@@ -64,6 +64,7 @@
return
if (!src || get_amount() <= 0)
user << browse(null, "window=stack")
+ return
user.set_machine(src) //for correct work of onclose
var/t1 = text("Constructions from []Amount Left: []
", src, src.get_amount())
for(var/i=1;i<=recipes.len,i++)
diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm
index 99b3a72e6ae..6538bba7f06 100644
--- a/code/game/objects/items/weapons/storage/boxes.dm
+++ b/code/game/objects/items/weapons/storage/boxes.dm
@@ -804,7 +804,7 @@
/obj/item/weapon/storage/box/rndboards/New()
..()
- new /obj/item/weapon/circuitboard/protolathe(src)
- new /obj/item/weapon/circuitboard/destructive_analyzer(src)
- new /obj/item/weapon/circuitboard/circuit_imprinter(src)
- new /obj/item/weapon/circuitboard/rdconsole(src)
+ new /obj/item/weapon/circuitboard/machine/protolathe(src)
+ new /obj/item/weapon/circuitboard/machine/destructive_analyzer(src)
+ new /obj/item/weapon/circuitboard/machine/circuit_imprinter(src)
+ new /obj/item/weapon/circuitboard/computer/rdconsole(src)
diff --git a/code/game/objects/structures/ai_core.dm b/code/game/objects/structures/ai_core.dm
index ef533fe16a1..0e0ff304900 100644
--- a/code/game/objects/structures/ai_core.dm
+++ b/code/game/objects/structures/ai_core.dm
@@ -246,3 +246,8 @@ atom/proc/transfer_ai(interaction, mob/user, mob/living/silicon/ai/AI, obj/item/
qdel(src)
else //If for some reason you use an empty card on an empty AI terminal.
user << "There is no AI loaded on this terminal!"
+
+
+/obj/item/weapon/circuitboard/aicore
+ name = "circuit board (AI core)"
+ origin_tech = "programming=4;biotech=2"
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
index d896d93a9a3..cdd0e0fea57 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
@@ -22,14 +22,17 @@
/obj/machinery/atmospherics/components/unary/cryo_cell/New()
..()
initialize_directions = dir
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/cryo_tube(null)
- component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
- component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
- component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
- component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
- component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
- component_parts += new /obj/item/stack/cable_coil(null, 1)
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/cryo_tube(null)
+ B.apply_default_parts(src)
+
+/obj/item/weapon/circuitboard/machine/cryo_tube
+ name = "circuit board (Cryotube)"
+ build_path = /obj/machinery/atmospherics/components/unary/cryo_cell
+ origin_tech = "programming=4;biotech=3;engineering=4"
+ req_components = list(
+ /obj/item/weapon/stock_parts/matter_bin = 1,
+ /obj/item/stack/cable_coil = 1,
+ /obj/item/weapon/stock_parts/console_screen = 4)
/obj/machinery/atmospherics/components/unary/cryo_cell/construction()
..(dir, dir)
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm
index ed142bbf4ed..fc06e542cba 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm
@@ -17,14 +17,37 @@
/obj/machinery/atmospherics/components/unary/thermomachine/New()
..()
initialize_directions = dir
- component_parts = list()
- component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
- component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
- component_parts += new /obj/item/weapon/stock_parts/micro_laser(null)
- component_parts += new /obj/item/weapon/stock_parts/micro_laser(null)
- component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
- component_parts += new /obj/item/stack/cable_coil(null, 1)
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/thermomachine(null)
+ B.apply_default_parts(src)
+
+/obj/item/weapon/circuitboard/machine/thermomachine
+ name = "circuit board (Thermomachine)"
+ desc = "You can use a screwdriver to switch between heater and freezer."
+ origin_tech = "programming=3;plasmatech=3"
+ req_components = list(
+ /obj/item/weapon/stock_parts/matter_bin = 2,
+ /obj/item/weapon/stock_parts/micro_laser = 2,
+ /obj/item/stack/cable_coil = 1,
+ /obj/item/weapon/stock_parts/console_screen = 1)
+
+/obj/item/weapon/circuitboard/machine/thermomachine/attackby(obj/item/I, mob/user, params)
+ var/obj/item/weapon/circuitboard/machine/freezer = /obj/item/weapon/circuitboard/machine/thermomachine/freezer
+ var/obj/item/weapon/circuitboard/machine/heater = /obj/item/weapon/circuitboard/machine/thermomachine/heater
+ var/obj/item/weapon/circuitboard/machine/newtype
+
+ if(istype(I, /obj/item/weapon/screwdriver))
+ var/new_setting = "Heater"
+ playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
+ if(build_path == initial(heater.build_path))
+ newtype = freezer
+ new_setting = "Freezer"
+ else
+ newtype = heater
+ name = initial(newtype.name)
+ build_path = initial(newtype.build_path)
+ user << "You change the circuitboard setting to \"[new_setting]\"."
+ else
+ return ..()
/obj/machinery/atmospherics/components/unary/thermomachine/construction()
..(dir,dir)
@@ -169,7 +192,12 @@
/obj/machinery/atmospherics/components/unary/thermomachine/freezer/New()
..()
- component_parts += new /obj/item/weapon/circuitboard/thermomachine/freezer(null)
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/thermomachine/freezer(null)
+ B.apply_default_parts(src)
+
+/obj/item/weapon/circuitboard/machine/thermomachine/freezer
+ name = "circuit board (Freezer)"
+ build_path = /obj/machinery/atmospherics/components/unary/thermomachine/freezer
/obj/machinery/atmospherics/components/unary/thermomachine/freezer/RefreshParts()
..()
@@ -189,7 +217,12 @@
/obj/machinery/atmospherics/components/unary/thermomachine/heater/New()
..()
- component_parts += new /obj/item/weapon/circuitboard/thermomachine/heater(null)
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/thermomachine/heater(null)
+ B.apply_default_parts(src)
+
+/obj/item/weapon/circuitboard/machine/thermomachine/heater
+ name = "circuit board (Heater)"
+ build_path = /obj/machinery/atmospherics/components/unary/thermomachine/heater
/obj/machinery/atmospherics/components/unary/thermomachine/heater/RefreshParts()
..()
diff --git a/code/modules/cargo/console.dm b/code/modules/cargo/console.dm
index 472d2442557..4a3e5bdfec0 100644
--- a/code/modules/cargo/console.dm
+++ b/code/modules/cargo/console.dm
@@ -2,7 +2,7 @@
name = "supply console"
desc = "Used to order supplies, approve requests, and control the shuttle."
icon_screen = "supply"
- circuit = /obj/item/weapon/circuitboard/cargo
+ circuit = /obj/item/weapon/circuitboard/computer/cargo
var/requestonly = FALSE
var/contraband = FALSE
@@ -10,12 +10,12 @@
name = "supply request console"
desc = "Used to request supplies from cargo."
icon_screen = "request"
- circuit = /obj/item/weapon/circuitboard/cargo/request
+ circuit = /obj/item/weapon/circuitboard/computer/cargo/request
requestonly = TRUE
/obj/machinery/computer/cargo/New()
..()
- var/obj/item/weapon/circuitboard/cargo/board = circuit
+ var/obj/item/weapon/circuitboard/computer/cargo/board = circuit
contraband = board.contraband
emagged = board.emagged
@@ -28,7 +28,7 @@
contraband = TRUE
// This also permamently sets this on the circuit board
- var/obj/item/weapon/circuitboard/cargo/board = circuit
+ var/obj/item/weapon/circuitboard/computer/cargo/board = circuit
board.contraband = TRUE
board.emagged = TRUE
diff --git a/code/modules/cargo/exports/parts.dm b/code/modules/cargo/exports/parts.dm
index b78bb3b2e37..51a563918fb 100644
--- a/code/modules/cargo/exports/parts.dm
+++ b/code/modules/cargo/exports/parts.dm
@@ -13,7 +13,7 @@
/datum/export/solar/control_board
cost = 150
unit_name = "solar panel control board"
- export_types = list(/obj/item/weapon/circuitboard/solar_control)
+ export_types = list(/obj/item/weapon/circuitboard/computer/solar_control)
diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm
index ef1c1ef85cd..ef657aedc10 100644
--- a/code/modules/cargo/packs.dm
+++ b/code/modules/cargo/packs.dm
@@ -530,7 +530,7 @@
/obj/item/solar_assembly,
/obj/item/solar_assembly,
/obj/item/solar_assembly,
- /obj/item/weapon/circuitboard/solar_control,
+ /obj/item/weapon/circuitboard/computer/solar_control,
/obj/item/weapon/electronics/tracker,
/obj/item/weapon/paper/solar)
crate_name = "solar panel crate"
diff --git a/code/modules/food&drinks/kitchen machinery/gibber.dm b/code/modules/food&drinks/kitchen machinery/gibber.dm
index 84a92fbaca7..93e3d1799fd 100644
--- a/code/modules/food&drinks/kitchen machinery/gibber.dm
+++ b/code/modules/food&drinks/kitchen machinery/gibber.dm
@@ -48,11 +48,16 @@
/obj/machinery/gibber/New()
..()
src.overlays += image('icons/obj/kitchen.dmi', "grjam")
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/gibber(null)
- component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/gibber(null)
+ B.apply_default_parts(src)
+
+/obj/item/weapon/circuitboard/machine/gibber
+ name = "circuit board (Gibber)"
+ build_path = /obj/machinery/gibber
+ origin_tech = "programming=1"
+ req_components = list(
+ /obj/item/weapon/stock_parts/matter_bin = 1,
+ /obj/item/weapon/stock_parts/manipulator = 1)
/obj/machinery/gibber/RefreshParts()
var/gib_time = 40
diff --git a/code/modules/food&drinks/kitchen machinery/microwave.dm b/code/modules/food&drinks/kitchen machinery/microwave.dm
index 878d51853b1..5e8171bf0dd 100644
--- a/code/modules/food&drinks/kitchen machinery/microwave.dm
+++ b/code/modules/food&drinks/kitchen machinery/microwave.dm
@@ -24,13 +24,18 @@
/obj/machinery/microwave/New()
create_reagents(100)
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/microwave(null)
- component_parts += new /obj/item/weapon/stock_parts/micro_laser(null)
- component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
- component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
- component_parts += new /obj/item/stack/cable_coil(null, 2)
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/microwave(null)
+ B.apply_default_parts(src)
+
+/obj/item/weapon/circuitboard/machine/microwave
+ name = "circuit board (Microwave)"
+ build_path = /obj/machinery/microwave
+ origin_tech = "programming=1;magnets=1"
+ req_components = list(
+ /obj/item/weapon/stock_parts/micro_laser = 1,
+ /obj/item/weapon/stock_parts/matter_bin = 1,
+ /obj/item/stack/cable_coil = 2,
+ /obj/item/weapon/stock_parts/console_screen = 1)
/obj/machinery/microwave/RefreshParts()
var/E
diff --git a/code/modules/food&drinks/kitchen machinery/monkeyrecycler.dm b/code/modules/food&drinks/kitchen machinery/monkeyrecycler.dm
index b1e7f5632fd..a446c16d444 100644
--- a/code/modules/food&drinks/kitchen machinery/monkeyrecycler.dm
+++ b/code/modules/food&drinks/kitchen machinery/monkeyrecycler.dm
@@ -16,11 +16,16 @@
/obj/machinery/monkey_recycler/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/monkey_recycler(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/monkey_recycler(null)
+ B.apply_default_parts(src)
+
+/obj/item/weapon/circuitboard/machine/monkey_recycler
+ name = "circuit board (Monkey Recycler)"
+ build_path = /obj/machinery/monkey_recycler
+ origin_tech = "programming=1;biotech=2"
+ req_components = list(
+ /obj/item/weapon/stock_parts/matter_bin = 1,
+ /obj/item/weapon/stock_parts/manipulator = 1)
/obj/machinery/monkey_recycler/RefreshParts()
var/req_grind = 5
diff --git a/code/modules/food&drinks/kitchen machinery/processor.dm b/code/modules/food&drinks/kitchen machinery/processor.dm
index ab460e14999..f0c41e5f082 100644
--- a/code/modules/food&drinks/kitchen machinery/processor.dm
+++ b/code/modules/food&drinks/kitchen machinery/processor.dm
@@ -16,12 +16,17 @@
var/rating_amount = 1
/obj/machinery/processor/New()
- ..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/processor(null)
- component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- RefreshParts()
+ ..()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/processor(null)
+ B.apply_default_parts(src)
+
+/obj/item/weapon/circuitboard/machine/processor
+ name = "circuit board (Food Processor)"
+ build_path = /obj/machinery/processor
+ origin_tech = "programming=1"
+ req_components = list(
+ /obj/item/weapon/stock_parts/matter_bin = 1,
+ /obj/item/weapon/stock_parts/manipulator = 1)
/obj/machinery/processor/RefreshParts()
for(var/obj/item/weapon/stock_parts/matter_bin/B in component_parts)
diff --git a/code/modules/food&drinks/kitchen machinery/smartfridge.dm b/code/modules/food&drinks/kitchen machinery/smartfridge.dm
index 1eac74d44c7..ca7dfd00041 100644
--- a/code/modules/food&drinks/kitchen machinery/smartfridge.dm
+++ b/code/modules/food&drinks/kitchen machinery/smartfridge.dm
@@ -19,10 +19,33 @@
/obj/machinery/smartfridge/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/smartfridge(null, type)
- component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/smartfridge(null)
+ B.apply_default_parts(src)
+
+/obj/item/weapon/circuitboard/machine/smartfridge
+ name = "circuit board (Smartfridge)"
+ build_path = /obj/machinery/smartfridge
+ origin_tech = "programming=1"
+ req_components = list(/obj/item/weapon/stock_parts/matter_bin = 1)
+
+/obj/item/weapon/circuitboard/machine/smartfridge/New(loc, new_type)
+ if(new_type)
+ build_path = new_type
+
+/obj/item/weapon/circuitboard/machine/smartfridge/attackby(obj/item/I, mob/user, params)
+ if(istype(I, /obj/item/weapon/screwdriver))
+ var/list/fridges = list(/obj/machinery/smartfridge = "default",
+ /obj/machinery/smartfridge/drinks = "drinks",
+ /obj/machinery/smartfridge/extract = "slimes",
+ /obj/machinery/smartfridge/chemistry = "chems",
+ /obj/machinery/smartfridge/chemistry/virology = "viruses")
+
+ var/position = fridges.Find(build_path, fridges)
+ position = (position == fridges.len) ? 1 : (position + 1)
+ build_path = fridges[position]
+ user << "You set the board to [fridges[build_path]]."
+ else
+ return ..()
/obj/machinery/smartfridge/construction()
for(var/datum/A in contents)
diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm
index 9ebde1d58ab..c951b922b8b 100644
--- a/code/modules/hydroponics/biogenerator.dm
+++ b/code/modules/hydroponics/biogenerator.dm
@@ -16,15 +16,20 @@
var/max_items = 40
/obj/machinery/biogenerator/New()
- ..()
- create_reagents(1000)
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/biogenerator(null)
- component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
- component_parts += new /obj/item/stack/cable_coil(null, 1)
- RefreshParts()
+ ..()
+ create_reagents(1000)
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/biogenerator(null)
+ B.apply_default_parts(src)
+
+/obj/item/weapon/circuitboard/machine/biogenerator
+ name = "circuit board (Biogenerator)"
+ build_path = /obj/machinery/biogenerator
+ origin_tech = "programming=3;biotech=2;materials=3"
+ req_components = list(
+ /obj/item/weapon/stock_parts/matter_bin = 1,
+ /obj/item/weapon/stock_parts/manipulator = 1,
+ /obj/item/stack/cable_coil = 1,
+ /obj/item/weapon/stock_parts/console_screen = 1)
/obj/machinery/biogenerator/RefreshParts()
var/E = 0
diff --git a/code/modules/hydroponics/gene_modder.dm b/code/modules/hydroponics/gene_modder.dm
index 1f062578259..2f0e44878b3 100644
--- a/code/modules/hydroponics/gene_modder.dm
+++ b/code/modules/hydroponics/gene_modder.dm
@@ -23,13 +23,18 @@
/obj/machinery/plantgenes/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/plantgenes(src)
- component_parts += new /obj/item/weapon/stock_parts/console_screen(src)
- component_parts += new /obj/item/weapon/stock_parts/scanning_module(src)
- component_parts += new /obj/item/weapon/stock_parts/micro_laser(src)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/plantgenes(null)
+ B.apply_default_parts(src)
+
+/obj/item/weapon/circuitboard/machine/plantgenes
+ name = "circuit board (Plant DNA Manipulator)"
+ build_path = /obj/machinery/plantgenes
+ origin_tech = "programming=2;biotech=3"
+ req_components = list(
+ /obj/item/weapon/stock_parts/manipulator = 1,
+ /obj/item/weapon/stock_parts/micro_laser = 1,
+ /obj/item/weapon/stock_parts/console_screen = 1,
+ /obj/item/weapon/stock_parts/scanning_module = 1)
/obj/machinery/plantgenes/RefreshParts()
rating = 0
@@ -353,7 +358,7 @@
/obj/machinery/plantgenes/seedvault/New()
..()
component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/plantgenes(src)
+ component_parts += new /obj/item/weapon/circuitboard/machine/plantgenes(src)
component_parts += new /obj/item/weapon/stock_parts/console_screen(src)
component_parts += new /obj/item/weapon/stock_parts/scanning_module/triphasic(src)
component_parts += new /obj/item/weapon/stock_parts/micro_laser/quadultra(src)
diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm
index 09d0f9b748f..ce238c7eaa1 100644
--- a/code/modules/hydroponics/hydroponics.dm
+++ b/code/modules/hydroponics/hydroponics.dm
@@ -34,13 +34,17 @@
/obj/machinery/hydroponics/constructable/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/hydroponics(null)
- component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
- component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/hydroponics(null)
+ B.apply_default_parts(src)
+
+/obj/item/weapon/circuitboard/machine/hydroponics
+ name = "circuit board (Hydroponics Tray)"
+ build_path = /obj/machinery/hydroponics/constructable
+ origin_tech = "programming=1;biotech=1"
+ req_components = list(
+ /obj/item/weapon/stock_parts/matter_bin = 2,
+ /obj/item/weapon/stock_parts/manipulator = 1,
+ /obj/item/weapon/stock_parts/console_screen = 1)
/obj/machinery/hydroponics/constructable/RefreshParts()
var/tmp_capacity = 0
diff --git a/code/modules/hydroponics/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm
index e7e63b26e23..1d146cdff00 100644
--- a/code/modules/hydroponics/seed_extractor.dm
+++ b/code/modules/hydroponics/seed_extractor.dm
@@ -50,11 +50,16 @@
/obj/machinery/seed_extractor/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/seed_extractor(null)
- component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/seed_extractor(null)
+ B.apply_default_parts(src)
+
+/obj/item/weapon/circuitboard/machine/seed_extractor
+ name = "circuit board (Seed Extractor)"
+ build_path = /obj/machinery/seed_extractor
+ origin_tech = "programming=1"
+ req_components = list(
+ /obj/item/weapon/stock_parts/matter_bin = 1,
+ /obj/item/weapon/stock_parts/manipulator = 1)
/obj/machinery/seed_extractor/RefreshParts()
for(var/obj/item/weapon/stock_parts/matter_bin/B in component_parts)
diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm
index 16862d3e8a5..bdad0908afe 100644
--- a/code/modules/library/lib_machines.dm
+++ b/code/modules/library/lib_machines.dm
@@ -19,7 +19,7 @@
icon_state = "oldcomp"
icon_screen = "library"
icon_keyboard = null
- circuit = /obj/item/weapon/circuitboard/libraryconsole
+ circuit = /obj/item/weapon/circuitboard/computer/libraryconsole
var/screenstate = 0
var/title
var/category = "Any"
diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm
index 58a7559c55c..9503ed2808b 100644
--- a/code/modules/mining/equipment_locker.dm
+++ b/code/modules/mining/equipment_locker.dm
@@ -24,14 +24,19 @@
/obj/machinery/mineral/ore_redemption/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/ore_redemption(null)
- component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/weapon/stock_parts/micro_laser(null)
- component_parts += new /obj/item/device/assembly/igniter(null)
- component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/ore_redemption(null)
+ B.apply_default_parts(src)
+
+/obj/item/weapon/circuitboard/machine/ore_redemption
+ name = "circuit board (Ore Redemption)"
+ build_path = /obj/machinery/mineral/ore_redemption
+ origin_tech = "programming=1;engineering=2"
+ req_components = list(
+ /obj/item/weapon/stock_parts/console_screen = 1,
+ /obj/item/weapon/stock_parts/matter_bin = 1,
+ /obj/item/weapon/stock_parts/micro_laser = 1,
+ /obj/item/weapon/stock_parts/manipulator = 1,
+ /obj/item/device/assembly/igniter = 1)
/obj/machinery/mineral/ore_redemption/RefreshParts()
var/ore_pickup_rate_temp = 15
@@ -322,13 +327,16 @@
/obj/machinery/mineral/equipment_vendor/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/mining_equipment_vendor(null)
- component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
- component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
- component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
- component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/mining_equipment_vendor(null)
+ B.apply_default_parts(src)
+
+/obj/item/weapon/circuitboard/machine/mining_equipment_vendor
+ name = "circuit board (Mining Equipment Vendor)"
+ build_path = /obj/machinery/mineral/equipment_vendor
+ origin_tech = "programming=1;engineering=2"
+ req_components = list(
+ /obj/item/weapon/stock_parts/console_screen = 1,
+ /obj/item/weapon/stock_parts/matter_bin = 3)
/obj/machinery/mineral/equipment_vendor/power_change()
..()
@@ -1151,10 +1159,9 @@
/obj/machinery/mineral/equipment_vendor/golem/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/mining_equipment_vendor/golem(null)
- component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
- component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
- component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
- component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/mining_equipment_vendor/golem(null)
+ B.apply_default_parts(src)
+
+/obj/item/weapon/circuitboard/machine/mining_equipment_vendor/golem
+ name = "circuit board (Golem Ship Equipment Vendor)"
+ build_path = /obj/machinery/mineral/equipment_vendor/golem
diff --git a/code/modules/mining/laborcamp/laborshuttle.dm b/code/modules/mining/laborcamp/laborshuttle.dm
index 079eaeab8dd..2e88d4e413c 100644
--- a/code/modules/mining/laborcamp/laborshuttle.dm
+++ b/code/modules/mining/laborcamp/laborshuttle.dm
@@ -1,7 +1,7 @@
/obj/machinery/computer/shuttle/labor
name = "labor shuttle console"
desc = "Used to call and send the labor camp shuttle."
- circuit = /obj/item/weapon/circuitboard/labor_shuttle
+ circuit = /obj/item/weapon/circuitboard/computer/labor_shuttle
shuttleId = "laborcamp"
possible_destinations = "laborcamp_home;laborcamp_away"
req_access = list(access_brig)
@@ -11,7 +11,7 @@
name = "prisoner shuttle console"
desc = "A one-way shuttle console, used to summon the shuttle to the labor camp."
possible_destinations = "laborcamp_away"
- circuit = /obj/item/weapon/circuitboard/labor_shuttle/one_way
+ circuit = /obj/item/weapon/circuitboard/computer/labor_shuttle/one_way
req_access = list( )
/obj/machinery/computer/shuttle/labor/one_way/Topic(href, href_list)
diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm
index 0619d722f44..c577ca74bee 100644
--- a/code/modules/mining/mine_items.dm
+++ b/code/modules/mining/mine_items.dm
@@ -53,7 +53,7 @@
/obj/machinery/computer/shuttle/mining
name = "Mining Shuttle Console"
desc = "Used to call and send the mining shuttle."
- circuit = /obj/item/weapon/circuitboard/mining_shuttle
+ circuit = /obj/item/weapon/circuitboard/computer/mining_shuttle
shuttleId = "mining"
possible_destinations = "mining_home;mining_away"
no_destination_swap = 1
diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm
index d6a58af95cf..5a1dffc3c42 100644
--- a/code/modules/mob/living/simple_animal/parrot.dm
+++ b/code/modules/mob/living/simple_animal/parrot.dm
@@ -85,7 +85,7 @@
//Parrots will generally sit on their perch unless something catches their eye.
//These vars store their preffered perch and if they dont have one, what they can use as a perch
var/obj/parrot_perch = null
- var/obj/desired_perches = list(/obj/structure/computerframe, /obj/structure/displaycase, \
+ var/obj/desired_perches = list(/obj/structure/frame/computer, /obj/structure/displaycase, \
/obj/structure/filingcabinet, /obj/machinery/teleport, \
/obj/machinery/computer, /obj/machinery/clonepod, \
/obj/machinery/dna_scannernew, /obj/machinery/telecomms, \
diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm
index f1b3d4ccbbc..6d29f794ee6 100644
--- a/code/modules/power/cell.dm
+++ b/code/modules/power/cell.dm
@@ -251,6 +251,7 @@
/obj/item/weapon/stock_parts/cell/bluespace
name = "bluespace power cell"
+ desc = "A rechargable transdimensional power cell."
origin_tech = "powerstorage=7"
icon_state = "bscell"
maxcharge = 40000
diff --git a/code/modules/power/monitor.dm b/code/modules/power/monitor.dm
index b0f11026686..5f663a89c30 100644
--- a/code/modules/power/monitor.dm
+++ b/code/modules/power/monitor.dm
@@ -6,7 +6,7 @@
use_power = 2
idle_power_usage = 20
active_power_usage = 100
- circuit = /obj/item/weapon/circuitboard/powermonitor
+ circuit = /obj/item/weapon/circuitboard/computer/powermonitor
var/obj/structure/cable/attached
diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm
index 09b33ebb881..a61bef51c4f 100644
--- a/code/modules/power/port_gen.dm
+++ b/code/modules/power/port_gen.dm
@@ -94,7 +94,7 @@ display round(lastgen) and plasmatank amount
var/max_sheets = 100
var/sheet_name = ""
var/sheet_path = /obj/item/stack/sheet/mineral/plasma
- var/board_path = "/obj/item/weapon/circuitboard/pacman"
+ var/board_path = /obj/item/weapon/circuitboard/machine/pacman
var/sheet_left = 0 // How much is left of the sheet
var/time_per_sheet = 260
var/current_heat = 0
@@ -106,16 +106,31 @@ display round(lastgen) and plasmatank amount
/obj/machinery/power/port_gen/pacman/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/stock_parts/matter_bin(src)
- component_parts += new /obj/item/weapon/stock_parts/micro_laser(src)
- component_parts += new /obj/item/stack/cable_coil(src, 1)
- component_parts += new /obj/item/stack/cable_coil(src, 1)
- component_parts += new /obj/item/weapon/stock_parts/capacitor(src)
- component_parts += new board_path(src)
+ var/obj/item/weapon/circuitboard/machine/B = new board_path(null)
+ B.apply_default_parts(src)
+
var/obj/sheet = new sheet_path(null)
sheet_name = sheet.name
- RefreshParts()
+
+/obj/item/weapon/circuitboard/machine/pacman
+ name = "circuit board (PACMAN-type Generator)"
+ build_path = /obj/machinery/power/port_gen/pacman
+ origin_tech = "programming=3;powerstorage=3;plasmatech=3;engineering=3"
+ req_components = list(
+ /obj/item/weapon/stock_parts/matter_bin = 1,
+ /obj/item/weapon/stock_parts/micro_laser = 1,
+ /obj/item/stack/cable_coil = 2,
+ /obj/item/weapon/stock_parts/capacitor = 1)
+
+/obj/item/weapon/circuitboard/machine/pacman/super
+ name = "circuit board (SUPERPACMAN-type Generator)"
+ build_path = /obj/machinery/power/port_gen/pacman/super
+ origin_tech = "programming=3;powerstorage=4;engineering=4"
+
+/obj/item/weapon/circuitboard/machine/pacman/mrs
+ name = "circuit board (MRSPACMAN-type Generator)"
+ build_path = "/obj/machinery/power/port_gen/pacman/mrs"
+ origin_tech = "programming=3;powerstorage=5;engineering=5"
/obj/machinery/power/port_gen/pacman/Destroy()
DropFuel()
@@ -316,7 +331,7 @@ display round(lastgen) and plasmatank amount
sheet_path = /obj/item/stack/sheet/mineral/uranium
power_gen = 15000
time_per_sheet = 85
- board_path = "/obj/item/weapon/circuitboard/pacman/super"
+ board_path = /obj/item/weapon/circuitboard/machine/pacman/super
overheat()
explosion(src.loc, 3, 3, 3, -1)
@@ -326,6 +341,6 @@ display round(lastgen) and plasmatank amount
sheet_path = /obj/item/stack/sheet/mineral/diamond
power_gen = 40000
time_per_sheet = 80
- board_path = "/obj/item/weapon/circuitboard/pacman/mrs"
+ board_path = /obj/item/weapon/circuitboard/machine/pacman/mrs
overheat()
explosion(src.loc, 4, 4, 4, -1)
diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm
index 051ca76dc48..660e1b409c1 100644
--- a/code/modules/power/singularity/emitter.dm
+++ b/code/modules/power/singularity/emitter.dm
@@ -29,12 +29,18 @@
/obj/machinery/power/emitter/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/emitter(null)
- component_parts += new /obj/item/weapon/stock_parts/micro_laser(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/emitter(null)
+ B.apply_default_parts(src)
RefreshParts()
+/obj/item/weapon/circuitboard/machine/emitter
+ name = "circuit board (Emitter)"
+ build_path = /obj/machinery/power/emitter
+ origin_tech = "programming=4;powerstorage=5;engineering=5"
+ req_components = list(
+ /obj/item/weapon/stock_parts/micro_laser = 1,
+ /obj/item/weapon/stock_parts/manipulator = 1)
+
/obj/machinery/power/emitter/RefreshParts()
var/max_firedelay = 120
var/firedelay = 120
diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm
index 6543360d433..4cc5fb43e77 100644
--- a/code/modules/power/smes.dm
+++ b/code/modules/power/smes.dm
@@ -44,7 +44,7 @@
/obj/machinery/power/smes/New()
..()
component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/smes(null)
+ component_parts += new /obj/item/weapon/circuitboard/machine/smes(null)
for(var/i in 1 to 5)
component_parts += new /obj/item/weapon/stock_parts/cell/high/empty(null)
component_parts += new /obj/item/stack/cable_coil(null, 5)
diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm
index 48553748ed3..827da56ee9b 100644
--- a/code/modules/power/solar.dm
+++ b/code/modules/power/solar.dm
@@ -442,9 +442,9 @@
if(do_after(user, 20/I.toolspeed, target = src))
if (src.stat & BROKEN)
user << "The broken glass falls out."
- var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc )
+ var/obj/structure/frame/computer/A = new /obj/structure/frame/computer( src.loc )
new /obj/item/weapon/shard( src.loc )
- var/obj/item/weapon/circuitboard/solar_control/M = new /obj/item/weapon/circuitboard/solar_control( A )
+ var/obj/item/weapon/circuitboard/computer/solar_control/M = new /obj/item/weapon/circuitboard/computer/solar_control( A )
for (var/obj/C in src)
C.loc = src.loc
A.circuit = M
@@ -454,8 +454,8 @@
qdel(src)
else
user << "You disconnect the monitor."
- var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc )
- var/obj/item/weapon/circuitboard/solar_control/M = new /obj/item/weapon/circuitboard/solar_control( A )
+ var/obj/structure/frame/computer/A = new /obj/structure/frame/computer( src.loc )
+ var/obj/item/weapon/circuitboard/computer/solar_control/M = new /obj/item/weapon/circuitboard/computer/solar_control( A )
for (var/obj/C in src)
C.loc = src.loc
A.circuit = M
diff --git a/code/modules/power/tesla/coil.dm b/code/modules/power/tesla/coil.dm
index 721fb142ee6..ddb453f9082 100644
--- a/code/modules/power/tesla/coil.dm
+++ b/code/modules/power/tesla/coil.dm
@@ -10,10 +10,14 @@
/obj/machinery/power/tesla_coil/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/tesla_coil(null)
- component_parts += new /obj/item/weapon/stock_parts/capacitor(null)
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/tesla_coil(null)
+ B.apply_default_parts(src)
+
+/obj/item/weapon/circuitboard/machine/tesla_coil
+ name = "circuit board (Tesla Coil)"
+ build_path = /obj/machinery/power/tesla_coil
+ origin_tech = "programming=1;engineering=2;powerstorage=3"
+ req_components = list(/obj/item/weapon/stock_parts/capacitor = 1)
/obj/machinery/power/tesla_coil/RefreshParts()
var/power_multiplier = 0
@@ -62,10 +66,14 @@
/obj/machinery/power/grounding_rod/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/grounding_rod(null)
- component_parts += new /obj/item/weapon/stock_parts/capacitor(null)
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/grounding_rod(null)
+ B.apply_default_parts(src)
+
+/obj/item/weapon/circuitboard/machine/grounding_rod
+ name = "circuit board (Grounding Rod)"
+ build_path = /obj/machinery/power/grounding_rod
+ origin_tech = "programming=1;engineering=1;powerstorage=1"
+ req_components = list(/obj/item/weapon/stock_parts/capacitor = 1)
/obj/machinery/power/grounding_rod/attackby(obj/item/W, mob/user, params)
if(default_deconstruction_screwdriver(user, "grounding_rod", "grounding_rod", W))
diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm
index 1e5036354ad..a4a7f60b165 100644
--- a/code/modules/power/turbine.dm
+++ b/code/modules/power/turbine.dm
@@ -58,7 +58,7 @@
desc = "A computer to remotely control a gas turbine."
icon_screen = "turbinecomp"
icon_keyboard = "tech_key"
- circuit = /obj/item/weapon/circuitboard/turbine_computer
+ circuit = /obj/item/weapon/circuitboard/computer/turbine_computer
var/obj/machinery/power/compressor/compressor
var/id = 0
@@ -66,21 +66,20 @@
/obj/machinery/power/compressor/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/power_compressor(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/stack/cable_coil(null, 5)
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/power_compressor(null)
+ B.apply_default_parts(src)
// The inlet of the compressor is the direction it faces
gas_contained = new
inturf = get_step(src, dir)
+/obj/item/weapon/circuitboard/machine/power_compressor
+ name = "circuit board (Power Compressor)"
+ build_path = /obj/machinery/power/compressor
+ origin_tech = "programming=4;powerstorage=5;engineering=4"
+ req_components = list(
+ /obj/item/stack/cable_coil = 5,
+ /obj/item/weapon/stock_parts/manipulator = 6)
/obj/machinery/power/compressor/initialize()
..()
@@ -188,20 +187,18 @@
/obj/machinery/power/turbine/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/power_turbine(src)
- component_parts += new /obj/item/weapon/stock_parts/capacitor(src)
- component_parts += new /obj/item/weapon/stock_parts/capacitor(src)
- component_parts += new /obj/item/weapon/stock_parts/capacitor(src)
- component_parts += new /obj/item/weapon/stock_parts/capacitor(src)
- component_parts += new /obj/item/weapon/stock_parts/capacitor(src)
- component_parts += new /obj/item/weapon/stock_parts/capacitor(src)
- component_parts += new /obj/item/stack/cable_coil(src, 5)
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/power_turbine(null)
+ B.apply_default_parts(src)
// The outlet is pointed at the direction of the turbine component
-
outturf = get_step(src, dir)
+/obj/item/weapon/circuitboard/machine/power_turbine
+ name = "circuit board (Power Turbine)"
+ build_path = /obj/machinery/power/turbine
+ origin_tech = "programming=4;powerstorage=4;engineering=5"
+ req_components = list(
+ /obj/item/stack/cable_coil = 5,
+ /obj/item/weapon/stock_parts/capacitor = 6)
/obj/machinery/power/turbine/initialize()
..()
diff --git a/code/modules/procedural mapping/mapGenerators/syndicate.dm b/code/modules/procedural mapping/mapGenerators/syndicate.dm
index fc3d9dc0387..98e87a8b91d 100644
--- a/code/modules/procedural mapping/mapGenerators/syndicate.dm
+++ b/code/modules/procedural mapping/mapGenerators/syndicate.dm
@@ -15,7 +15,7 @@
clusterCheckFlags = CLUSTER_CHECK_ALL
spawnableTurfs = list()
spawnableAtoms = list(/obj/structure/table = 20,/obj/structure/chair = 15,/obj/structure/chair/stool = 10, \
- /obj/structure/computerframe = 15, /obj/item/weapon/storage/toolbox/syndicate = 15 ,\
+ /obj/structure/frame/computer = 15, /obj/item/weapon/storage/toolbox/syndicate = 15 ,\
/obj/structure/closet/syndicate = 25, /obj/machinery/suit_storage_unit/syndicate = 15)
/datum/mapGeneratorModule/splatterLayer/syndieMobs
diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
index c36bcf88bc9..38da68a18ad 100644
--- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
@@ -225,7 +225,7 @@
/obj/machinery/chem_dispenser/constructable/New()
..()
component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/chem_dispenser(null)
+ component_parts += new /obj/item/weapon/circuitboard/machine/chem_dispenser(null)
component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
diff --git a/code/modules/reagents/chemistry/machinery/chem_heater.dm b/code/modules/reagents/chemistry/machinery/chem_heater.dm
index edd2c9dd055..5a097bdc746 100644
--- a/code/modules/reagents/chemistry/machinery/chem_heater.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_heater.dm
@@ -13,11 +13,16 @@
/obj/machinery/chem_heater/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/chem_heater(null)
- component_parts += new /obj/item/weapon/stock_parts/micro_laser(null)
- component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/chem_heater(null)
+ B.apply_default_parts(src)
+
+/obj/item/weapon/circuitboard/machine/chem_heater
+ name = "circuit board (Chemical Heater)"
+ build_path = /obj/machinery/chem_heater
+ origin_tech = "materials=2;engineering=2"
+ req_components = list(
+ /obj/item/weapon/stock_parts/micro_laser = 1,
+ /obj/item/weapon/stock_parts/console_screen = 1)
/obj/machinery/chem_heater/RefreshParts()
heater_coefficient = 0.10
diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm
index 8aba55937ef..4730cd0f891 100644
--- a/code/modules/reagents/chemistry/machinery/chem_master.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_master.dm
@@ -1,6 +1,6 @@
/obj/machinery/chem_master
name = "ChemMaster 3000"
- desc = "Used to bottle chemicals to create pills."
+ desc = "Used to seperate chemicals and distribute them in a variety of forms."
density = 1
anchored = 1
icon = 'icons/obj/chemical.dmi'
@@ -16,6 +16,37 @@
/obj/machinery/chem_master/New()
create_reagents(100)
overlays += "waitlight"
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/chem_master(null)
+ B.apply_default_parts(src)
+
+/obj/item/weapon/circuitboard/machine/chem_master
+ name = "circuit board (ChemMaster 3000)"
+ build_path = /obj/machinery/chem_master
+ origin_tech = "materials=2;programming=2;biotech=1"
+ req_components = list(
+ /obj/item/weapon/reagent_containers/glass/beaker = 2,
+ /obj/item/weapon/stock_parts/manipulator = 1,
+ /obj/item/weapon/stock_parts/console_screen = 1)
+
+/obj/item/weapon/circuitboard/machine/chem_master/attackby(obj/item/I, mob/user, params)
+ if(istype(I, /obj/item/weapon/screwdriver))
+ var/new_name = "ChemMaster"
+ var/new_path = /obj/machinery/chem_master
+
+ if(build_path == /obj/machinery/chem_master)
+ new_name = "CondiMaster"
+ new_path = /obj/machinery/chem_master/condimaster
+
+ build_path = new_path
+ name = "circuit board ([new_name] 3000)"
+ user << "You change the circuit board setting to \"[new_name]\"."
+ else
+ return ..()
+
+/obj/machinery/chem_master/RefreshParts()
+ reagents.maximum_volume = 0
+ for(var/obj/item/weapon/reagent_containers/glass/beaker/B in component_parts)
+ reagents.maximum_volume += B.reagents.maximum_volume
/obj/machinery/chem_master/ex_act(severity, target)
if(severity < 3)
@@ -33,6 +64,21 @@
stat |= NOPOWER
/obj/machinery/chem_master/attackby(obj/item/I, mob/user, params)
+ if(default_deconstruction_screwdriver(user, "mixer0_nopower", "mixer0", I))
+ if(beaker)
+ beaker.loc = src.loc
+ beaker = null
+ reagents.clear_reagents()
+ if(bottle)
+ bottle.loc = src.loc
+ bottle = null
+ return
+
+ else if(exchange_parts(user, I))
+ return
+ else if(default_deconstruction_crowbar(I))
+ return
+
if(default_unfasten_wrench(user, I))
return
@@ -329,33 +375,6 @@
desc = "Used to create condiments and other cooking supplies."
condi = 1
-/obj/machinery/chem_master/constructable
- name = "ChemMaster 2999"
- desc = "Used to seperate chemicals and distribute them in a variety of forms."
-
-/obj/machinery/chem_master/constructable/New()
- ..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/chem_master(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
- component_parts += new /obj/item/weapon/reagent_containers/glass/beaker(null)
- component_parts += new /obj/item/weapon/reagent_containers/glass/beaker(null)
-
-/obj/machinery/chem_master/constructable/attackby(obj/item/B, mob/user, params)
- if(default_deconstruction_screwdriver(user, "mixer0_nopower", "mixer0", B))
- if(beaker)
- beaker.loc = src.loc
- beaker = null
- reagents.clear_reagents()
- if(bottle)
- bottle.loc = src.loc
- bottle = null
- return
-
- else if(exchange_parts(user, B))
- return
- else if(default_deconstruction_crowbar(B))
- return
- else
- return ..()
\ No newline at end of file
+/obj/item/weapon/circuitboard/machine/chem_master/condi
+ name = "circuit board (CondiMaster 3000)"
+ build_path = /obj/machinery/chem_master/condimaster
\ No newline at end of file
diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm
index 7fe9064c014..0fc16281542 100644
--- a/code/modules/reagents/chemistry/machinery/pandemic.dm
+++ b/code/modules/reagents/chemistry/machinery/pandemic.dm
@@ -5,7 +5,7 @@
anchored = 1
icon = 'icons/obj/chemical.dmi'
icon_state = "mixer0"
- circuit = /obj/item/weapon/circuitboard/pandemic
+ circuit = /obj/item/weapon/circuitboard/computer/pandemic
use_power = 1
idle_power_usage = 20
var/temp_html = ""
diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm
index b113b49127d..2cdc11189e1 100644
--- a/code/modules/research/circuitprinter.dm
+++ b/code/modules/research/circuitprinter.dm
@@ -32,15 +32,19 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
/obj/machinery/r_n_d/circuit_imprinter/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/circuit_imprinter(src)
- component_parts += new /obj/item/weapon/stock_parts/matter_bin(src)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
- component_parts += new /obj/item/weapon/reagent_containers/glass/beaker(src)
- component_parts += new /obj/item/weapon/reagent_containers/glass/beaker(src)
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/circuit_imprinter(null)
+ B.apply_default_parts(src)
reagents.my_atom = src
+/obj/item/weapon/circuitboard/machine/circuit_imprinter
+ name = "circuit board (Circuit Imprinter)"
+ build_path = /obj/machinery/r_n_d/circuit_imprinter
+ origin_tech = "engineering=2;programming=2"
+ req_components = list(
+ /obj/item/weapon/stock_parts/matter_bin = 1,
+ /obj/item/weapon/stock_parts/manipulator = 1,
+ /obj/item/weapon/reagent_containers/glass/beaker = 2)
+
/obj/machinery/r_n_d/circuit_imprinter/RefreshParts()
var/T = 0
for(var/obj/item/weapon/reagent_containers/glass/G in component_parts)
diff --git a/code/modules/research/designs/AI_module_designs.dm b/code/modules/research/designs/AI_module_designs.dm
index d945d5d79a4..c25d7ffbe13 100644
--- a/code/modules/research/designs/AI_module_designs.dm
+++ b/code/modules/research/designs/AI_module_designs.dm
@@ -2,6 +2,16 @@
//////////AI Module Disks//////////
///////////////////////////////////
+/datum/design/aicore
+ name = "AI Design (AI Core)"
+ desc = "Allows for the construction of circuit boards used to build new AI cores."
+ id = "aicore"
+ req_tech = list("programming" = 4, "biotech" = 3)
+ build_type = IMPRINTER
+ materials = list(MAT_GLASS = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/aicore
+ category = list("AI Modules")
+
/datum/design/safeguard_module
name = "Module Design (Safeguard)"
diff --git a/code/modules/research/designs/comp_board_designs.dm b/code/modules/research/designs/comp_board_designs.dm
index 9eeaebdd865..1da2314a25b 100644
--- a/code/modules/research/designs/comp_board_designs.dm
+++ b/code/modules/research/designs/comp_board_designs.dm
@@ -7,17 +7,7 @@
req_tech = list("programming" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/security
- category = list("Computer Boards")
-
-/datum/design/aicore
- name = "AI Design (AI Core)"
- desc = "Allows for the construction of circuit boards used to build new AI cores."
- id = "aicore"
- req_tech = list("programming" = 4, "biotech" = 3)
- build_type = IMPRINTER
- materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/aicore
+ build_path = /obj/item/weapon/circuitboard/computer/security
category = list("Computer Boards")
/datum/design/aiupload
@@ -27,7 +17,7 @@
req_tech = list("programming" = 4)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/aiupload
+ build_path = /obj/item/weapon/circuitboard/computer/aiupload
category = list("Computer Boards")
/datum/design/borgupload
@@ -37,7 +27,7 @@
req_tech = list("programming" = 4)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/borgupload
+ build_path = /obj/item/weapon/circuitboard/computer/borgupload
category = list("Computer Boards")
/datum/design/med_data
@@ -47,7 +37,7 @@
req_tech = list("programming" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/med_data
+ build_path = /obj/item/weapon/circuitboard/computer/med_data
category = list("Computer Boards")
/datum/design/operating
@@ -57,7 +47,7 @@
req_tech = list("programming" = 2, "biotech" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/operating
+ build_path = /obj/item/weapon/circuitboard/computer/operating
category = list("Computer Boards")
/datum/design/pandemic
@@ -67,7 +57,7 @@
req_tech = list("programming" = 2, "biotech" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/pandemic
+ build_path = /obj/item/weapon/circuitboard/computer/pandemic
category = list("Computer Boards")
/datum/design/scan_console
@@ -77,7 +67,7 @@
req_tech = list("programming" = 2, "biotech" = 3)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/scan_consolenew
+ build_path = /obj/item/weapon/circuitboard/computer/scan_consolenew
category = list("Computer Boards")
/datum/design/comconsole
@@ -87,7 +77,7 @@
req_tech = list("programming" = 2, "magnets" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/communications
+ build_path = /obj/item/weapon/circuitboard/computer/communications
category = list("Computer Boards")
/datum/design/idcardconsole
@@ -97,7 +87,7 @@
req_tech = list("programming" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/card
+ build_path = /obj/item/weapon/circuitboard/computer/card
category = list("Computer Boards")
/datum/design/crewconsole
@@ -107,7 +97,7 @@
req_tech = list("programming" = 3, "magnets" = 2, "biotech" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/crew
+ build_path = /obj/item/weapon/circuitboard/computer/crew
category = list("Computer Boards")
@@ -118,7 +108,7 @@
req_tech = list("programming" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/secure_data
+ build_path = /obj/item/weapon/circuitboard/computer/secure_data
category = list("Computer Boards")
/datum/design/atmosalerts
@@ -128,7 +118,7 @@
req_tech = list("programming" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/atmos_alert
+ build_path = /obj/item/weapon/circuitboard/computer/atmos_alert
category = list("Computer Boards")
/datum/design/atmos_control
@@ -138,7 +128,7 @@
req_tech = list("programming" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/atmos_control
+ build_path = /obj/item/weapon/circuitboard/computer/atmos_control
category = list("Computer Boards")
/datum/design/robocontrol
@@ -148,7 +138,7 @@
req_tech = list("programming" = 4)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/robotics
+ build_path = /obj/item/weapon/circuitboard/computer/robotics
category = list("Computer Boards")
/datum/design/arcadebattle
@@ -158,7 +148,7 @@
req_tech = list("programming" = 1)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/arcade/battle
+ build_path = /obj/item/weapon/circuitboard/computer/arcade/battle
category = list("Computer Boards")
/datum/design/orion_trail
@@ -168,7 +158,7 @@
req_tech = list("programming" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/arcade/orion_trail
+ build_path = /obj/item/weapon/circuitboard/computer/arcade/orion_trail
category = list("Computer Boards")
/datum/design/slot_machine
@@ -178,7 +168,7 @@
req_tech = list("programming" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/slot_machine
+ build_path = /obj/item/weapon/circuitboard/computer/slot_machine
category = list("Computer Boards")
/datum/design/powermonitor
@@ -188,7 +178,7 @@
req_tech = list("programming" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/powermonitor
+ build_path = /obj/item/weapon/circuitboard/computer/powermonitor
category = list("Computer Boards")
/datum/design/solarcontrol
@@ -198,7 +188,7 @@
req_tech = list("programming" = 2, "powerstorage" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/solar_control
+ build_path = /obj/item/weapon/circuitboard/computer/solar_control
category = list("Computer Boards")
/datum/design/prisonmanage
@@ -208,7 +198,7 @@
req_tech = list("programming" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/prisoner
+ build_path = /obj/item/weapon/circuitboard/computer/prisoner
category = list("Computer Boards")
/datum/design/mechacontrol
@@ -218,7 +208,7 @@
req_tech = list("programming" = 3)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/mecha_control
+ build_path = /obj/item/weapon/circuitboard/computer/mecha_control
category = list("Computer Boards")
/datum/design/mechapower
@@ -228,7 +218,7 @@
req_tech = list("programming" = 2, "powerstorage" = 3)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/mech_bay_power_console
+ build_path = /obj/item/weapon/circuitboard/computer/mech_bay_power_console
category = list("Computer Boards")
/datum/design/rdconsole
@@ -238,7 +228,7 @@
req_tech = list("programming" = 4)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/rdconsole
+ build_path = /obj/item/weapon/circuitboard/computer/rdconsole
category = list("Computer Boards")
/datum/design/cargo
@@ -248,7 +238,7 @@
req_tech = list("programming" = 3)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/cargo
+ build_path = /obj/item/weapon/circuitboard/computer/cargo
category = list("Computer Boards")
/datum/design/cargorequest
@@ -258,7 +248,7 @@
req_tech = list("programming" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/cargo/request
+ build_path = /obj/item/weapon/circuitboard/computer/cargo/request
category = list("Computer Boards")
/datum/design/mining
@@ -268,7 +258,7 @@
req_tech = list("programming" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/mining
+ build_path = /obj/item/weapon/circuitboard/computer/mining
category = list("Computer Boards")
/datum/design/comm_monitor
@@ -278,7 +268,7 @@
req_tech = list("programming" = 3)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/comm_monitor
+ build_path = /obj/item/weapon/circuitboard/computer/comm_monitor
category = list("Computer Boards")
/datum/design/comm_server
@@ -288,7 +278,7 @@
req_tech = list("programming" = 3)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/comm_server
+ build_path = /obj/item/weapon/circuitboard/computer/comm_server
category = list("Computer Boards")
/datum/design/message_monitor
@@ -298,7 +288,7 @@
req_tech = list("programming" = 5)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/message_monitor
+ build_path = /obj/item/weapon/circuitboard/computer/message_monitor
category = list("Computer Boards")
/datum/design/aifixer
@@ -308,7 +298,7 @@
req_tech = list("programming" = 3, "biotech" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/aifixer
+ build_path = /obj/item/weapon/circuitboard/computer/aifixer
category = list("Computer Boards")
/datum/design/libraryconsole
@@ -318,5 +308,5 @@
req_tech = list("programming" = 1)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/libraryconsole
+ build_path = /obj/item/weapon/circuitboard/computer/libraryconsole
category = list("Computer Boards")
diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm
index 0a4b1da496b..fe53f327a7e 100644
--- a/code/modules/research/designs/machine_designs.dm
+++ b/code/modules/research/designs/machine_designs.dm
@@ -9,7 +9,7 @@
req_tech = list("programming" = 4, "powerstorage" = 5, "engineering" = 4)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/smes
+ build_path = /obj/item/weapon/circuitboard/machine/smes
category = list ("Engineering Machinery")
/datum/design/announcement_system
@@ -19,7 +19,7 @@
req_tech = list("programming" = 3, "bluespace" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/announcement_system
+ build_path = /obj/item/weapon/circuitboard/machine/announcement_system
category = list("Subspace Telecomms")
/datum/design/turbine_computer
@@ -29,7 +29,7 @@
req_tech = list("programming" = 4, "powerstorage" = 4, "engineering" = 4)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/turbine_computer
+ build_path = /obj/item/weapon/circuitboard/computer/turbine_computer
category = list ("Engineering Machinery")
/datum/design/emitter
@@ -39,7 +39,7 @@
req_tech = list("programming" = 4, "powerstorage" = 5, "engineering" = 5)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/emitter
+ build_path = /obj/item/weapon/circuitboard/machine/emitter
category = list ("Engineering Machinery")
/datum/design/power_compressor
@@ -49,7 +49,7 @@
req_tech = list("programming" = 4, "powerstorage" = 5, "engineering" = 4)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/power_compressor
+ build_path = /obj/item/weapon/circuitboard/machine/power_compressor
category = list ("Engineering Machinery")
/datum/design/power_turbine
@@ -59,7 +59,7 @@
req_tech = list("programming" = 4, "powerstorage" = 4, "engineering" = 5)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/power_turbine
+ build_path = /obj/item/weapon/circuitboard/machine/power_turbine
category = list ("Engineering Machinery")
/datum/design/thermomachine
@@ -69,7 +69,7 @@
req_tech = list("programming" = 3, "plasmatech" = 3)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/thermomachine
+ build_path = /obj/item/weapon/circuitboard/machine/thermomachine
category = list ("Engineering Machinery")
/datum/design/space_heater
@@ -79,7 +79,7 @@
req_tech = list("programming" = 2, "engineering" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/space_heater
+ build_path = /obj/item/weapon/circuitboard/machine/space_heater
category = list ("Engineering Machinery")
/datum/design/teleport_station
@@ -89,7 +89,7 @@
req_tech = list("programming" = 4, "bluespace" = 4, "engineering" = 4)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/teleporter_station
+ build_path = /obj/item/weapon/circuitboard/machine/teleporter_station
category = list ("Teleportation Machinery")
/datum/design/teleport_hub
@@ -99,7 +99,7 @@
req_tech = list("programming" = 3, "bluespace" = 5, "materials" = 4, "engineering" = 5)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/teleporter_hub
+ build_path = /obj/item/weapon/circuitboard/machine/teleporter_hub
category = list ("Teleportation Machinery")
/datum/design/telepad
@@ -109,7 +109,7 @@
req_tech = list("programming" = 4, "bluespace" = 4, "materials" = 3, "engineering" = 3)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/telesci_pad
+ build_path = /obj/item/weapon/circuitboard/machine/telesci_pad
category = list ("Teleportation Machinery")
/datum/design/teleconsole
@@ -119,7 +119,7 @@
req_tech = list("programming" = 3, "bluespace" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/teleporter
+ build_path = /obj/item/weapon/circuitboard/computer/teleporter
category = list("Teleportation Machinery")
/datum/design/telesci_console
@@ -129,7 +129,7 @@
req_tech = list("programming" = 3, "bluespace" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/telesci_console
+ build_path = /obj/item/weapon/circuitboard/computer/telesci_console
category = list("Teleportation Machinery")
/datum/design/sleeper
@@ -139,7 +139,7 @@
req_tech = list("programming" = 3, "biotech" = 2, "materials" = 3, "engineering" = 3)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/sleeper
+ build_path = /obj/item/weapon/circuitboard/machine/sleeper
category = list ("Medical Machinery")
/datum/design/cryotube
@@ -149,7 +149,7 @@
req_tech = list("programming" = 4, "biotech" = 3, "engineering" = 4)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/cryo_tube
+ build_path = /obj/item/weapon/circuitboard/machine/cryo_tube
category = list ("Medical Machinery")
/datum/design/chem_dispenser
@@ -159,7 +159,7 @@
req_tech = list("programming" = 4, "biotech" = 3, "engineering" = 4, "materials" = 4, "plasmatech" = 3)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/chem_dispenser
+ build_path = /obj/item/weapon/circuitboard/machine/chem_dispenser
category = list ("Medical Machinery")
/datum/design/chem_master
@@ -169,7 +169,7 @@
req_tech = list("biotech" = 1, "materials" = 2, "programming" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/chem_master
+ build_path = /obj/item/weapon/circuitboard/machine/chem_master
category = list ("Medical Machinery")
/datum/design/chem_heater
@@ -179,7 +179,7 @@
req_tech = list("engineering" = 2, "materials" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/chem_heater
+ build_path = /obj/item/weapon/circuitboard/machine/chem_heater
category = list ("Medical Machinery")
/datum/design/clonecontrol
@@ -189,7 +189,7 @@
req_tech = list("programming" = 3, "biotech" = 3)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/cloning
+ build_path = /obj/item/weapon/circuitboard/computer/cloning
category = list("Medical Machinery")
/datum/design/clonepod
@@ -199,7 +199,7 @@
req_tech = list("programming" = 3, "biotech" = 3)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/clonepod
+ build_path = /obj/item/weapon/circuitboard/machine/clonepod
category = list("Medical Machinery")
/datum/design/clonescanner
@@ -209,7 +209,7 @@
req_tech = list("programming" = 3, "biotech" = 3)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/clonescanner
+ build_path = /obj/item/weapon/circuitboard/machine/clonescanner
category = list("Medical Machinery")
/datum/design/biogenerator
@@ -219,7 +219,7 @@
req_tech = list("programming" = 3, "biotech" = 2, "materials" = 3)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/biogenerator
+ build_path = /obj/item/weapon/circuitboard/machine/biogenerator
category = list ("Hydroponics Machinery")
/datum/design/hydroponics
@@ -229,7 +229,7 @@
req_tech = list("programming" = 1, "biotech" = 1)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/hydroponics
+ build_path = /obj/item/weapon/circuitboard/machine/hydroponics
category = list ("Hydroponics Machinery")
/datum/design/destructive_analyzer
@@ -239,7 +239,7 @@
req_tech = list("programming" = 2, "magnets" = 2, "engineering" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/destructive_analyzer
+ build_path = /obj/item/weapon/circuitboard/machine/destructive_analyzer
category = list("Research Machinery")
/datum/design/experimentor
@@ -249,7 +249,7 @@
req_tech = list("programming" = 2, "magnets" = 2, "engineering" = 2, "bluespace" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/experimentor
+ build_path = /obj/item/weapon/circuitboard/machine/experimentor
category = list("Research Machinery")
/datum/design/protolathe
@@ -259,7 +259,7 @@
req_tech = list("programming" = 2, "engineering" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/protolathe
+ build_path = /obj/item/weapon/circuitboard/machine/protolathe
category = list("Research Machinery")
/datum/design/circuit_imprinter
@@ -269,7 +269,7 @@
req_tech = list("programming" = 2, "engineering" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/circuit_imprinter
+ build_path = /obj/item/weapon/circuitboard/machine/circuit_imprinter
category = list("Research Machinery")
/datum/design/rdservercontrol
@@ -279,7 +279,7 @@
req_tech = list("programming" = 3)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/rdservercontrol
+ build_path = /obj/item/weapon/circuitboard/computer/rdservercontrol
category = list("Research Machinery")
/datum/design/rdserver
@@ -289,7 +289,7 @@
req_tech = list("programming" = 3)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/rdserver
+ build_path = /obj/item/weapon/circuitboard/machine/rdserver
category = list("Research Machinery")
/datum/design/mechfab
@@ -299,7 +299,7 @@
req_tech = list("programming" = 3, "engineering" = 3)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/mechfab
+ build_path = /obj/item/weapon/circuitboard/machine/mechfab
category = list("Research Machinery")
/datum/design/cyborgrecharger
@@ -309,7 +309,7 @@
req_tech = list("powerstorage" = 3, "engineering" = 3)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/cyborgrecharger
+ build_path = /obj/item/weapon/circuitboard/machine/cyborgrecharger
category = list("Research Machinery")
/datum/design/mech_recharger
@@ -319,7 +319,7 @@
req_tech = list("programming" = 3, "powerstorage" = 4, "engineering" = 4)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/mech_recharger
+ build_path = /obj/item/weapon/circuitboard/machine/mech_recharger
category = list("Research Machinery")
/datum/design/microwave
@@ -329,7 +329,7 @@
req_tech = list("programming" = 1)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/microwave
+ build_path = /obj/item/weapon/circuitboard/machine/microwave
category = list ("Misc. Machinery")
/datum/design/gibber
@@ -339,7 +339,7 @@
req_tech = list("programming" = 1)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/gibber
+ build_path = /obj/item/weapon/circuitboard/machine/gibber
category = list ("Misc. Machinery")
/datum/design/smartfridge
@@ -349,7 +349,7 @@
req_tech = list("programming" = 1)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/smartfridge
+ build_path = /obj/item/weapon/circuitboard/machine/smartfridge
category = list ("Misc. Machinery")
/datum/design/monkey_recycler
@@ -359,7 +359,7 @@
req_tech = list("programming" = 1)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/monkey_recycler
+ build_path = /obj/item/weapon/circuitboard/machine/monkey_recycler
category = list ("Misc. Machinery")
/datum/design/seed_extractor
@@ -369,7 +369,7 @@
req_tech = list("programming" = 1)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/seed_extractor
+ build_path = /obj/item/weapon/circuitboard/machine/seed_extractor
category = list ("Misc. Machinery")
/datum/design/processor
@@ -379,7 +379,7 @@
req_tech = list("programming" = 1)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/processor
+ build_path = /obj/item/weapon/circuitboard/machine/processor
category = list ("Misc. Machinery")
/datum/design/recycler
@@ -389,7 +389,7 @@
req_tech = list("programming" = 1)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/recycler
+ build_path = /obj/item/weapon/circuitboard/machine/recycler
category = list ("Misc. Machinery")
/datum/design/holopad
@@ -399,7 +399,7 @@
req_tech = list("programming" = 1)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/holopad
+ build_path = /obj/item/weapon/circuitboard/machine/holopad
category = list ("Misc. Machinery")
/datum/design/autolathe
@@ -409,7 +409,7 @@
req_tech = list("programming" = 2, "engineering" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/autolathe
+ build_path = /obj/item/weapon/circuitboard/machine/autolathe
category = list ("Misc. Machinery")
/datum/design/recharger
@@ -419,7 +419,7 @@
req_tech = list("powerstorage" = 3, "engineering" = 3, "materials" = 4)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_GOLD = 100)
- build_path = /obj/item/weapon/circuitboard/recharger
+ build_path = /obj/item/weapon/circuitboard/machine/recharger
category = list("Misc. Machinery")
/datum/design/vendor
@@ -429,7 +429,7 @@
req_tech = list("programming" = 1)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/vendor
+ build_path = /obj/item/weapon/circuitboard/machine/vendor
category = list ("Misc. Machinery")
/datum/design/ore_redemption
@@ -439,7 +439,7 @@
req_tech = list("programming" = 1, "engineering" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/ore_redemption
+ build_path = /obj/item/weapon/circuitboard/machine/ore_redemption
category = list ("Misc. Machinery")
@@ -450,7 +450,7 @@
req_tech = list("programming" = 1, "engineering" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/mining_equipment_vendor
+ build_path = /obj/item/weapon/circuitboard/machine/mining_equipment_vendor
category = list ("Misc. Machinery")
/datum/design/tesla_coil
@@ -460,7 +460,7 @@
req_tech = list("programming" = 1)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/tesla_coil
+ build_path = /obj/item/weapon/circuitboard/machine/tesla_coil
category = list ("Misc. Machinery")
/datum/design/grounding_rod
@@ -470,7 +470,7 @@
req_tech = list("programming" = 1)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/grounding_rod
+ build_path = /obj/item/weapon/circuitboard/machine/grounding_rod
category = list ("Misc. Machinery")
/datum/design/plantgenes
@@ -480,5 +480,5 @@
req_tech = list("programming" = 4, "biotech" = 3)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/plantgenes
+ build_path = /obj/item/weapon/circuitboard/machine/plantgenes
category = list ("Misc. Machinery")
diff --git a/code/modules/research/designs/power_designs.dm b/code/modules/research/designs/power_designs.dm
index 0719aafb9e8..11bb5c755be 100644
--- a/code/modules/research/designs/power_designs.dm
+++ b/code/modules/research/designs/power_designs.dm
@@ -79,7 +79,7 @@
build_type = IMPRINTER
reliability = 79
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/pacman
+ build_path = /obj/item/weapon/circuitboard/machine/pacman
category = list("Engineering Machinery")
/datum/design/superpacman
@@ -90,7 +90,7 @@
build_type = IMPRINTER
reliability = 76
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/pacman/super
+ build_path = /obj/item/weapon/circuitboard/machine/pacman/super
category = list("Engineering Machinery")
/datum/design/mrspacman
@@ -101,5 +101,5 @@
build_type = IMPRINTER
reliability = 74
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/pacman/mrs
+ build_path = /obj/item/weapon/circuitboard/machine/pacman/mrs
category = list("Engineering Machinery")
diff --git a/code/modules/research/designs/telecomms_designs.dm b/code/modules/research/designs/telecomms_designs.dm
index 0a36d63e6fa..baa6bb689ba 100644
--- a/code/modules/research/designs/telecomms_designs.dm
+++ b/code/modules/research/designs/telecomms_designs.dm
@@ -9,7 +9,7 @@
req_tech = list("programming" = 2, "engineering" = 2, "bluespace" = 1)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/telecomms/receiver
+ build_path = /obj/item/weapon/circuitboard/machine/telecomms/receiver
category = list("Subspace Telecomms")
/datum/design/telecomms_bus
@@ -19,7 +19,7 @@
req_tech = list("programming" = 2, "engineering" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/telecomms/bus
+ build_path = /obj/item/weapon/circuitboard/machine/telecomms/bus
category = list("Subspace Telecomms")
/datum/design/telecomms_hub
@@ -29,7 +29,7 @@
req_tech = list("programming" = 2, "engineering" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/telecomms/hub
+ build_path = /obj/item/weapon/circuitboard/machine/telecomms/hub
category = list("Subspace Telecomms")
/datum/design/telecomms_relay
@@ -39,7 +39,7 @@
req_tech = list("programming" = 2, "engineering" = 2, "bluespace" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/telecomms/relay
+ build_path = /obj/item/weapon/circuitboard/machine/telecomms/relay
category = list("Subspace Telecomms")
/datum/design/telecomms_processor
@@ -49,7 +49,7 @@
req_tech = list("programming" = 2, "engineering" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/telecomms/processor
+ build_path = /obj/item/weapon/circuitboard/machine/telecomms/processor
category = list("Subspace Telecomms")
/datum/design/telecomms_server
@@ -59,7 +59,7 @@
req_tech = list("programming" = 2, "engineering" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/telecomms/server
+ build_path = /obj/item/weapon/circuitboard/machine/telecomms/server
category = list("Subspace Telecomms")
/datum/design/subspace_broadcaster
@@ -69,5 +69,5 @@
req_tech = list("programming" = 2, "engineering" = 2, "bluespace" = 1)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/telecomms/broadcaster
+ build_path = /obj/item/weapon/circuitboard/machine/telecomms/broadcaster
category = list("Subspace Telecomms")
\ No newline at end of file
diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm
index 85a492092c5..a3b856b5f0f 100644
--- a/code/modules/research/destructive_analyzer.dm
+++ b/code/modules/research/destructive_analyzer.dm
@@ -15,12 +15,17 @@ Note: Must be placed within 3 tiles of the R&D Console
/obj/machinery/r_n_d/destructive_analyzer/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/destructive_analyzer(null)
- component_parts += new /obj/item/weapon/stock_parts/scanning_module(null)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
- component_parts += new /obj/item/weapon/stock_parts/micro_laser(null)
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/destructive_analyzer(null)
+ B.apply_default_parts(src)
+
+/obj/item/weapon/circuitboard/machine/destructive_analyzer
+ name = "circuit board (Destructive Analyzer)"
+ build_path = /obj/machinery/r_n_d/destructive_analyzer
+ origin_tech = "magnets=2;engineering=2;programming=2"
+ req_components = list(
+ /obj/item/weapon/stock_parts/scanning_module = 1,
+ /obj/item/weapon/stock_parts/manipulator = 1,
+ /obj/item/weapon/stock_parts/micro_laser = 1)
/obj/machinery/r_n_d/destructive_analyzer/RefreshParts()
var/T = 0
diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm
index 7ae08a0338b..62216b39872 100644
--- a/code/modules/research/experimentor.dm
+++ b/code/modules/research/experimentor.dm
@@ -81,17 +81,21 @@
/obj/machinery/r_n_d/experimentor/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/experimentor(src)
- component_parts += new /obj/item/weapon/stock_parts/scanning_module(src)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
- component_parts += new /obj/item/weapon/stock_parts/micro_laser(src)
- component_parts += new /obj/item/weapon/stock_parts/micro_laser(src)
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/experimentor(null)
+ B.apply_default_parts(src)
+
trackedIan = locate(/mob/living/simple_animal/pet/dog/corgi/Ian) in mob_list
trackedRuntime = locate(/mob/living/simple_animal/pet/cat/Runtime) in mob_list
SetTypeReactions()
- RefreshParts()
+
+/obj/item/weapon/circuitboard/machine/experimentor
+ name = "circuit board (E.X.P.E.R.I-MENTOR)"
+ build_path = /obj/machinery/r_n_d/experimentor
+ origin_tech = "magnets=1;engineering=1;programming=1;biotech=1;bluespace=2"
+ req_components = list(
+ /obj/item/weapon/stock_parts/scanning_module = 1,
+ /obj/item/weapon/stock_parts/manipulator = 2,
+ /obj/item/weapon/stock_parts/micro_laser = 2)
/obj/machinery/r_n_d/experimentor/RefreshParts()
for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts)
diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm
index e704dd823ae..70c6c1c0451 100644
--- a/code/modules/research/protolathe.dm
+++ b/code/modules/research/protolathe.dm
@@ -34,19 +34,21 @@ Note: Must be placed west/left of and R&D console to function.
/obj/machinery/r_n_d/protolathe/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/protolathe(src)
- component_parts += new /obj/item/weapon/stock_parts/matter_bin(src)
- component_parts += new /obj/item/weapon/stock_parts/matter_bin(src)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
- component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
- component_parts += new /obj/item/weapon/reagent_containers/glass/beaker(src)
- component_parts += new /obj/item/weapon/reagent_containers/glass/beaker(src)
materials = new(src, list(MAT_METAL=1, MAT_GLASS=1, MAT_SILVER=1, MAT_GOLD=1, MAT_DIAMOND=1, MAT_PLASMA=1, MAT_URANIUM=1, MAT_BANANIUM=1))
- RefreshParts()
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/protolathe(null)
+ B.apply_default_parts(src)
reagents.my_atom = src
+/obj/item/weapon/circuitboard/machine/protolathe
+ name = "circuit board (Protolathe)"
+ build_path = /obj/machinery/r_n_d/protolathe
+ origin_tech = "engineering=2;programming=2"
+ req_components = list(
+ /obj/item/weapon/stock_parts/matter_bin = 2,
+ /obj/item/weapon/stock_parts/manipulator = 2,
+ /obj/item/weapon/reagent_containers/glass/beaker = 2)
+
/obj/machinery/r_n_d/protolathe/Destroy()
qdel(materials)
return ..()
diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm
index f8f2ef29743..5da672ae25d 100644
--- a/code/modules/research/rdconsole.dm
+++ b/code/modules/research/rdconsole.dm
@@ -33,7 +33,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
name = "R&D Console"
icon_screen = "rdcomp"
icon_keyboard = "rd_key"
- circuit = /obj/item/weapon/circuitboard/rdconsole
+ circuit = /obj/item/weapon/circuitboard/computer/rdconsole
var/datum/research/files //Stores all the collected research data.
var/obj/item/weapon/disk/tech_disk/t_disk = null //Stores the technology disk.
var/obj/item/weapon/disk/design_disk/d_disk = null //Stores the design disk.
diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm
index dc2192aa25e..1e5e26d41ce 100644
--- a/code/modules/research/server.dm
+++ b/code/modules/research/server.dm
@@ -16,13 +16,17 @@
/obj/machinery/r_n_d/server/New()
..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/rdserver(null)
- component_parts += new /obj/item/weapon/stock_parts/scanning_module(null)
- component_parts += new /obj/item/stack/cable_coil(null, 1)
- component_parts += new /obj/item/stack/cable_coil(null, 1)
- RefreshParts()
- initialize(); //Agouri
+ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/rdserver(null)
+ B.apply_default_parts(src)
+ initialize() //Agouri
+
+/obj/item/weapon/circuitboard/machine/rdserver
+ name = "circuit board (R&D Server)"
+ build_path = /obj/machinery/r_n_d/server
+ origin_tech = "programming=3"
+ req_components = list(
+ /obj/item/stack/cable_coil = 2,
+ /obj/item/weapon/stock_parts/scanning_module = 1)
/obj/machinery/r_n_d/server/Destroy()
griefProtection()
@@ -177,7 +181,7 @@
var/list/servers = list()
var/list/consoles = list()
var/badmin = 0
- circuit = /obj/item/weapon/circuitboard/rdservercontrol
+ circuit = /obj/item/weapon/circuitboard/computer/rdservercontrol
/obj/machinery/computer/rdservercontrol/Topic(href, href_list)
if(..())
diff --git a/code/modules/shuttle/computer.dm b/code/modules/shuttle/computer.dm
index 2b5968cc068..74e2343be67 100644
--- a/code/modules/shuttle/computer.dm
+++ b/code/modules/shuttle/computer.dm
@@ -3,13 +3,13 @@
icon_screen = "shuttle"
icon_keyboard = "tech_key"
req_access = list( )
- circuit = /obj/item/weapon/circuitboard/shuttle
+ circuit = /obj/item/weapon/circuitboard/computer/shuttle
var/shuttleId
var/possible_destinations = ""
var/admin_controlled
var/no_destination_swap = 0
-/obj/machinery/computer/shuttle/New(location, obj/item/weapon/circuitboard/shuttle/C)
+/obj/machinery/computer/shuttle/New(location, obj/item/weapon/circuitboard/computer/shuttle/C)
..()
if(istype(C))
possible_destinations = C.possible_destinations
diff --git a/code/modules/shuttle/ferry.dm b/code/modules/shuttle/ferry.dm
index 0921e074f06..f5b142dc4ed 100644
--- a/code/modules/shuttle/ferry.dm
+++ b/code/modules/shuttle/ferry.dm
@@ -1,13 +1,13 @@
/obj/machinery/computer/shuttle/ferry
name = "transport ferry console"
- circuit = /obj/item/weapon/circuitboard/ferry
+ circuit = /obj/item/weapon/circuitboard/computer/ferry
shuttleId = "ferry"
possible_destinations = "ferry_home;ferry_away"
/obj/machinery/computer/shuttle/ferry/request
name = "ferry console"
- circuit = /obj/item/weapon/circuitboard/ferry/request
+ circuit = /obj/item/weapon/circuitboard/computer/ferry/request
var/cooldown //prevents spamming admins
possible_destinations = "ferry_home"
admin_controlled = 1
diff --git a/code/modules/shuttle/white_ship.dm b/code/modules/shuttle/white_ship.dm
index 4749a5e8d17..924a210e22a 100644
--- a/code/modules/shuttle/white_ship.dm
+++ b/code/modules/shuttle/white_ship.dm
@@ -1,6 +1,6 @@
/obj/machinery/computer/shuttle/white_ship
name = "White Ship Console"
desc = "Used to control the White Ship."
- circuit = /obj/item/weapon/circuitboard/white_ship
+ circuit = /obj/item/weapon/circuitboard/computer/white_ship
shuttleId = "whiteship"
possible_destinations = "whiteship_away;whiteship_home;whiteship_z4;whiteship_lavaland"
\ No newline at end of file
diff --git a/code/modules/telesci/telepad.dm b/code/modules/telesci/telepad.dm
index 8e640ed006d..2259bb961f1 100644
--- a/code/modules/telesci/telepad.dm
+++ b/code/modules/telesci/telepad.dm
@@ -13,7 +13,7 @@
/obj/machinery/telepad/New()
..()
component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/telesci_pad(null)
+ component_parts += new /obj/item/weapon/circuitboard/machine/telesci_pad(null)
component_parts += new /obj/item/weapon/ore/bluespace_crystal/artificial(null)
component_parts += new /obj/item/weapon/ore/bluespace_crystal/artificial(null)
component_parts += new /obj/item/weapon/stock_parts/capacitor(null)
diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm
index e0f333b8007..59237bfd1b0 100644
--- a/code/modules/telesci/telesci_computer.dm
+++ b/code/modules/telesci/telesci_computer.dm
@@ -3,7 +3,7 @@
desc = "Used to teleport objects to and from the telescience telepad."
icon_screen = "teleport"
icon_keyboard = "teleport_key"
- circuit = /obj/item/weapon/circuitboard/telesci_console
+ circuit = /obj/item/weapon/circuitboard/computer/telesci_console
var/sending = 1
var/obj/machinery/telepad/telepad = null
var/temp_msg = "Telescience control console initialized.
Welcome."
diff --git a/icons/obj/stock_parts.dmi b/icons/obj/stock_parts.dmi
index 8b5b5b812e4..6589aabb869 100644
Binary files a/icons/obj/stock_parts.dmi and b/icons/obj/stock_parts.dmi differ