diff --git a/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs b/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs index a26b4c877a..5a3c2ed642 100644 --- a/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs +++ b/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs @@ -552,8 +552,11 @@ namespace Content.Server.Disposal.Unit.EntitySystems component.AutomaticEngageToken?.Cancel(); component.AutomaticEngageToken = null; - component.Pressure = 0; - component.State = SharedDisposalUnitComponent.PressureState.Pressurizing; + if (!component.DisablePressure) + { + component.Pressure = 0; + component.State = SharedDisposalUnitComponent.PressureState.Pressurizing; + } component.Engaged = false; diff --git a/Content.Shared/Disposal/Components/SharedDisposalUnitComponent.cs b/Content.Shared/Disposal/Components/SharedDisposalUnitComponent.cs index 581332b47f..0da7f75609 100644 --- a/Content.Shared/Disposal/Components/SharedDisposalUnitComponent.cs +++ b/Content.Shared/Disposal/Components/SharedDisposalUnitComponent.cs @@ -21,6 +21,12 @@ namespace Content.Shared.Disposal.Components [DataField("mobsCanEnter")] public bool MobsCanEnter = true; + /// + /// Removes the pressure requirement for flushing. + /// + [DataField("disablePressure"), ViewVariables(VVAccess.ReadWrite)] + public bool DisablePressure = false; + [Serializable, NetSerializable] public enum Visuals : byte { diff --git a/Content.Shared/Disposal/SharedDisposalUnitSystem.cs b/Content.Shared/Disposal/SharedDisposalUnitSystem.cs index e0f0faf1a2..3171bd227b 100644 --- a/Content.Shared/Disposal/SharedDisposalUnitSystem.cs +++ b/Content.Shared/Disposal/SharedDisposalUnitSystem.cs @@ -1,6 +1,7 @@ using Content.Shared.Body.Components; using Content.Shared.Disposal.Components; using Content.Shared.DragDrop; +using Content.Shared.Emag.Systems; using Content.Shared.Item; using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; @@ -28,6 +29,7 @@ namespace Content.Shared.Disposal base.Initialize(); SubscribeLocalEvent(OnPreventCollide); SubscribeLocalEvent(OnCanDragDropOn); + SubscribeLocalEvent(OnEmagged); } private void OnPreventCollide(EntityUid uid, SharedDisposalUnitComponent component, ref PreventCollideEvent args) @@ -57,6 +59,12 @@ namespace Content.Shared.Disposal args.Handled = true; } + private void OnEmagged(EntityUid uid, SharedDisposalUnitComponent component, ref GotEmaggedEvent args) + { + component.DisablePressure = true; + args.Handled = true; + } + public virtual bool CanInsert(SharedDisposalUnitComponent component, EntityUid entity) { if (!EntityManager.GetComponent(component.Owner).Anchored)