From 069ea2e31542513de0aff343d36ff603e56d19f7 Mon Sep 17 00:00:00 2001 From: vulppine Date: Mon, 22 Aug 2022 16:33:13 -0700 Subject: [PATCH] autocloses firelocks --- .../Doors/Components/FirelockComponent.cs | 2 ++ Content.Server/Doors/Systems/FirelockSystem.cs | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/Content.Server/Doors/Components/FirelockComponent.cs b/Content.Server/Doors/Components/FirelockComponent.cs index 665d46f39e..248d080948 100644 --- a/Content.Server/Doors/Components/FirelockComponent.cs +++ b/Content.Server/Doors/Components/FirelockComponent.cs @@ -25,6 +25,8 @@ namespace Content.Server.Doors.Components [DataField("lockedPryTimeModifier")] public float LockedPryTimeModifier = 1.5f; + [DataField("autocloseDelay")] public TimeSpan AutocloseDelay = TimeSpan.FromSeconds(3f); + public bool EmergencyPressureStop() { var doorSys = EntitySystem.Get(); diff --git a/Content.Server/Doors/Systems/FirelockSystem.cs b/Content.Server/Doors/Systems/FirelockSystem.cs index d6281302b9..511577f29f 100644 --- a/Content.Server/Doors/Systems/FirelockSystem.cs +++ b/Content.Server/Doors/Systems/FirelockSystem.cs @@ -22,6 +22,7 @@ namespace Content.Server.Doors.Systems SubscribeLocalEvent(OnBeforeDoorDenied); SubscribeLocalEvent(OnDoorGetPryTimeModifier); SubscribeLocalEvent(OnBeforeDoorPry); + SubscribeLocalEvent(OnUpdateState); SubscribeLocalEvent(OnBeforeDoorAutoclose); SubscribeLocalEvent(OnAtmosAlarm); @@ -61,6 +62,18 @@ namespace Content.Server.Doors.Systems } } + private void OnUpdateState(EntityUid uid, FirelockComponent component, DoorStateChangedEvent args) + { + var ev = new BeforeDoorAutoCloseEvent(); + RaiseLocalEvent(uid, ev); + if (ev.Cancelled) + { + return; + } + + _doorSystem.SetNextStateChange(uid, component.AutocloseDelay); + } + private void OnBeforeDoorAutoclose(EntityUid uid, FirelockComponent component, BeforeDoorAutoCloseEvent args) { // Make firelocks autoclose, but only if the last alarm type it