From e91aa75843befe64585312d58175b6c28c684d87 Mon Sep 17 00:00:00 2001 From: Watermelon914 <37270891+Watermelon914@users.noreply.github.com> Date: Thu, 22 Sep 2022 01:35:48 +0100 Subject: [PATCH] Fixed airlock shells made from airlock electronics not triggering AAE circuit component (#69992) Airlock shells made from airlock electronic and door assemblies would not trigger the 'Airlock Access Event' circuit component because the registered signals did not include the signals called by regular airlocks. This fixes that. --- code/__DEFINES/dcs/signals/signals_object.dm | 2 +- code/modules/jobs/access.dm | 5 ++++- code/modules/wiremod/shell/airlock.dm | 14 ++++++++++---- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/code/__DEFINES/dcs/signals/signals_object.dm b/code/__DEFINES/dcs/signals/signals_object.dm index 9965c4e4468..0157acc4024 100644 --- a/code/__DEFINES/dcs/signals/signals_object.dm +++ b/code/__DEFINES/dcs/signals/signals_object.dm @@ -81,9 +81,9 @@ #define COMSIG_OBJ_ALLOWED "door_try_to_activate" #define COMPONENT_OBJ_ALLOW (1<<0) + #define COMPONENT_OBJ_DISALLOW (1<<1) #define COMSIG_AIRLOCK_SHELL_ALLOWED "airlock_shell_try_allowed" - #define COMPONENT_AIRLOCK_SHELL_ALLOW (1<<0) // /obj/machinery/door/airlock signals diff --git a/code/modules/jobs/access.dm b/code/modules/jobs/access.dm index a452b4375ba..42837d56d0c 100644 --- a/code/modules/jobs/access.dm +++ b/code/modules/jobs/access.dm @@ -1,8 +1,11 @@ //returns TRUE if this mob has sufficient access to use this object /obj/proc/allowed(mob/accessor) - if(SEND_SIGNAL(src, COMSIG_OBJ_ALLOWED, accessor) & COMPONENT_OBJ_ALLOW) + var/result_bitflags = SEND_SIGNAL(src, COMSIG_OBJ_ALLOWED, accessor) + if(result_bitflags & COMPONENT_OBJ_ALLOW) return TRUE + if(result_bitflags & COMPONENT_OBJ_DISALLOW) // override all other checks + return FALSE //check if it doesn't require any access at all if(check_access(null)) return TRUE diff --git a/code/modules/wiremod/shell/airlock.dm b/code/modules/wiremod/shell/airlock.dm index eabb37ccfa2..e04f63ce7c7 100644 --- a/code/modules/wiremod/shell/airlock.dm +++ b/code/modules/wiremod/shell/airlock.dm @@ -31,7 +31,7 @@ return FALSE /obj/machinery/door/airlock/shell/allowed(mob/user) - if(SEND_SIGNAL(src, COMSIG_AIRLOCK_SHELL_ALLOWED, user) & COMPONENT_AIRLOCK_SHELL_ALLOW) + if(SEND_SIGNAL(src, COMSIG_AIRLOCK_SHELL_ALLOWED, user) & COMPONENT_OBJ_ALLOW) return TRUE return isAdminGhostAI(user) @@ -156,12 +156,16 @@ . = ..() if(istype(shell, /obj/machinery/door/airlock)) attached_airlock = shell - RegisterSignal(shell, COMSIG_AIRLOCK_SHELL_ALLOWED , .proc/handle_allowed) + RegisterSignal(shell, list( + COMSIG_OBJ_ALLOWED, + 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_AIRLOCK_SHELL_ALLOWED , + COMSIG_OBJ_ALLOWED, + COMSIG_AIRLOCK_SHELL_ALLOWED )) return ..() @@ -193,4 +197,6 @@ return if(result["should_open"]) - return COMPONENT_AIRLOCK_SHELL_ALLOW + return COMPONENT_OBJ_ALLOW + else + return COMPONENT_OBJ_DISALLOW