diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm index 90e8eaaf814..622ec56bf4f 100644 --- a/code/game/gamemodes/malfunction/Malf_Modules.dm +++ b/code/game/gamemodes/malfunction/Malf_Modules.dm @@ -81,7 +81,6 @@ rcd light flash thingy on matter drain mod_pick_name = "lockdown" description = "Overload the airlock, blast door and fire control networks, locking them down. Caution! This command also electrifies all airlocks. The networks will automatically reset after 120 seconds." cost = 20 - uses = 1 power_type = /mob/living/silicon/ai/proc/lockdown @@ -148,10 +147,10 @@ rcd light flash thingy on matter drain minor_announcement.Announce("Automatic system reboot complete. Have a secure day.","Network Reset") -/datum/AI_Module/large/disable_rcd - module_name = "RCD Disable" +/datum/AI_Module/large/destroy_rcd + module_name = "Destroy RCDs" mod_pick_name = "rcd" - description = "Send a specialised pulse to break all hand-held and exosuit Rapid Cconstruction Devices on the station." + description = "Send a specialised pulse to detonate all hand-held and exosuit Rapid Cconstruction Devices on the station." cost = 25 one_time = 1 @@ -159,19 +158,24 @@ rcd light flash thingy on matter drain /mob/living/silicon/ai/proc/disable_rcd() set category = "Malfunction" - set name = "Disable RCDs" - set desc = "Disable all RCD devices on the station, while sparing onboard cyborg RCDs." + set name = "Destroy RCDs" + set desc = "Detonate all RCDs on the station, while sparing onboard cyborg RCDs." - if(stat) + if(stat || malf_cooldown) return - for(var/obj/item/weapon/rcd/RCD in rcd_list) - if(!istype(/obj/item/weapon/rcd/borg, RCD)) //Ensures that cyborg RCDs are spared. - RCD.disabled = 1 - for(var/obj/item/mecha_parts/mecha_equipment/tool/rcd/MRCD in rcd_list) - MRCD.disabled = 1 + for(var/obj/item/RCD in rcd_list) + if(!istype(RCD, /obj/item/weapon/rcd/borg)) //Ensures that cyborg RCDs are spared. + RCD.audible_message("[RCD] begins to vibrate and buzz loudly!","[RCD] begins vibrating violently!") + spawn(50) //5 seconds to get rid of it! + if(RCD) //Make sure it still exists (In case of chain-reaction) + explosion(RCD, 0, 0, 3, 1, flame_range = 1) + qdel(RCD) - src << "RCD-disabling pulse emitted." + src << "RCD detonation pulse emitted." + malf_cooldown = 1 + spawn(100) + malf_cooldown = 0 /datum/AI_Module/large/mecha_domination module_name = "Viral Mech Domination" diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm index c127723f704..9882151bb21 100644 --- a/code/game/mecha/equipment/tools/tools.dm +++ b/code/game/mecha/equipment/tools/tools.dm @@ -282,7 +282,6 @@ construction_time = 1200 construction_cost = list("metal"=30000,"plasma"=25000,"silver"=20000,"gold"=20000) var/mode = 0 //0 - deconstruct, 1 - wall or floor, 2 - airlock. - var/disabled = 0 //malf var/canRwall = 0 New() @@ -298,7 +297,7 @@ return if(!istype(target, /turf) && !istype(target, /obj/machinery/door/airlock)) target = get_turf(target) - if(!action_checks(target) || disabled || get_dist(chassis, target)>3) return + if(!action_checks(target) || get_dist(chassis, target)>3) return playsound(chassis, 'sound/machines/click.ogg', 50, 1) //meh switch(mode) @@ -309,7 +308,6 @@ occupant_message("Deconstructing [target]...") set_ready_state(0) if(do_after_cooldown(target)) - if(disabled) return chassis.spark_system.start() target:ChangeTurf(/turf/simulated/floor/plating) playsound(target, 'sound/items/Deconstruct.ogg', 50, 1) @@ -318,7 +316,6 @@ occupant_message("Deconstructing [target]...") set_ready_state(0) if(do_after_cooldown(target)) - if(disabled) return chassis.spark_system.start() target:ChangeTurf(/turf/space) playsound(target, 'sound/items/Deconstruct.ogg', 50, 1) @@ -327,7 +324,6 @@ occupant_message("Deconstructing [target]...") set_ready_state(0) if(do_after_cooldown(target)) - if(disabled) return chassis.spark_system.start() qdel(target) playsound(target, 'sound/items/Deconstruct.ogg', 50, 1) @@ -337,7 +333,6 @@ occupant_message("Building Floor...") set_ready_state(0) if(do_after_cooldown(target)) - if(disabled) return target:ChangeTurf(/turf/simulated/floor/plating) playsound(target, 'sound/items/Deconstruct.ogg', 50, 1) chassis.spark_system.start() @@ -346,7 +341,6 @@ occupant_message("Building Wall...") set_ready_state(0) if(do_after_cooldown(target)) - if(disabled) return target:ChangeTurf(/turf/simulated/wall) playsound(target, 'sound/items/Deconstruct.ogg', 50, 1) chassis.spark_system.start() @@ -356,7 +350,6 @@ occupant_message("Building Airlock...") set_ready_state(0) if(do_after_cooldown(target)) - if(disabled) return chassis.spark_system.start() var/obj/machinery/door/airlock/T = new /obj/machinery/door/airlock(target) T.autoclose = 1 diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index 3330a3831cf..2d788e219a4 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -26,8 +26,6 @@ RCD var/working = 0 var/mode = 1 var/canRwall = 0 - var/disabled = 0 - New() desc = "A RCD. It currently holds [matter]/[max_matter] matter-units." @@ -88,8 +86,6 @@ RCD afterattack(atom/A, mob/user, proximity) if(!proximity) return - if(disabled && !isrobot(user)) - return 0 if(istype(A,/area/shuttle)||istype(A,/turf/space/transit)) return 0 if(!(istype(A, /turf) || istype(A, /obj/machinery/door/airlock)))