From bbc93ba3f04c5380c79db9667b3ce51aeed722b5 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Tue, 1 Feb 2022 02:32:18 +0100 Subject: [PATCH] [MIRROR] Stops silicons from opening circuit airlocks by bumping them open [MDB IGNORE] (#11174) * Stops silicons from opening circuit airlocks by bumping them open (#63780) Prevents silicons from easily opening circuit airlocks by simply bumping them open (This happened as airlock/bumpopen(mob/user) called door/proc/bumpopen(mob/user) which called door/allowed(mob/user) which calls obj/allowed(mob/user) which checks for silicons before it checks for check_access) * Stops silicons from opening circuit airlocks by bumping them open Co-authored-by: RandomGamer123 <31096837+RandomGamer123@users.noreply.github.com> --- code/__DEFINES/dcs/signals/signals_object.dm | 3 +++ code/modules/wiremod/shell/airlock.dm | 11 ++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/code/__DEFINES/dcs/signals/signals_object.dm b/code/__DEFINES/dcs/signals/signals_object.dm index 868cc08a43e..8b5723f98f5 100644 --- a/code/__DEFINES/dcs/signals/signals_object.dm +++ b/code/__DEFINES/dcs/signals/signals_object.dm @@ -75,6 +75,9 @@ #define COMSIG_OBJ_ALLOWED "door_try_to_activate" #define COMPONENT_OBJ_ALLOW (1<<0) +#define COMSIG_AIRLOCK_SHELL_ALLOWED "airlock_shell_try_allowed" + #define COMPONENT_AIRLOCK_SHELL_ALLOW (1<<0) + // /obj/machinery/door/airlock signals //from /obj/machinery/door/airlock/open(): (forced) diff --git a/code/modules/wiremod/shell/airlock.dm b/code/modules/wiremod/shell/airlock.dm index 81437a1ff3b..b88740175f2 100644 --- a/code/modules/wiremod/shell/airlock.dm +++ b/code/modules/wiremod/shell/airlock.dm @@ -30,6 +30,11 @@ /obj/machinery/door/airlock/shell/canAIHack(mob/user) return FALSE +/obj/machinery/door/airlock/shell/allowed(mob/user) + if(SEND_SIGNAL(src, COMSIG_AIRLOCK_SHELL_ALLOWED, user) & COMPONENT_AIRLOCK_SHELL_ALLOW) + return TRUE + return isAdminGhostAI(user) + /obj/machinery/door/airlock/shell/set_wires() return new /datum/wires/airlock/shell(src) @@ -151,12 +156,12 @@ . = ..() if(istype(shell, /obj/machinery/door/airlock)) attached_airlock = shell - RegisterSignal(shell, COMSIG_OBJ_ALLOWED, .proc/handle_allowed) + RegisterSignal(shell, COMSIG_AIRLOCK_SHELL_ALLOWED , .proc/handle_allowed) /obj/item/circuit_component/airlock_access_event/unregister_shell(atom/movable/shell) attached_airlock = null UnregisterSignal(shell, list( - COMSIG_OBJ_ALLOWED, + COMSIG_AIRLOCK_SHELL_ALLOWED , )) return ..() @@ -188,4 +193,4 @@ return if(result["should_open"]) - return COMPONENT_OBJ_ALLOW + return COMPONENT_AIRLOCK_SHELL_ALLOW