From 2ec24a29e3cd2975df3d887b681d1e0333464bac Mon Sep 17 00:00:00 2001 From: Atermonera Date: Sat, 21 Dec 2019 22:57:59 -0800 Subject: [PATCH] Merge pull request #6580 from Shadow-Quill/APC-AirAlarm-Alt-Click APCs/Air Alarms can be (un)locked via altclick --- code/game/machinery/alarm.dm | 27 ++++++++++++++--------- code/modules/power/apc.dm | 42 +++++++++++++++++++++--------------- 2 files changed, 42 insertions(+), 27 deletions(-) diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index 62f35df91e9..bc39c938406 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -767,18 +767,25 @@ return if(istype(W, /obj/item/weapon/card/id) || istype(W, /obj/item/device/pda))// trying to unlock the interface with an ID card - if(stat & (NOPOWER|BROKEN)) - user << "It does nothing" - return - else - if(allowed(usr) && !wires.IsIndexCut(AALARM_WIRE_IDSCAN)) - locked = !locked - user << "You [ locked ? "lock" : "unlock"] the Air Alarm interface." - else - user << "Access denied." - return + togglelock() return ..() +/obj/machinery/alarm/verb/togglelock(mob/user as mob) + if(stat & (NOPOWER|BROKEN)) + to_chat(user, "It does nothing.") + return + else + if(allowed(usr) && !wires.IsIndexCut(AALARM_WIRE_IDSCAN)) + locked = !locked + to_chat(user, "You [locked ? "lock" : "unlock"] the Air Alarm interface.") + else + to_chat(user, "Access denied.") + return + +/obj/machinery/alarm/AltClick() + ..() + togglelock() + /obj/machinery/alarm/power_change() ..() spawn(rand(0,15)) diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 7b464f6f503..b1bb7816f1e 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -534,23 +534,8 @@ update_icon() else if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) // trying to unlock the interface with an ID card - if(emagged) - to_chat(user,"The panel is unresponsive.") - else if(opened) - to_chat(user,"You must close the cover to swipe an ID card.") - else if(wiresexposed) - to_chat(user,"You must close the wire panel.") - else if(stat & (BROKEN|MAINT)) - to_chat(user,"Nothing happens.") - else if(hacker) - to_chat(user,"Access denied.") - else - if(src.allowed(usr) && !isWireCut(APC_WIRE_IDSCAN)) - locked = !locked - to_chat(user,"You [ locked ? "lock" : "unlock"] the APC interface.") - update_icon() - else - to_chat(user,"Access denied.") + togglelock() + else if (istype(W, /obj/item/stack/cable_coil) && !terminal && opened && has_electronics!=2) var/turf/T = loc if(istype(T) && !T.is_plating()) @@ -686,6 +671,29 @@ // attack with hand - remove cell (if cover open) or interact with the APC +/obj/machinery/power/apc/verb/togglelock(mob/user as mob) + if(emagged) + to_chat(user,"The panel is unresponsive.") + else if(opened) + to_chat(user,"You must close the cover to swipe an ID card.") + else if(wiresexposed) + to_chat(user,"You must close the wire panel.") + else if(stat & (BROKEN|MAINT)) + to_chat(user,"Nothing happens.") + else if(hacker) + to_chat(user,"Access denied.") + else + if(src.allowed(usr) && !isWireCut(APC_WIRE_IDSCAN)) + locked = !locked + to_chat(user,"You [ locked ? "lock" : "unlock"] the APC interface.") + update_icon() + else + to_chat(user,"Access denied.") + +/obj/machinery/power/apc/AltClick(mob/user) + ..() + togglelock() + /obj/machinery/power/apc/emag_act(var/remaining_charges, var/mob/user) if (!(emagged || hacker)) // trying to unlock with an emag card if(opened)