From 68bb57bbaf41b84544ccdeb683ad356e2b344cc6 Mon Sep 17 00:00:00 2001 From: exincore Date: Tue, 5 Mar 2024 01:20:38 -0600 Subject: [PATCH] Fixed Emag wiping door access without bolting open (#25836) --- .../Doors/Systems/SharedDoorSystem.cs | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/Content.Shared/Doors/Systems/SharedDoorSystem.cs b/Content.Shared/Doors/Systems/SharedDoorSystem.cs index da6a91aff2..b58b7b265e 100644 --- a/Content.Shared/Doors/Systems/SharedDoorSystem.cs +++ b/Content.Shared/Doors/Systems/SharedDoorSystem.cs @@ -81,6 +81,7 @@ public abstract partial class SharedDoorSystem : EntitySystem SubscribeLocalEvent(OnWeldChanged); SubscribeLocalEvent(OnPryTimeModifier); + SubscribeLocalEvent(OnAttemptEmag); SubscribeLocalEvent(OnEmagged); } @@ -120,23 +121,34 @@ public abstract partial class SharedDoorSystem : EntitySystem _activeDoors.Remove(door); } - private void OnEmagged(EntityUid uid, DoorComponent door, ref GotEmaggedEvent args) + private void OnAttemptEmag(EntityUid uid, DoorComponent door, ref OnAttemptEmagEvent args) { if (!TryComp(uid, out var airlock)) + { + args.Handled = true; return; + } if (IsBolted(uid) || !airlock.Powered) + { + args.Handled = true; return; + } - if (door.State == DoorState.Closed) + if (door.State != DoorState.Closed) { - if (!SetState(uid, DoorState.Emagging, door)) - return; - Audio.PlayPredicted(door.SparkSound, uid, args.UserUid, AudioParams.Default.WithVolume(8)); args.Handled = true; } } + private void OnEmagged(EntityUid uid, DoorComponent door, ref GotEmaggedEvent args) + { + if (!SetState(uid, DoorState.Emagging, door)) + return; + Audio.PlayPredicted(door.SparkSound, uid, args.UserUid, AudioParams.Default.WithVolume(8)); + args.Handled = true; + } + #region StateManagement private void OnHandleState(Entity ent, ref AfterAutoHandleStateEvent args) { -- 2.51.2