diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm
index 777a7625fe7..2a55e287913 100644
--- a/code/_onclick/ai.dm
+++ b/code/_onclick/ai.dm
@@ -161,7 +161,7 @@
user.examinate(src)
return
-/atom/proc/AICtrlClick(mob/living/silicon/ai/user)
+/atom/proc/AICtrlClick(mob/living/silicon/user)
return
/atom/proc/AIAltClick(atom/A)
@@ -182,7 +182,7 @@
// TURRETCONTROL
-/obj/machinery/turretid/AICtrlClick(mob/living/silicon/ai/user) //turns off/on Turrets
+/obj/machinery/turretid/AICtrlClick(mob/living/silicon/user) //turns off/on Turrets
enabled = !enabled
updateTurrets()
@@ -194,42 +194,25 @@
// AIRLOCKS
/obj/machinery/door/airlock/AIAltShiftClick(mob/user) // Sets/Unsets Emergency Access Override
- emergency = !emergency
- update_icon()
+ toggle_emergency_status(user)
/obj/machinery/door/airlock/AIShiftClick(mob/user) // Opens and closes doors!
- if(welded)
- to_chat(user, "The airlock has been welded shut!")
- if(locked)
- locked = !locked
- if(density)
- open()
- else
- close()
+ open_close(user)
-/obj/machinery/door/airlock/AICtrlClick(mob/living/silicon/ai/user) // Bolts doors
- locked = !locked
- update_icon()
+/obj/machinery/door/airlock/AICtrlClick(mob/living/silicon/user) // Bolts doors
+ toggle_bolt(user)
-/obj/machinery/door/airlock/AIAltClick(mob/living/silicon/ai/user) // Electrifies doors.
+/obj/machinery/door/airlock/AIAltClick(mob/living/silicon/user) // Electrifies doors.
if(wires.is_cut(WIRE_ELECTRIFY))
to_chat(user, "The electrification wire is cut - Cannot electrify the door.")
if(isElectrified())
- electrify(0) // un-shock
+ electrify(0, user, TRUE) // un-shock
else
- electrify(-1) // permanent shock
+ electrify(-1, user, TRUE) // permanent shock
/obj/machinery/door/airlock/AIMiddleClick(mob/living/user) // Toggles door bolt lights.
- if(wires.is_cut(WIRE_BOLT_LIGHT))
- to_chat(user, "The bolt lights wire has been cut - The door bolt lights are permanently disabled.")
- else if(lights)
- lights = FALSE
- to_chat(user, "The door bolt lights have been disabled.")
- else if(!lights)
- lights = TRUE
- to_chat(user, "The door bolt lights have been enabled.")
- update_icon()
+ toggle_light(user)
// FIRE ALARMS
diff --git a/code/_onclick/cyborg.dm b/code/_onclick/cyborg.dm
index e61b9bdc8b6..f35b2cece0b 100644
--- a/code/_onclick/cyborg.dm
+++ b/code/_onclick/cyborg.dm
@@ -131,47 +131,47 @@
/atom/proc/BorgAltShiftClick()
return
-/obj/machinery/door/airlock/BorgAltShiftClick() // Enables emergency override on doors! Forwards to AI code.
- AIAltShiftClick()
+/obj/machinery/door/airlock/BorgAltShiftClick(mob/living/silicon/robot/user) // Enables emergency override on doors! Forwards to AI code.
+ AIAltShiftClick(user)
/atom/proc/BorgShiftClick(var/mob/user)
if(user.client && user.client.eye == user)
user.examinate(src)
return
-/obj/machinery/door/airlock/BorgShiftClick() // Opens and closes doors! Forwards to AI code.
- AIShiftClick()
+/obj/machinery/door/airlock/BorgShiftClick(mob/living/silicon/robot/user) // Opens and closes doors! Forwards to AI code.
+ AIShiftClick(user)
/atom/proc/BorgCtrlClick(var/mob/living/silicon/robot/user) //forward to human click if not overriden
CtrlClick(user)
-/obj/machinery/door/airlock/BorgCtrlClick() // Bolts doors. Forwards to AI code.
- AICtrlClick()
+/obj/machinery/door/airlock/BorgCtrlClick(mob/living/silicon/robot/user) // Bolts doors. Forwards to AI code.
+ AICtrlClick(user)
-/obj/machinery/power/apc/BorgCtrlClick() // turns off/on APCs. Forwards to AI code.
- AICtrlClick()
+/obj/machinery/power/apc/BorgCtrlClick(mob/living/silicon/robot/user) // turns off/on APCs. Forwards to AI code.
+ AICtrlClick(user)
-/obj/machinery/turretid/BorgCtrlClick() //turret control on/off. Forwards to AI code.
- AICtrlClick()
+/obj/machinery/turretid/BorgCtrlClick(mob/living/silicon/robot/user) //turret control on/off. Forwards to AI code.
+ AICtrlClick(user)
/atom/proc/BorgAltClick(var/mob/living/silicon/robot/user)
AltClick(user)
return
-/obj/machinery/door/airlock/BorgAltClick() // Eletrifies doors. Forwards to AI code.
- AIAltClick()
+/obj/machinery/door/airlock/BorgAltClick(mob/living/silicon/robot/user) // Eletrifies doors. Forwards to AI code.
+ AIAltClick(user)
-/obj/machinery/turretid/BorgAltClick() //turret lethal on/off. Forwards to AI code.
- AIAltClick()
+/obj/machinery/turretid/BorgAltClick(mob/living/silicon/robot/user) //turret lethal on/off. Forwards to AI code.
+ AIAltClick(user)
-/obj/machinery/ai_slipper/BorgCtrlClick() //Turns liquid dispenser on or off
+/obj/machinery/ai_slipper/BorgCtrlClick(mob/living/silicon/robot/user) //Turns liquid dispenser on or off
ToggleOn()
-/obj/machinery/ai_slipper/BorgAltClick() //Dispenses liquid if on
+/obj/machinery/ai_slipper/BorgAltClick(mob/living/silicon/robot/user) //Dispenses liquid if on
Activate()
-/obj/machinery/firealarm/BorgCtrlClick()
- AICtrlClick()
+/obj/machinery/firealarm/BorgCtrlClick(mob/living/silicon/robot/user)
+ AICtrlClick(user)
/*
As with AI, these are not used in click code,
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index ce6afe9311e..f039b2c8a98 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -254,7 +254,7 @@ About the new airlock wires panel:
backup_power_lost_until = main_power_lost_until == 0 ? -1 : 0
update_icon()
-/obj/machinery/door/airlock/proc/electrify(duration, feedback = 0)
+/obj/machinery/door/airlock/proc/electrify(duration, mob/user = usr, feedback = FALSE)
if(electrified_timer)
deltimer(electrified_timer)
electrified_timer = null
@@ -270,10 +270,10 @@ About the new airlock wires panel:
message = "The door is now un-electrified."
electrified_until = 0
else if(duration) //electrify door for the given duration seconds
- if(usr)
- shockedby += text("\[[time_stamp()]\] - [usr](ckey:[usr.ckey])")
- usr.create_attack_log("Electrified the [name] at [x] [y] [z]")
- add_attack_logs(usr, src, "Electrified", ATKLOG_ALL)
+ if(user)
+ shockedby += text("\[[time_stamp()]\] - [user](ckey:[user.ckey])")
+ user.create_attack_log("Electrified the [name] at [x] [y] [z]")
+ add_attack_logs(user, src, "Electrified", ATKLOG_ALL)
else
shockedby += text("\[[time_stamp()]\] - EMP)")
message = "The door is now electrified [duration == -1 ? "permanently" : "for [duration] second\s"]."
@@ -281,7 +281,7 @@ About the new airlock wires panel:
if(duration != -1)
electrified_timer = addtimer(CALLBACK(src, .proc/electrify, 0), duration SECONDS, TIMER_UNIQUE | TIMER_STOPPABLE)
if(feedback && message)
- to_chat(usr, message)
+ to_chat(user, message)
// shock user with probability prb (if all connections & power are working)
// returns 1 if shocked, 0 otherwise
@@ -792,29 +792,20 @@ About the new airlock wires panel:
else
to_chat(usr, "Backup power is already offline.")
if("shock-restore")
- to_chat(usr, "The door is now un-electrified.")
- electrify(0)
+ electrify(0, usr, TRUE)
if("shock-temp")
if(wires.is_cut(WIRE_ELECTRIFY))
to_chat(usr, "The electrification wire is cut - Door permanently electrified.")
. = FALSE
else
//electrify door for 30 seconds
- shockedby += text("\[[time_stamp()]\][usr](ckey:[usr.ckey])")
- usr.create_attack_log("Electrified the [name] at [x] [y] [z]")
- add_attack_logs(usr, src, "Electrified", ATKLOG_ALL)
- to_chat(usr, "The door is now electrified for thirty seconds.")
- electrify(30)
+ electrify(30, usr, TRUE)
if("shock-perm")
if(wires.is_cut(WIRE_ELECTRIFY))
to_chat(usr, "The electrification wire is cut - Cannot electrify the door.")
. = FALSE
else
- shockedby += text("\[[time_stamp()]\][usr](ckey:[usr.ckey])")
- usr.create_attack_log("Electrified the [name] at [x] [y] [z]")
- add_attack_logs(usr, src, "Electrified", ATKLOG_ALL)
- to_chat(usr, "The door is now electrified.")
- electrify(-1)
+ electrify(-1, usr, TRUE)
if("idscan-toggle")
if(wires.is_cut(WIRE_IDSCAN))
to_chat(usr, "The IdScan wire has been cut - IdScan feature permanently disabled.")
@@ -826,29 +817,11 @@ About the new airlock wires panel:
aiDisabledIdScanner = TRUE
to_chat(usr, "IdScan feature has been disabled.")
if("emergency-toggle")
- emergency = !emergency
- if(emergency)
- to_chat(usr, "Emergency access has been enabled.")
- else
- to_chat(usr, "Emergency access has been disabled.")
- update_icon()
+ toggle_emergency_status(usr)
if("bolt-toggle")
- if(wires.is_cut(WIRE_DOOR_BOLTS))
- to_chat(usr, "The door bolt control wire has been cut - Door bolts permanently dropped.")
- else if(lock())
- to_chat(usr, "The door bolts have been dropped.")
- else if(unlock())
- to_chat(usr, "The door bolts have been raised.")
+ toggle_bolt(usr)
if("light-toggle")
- if(wires.is_cut(WIRE_BOLT_LIGHT))
- to_chat(usr, "The bolt lights wire has been cut - The door bolt lights are permanently disabled.")
- else if(lights)
- lights = FALSE
- to_chat(usr, "The door bolt lights have been disabled.")
- else if(!lights)
- lights = TRUE
- to_chat(usr, "The door bolt lights have been enabled.")
- update_icon()
+ toggle_light(usr)
if("safe-toggle")
if(wires.is_cut(WIRE_SAFETY))
to_chat(usr, "The safety wire is cut - Cannot secure the door.")
@@ -866,17 +839,47 @@ About the new airlock wires panel:
else
normalspeed = 1
if("open-close")
- if(welded)
- to_chat(usr, "The airlock has been welded shut!")
- else if(locked)
- to_chat(usr, "The door bolts are down!")
- else if(density)
- open()
- else
- close()
+ open_close(usr)
else
. = FALSE
+/obj/machinery/door/airlock/proc/open_close(mob/user)
+ if(welded)
+ to_chat(user, "The airlock has been welded shut!")
+ else if(locked)
+ to_chat(user, "The door bolts are down!")
+ else if(density)
+ open()
+ else
+ close()
+
+/obj/machinery/door/airlock/proc/toggle_light(mob/user)
+ if(wires.is_cut(WIRE_BOLT_LIGHT))
+ to_chat(user, "The bolt lights wire has been cut - The door bolt lights are permanently disabled.")
+ else if(lights)
+ lights = FALSE
+ to_chat(user, "The door bolt lights have been disabled.")
+ else if(!lights)
+ lights = TRUE
+ to_chat(user, "The door bolt lights have been enabled.")
+ update_icon()
+
+/obj/machinery/door/airlock/proc/toggle_bolt(mob/user)
+ if(wires.is_cut(WIRE_DOOR_BOLTS))
+ to_chat(user, "The door bolt control wire has been cut - Door bolts permanently dropped.")
+ else if(lock())
+ to_chat(user, "The door bolts have been dropped.")
+ else if(unlock())
+ to_chat(user, "The door bolts have been raised.")
+
+/obj/machinery/door/airlock/proc/toggle_emergency_status(mob/user)
+ emergency = !emergency
+ if(emergency)
+ to_chat(user, "Emergency access has been enabled.")
+ else
+ to_chat(user, "Emergency access has been disabled.")
+ update_icon()
+
/obj/machinery/door/airlock/attackby(obj/item/C, mob/user, params)
add_fingerprint(user)
if(!headbutt_shock_check(user))