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