]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Add BreakOnDropItem, update do afters, remove unnecessary declarations (#30361)
authorPlykiya <58439124+Plykiya@users.noreply.github.com>
Thu, 8 Aug 2024 11:39:46 +0000 (04:39 -0700)
committerGitHub <noreply@github.com>
Thu, 8 Aug 2024 11:39:46 +0000 (13:39 +0200)
* Add BreakOnDropItem, update do afters, remove unnecessary declarations

* bola

* Changed my mind about the nuke

* gennies too

* Make the comments more clear.

* Sorry for the trailing commas

* Revert "Sorry for the trailing commas"

This reverts commit e60fd9a30977393df3344948e6d5c0ce035723cd.

---------

Co-authored-by: plykiya <plykiya@protonmail.com>
29 files changed:
Content.Server/Botany/Systems/BotanySwabSystem.cs
Content.Server/Construction/ConstructionSystem.Interactions.cs
Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs
Content.Server/Ensnaring/EnsnareableSystem.Ensnaring.cs
Content.Server/Forensics/Systems/ForensicsSystem.cs
Content.Server/Kitchen/EntitySystems/KitchenSpikeSystem.cs
Content.Server/Kitchen/EntitySystems/SharpSystem.cs
Content.Server/MagicMirror/MagicMirrorSystem.cs
Content.Server/Medical/BiomassReclaimer/BiomassReclaimerSystem.cs
Content.Server/Medical/DefibrillatorSystem.cs
Content.Server/Medical/HealthAnalyzerSystem.cs
Content.Server/Nuke/NukeSystem.cs
Content.Server/Power/Generator/PortableGeneratorSystem.cs
Content.Server/Resist/ResistLockerSystem.cs
Content.Server/SprayPainter/SprayPainterSystem.cs
Content.Server/Sticky/Systems/StickySystem.cs
Content.Shared/Burial/BurialSystem.cs
Content.Shared/DoAfter/DoAfterArgs.cs
Content.Shared/DoAfter/SharedDoAfterSystem.Update.cs
Content.Shared/DoAfter/SharedDoAfterSystem.cs
Content.Shared/Inventory/InventorySystem.Equip.cs
Content.Shared/Lock/LockSystem.cs
Content.Shared/Magic/SpellbookSystem.cs
Content.Shared/Salvage/Fulton/SharedFultonSystem.cs
Content.Shared/SprayPainter/SharedSprayPainterSystem.cs
Content.Shared/Storage/EntitySystems/DumpableSystem.cs
Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs
Content.Shared/VendingMachines/SharedVendingMachineSystem.Restock.cs
Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs

index f6190bae4ea24c4391801e2e98b4957968449237..e8c7af92c27bd31df9ccf31e3412e363ab87a6d4 100644 (file)
@@ -48,7 +48,7 @@ public sealed class BotanySwabSystem : EntitySystem
         {
             Broadcast = true,
             BreakOnMove = true,
-            NeedHand = true
+            NeedHand = true,
         });
     }
 
index c844dd2c9adc720046015074e581e3848c5f2cc5..426ab6e80fb942f35bed8947487cf75765e69062 100644 (file)
@@ -287,7 +287,7 @@ namespace Content.Server.Construction
                         {
                             BreakOnDamage = false,
                             BreakOnMove = true,
-                            NeedHand = true
+                            NeedHand = true,
                         };
 
                         var started  = _doAfterSystem.TryStartDoAfter(doAfterEventArgs);
index 37a5ba2ef8e92c5118ae4ef7f075e911505b815a..ba0124626adfab57ea2ca48329d59fbe93200a8e 100644 (file)
@@ -488,7 +488,7 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem
         {
             BreakOnDamage = true,
             BreakOnMove = true,
-            NeedHand = false
+            NeedHand = false,
         };
 
         _doAfterSystem.TryStartDoAfter(doAfterArgs);
index c9dec3782ff2a3b09d19a5b7f189919253452fca..7d6963826ad8bddfbf5a363c6b5249be2fa9ca14 100644 (file)
@@ -128,7 +128,7 @@ public sealed partial class EnsnareableSystem
     /// <param name="component">The ensnaring component</param>
     public void TryFree(EntityUid target, EntityUid user, EntityUid ensnare, EnsnaringComponent component)
     {
-        //Don't do anything if they don't have the ensnareable component.
+        // Don't do anything if they don't have the ensnareable component.
         if (!HasComp<EnsnareableComponent>(target))
             return;
 
@@ -140,7 +140,7 @@ public sealed partial class EnsnareableSystem
             BreakOnMove = breakOnMove,
             BreakOnDamage = false,
             NeedHand = true,
-            BlockDuplicate = true,
+            BreakOnDropItem = false,
         };
 
         if (!_doAfter.TryStartDoAfter(doAfterEventArgs))
index cd4e2edaecae8de430939db2e609e2a9d050f85d..c0d990aa597b6ba509cb4ff59bdac187e9b25543 100644 (file)
@@ -159,7 +159,6 @@ namespace Content.Server.Forensics
                 var cleanDelay = cleanForensicsEntity.Comp.CleanDelay;
                 var doAfterArgs = new DoAfterArgs(EntityManager, user, cleanDelay, new CleanForensicsDoAfterEvent(), cleanForensicsEntity, target: target, used: cleanForensicsEntity)
                 {
-                    BreakOnHandChange = true,
                     NeedHand = true,
                     BreakOnDamage = true,
                     BreakOnMove = true,
index b145bec0148494a5cb5820e6bf224ce755f101ea..d89af7e94f9c58bf4ba6f867b7abaa146b102587 100644 (file)
@@ -259,7 +259,8 @@ namespace Content.Server.Kitchen.EntitySystems
             {
                 BreakOnDamage = true,
                 BreakOnMove = true,
-                NeedHand = true
+                NeedHand = true,
+                BreakOnDropItem = false,
             };
 
             _doAfter.TryStartDoAfter(doAfterArgs);
index b79668772144f406c6f123dd9d2ddb64d760c58e..99ea516f74d26a5656216aafdf47e93b6dda724a 100644 (file)
@@ -77,7 +77,7 @@ public sealed class SharpSystem : EntitySystem
             {
                 BreakOnDamage = true,
                 BreakOnMove = true,
-                NeedHand = true
+                NeedHand = true,
             };
         _doAfterSystem.TryStartDoAfter(doAfter);
         return true;
index f4f889e549749ef8fa6f6e4352040aa8e7f5636d..082fc81bd2bbc91bbce639f5b5664e78e7db1ef7 100644 (file)
@@ -85,8 +85,7 @@ public sealed class MagicMirrorSystem : SharedMagicMirrorSystem
             DistanceThreshold = SharedInteractionSystem.InteractionRange,
             BreakOnDamage = true,
             BreakOnMove = true,
-            BreakOnHandChange = false,
-            NeedHand = true
+            NeedHand = true,
         },
             out var doAfterId);
 
@@ -166,7 +165,6 @@ public sealed class MagicMirrorSystem : SharedMagicMirrorSystem
         {
             BreakOnDamage = true,
             BreakOnMove = true,
-            BreakOnHandChange = false,
             NeedHand = true
         },
             out var doAfterId);
@@ -245,7 +243,6 @@ public sealed class MagicMirrorSystem : SharedMagicMirrorSystem
         {
             DistanceThreshold = SharedInteractionSystem.InteractionRange,
             BreakOnDamage = true,
-            BreakOnHandChange = false,
             NeedHand = true
         },
             out var doAfterId);
@@ -324,8 +321,7 @@ public sealed class MagicMirrorSystem : SharedMagicMirrorSystem
         {
             BreakOnDamage = true,
             BreakOnMove = true,
-            BreakOnHandChange = false,
-            NeedHand = true
+            NeedHand = true,
         },
             out var doAfterId);
 
index a6285294c94c1d7a4ad504dd55723e2c27d36f3d..5be93f7fbc4bdbb9dd4bd34f6463e363a261f43e 100644 (file)
@@ -169,7 +169,7 @@ namespace Content.Server.Medical.BiomassReclaimer
             _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, delay, new ReclaimerDoAfterEvent(), reclaimer, target: args.Target, used: args.Used)
             {
                 NeedHand = true,
-                BreakOnMove = true
+                BreakOnMove = true,
             });
         }
 
index b6b50d4215f56e04c828f7996bdfc4e6348f0430..c9cb6cc58dc2e8db7605a97b4d044b449eb33eb8 100644 (file)
@@ -119,8 +119,6 @@ public sealed class DefibrillatorSystem : EntitySystem
         return _doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, user, component.DoAfterDuration, new DefibrillatorZapDoAfterEvent(),
             uid, target, uid)
             {
-                BlockDuplicate = true,
-                BreakOnHandChange = true,
                 NeedHand = true,
                 BreakOnMove = !component.AllowDoAfterMovement
             });
index 98f4f00d8999690aa4bf5a54358890c8d23648d5..c770ad9e588685d616ac9d132b8a949962bba33f 100644 (file)
@@ -89,7 +89,7 @@ public sealed class HealthAnalyzerSystem : EntitySystem
         _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, uid.Comp.ScanDelay, new HealthAnalyzerDoAfterEvent(), uid, target: args.Target, used: uid)
         {
             NeedHand = true,
-            BreakOnMove = true
+            BreakOnMove = true,
         });
 
         var msg = Loc.GetString("health-analyzer-popup-scan-target", ("user", Identity.Entity(args.User, EntityManager)));
index db425b491eb550d75b739abffacad5907fffe45e..3146ce69894e20f406f3feaca6a81868b09f2b11 100644 (file)
@@ -590,7 +590,7 @@ public sealed class NukeSystem : EntitySystem
         {
             BreakOnDamage = true,
             BreakOnMove = true,
-            NeedHand = true
+            NeedHand = true,
         };
 
         if (!_doAfter.TryStartDoAfter(doAfter))
index f7d259b122a343a78f9f53c596d2e6bdf83aa609..0ee228680ebbae9a46b36c4c9b1fce035b689d25 100644 (file)
@@ -73,8 +73,10 @@ public sealed class PortableGeneratorSystem : SharedPortableGeneratorSystem
 
         _doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, user, component.StartTime, new GeneratorStartedEvent(), uid, uid)
         {
-            BreakOnDamage = true, BreakOnMove = true, RequireCanInteract = true,
-            NeedHand = true
+            BreakOnDamage = true,
+            BreakOnMove = true,
+            NeedHand = true,
+            BreakOnDropItem = false,
         });
     }
 
index 8294ecc5f9d536af1edd297a8125247227c779dc..597f3ee8d09b8eae0a5e2ed61c754bfe0829bd25 100644 (file)
@@ -54,7 +54,7 @@ public sealed class ResistLockerSystem : EntitySystem
         {
             BreakOnMove = true,
             BreakOnDamage = true,
-            NeedHand = false //No hands 'cause we be kickin'
+            NeedHand = false, //No hands 'cause we be kickin'
         };
 
         resistLockerComponent.IsResisting = true;
index a8024e2d77b884cc97a59095f8b588df783bb170..9f6da20fda13340b019c83bb66b268c4ade726fc 100644 (file)
@@ -57,10 +57,9 @@ public sealed class SprayPainterSystem : SharedSprayPainterSystem
         {
             BreakOnMove = true,
             BreakOnDamage = true,
-            CancelDuplicate = true,
             // multiple pipes can be sprayed at once just not the same one
             DuplicateCondition = DuplicateConditions.SameTarget,
-            NeedHand = true
+            NeedHand = true,
         };
 
         args.Handled = DoAfter.TryStartDoAfter(doAfterEventArgs);
index 21a7f4d039599f0f3c386f284dd04378b88f6b96..23064a93cbffacf01e52281e2914ce416e37d8e6 100644 (file)
@@ -95,7 +95,7 @@ public sealed class StickySystem : EntitySystem
             _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, delay, new StickyDoAfterEvent(), uid, target: target, used: uid)
             {
                 BreakOnMove = true,
-                NeedHand = true
+                NeedHand = true,
             });
         }
         else
@@ -149,7 +149,7 @@ public sealed class StickySystem : EntitySystem
             _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, delay, new StickyDoAfterEvent(), uid, target: uid)
             {
                 BreakOnMove = true,
-                NeedHand = true
+                NeedHand = true,
             });
         }
         else
index c86b2ec024873ee0e6b5384b2d123a56c8930e2e..68b634efc1279e496c486611fabca61bd38a065d 100644 (file)
@@ -49,7 +49,6 @@ public sealed class BurialSystem : EntitySystem
                 BreakOnMove = true,
                 BreakOnDamage = true,
                 NeedHand = true,
-                BreakOnHandChange = true
             };
 
             if (component.Stream == null)
index d96ea84e1720e9b2eca410da166c87bc37cd1d6c..ac66278538587ff7a8d9bb1c9ad7dd3353f960e3 100644 (file)
@@ -19,14 +19,14 @@ public sealed partial class DoAfterArgs
     /// <summary>
     ///     How long does the do_after require to complete
     /// </summary>
-    [DataField("delay", required: true)]
+    [DataField(required: true)]
     public TimeSpan Delay;
 
     /// <summary>
     ///     Applicable target (if relevant)
     /// </summary>
     [NonSerialized]
-    [DataField("target")]
+    [DataField]
     public EntityUid? Target;
 
     public NetEntity? NetTarget;
@@ -50,7 +50,7 @@ public sealed partial class DoAfterArgs
     /// <summary>
     ///     The event that will get raised when the DoAfter has finished. If null, this will simply raise a <see cref="SimpleDoAfterEvent"/>
     /// </summary>
-    [DataField("event", required: true)]
+    [DataField(required: true)]
     public DoAfterEvent Event = default!;
 
     /// <summary>
@@ -64,7 +64,7 @@ public sealed partial class DoAfterArgs
     ///     Entity which will receive the directed event. If null, no directed event will be raised.
     /// </summary>
     [NonSerialized]
-    [DataField("eventTarget")]
+    [DataField]
     public EntityUid? EventTarget;
 
     public NetEntity? NetEventTarget;
@@ -72,7 +72,7 @@ public sealed partial class DoAfterArgs
     /// <summary>
     /// Should the DoAfter event broadcast? If this is false, then <see cref="EventTarget"/> should be a valid entity.
     /// </summary>
-    [DataField("broadcast")]
+    [DataField]
     public bool Broadcast;
     #endregion
 
@@ -81,16 +81,24 @@ public sealed partial class DoAfterArgs
     /// <summary>
     ///     Whether or not this do after requires the user to have hands.
     /// </summary>
-    [DataField("needHand")]
+    [DataField]
     public bool NeedHand;
 
     /// <summary>
     ///     Whether we need to keep our active hand as is (i.e. can't change hand or change item). This also covers
     ///     requiring the hand to be free (if applicable). This does nothing if <see cref="NeedHand"/> is false.
     /// </summary>
-    [DataField("breakOnHandChange")]
+    [DataField]
     public bool BreakOnHandChange = true;
 
+    /// <summary>
+    ///     Whether the do-after should get interrupted if we drop the
+    ///     active item we started the do-after with
+    ///     This does nothing if <see cref="NeedHand"/> is false.
+    /// </summary>
+    [DataField]
+    public bool BreakOnDropItem = true;
+
     /// <summary>
     ///     If do_after stops when the user or target moves
     /// </summary>
@@ -107,31 +115,31 @@ public sealed partial class DoAfterArgs
     /// <summary>
     ///     Threshold for user and target movement
     /// </summary>
-    [DataField("movementThreshold")]
+    [DataField]
     public float MovementThreshold = 0.3f;
 
     /// <summary>
     ///     Threshold for distance user from the used OR target entities.
     /// </summary>
-    [DataField("distanceThreshold")]
+    [DataField]
     public float? DistanceThreshold;
 
     /// <summary>
     ///     Whether damage will cancel the DoAfter. See also <see cref="DamageThreshold"/>.
     /// </summary>
-    [DataField("breakOnDamage")]
+    [DataField]
     public bool BreakOnDamage;
 
     /// <summary>
     ///     Threshold for user damage. This damage has to be dealt in a single event, not over time.
     /// </summary>
-    [DataField("damageThreshold")]
+    [DataField]
     public FixedPoint2 DamageThreshold = 1;
 
     /// <summary>
     ///     If true, this DoAfter will be canceled if the user can no longer interact with the target.
     /// </summary>
-    [DataField("requireCanInteract")]
+    [DataField]
     public bool RequireCanInteract = true;
     #endregion
 
@@ -143,7 +151,7 @@ public sealed partial class DoAfterArgs
     ///     Note that this will block even if the duplicate is cancelled because either DoAfter had
     ///     <see cref="CancelDuplicate"/> enabled.
     /// </remarks>
-    [DataField("blockDuplicate")]
+    [DataField]
     public bool BlockDuplicate = true;
 
     //TODO: User pref to not cancel on second use on specific doafters
@@ -151,7 +159,7 @@ public sealed partial class DoAfterArgs
     ///     If true, this will cancel any duplicate DoAfters when attempting to add a new DoAfter. See also
     ///     <see cref="DuplicateConditions"/>.
     /// </summary>
-    [DataField("cancelDuplicate")]
+    [DataField]
     public bool CancelDuplicate = true;
 
     /// <summary>
@@ -162,7 +170,7 @@ public sealed partial class DoAfterArgs
     ///     Note that both DoAfters may have their own conditions, and they will be considered duplicated if either set
     ///     of conditions is satisfied.
     /// </remarks>
-    [DataField("duplicateCondition")]
+    [DataField]
     public DuplicateConditions DuplicateCondition = DuplicateConditions.All;
     #endregion
 
@@ -244,6 +252,7 @@ public sealed partial class DoAfterArgs
         Broadcast = other.Broadcast;
         NeedHand = other.NeedHand;
         BreakOnHandChange = other.BreakOnHandChange;
+        BreakOnDropItem = other.BreakOnDropItem;
         BreakOnMove = other.BreakOnMove;
         BreakOnWeightlessMove = other.BreakOnWeightlessMove;
         MovementThreshold = other.MovementThreshold;
index ad94f3b94086e1b218464f5d285bd366f1417d95..213dc624b262e76da8a545b763d4bad0ca566013 100644 (file)
@@ -1,5 +1,6 @@
 using Content.Shared.Gravity;
 using Content.Shared.Hands.Components;
+using Content.Shared.Hands.EntitySystems;
 using Content.Shared.Interaction;
 using Content.Shared.Physics;
 using Robust.Shared.Utility;
@@ -11,6 +12,7 @@ public abstract partial class SharedDoAfterSystem : EntitySystem
     [Dependency] private readonly IDynamicTypeFactory _factory = default!;
     [Dependency] private readonly SharedGravitySystem _gravity = default!;
     [Dependency] private readonly SharedInteractionSystem _interaction = default!;
+    [Dependency] private readonly SharedHandsSystem _hands = default!;
 
     private DoAfter[] _doAfters = Array.Empty<DoAfter>();
 
@@ -217,16 +219,22 @@ public abstract partial class SharedDoAfterSystem : EntitySystem
         if (args.AttemptFrequency == AttemptFrequency.EveryTick && !TryAttemptEvent(doAfter))
             return true;
 
+        // Check if the do-after requires hands to perform at first
+        // For example, you need hands to strip clothes off of someone
+        // This does not mean their hand needs to be empty.
         if (args.NeedHand)
         {
             if (!handsQuery.TryGetComponent(args.User, out var hands) || hands.Count == 0)
                 return true;
 
-            if (args.BreakOnHandChange && (hands.ActiveHand?.Name != doAfter.InitialHand
-                                           || hands.ActiveHandEntity != doAfter.InitialItem))
-            {
+            // If an item was in the user's hand to begin with,
+            // check if the user is no longer holding the item.
+            if (args.BreakOnDropItem && !_hands.IsHolding((args.User, hands), doAfter.InitialItem))
+                    return true;
+
+            // If the user changes which hand is active at all, interrupt the do-after
+            if (args.BreakOnHandChange && hands.ActiveHand?.Name != doAfter.InitialHand)
                 return true;
-            }
         }
 
         if (args.RequireCanInteract && !_actionBlocker.CanInteract(args.User, args.Target))
index feda662a7a85c93c43b92640ca2c4b3de6b755aa..86f29fd49c8ab98607ee7ae254e78c9126aacc87 100644 (file)
@@ -227,7 +227,7 @@ public abstract partial class SharedDoAfterSystem : EntitySystem
 
         // For this we need to stay on the same hand slot and need the same item in that hand slot
         // (or if there is no item there we need to keep it free).
-        if (args.NeedHand && args.BreakOnHandChange)
+        if (args.NeedHand && (args.BreakOnHandChange || args.BreakOnDropItem))
         {
             if (!TryComp(args.User, out HandsComponent? handsComponent))
                 return false;
index 324d6a7af029a8b0d219dd3b11473157bd7d7b1f..762561ed32233fa252147bffae4717d1338b9df4 100644 (file)
@@ -169,12 +169,8 @@ public abstract partial class InventorySystem
                 target,
                 itemUid)
             {
-                BlockDuplicate = true,
-                BreakOnHandChange = true,
                 BreakOnMove = true,
-                CancelDuplicate = true,
-                RequireCanInteract = true,
-                NeedHand = true
+                NeedHand = true,
             };
 
             _doAfter.TryStartDoAfter(args);
@@ -420,12 +416,8 @@ public abstract partial class InventorySystem
                 target,
                 removedItem.Value)
             {
-                BlockDuplicate = true,
-                BreakOnHandChange = true,
                 BreakOnMove = true,
-                CancelDuplicate = true,
-                RequireCanInteract = true,
-                NeedHand = true
+                NeedHand = true,
             };
 
             _doAfter.TryStartDoAfter(args);
index 8dde7672243133690480777e28e5905cf9304070..3349034f32e2dd189010c99348938bda956ef16a 100644 (file)
@@ -124,8 +124,10 @@ public sealed class LockSystem : EntitySystem
             return _doAfter.TryStartDoAfter(
                 new DoAfterArgs(EntityManager, user, lockComp.LockTime, new LockDoAfter(), uid, uid)
                 {
-                    BreakOnDamage = true, BreakOnMove = true, RequireCanInteract = true,
-                    NeedHand = true
+                    BreakOnDamage = true,
+                    BreakOnMove = true,
+                    NeedHand = true,
+                    BreakOnDropItem = false,
                 });
         }
 
@@ -200,8 +202,10 @@ public sealed class LockSystem : EntitySystem
             return _doAfter.TryStartDoAfter(
                 new DoAfterArgs(EntityManager, user, lockComp.LockTime, new UnlockDoAfter(), uid, uid)
                 {
-                    BreakOnDamage = true, BreakOnMove = true, RequireCanInteract = true,
-                    NeedHand = true
+                    BreakOnDamage = true,
+                    BreakOnMove = true,
+                    NeedHand = true,
+                    BreakOnDropItem = false,
                 });
         }
 
index 84b2b23298083e7c5ccd293b706007686e56da10..ce1628bacbf4ad702f7ea967a16521cf0fdaed25 100644 (file)
@@ -88,7 +88,7 @@ public sealed class SpellbookSystem : EntitySystem
         {
             BreakOnMove = true,
             BreakOnDamage = true,
-            NeedHand = true //What, are you going to read with your eyes only??
+            NeedHand = true, //What, are you going to read with your eyes only??
         };
 
         _doAfter.TryStartDoAfter(doAfterEventArgs);
index f94558b0b30f384b9fbb26a626baf8a39bdfc0c9..b4b383d8000357e0dedd3deac77e00aad4eaf06e 100644 (file)
@@ -153,7 +153,6 @@ public abstract partial class SharedFultonSystem : EntitySystem
         _doAfter.TryStartDoAfter(
             new DoAfterArgs(EntityManager, args.User, component.ApplyFultonDuration, ev, args.Target, args.Target, args.Used)
             {
-                CancelDuplicate = true,
                 MovementThreshold = 0.5f,
                 BreakOnMove = true,
                 Broadcast = true,
index b238c6fc722a5e7adad3fa53f8d5f5a2f86953e9..0e216db1467622a8ab271271b8c11c832f56dc96 100644 (file)
@@ -133,7 +133,7 @@ public abstract class SharedSprayPainterSystem : EntitySystem
         {
             BreakOnMove = true,
             BreakOnDamage = true,
-            NeedHand = true
+            NeedHand = true,
         };
         if (!DoAfter.TryStartDoAfter(doAfterEventArgs, out var id))
             return;
index 91acde47e19daddbc7ee72eae6d88625e58e4480..93c4b69e4ddd571a46307a8b6187e958fb74e8c2 100644 (file)
@@ -133,7 +133,7 @@ public sealed class DumpableSystem : EntitySystem
         _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, userUid, delay, new DumpableDoAfterEvent(), storageUid, target: targetUid, used: storageUid)
         {
             BreakOnMove = true,
-            NeedHand = true
+            NeedHand = true,
         });
     }
 
index 868d26c3aeab0fb98f046c5255d2be5f99f383e7..8ee08f7e48cde1a17469ea82295c5fdb52385976 100644 (file)
@@ -450,7 +450,7 @@ public abstract class SharedStorageSystem : EntitySystem
                 {
                     BreakOnDamage = true,
                     BreakOnMove = true,
-                    NeedHand = true
+                    NeedHand = true,
                 };
 
                 _doAfterSystem.TryStartDoAfter(doAfterArgs);
index 6aef4d0949adb759d03a2006bdfa7cf9b34e44b6..f8d00f56f033fa5a2bb3b0aa132c50fca7e98126 100644 (file)
@@ -72,7 +72,7 @@ public abstract partial class SharedVendingMachineSystem
         {
             BreakOnMove = true,
             BreakOnDamage = true,
-            NeedHand = true
+            NeedHand = true,
         };
 
         if (!_doAfter.TryStartDoAfter(doAfterArgs))
index 20feb2c952278a7198ddcbe292710326b6d77c98..4c5712c5093bcdebf4b382119782aee60ab0e4ad 100644 (file)
@@ -81,7 +81,7 @@ public abstract partial class SharedGunSystem
         {
             BreakOnMove = true,
             BreakOnDamage = false,
-            NeedHand = true
+            NeedHand = true,
         });
     }