From dea9d68a48142709e3450fb504e63500b1751d41 Mon Sep 17 00:00:00 2001 From: joep van der velden Date: Thu, 17 Sep 2020 23:36:17 +0200 Subject: [PATCH] Fixes the silicon interactions with airlocks --- code/_onclick/ai.dm | 37 +++-------- code/_onclick/cyborg.dm | 36 +++++------ code/game/machinery/doors/airlock.dm | 97 ++++++++++++++-------------- 3 files changed, 78 insertions(+), 92 deletions(-) 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 27c37f19c1a..6a97c10a4ce 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 @@ -788,29 +788,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.") @@ -822,29 +813,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.") @@ -862,17 +835,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))