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