]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
emag disposal units to disable pressure requirement (#14630)
authordeltanedas <39013340+deltanedas@users.noreply.github.com>
Thu, 23 Mar 2023 14:55:49 +0000 (14:55 +0000)
committerGitHub <noreply@github.com>
Thu, 23 Mar 2023 14:55:49 +0000 (10:55 -0400)
Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs
Content.Shared/Disposal/Components/SharedDisposalUnitComponent.cs
Content.Shared/Disposal/SharedDisposalUnitSystem.cs

index a26b4c877a805dd3a64f8d28a8cb788fb2d5df4e..5a3c2ed6428622fece15443cbe8aecda13bf422a 100644 (file)
@@ -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;
 
index 581332b47f906828fe247fb00d63277f9ee776d9..0da7f75609800f44ba6a8263474cca17508b6562 100644 (file)
@@ -21,6 +21,12 @@ namespace Content.Shared.Disposal.Components
         [DataField("mobsCanEnter")]
         public bool MobsCanEnter = true;
 
+        /// <summary>
+        /// Removes the pressure requirement for flushing.
+        /// </summary>
+        [DataField("disablePressure"), ViewVariables(VVAccess.ReadWrite)]
+        public bool DisablePressure = false;
+
         [Serializable, NetSerializable]
         public enum Visuals : byte
         {
index e0f0faf1a21559d952c08be149f3fd67ef386de2..3171bd227bd0bad6f3f20dab03d94768edc84eb0 100644 (file)
@@ -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<SharedDisposalUnitComponent, PreventCollideEvent>(OnPreventCollide);
             SubscribeLocalEvent<SharedDisposalUnitComponent, CanDropTargetEvent>(OnCanDragDropOn);
+            SubscribeLocalEvent<SharedDisposalUnitComponent, GotEmaggedEvent>(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<TransformComponent>(component.Owner).Anchored)