diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm
index 316f9f248d..10fe6d9172 100644
--- a/code/modules/atmospherics/machinery/airalarm.dm
+++ b/code/modules/atmospherics/machinery/airalarm.dm
@@ -678,15 +678,7 @@
update_icon()
return
else if(istype(W, /obj/item/card/id) || istype(W, /obj/item/device/pda))// trying to unlock the interface with an ID card
- if(stat & (NOPOWER|BROKEN))
- to_chat(user, "It does nothing!")
- else
- if(src.allowed(usr) && !wires.is_cut(WIRE_IDSCAN))
- locked = !locked
- to_chat(user, "You [ locked ? "lock" : "unlock"] the air alarm interface.")
- else
- to_chat(user, "Access denied.")
- return
+ togglelock(user)
else if(panel_open && is_wire_tool(W))
wires.interact(user)
return
@@ -751,6 +743,25 @@
return
return ..()
+
+/obj/machinery/airalarm/AltClick(mob/user)
+ ..()
+ if(!issilicon(user) && (!user.canUseTopic(src, be_close=TRUE) || !isturf(loc)))
+ to_chat(user, "You can't do that right now!")
+ return
+ else
+ togglelock(user)
+
+/obj/machinery/airalarm/proc/togglelock(mob/living/user)
+ if(stat & (NOPOWER|BROKEN))
+ to_chat(user, "It does nothing!")
+ else
+ if(src.allowed(usr) && !wires.is_cut(WIRE_IDSCAN))
+ locked = !locked
+ to_chat(user, "You [ locked ? "lock" : "unlock"] the air alarm interface.")
+ else
+ to_chat(user, "Access denied.")
+ return
/obj/machinery/airalarm/power_change()
..()
diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm
index cab682857a..ce1148f985 100644
--- a/code/modules/power/apc.dm
+++ b/code/modules/power/apc.dm
@@ -487,21 +487,7 @@
update_icon()
else if (W.GetID()) // trying to unlock the interface with an ID card
- if(emagged)
- to_chat(user, "The interface is broken!")
- else if(opened)
- to_chat(user, "You must close the cover to swipe an ID card!")
- else if(panel_open)
- to_chat(user, "You must close the panel!")
- else if(stat & (BROKEN|MAINT))
- to_chat(user, "Nothing happens!")
- else
- if(allowed(usr) && !wires.is_cut(WIRE_IDSCAN) && !malfhack)
- locked = !locked
- to_chat(user, "You [ locked ? "lock" : "unlock"] the APC interface.")
- update_icon()
- else
- to_chat(user, "Access denied.")
+ togglelock(user)
else if (istype(W, /obj/item/stack/cable_coil) && opened)
var/turf/host_turf = get_turf(src)
@@ -671,6 +657,31 @@
wires.interact(user)
else
return ..()
+
+/obj/machinery/power/apc/AltClick(mob/user)
+ ..()
+ if(!issilicon(user) && (!user.canUseTopic(src, be_close=TRUE) || !isturf(loc)))
+ to_chat(user, "You can't do that right now!")
+ return
+ else
+ togglelock(user)
+
+/obj/machinery/power/apc/proc/togglelock(mob/living/user)
+ if(emagged)
+ to_chat(user, "The interface is broken!")
+ else if(opened)
+ to_chat(user, "You must close the cover to swipe an ID card!")
+ else if(panel_open)
+ to_chat(user, "You must close the panel!")
+ else if(stat & (BROKEN|MAINT))
+ to_chat(user, "Nothing happens!")
+ else
+ if(allowed(usr) && !wires.is_cut(WIRE_IDSCAN) && !malfhack)
+ locked = !locked
+ to_chat(user, "You [ locked ? "lock" : "unlock"] the APC interface.")
+ update_icon()
+ else
+ to_chat(user, "Access denied.")
/obj/machinery/power/apc/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir)
if(damage_flag == "melee" && damage_amount < 15 && (!(stat & BROKEN) || malfai))