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)))