diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index aea140d1dc9..6d829e5e35d 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -1215,6 +1215,8 @@ name = "power control module" icon_state = "power_mod" desc = "Heavy-duty switching circuits for power control." + m_amt = 50 + g_amt = 50 /obj/item/weapon/module/id_auth name = "ID authentication module" diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index d01e0b90887..b0d4fca9418 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -236,6 +236,8 @@ var/global/list/autolathe_recipes = list( \ new /obj/item/clothing/head/helmet/welding(), \ new /obj/item/weapon/stock_parts/console_screen(), \ new /obj/item/weapon/airlock_electronics(), \ + new /obj/item/weapon/module/power_control(), \ + new /obj/item/weapon/circuitboard/disposal(), \ new /obj/item/stack/sheet/metal(), \ new /obj/item/stack/sheet/glass(), \ new /obj/item/stack/sheet/rglass(), \ 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 b813c76ef5b..ab538ee70cf 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) @@ -234,3 +240,16 @@ obj/item/weapon/circuitboard/rdserver "/obj/item/weapon/stock_parts/micro_laser" = 1, "/obj/item/weapon/stock_parts/console_screen" = 1, "/obj/item/weapon/cable_coil" = 2,) + +/obj/item/weapon/circuitboard/disposal + name = "Circuit board (Disposal)" + build_path = "/obj/machinery/disposal" + board_type = "machine" + origin_tech = "engineering=2" + 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" = 1) + m_amt = 50 + g_amt = 50 \ No newline at end of file diff --git a/code/game/magic/musician.dm b/code/game/magic/musician.dm index b85c161bb12..0d9d94e5572 100644 --- a/code/game/magic/musician.dm +++ b/code/game/magic/musician.dm @@ -392,7 +392,7 @@ for(var/i=2 to lentext(note)) var/ni = copytext(note,i,i+1) if(!text2num(ni)) - if(ni == "#" || ni == "b") + if(ni == "#" || ni == "b" || ni == "n") cur_acc[cur_note] = ni else if(ni == "s") cur_acc[cur_note] = "#" // so shift is never required 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))