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