diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm index b023aaa4dd0..74453f47c62 100644 --- a/code/_onclick/ai.dm +++ b/code/_onclick/ai.dm @@ -67,6 +67,9 @@ if(modifiers["shift"] && modifiers["alt"]) AltShiftClickOn(A) return + if(modifiers["shift"] && modifiers["middle"]) + ShiftMiddleClickOn(A) + return if(modifiers["middle"]) MiddleClickOn(A) if(controlled_mech) //Are we piloting a mech? Placed here so the modifiers are not overridden. @@ -128,6 +131,8 @@ A.AICtrlShiftClick(src) /mob/living/silicon/ai/AltShiftClickOn(atom/A) A.AIAltShiftClick(src) +/mob/living/silicon/ai/ShiftMiddleClickOn(atom/A) + A.AIShiftMiddleClick(src) /mob/living/silicon/ai/ShiftClickOn(atom/A) A.AIShiftClick(src) /mob/living/silicon/ai/CtrlClickOn(atom/A) @@ -148,6 +153,9 @@ /atom/proc/AIAltShiftClick() return +/atom/proc/AIShiftMiddleClick() + return + /atom/proc/AIShiftClick(mob/living/user) // borgs use this too if(user.client) user.examinate(src) @@ -215,3 +223,8 @@ if(!ai_control_check(user)) return toggle_light(user) + +/obj/machinery/door/airlock/AIShiftMiddleClick(mob/user) // Toggles door timings. + if(!ai_control_check(user)) + return + toggle_speed(user) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 77a4ae192f1..cb483601e26 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -363,9 +363,11 @@ A.AltShiftClick(src) return -/atom/proc/AltShiftClick(mob/user) +/mob/proc/ShiftMiddleClickOn(atom/A) return +/atom/proc/AltShiftClick(mob/user) + return /* Misc helpers diff --git a/code/_onclick/cyborg.dm b/code/_onclick/cyborg.dm index 40fcfc82671..706c9304e20 100644 --- a/code/_onclick/cyborg.dm +++ b/code/_onclick/cyborg.dm @@ -30,6 +30,9 @@ if(modifiers["middle"] && modifiers["ctrl"]) CtrlMiddleClickOn(A) return + if(modifiers["shift"] && modifiers["middle"]) + ShiftMiddleClickOn(A) + return if(modifiers["middle"]) MiddleClickOn(A) return @@ -126,7 +129,8 @@ A.BorgCtrlShiftClick(src) /mob/living/silicon/robot/AltShiftClickOn(atom/A) A.BorgAltShiftClick(src) - +/mob/living/silicon/robot/ShiftMiddleClickOn(atom/A) + A.BorgShiftMiddleClick(src) /atom/proc/BorgShiftClick(mob/user) if(user.client && user.client.eye == user) @@ -148,6 +152,8 @@ /atom/proc/BorgAltShiftClick() return +/atom/proc/BorgShiftMiddleClick() + return // AIRLOCKS @@ -163,6 +169,8 @@ /obj/machinery/door/airlock/BorgAltShiftClick(mob/living/silicon/robot/user) // Enables emergency override on doors! Forwards to AI code. AIAltShiftClick(user) +/obj/machinery/door/airlock/BorgShiftMiddleClick(mob/living/silicon/robot/user) //Toggles door timing. Forwards to AI code. + AIShiftMiddleClick(user) // APC diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index c7cb8b18031..7b2890d97da 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -814,12 +814,7 @@ About the new airlock wires panel: safe = 1 to_chat(usr, "The door safeties have been enabled.") if("speed-toggle") - if(wires.is_cut(WIRE_SPEED)) - to_chat(usr, "The timing wire is cut - Cannot alter timing.") - else if(normalspeed) - normalspeed = 0 - else - normalspeed = 1 + toggle_speed(usr) if("open-close") open_close(usr) else @@ -870,6 +865,17 @@ About the new airlock wires panel: to_chat(user, "Emergency access has been disabled.") update_icon() +/obj/machinery/door/airlock/proc/toggle_speed(mob/user) + if(wires.is_cut(WIRE_SPEED)) + to_chat(user, "The timing wire has been cut - Cannot alter timing.") + return + normalspeed = !normalspeed + + if(normalspeed) + to_chat(user, "The door is now in normal mode.") + else + to_chat(user, "The door is now in fast mode.") + /obj/machinery/door/airlock/attackby(obj/item/C, mob/user, params) add_fingerprint(user) if(!headbutt_shock_check(user))