From f0d1f668fe7899cdfedffe2310d131a96e574a0f Mon Sep 17 00:00:00 2001 From: Manoob Date: Fri, 24 Jul 2026 19:28:00 +0200 Subject: [PATCH] FIX: Emergency access doesn't change the BOLT/Emergency permissions on a door using remote control (#6141) AA doesnt change the BOLT/AA permissions on a door using remote control! --- .../EntitySystems/SharedDoorRemoteSystem.cs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Content.Shared/Remotes/EntitySystems/SharedDoorRemoteSystem.cs b/Content.Shared/Remotes/EntitySystems/SharedDoorRemoteSystem.cs index 48e1b7a11e5..81f4d90c72d 100644 --- a/Content.Shared/Remotes/EntitySystems/SharedDoorRemoteSystem.cs +++ b/Content.Shared/Remotes/EntitySystems/SharedDoorRemoteSystem.cs @@ -1,4 +1,5 @@ using Content.Shared.Access.Components; +using Content.Shared.Access.Systems; // DeltaV using Content.Shared.Administration.Logs; using Content.Shared.Database; using Content.Shared.Doors.Components; @@ -19,6 +20,7 @@ namespace Content.Shared.Remotes.EntitySystems; public abstract class SharedDoorRemoteSystem : EntitySystem { [Dependency] private readonly SharedAirlockSystem _airlock = default!; + [Dependency] private readonly AccessReaderSystem _accessReader = default!; // DeltaV [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly SharedDoorSystem _doorSystem = default!; [Dependency] private readonly SharedElectrocutionSystem _electrify = default!; @@ -96,6 +98,19 @@ public abstract class SharedDoorRemoteSystem : EntitySystem else if (entity.Comp.RequireTagWhitelist) return; + // Begin DeltaV - Emergency access only bypasses open/close; bolting and toggling emergency access still require actual access. + if (entity.Comp.Mode != OperatingMode.OpenClose + && accessComponent != null + && !_accessReader.IsAllowed(accessTarget, args.Target.Value, accessComponent)) + { + if (isAirlock) + _doorSystem.Deny(args.Target.Value, doorComp, user: args.User, predicted: true); + + _popup.PopupClient(Loc.GetString("door-remote-denied"), args.User, args.User); + return; + } + // End DeltaV + switch (entity.Comp.Mode) { case OperatingMode.OpenClose: