diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index af122965dff..8741e28f181 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -26,6 +26,7 @@ powernet = null list/records = null frame_desc = null + contain_parts = 1 /obj/item/weapon/circuitboard/security name = "Circuit board (Security)" diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 59528f18e09..d5fd61c8620 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -89,9 +89,15 @@ del(O) new_machine.component_parts = list() for(var/obj/O in src) - O.loc = new_machine + if(circuit.contain_parts) // things like disposal don't want their parts in them + O.loc = new_machine + else + O.loc = null new_machine.component_parts += O - circuit.loc = new_machine + if(circuit.contain_parts) + circuit.loc = new_machine + else + circuit.loc = null new_machine.RefreshParts() del(src) @@ -240,7 +246,8 @@ obj/item/weapon/circuitboard/rdserver build_path = "/obj/machinery/disposal" board_type = "machine" origin_tech = "engineering=2" - frame_desc = "Requires 1 Matter Bin, and 2 pieces of cable." + frame_desc = "Requires 1 Matter Bin, and 1 piece of cable." + contain_parts = 0 req_components = list( "/obj/item/weapon/stock_parts/matter_bin" = 1, - "/obj/item/weapon/cable_coil" = 3) + "/obj/item/weapon/cable_coil" = 1) diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index a074e6896f2..e4a15e3b6b1 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -56,6 +56,26 @@ update() return + if(istype(I, /obj/item/weapon/weldingtool) && I:welding) + var/obj/item/weapon/weldingtool/W = I + playsound(src.loc, 'Welder.ogg', 100, 1) + var/turf/T = get_turf(user) + user.visible_message("[user] welds apart the disposal.", "You start to weld apart the disposal.") + sleep(40) + if(get_turf(user) == T && W.remove_fuel(2,user)) + var/obj/machinery/constructable_frame/machine_frame/M = new /obj/machinery/constructable_frame/machine_frame(loc) + M.state = 2 + M.icon_state = "box_1" + for(var/obj/O in component_parts) + if(O.reliability != 100 && crit_fail) + O.crit_fail = 1 + O.loc = src.loc + // the stuff still in the disposal + for(var/obj/O in src) + O.loc = src.loc + del(src) + return + var/obj/item/weapon/grab/G = I if(istype(G)) // handle grabbed mob if(ismob(G.affecting)) diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 39d5fd07485..6644f015db6 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -76,6 +76,15 @@ datum materials = list("$glass" = 2000, "acid" = 20) build_path = "/obj/item/weapon/circuitboard/security" + disposal + name = "Circuit Design (Disposal)" + desc = "Allows for the construction of circuit boards used to build disposal bins." + id = "disposal" + req_tech = list("engineering" = 2) + build_type = IMPRINTER + materials = list("$glass" = 2000, "acid" = 20) + build_path = "/obj/item/weapon/circuitboard/disposal" + aicore name = "Circuit Design (AI Core)" desc = "Allows for the construction of circuit boards used to build new AI cores."