diff --git a/Content.Server/Botany/Systems/BotanySwabSystem.cs b/Content.Server/Botany/Systems/BotanySwabSystem.cs index f6190bae4e..e8c7af92c2 100644 --- a/Content.Server/Botany/Systems/BotanySwabSystem.cs +++ b/Content.Server/Botany/Systems/BotanySwabSystem.cs @@ -48,7 +48,7 @@ public sealed class BotanySwabSystem : EntitySystem { Broadcast = true, BreakOnMove = true, - NeedHand = true + NeedHand = true, }); } diff --git a/Content.Server/Construction/ConstructionSystem.Interactions.cs b/Content.Server/Construction/ConstructionSystem.Interactions.cs index c844dd2c9a..426ab6e80f 100644 --- a/Content.Server/Construction/ConstructionSystem.Interactions.cs +++ b/Content.Server/Construction/ConstructionSystem.Interactions.cs @@ -287,7 +287,7 @@ namespace Content.Server.Construction { BreakOnDamage = false, BreakOnMove = true, - NeedHand = true + NeedHand = true, }; var started = _doAfterSystem.TryStartDoAfter(doAfterEventArgs); diff --git a/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs b/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs index 37a5ba2ef8..ba0124626a 100644 --- a/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs +++ b/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs @@ -488,7 +488,7 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem { BreakOnDamage = true, BreakOnMove = true, - NeedHand = false + NeedHand = false, }; _doAfterSystem.TryStartDoAfter(doAfterArgs); diff --git a/Content.Server/Ensnaring/EnsnareableSystem.Ensnaring.cs b/Content.Server/Ensnaring/EnsnareableSystem.Ensnaring.cs index c9dec3782f..7d6963826a 100644 --- a/Content.Server/Ensnaring/EnsnareableSystem.Ensnaring.cs +++ b/Content.Server/Ensnaring/EnsnareableSystem.Ensnaring.cs @@ -128,7 +128,7 @@ public sealed partial class EnsnareableSystem /// The ensnaring component 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(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)) diff --git a/Content.Server/Forensics/Systems/ForensicsSystem.cs b/Content.Server/Forensics/Systems/ForensicsSystem.cs index cd4e2edaec..c0d990aa59 100644 --- a/Content.Server/Forensics/Systems/ForensicsSystem.cs +++ b/Content.Server/Forensics/Systems/ForensicsSystem.cs @@ -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, diff --git a/Content.Server/Kitchen/EntitySystems/KitchenSpikeSystem.cs b/Content.Server/Kitchen/EntitySystems/KitchenSpikeSystem.cs index b145bec014..d89af7e94f 100644 --- a/Content.Server/Kitchen/EntitySystems/KitchenSpikeSystem.cs +++ b/Content.Server/Kitchen/EntitySystems/KitchenSpikeSystem.cs @@ -259,7 +259,8 @@ namespace Content.Server.Kitchen.EntitySystems { BreakOnDamage = true, BreakOnMove = true, - NeedHand = true + NeedHand = true, + BreakOnDropItem = false, }; _doAfter.TryStartDoAfter(doAfterArgs); diff --git a/Content.Server/Kitchen/EntitySystems/SharpSystem.cs b/Content.Server/Kitchen/EntitySystems/SharpSystem.cs index b796687721..99ea516f74 100644 --- a/Content.Server/Kitchen/EntitySystems/SharpSystem.cs +++ b/Content.Server/Kitchen/EntitySystems/SharpSystem.cs @@ -77,7 +77,7 @@ public sealed class SharpSystem : EntitySystem { BreakOnDamage = true, BreakOnMove = true, - NeedHand = true + NeedHand = true, }; _doAfterSystem.TryStartDoAfter(doAfter); return true; diff --git a/Content.Server/MagicMirror/MagicMirrorSystem.cs b/Content.Server/MagicMirror/MagicMirrorSystem.cs index f4f889e549..082fc81bd2 100644 --- a/Content.Server/MagicMirror/MagicMirrorSystem.cs +++ b/Content.Server/MagicMirror/MagicMirrorSystem.cs @@ -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); diff --git a/Content.Server/Medical/BiomassReclaimer/BiomassReclaimerSystem.cs b/Content.Server/Medical/BiomassReclaimer/BiomassReclaimerSystem.cs index a6285294c9..5be93f7fbc 100644 --- a/Content.Server/Medical/BiomassReclaimer/BiomassReclaimerSystem.cs +++ b/Content.Server/Medical/BiomassReclaimer/BiomassReclaimerSystem.cs @@ -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, }); } diff --git a/Content.Server/Medical/DefibrillatorSystem.cs b/Content.Server/Medical/DefibrillatorSystem.cs index b6b50d4215..c9cb6cc58d 100644 --- a/Content.Server/Medical/DefibrillatorSystem.cs +++ b/Content.Server/Medical/DefibrillatorSystem.cs @@ -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 }); diff --git a/Content.Server/Medical/HealthAnalyzerSystem.cs b/Content.Server/Medical/HealthAnalyzerSystem.cs index 98f4f00d89..c770ad9e58 100644 --- a/Content.Server/Medical/HealthAnalyzerSystem.cs +++ b/Content.Server/Medical/HealthAnalyzerSystem.cs @@ -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))); diff --git a/Content.Server/Nuke/NukeSystem.cs b/Content.Server/Nuke/NukeSystem.cs index db425b491e..3146ce6989 100644 --- a/Content.Server/Nuke/NukeSystem.cs +++ b/Content.Server/Nuke/NukeSystem.cs @@ -590,7 +590,7 @@ public sealed class NukeSystem : EntitySystem { BreakOnDamage = true, BreakOnMove = true, - NeedHand = true + NeedHand = true, }; if (!_doAfter.TryStartDoAfter(doAfter)) diff --git a/Content.Server/Power/Generator/PortableGeneratorSystem.cs b/Content.Server/Power/Generator/PortableGeneratorSystem.cs index f7d259b122..0ee228680e 100644 --- a/Content.Server/Power/Generator/PortableGeneratorSystem.cs +++ b/Content.Server/Power/Generator/PortableGeneratorSystem.cs @@ -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, }); } diff --git a/Content.Server/Resist/ResistLockerSystem.cs b/Content.Server/Resist/ResistLockerSystem.cs index 8294ecc5f9..597f3ee8d0 100644 --- a/Content.Server/Resist/ResistLockerSystem.cs +++ b/Content.Server/Resist/ResistLockerSystem.cs @@ -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; diff --git a/Content.Server/SprayPainter/SprayPainterSystem.cs b/Content.Server/SprayPainter/SprayPainterSystem.cs index a8024e2d77..9f6da20fda 100644 --- a/Content.Server/SprayPainter/SprayPainterSystem.cs +++ b/Content.Server/SprayPainter/SprayPainterSystem.cs @@ -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); diff --git a/Content.Server/Sticky/Systems/StickySystem.cs b/Content.Server/Sticky/Systems/StickySystem.cs index 21a7f4d039..23064a93cb 100644 --- a/Content.Server/Sticky/Systems/StickySystem.cs +++ b/Content.Server/Sticky/Systems/StickySystem.cs @@ -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 diff --git a/Content.Shared/Burial/BurialSystem.cs b/Content.Shared/Burial/BurialSystem.cs index c86b2ec024..68b634efc1 100644 --- a/Content.Shared/Burial/BurialSystem.cs +++ b/Content.Shared/Burial/BurialSystem.cs @@ -49,7 +49,6 @@ public sealed class BurialSystem : EntitySystem BreakOnMove = true, BreakOnDamage = true, NeedHand = true, - BreakOnHandChange = true }; if (component.Stream == null) diff --git a/Content.Shared/DoAfter/DoAfterArgs.cs b/Content.Shared/DoAfter/DoAfterArgs.cs index d96ea84e17..ac66278538 100644 --- a/Content.Shared/DoAfter/DoAfterArgs.cs +++ b/Content.Shared/DoAfter/DoAfterArgs.cs @@ -19,14 +19,14 @@ public sealed partial class DoAfterArgs /// /// How long does the do_after require to complete /// - [DataField("delay", required: true)] + [DataField(required: true)] public TimeSpan Delay; /// /// Applicable target (if relevant) /// [NonSerialized] - [DataField("target")] + [DataField] public EntityUid? Target; public NetEntity? NetTarget; @@ -50,7 +50,7 @@ public sealed partial class DoAfterArgs /// /// The event that will get raised when the DoAfter has finished. If null, this will simply raise a /// - [DataField("event", required: true)] + [DataField(required: true)] public DoAfterEvent Event = default!; /// @@ -64,7 +64,7 @@ public sealed partial class DoAfterArgs /// Entity which will receive the directed event. If null, no directed event will be raised. /// [NonSerialized] - [DataField("eventTarget")] + [DataField] public EntityUid? EventTarget; public NetEntity? NetEventTarget; @@ -72,7 +72,7 @@ public sealed partial class DoAfterArgs /// /// Should the DoAfter event broadcast? If this is false, then should be a valid entity. /// - [DataField("broadcast")] + [DataField] public bool Broadcast; #endregion @@ -81,16 +81,24 @@ public sealed partial class DoAfterArgs /// /// Whether or not this do after requires the user to have hands. /// - [DataField("needHand")] + [DataField] public bool NeedHand; /// /// 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 is false. /// - [DataField("breakOnHandChange")] + [DataField] public bool BreakOnHandChange = true; + /// + /// Whether the do-after should get interrupted if we drop the + /// active item we started the do-after with + /// This does nothing if is false. + /// + [DataField] + public bool BreakOnDropItem = true; + /// /// If do_after stops when the user or target moves /// @@ -107,31 +115,31 @@ public sealed partial class DoAfterArgs /// /// Threshold for user and target movement /// - [DataField("movementThreshold")] + [DataField] public float MovementThreshold = 0.3f; /// /// Threshold for distance user from the used OR target entities. /// - [DataField("distanceThreshold")] + [DataField] public float? DistanceThreshold; /// /// Whether damage will cancel the DoAfter. See also . /// - [DataField("breakOnDamage")] + [DataField] public bool BreakOnDamage; /// /// Threshold for user damage. This damage has to be dealt in a single event, not over time. /// - [DataField("damageThreshold")] + [DataField] public FixedPoint2 DamageThreshold = 1; /// /// If true, this DoAfter will be canceled if the user can no longer interact with the target. /// - [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 /// enabled. /// - [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 /// . /// - [DataField("cancelDuplicate")] + [DataField] public bool CancelDuplicate = true; /// @@ -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. /// - [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; diff --git a/Content.Shared/DoAfter/SharedDoAfterSystem.Update.cs b/Content.Shared/DoAfter/SharedDoAfterSystem.Update.cs index ad94f3b940..213dc624b2 100644 --- a/Content.Shared/DoAfter/SharedDoAfterSystem.Update.cs +++ b/Content.Shared/DoAfter/SharedDoAfterSystem.Update.cs @@ -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(); @@ -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)) diff --git a/Content.Shared/DoAfter/SharedDoAfterSystem.cs b/Content.Shared/DoAfter/SharedDoAfterSystem.cs index feda662a7a..86f29fd49c 100644 --- a/Content.Shared/DoAfter/SharedDoAfterSystem.cs +++ b/Content.Shared/DoAfter/SharedDoAfterSystem.cs @@ -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; diff --git a/Content.Shared/Inventory/InventorySystem.Equip.cs b/Content.Shared/Inventory/InventorySystem.Equip.cs index 324d6a7af0..762561ed32 100644 --- a/Content.Shared/Inventory/InventorySystem.Equip.cs +++ b/Content.Shared/Inventory/InventorySystem.Equip.cs @@ -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); diff --git a/Content.Shared/Lock/LockSystem.cs b/Content.Shared/Lock/LockSystem.cs index 8dde767224..3349034f32 100644 --- a/Content.Shared/Lock/LockSystem.cs +++ b/Content.Shared/Lock/LockSystem.cs @@ -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, }); } diff --git a/Content.Shared/Magic/SpellbookSystem.cs b/Content.Shared/Magic/SpellbookSystem.cs index 84b2b23298..ce1628bacb 100644 --- a/Content.Shared/Magic/SpellbookSystem.cs +++ b/Content.Shared/Magic/SpellbookSystem.cs @@ -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); diff --git a/Content.Shared/Salvage/Fulton/SharedFultonSystem.cs b/Content.Shared/Salvage/Fulton/SharedFultonSystem.cs index f94558b0b3..b4b383d800 100644 --- a/Content.Shared/Salvage/Fulton/SharedFultonSystem.cs +++ b/Content.Shared/Salvage/Fulton/SharedFultonSystem.cs @@ -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, diff --git a/Content.Shared/SprayPainter/SharedSprayPainterSystem.cs b/Content.Shared/SprayPainter/SharedSprayPainterSystem.cs index b238c6fc72..0e216db146 100644 --- a/Content.Shared/SprayPainter/SharedSprayPainterSystem.cs +++ b/Content.Shared/SprayPainter/SharedSprayPainterSystem.cs @@ -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; diff --git a/Content.Shared/Storage/EntitySystems/DumpableSystem.cs b/Content.Shared/Storage/EntitySystems/DumpableSystem.cs index 91acde47e1..93c4b69e4d 100644 --- a/Content.Shared/Storage/EntitySystems/DumpableSystem.cs +++ b/Content.Shared/Storage/EntitySystems/DumpableSystem.cs @@ -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, }); } diff --git a/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs b/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs index 868d26c3ae..8ee08f7e48 100644 --- a/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs +++ b/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs @@ -450,7 +450,7 @@ public abstract class SharedStorageSystem : EntitySystem { BreakOnDamage = true, BreakOnMove = true, - NeedHand = true + NeedHand = true, }; _doAfterSystem.TryStartDoAfter(doAfterArgs); diff --git a/Content.Shared/VendingMachines/SharedVendingMachineSystem.Restock.cs b/Content.Shared/VendingMachines/SharedVendingMachineSystem.Restock.cs index 6aef4d0949..f8d00f56f0 100644 --- a/Content.Shared/VendingMachines/SharedVendingMachineSystem.Restock.cs +++ b/Content.Shared/VendingMachines/SharedVendingMachineSystem.Restock.cs @@ -72,7 +72,7 @@ public abstract partial class SharedVendingMachineSystem { BreakOnMove = true, BreakOnDamage = true, - NeedHand = true + NeedHand = true, }; if (!_doAfter.TryStartDoAfter(doAfterArgs)) diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs index 20feb2c952..4c5712c509 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs @@ -81,7 +81,7 @@ public abstract partial class SharedGunSystem { BreakOnMove = true, BreakOnDamage = false, - NeedHand = true + NeedHand = true, }); }