diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm
index 7f1753a73a..328264c673 100644
--- a/code/game/gamemodes/malfunction/Malf_Modules.dm
+++ b/code/game/gamemodes/malfunction/Malf_Modules.dm
@@ -34,7 +34,7 @@ rcd light flash thingy on matter drain
mod_pick_name = "coreup"
/client/proc/fireproof_core()
- set category = "AI Modules"
+ set category = "Malfunction"
set name = "Fireproof Core"
for(var/mob/living/silicon/ai/ai in world)
ai.fire_res_on_core = 1
@@ -46,7 +46,7 @@ rcd light flash thingy on matter drain
mod_pick_name = "turret"
/client/proc/upgrade_turrets()
- set category = "AI Modules"
+ set category = "Malfunction"
set name = "Upgrade Turrets"
usr.verbs -= /client/proc/upgrade_turrets
for(var/obj/machinery/turret/turret in world)
@@ -58,10 +58,14 @@ rcd light flash thingy on matter drain
mod_pick_name = "rcd"
/client/proc/disable_rcd()
- set category = "AI Modules"
+ set category = "Malfunction"
set name = "Disable RCDs"
- for(var/obj/item/weapon/rcd/rcd in world)
- rcd = new /obj/item/weapon/rcd_fake(rcd)
+ for(var/datum/game_mode/malfunction/AI_Module/large/disable_rcd/rcdmod in usr:current_modules)
+ if(rcdmod.uses > 0)
+ rcdmod.uses --
+ for(var/obj/item/weapon/rcd/rcd in world)
+ rcd = new /obj/item/weapon/rcd_fake(rcd)
+ else usr << "Out of uses."
/datum/game_mode/malfunction/AI_Module/small/overload_machine
module_name = "Machine overload"
@@ -70,6 +74,7 @@ rcd light flash thingy on matter drain
/client/proc/overload_machine(obj/machinery/M as obj in world)
set name = "Overload Machine"
+ set category = "Malfunction"
for(var/datum/game_mode/malfunction/AI_Module/small/overload_machine/overload in usr:current_modules)
if(overload.uses > 0)
overload.uses --
@@ -77,8 +82,7 @@ rcd light flash thingy on matter drain
V.show_message(text("\blue You hear a loud electrical buzzing sound!"))
spawn(50)
explosion(get_turf(M), 0,1,1,0)
- if(overload.uses == 0)
- usr.verbs -= /client/proc/overload_machine
+ else usr << "Out of uses."
/datum/game_mode/malfunction/AI_Module/small/blackout
module_name = "Blackout"
@@ -86,7 +90,7 @@ rcd light flash thingy on matter drain
uses = 3
/client/proc/blackout()
- set category = "AI Modules"
+ set category = "Malfunction"
set name = "Blackout"
for(var/datum/game_mode/malfunction/AI_Module/small/blackout/blackout in usr:current_modules)
if(blackout.uses > 0)
@@ -94,15 +98,14 @@ rcd light flash thingy on matter drain
for(var/obj/machinery/power/apc/apc in world)
if(prob(30))
apc.overload_lighting()
- if(blackout.uses == 0)
- usr.verbs -= /client/proc/blackout
+ else usr << "Out of uses."
/datum/game_mode/malfunction/AI_Module/small/interhack
module_name = "Hack intercept"
mod_pick_name = "interhack"
/client/proc/interhack()
- set category = "AI Modules"
+ set category = "Malfunction"
set name = "Hack intercept"
usr.verbs -= /client/proc/interhack
ticker.mode:hack_intercept()
@@ -114,6 +117,7 @@ rcd light flash thingy on matter drain
/client/proc/reactivate_camera(obj/machinery/camera/C as obj in world)
set name = "Reactivate Camera"
+ set category = "Malfunction"
for(var/datum/game_mode/malfunction/AI_Module/small/reactivate_camera/camera in usr:current_modules)
if(camera.uses > 0)
if(!C.status)
@@ -123,8 +127,7 @@ rcd light flash thingy on matter drain
V.show_message(text("\blue You hear a quiet click."))
else
usr << "This camera is either active, or not repairable."
- if(camera.uses == 0)
- usr.verbs -= /client/proc/reactivate_camera
+ else usr << "Out of uses."
/datum/game_mode/malfunction/AI_Module/module_picker
@@ -153,7 +156,7 @@ rcd light flash thingy on matter drain
dat += "Install Module:
"
dat += "The number afterwards is the amount of processing time it consumes.
"
for(var/datum/game_mode/malfunction/AI_Module/large/module in src.possible_modules)
- dat += "[module.module_name] (55)
"
+ dat += "[module.module_name] (50)
"
for(var/datum/game_mode/malfunction/AI_Module/small/module in src.possible_modules)
dat += "[module.module_name] (15)
"
dat += "
"
@@ -165,37 +168,93 @@ rcd light flash thingy on matter drain
/datum/game_mode/malfunction/AI_Module/module_picker/Topic(href, href_list)
..()
if (href_list["coreup"])
- usr.verbs += /client/proc/fireproof_core
- src.temp = "An upgrade to improve core resistance, making it immune to fire and heat. This effect is permanent. One use."
- src.processing_time -= 50
+ var/already
+ for (var/datum/game_mode/malfunction/AI_Module/mod in usr:current_modules)
+ if(istype(mod, /datum/game_mode/malfunction/AI_Module/large/fireproof_core))
+ already = 1
+ if (!already)
+ usr.verbs += /client/proc/fireproof_core
+ usr:current_modules += new /datum/game_mode/malfunction/AI_Module/large/fireproof_core
+ src.temp = "An upgrade to improve core resistance, making it immune to fire and heat. This effect is permanent."
+ src.processing_time -= 50
+ else src.temp = "This module is only needed once."
+
else if (href_list["turret"])
- usr.verbs += /client/proc/upgrade_turrets
- src.temp = "Improves the firing speed and health of all AI turrets. This effect is permanent. One use."
- src.processing_time -= 50
+ var/already
+ for (var/datum/game_mode/malfunction/AI_Module/mod in usr:current_modules)
+ if(istype(mod, /datum/game_mode/malfunction/AI_Module/large/upgrade_turrets))
+ already = 1
+ if (!already)
+ usr.verbs += /client/proc/upgrade_turrets
+ usr:current_modules += new /datum/game_mode/malfunction/AI_Module/large/upgrade_turrets
+ src.temp = "Improves the firing speed and health of all AI turrets. This effect is permanent."
+ src.processing_time -= 50
+ else src.temp = "This module is only needed once."
+
else if (href_list["rcd"])
- usr.verbs += /client/proc/disable_rcd
- src.temp = "Send a specialised pulse to break all RCD devices on the station. One use."
+ var/already
+ for (var/datum/game_mode/malfunction/AI_Module/mod in usr:current_modules)
+ if(istype(mod, /datum/game_mode/malfunction/AI_Module/large/disable_rcd))
+ mod:uses += 1
+ already = 1
+ if (!already)
+ usr:current_modules += new /datum/game_mode/malfunction/AI_Module/large/disable_rcd
+ usr.verbs += /client/proc/disable_rcd
+ src.temp = "Send a specialised pulse to break all RCD devices on the station."
+ else src.temp = "Additional use added to RCD disabler."
src.processing_time -= 50
+
else if (href_list["overload"])
- usr.verbs += /client/proc/overload_machine
- usr:current_modules += new /datum/game_mode/malfunction/AI_Module/small/overload_machine
- src.temp = "Overloads an electrical machine, causing a small explosion. 2 uses."
+ var/already
+ for (var/datum/game_mode/malfunction/AI_Module/mod in usr:current_modules)
+ if(istype(mod, /datum/game_mode/malfunction/AI_Module/small/overload_machine))
+ mod:uses += 2
+ already = 1
+ if (!already)
+ usr.verbs += /client/proc/overload_machine
+ usr:current_modules += new /datum/game_mode/malfunction/AI_Module/small/overload_machine
+ src.temp = "Overloads an electrical machine, causing a small explosion. 2 uses."
+ else src.temp = "Two additional uses added to Overload module."
src.processing_time -= 15
+
else if (href_list["blackout"])
- usr.verbs += /client/proc/blackout
- src.temp = "Attempts to overload the lighting circuits on the station, destroying some bulbs. 3 uses."
- usr:current_modules += new /datum/game_mode/malfunction/AI_Module/small/blackout
+ var/already
+ for (var/datum/game_mode/malfunction/AI_Module/mod in usr:current_modules)
+ if(istype(mod, /datum/game_mode/malfunction/AI_Module/small/blackout))
+ mod:uses += 3
+ already = 1
+ if (!already)
+ usr.verbs += /client/proc/blackout
+ src.temp = "Attempts to overload the lighting circuits on the station, destroying some bulbs. 3 uses."
+ usr:current_modules += new /datum/game_mode/malfunction/AI_Module/small/blackout
+ else src.temp = "Three additional uses added to Blackout module."
src.processing_time -= 15
+
else if (href_list["interhack"])
- usr.verbs += /client/proc/interhack
- src.temp = "Hacks the status upgrade from Cent. Com, removing any information about malfunctioning electrical systems. One use."
- usr:current_modules += new /datum/game_mode/malfunction/AI_Module/small/interhack
- src.processing_time -= 15
+ var/already
+ for (var/datum/game_mode/malfunction/AI_Module/mod in usr:current_modules)
+ if(istype(mod, /datum/game_mode/malfunction/AI_Module/small/interhack))
+ already = 1
+ if (!already)
+ usr.verbs += /client/proc/interhack
+ src.temp = "Hacks the status upgrade from Cent. Com, removing any information about malfunctioning electrical systems."
+ usr:current_modules += new /datum/game_mode/malfunction/AI_Module/small/interhack
+ src.processing_time -= 15
+ else src.temp = "This module is only needed once."
+
else if (href_list["recam"])
- usr.verbs += /client/proc/reactivate_camera
- src.temp = "Reactivates a currently disabled camera. 10 uses."
- usr:current_modules += new /datum/game_mode/malfunction/AI_Module/small/reactivate_camera
+ var/already
+ for (var/datum/game_mode/malfunction/AI_Module/mod in usr:current_modules)
+ if(istype(mod, /datum/game_mode/malfunction/AI_Module/small/reactivate_camera))
+ mod:uses += 10
+ already = 1
+ if (!already)
+ usr.verbs += /client/proc/reactivate_camera
+ src.temp = "Reactivates a currently disabled camera. 10 uses."
+ usr:current_modules += new /datum/game_mode/malfunction/AI_Module/small/reactivate_camera
+ else src.temp = "Ten additional uses added to ReCam module."
src.processing_time -= 15
+
else
if (href_list["temp"])
src.temp = null