diff --git a/Content.Server/Access/Systems/AccessOverriderSystem.cs b/Content.Server/Access/Systems/AccessOverriderSystem.cs index 10d7fd0f7a..684312c7c1 100644 --- a/Content.Server/Access/Systems/AccessOverriderSystem.cs +++ b/Content.Server/Access/Systems/AccessOverriderSystem.cs @@ -55,8 +55,7 @@ public sealed class AccessOverriderSystem : SharedAccessOverriderSystem var doAfterEventArgs = new DoAfterArgs(EntityManager, args.User, component.DoAfter, new AccessOverriderDoAfterEvent(), uid, target: args.Target, used: uid) { - BreakOnTargetMove = true, - BreakOnUserMove = true, + BreakOnMove = true, BreakOnDamage = true, NeedHand = true, }; diff --git a/Content.Server/Animals/Systems/UdderSystem.cs b/Content.Server/Animals/Systems/UdderSystem.cs index ef43c2c89d..b7856e9042 100644 --- a/Content.Server/Animals/Systems/UdderSystem.cs +++ b/Content.Server/Animals/Systems/UdderSystem.cs @@ -15,7 +15,7 @@ using Robust.Shared.Timing; namespace Content.Server.Animals.Systems; /// -/// Gives ability to produce milkable reagents, produces endless if the +/// Gives ability to produce milkable reagents, produces endless if the /// owner has no HungerComponent /// internal sealed class UdderSystem : EntitySystem @@ -76,9 +76,8 @@ internal sealed class UdderSystem : EntitySystem var doargs = new DoAfterArgs(EntityManager, userUid, 5, new MilkingDoAfterEvent(), udder, udder, used: containerUid) { - BreakOnUserMove = true, + BreakOnMove = true, BreakOnDamage = true, - BreakOnTargetMove = true, MovementThreshold = 1.0f, }; diff --git a/Content.Server/Body/Systems/InternalsSystem.cs b/Content.Server/Body/Systems/InternalsSystem.cs index 007cbdf084..004dae99b9 100644 --- a/Content.Server/Body/Systems/InternalsSystem.cs +++ b/Content.Server/Body/Systems/InternalsSystem.cs @@ -109,9 +109,8 @@ public sealed class InternalsSystem : EntitySystem _doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, user, delay, new InternalsDoAfterEvent(), target, target: target) { - BreakOnUserMove = true, BreakOnDamage = true, - BreakOnTargetMove = true, + BreakOnMove = true, MovementThreshold = 0.1f, }); } diff --git a/Content.Server/Botany/Systems/BotanySwabSystem.cs b/Content.Server/Botany/Systems/BotanySwabSystem.cs index 8f300c9448..f6190bae4e 100644 --- a/Content.Server/Botany/Systems/BotanySwabSystem.cs +++ b/Content.Server/Botany/Systems/BotanySwabSystem.cs @@ -47,8 +47,7 @@ public sealed class BotanySwabSystem : EntitySystem _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, swab.SwabDelay, new BotanySwabDoAfterEvent(), uid, target: args.Target, used: uid) { Broadcast = true, - BreakOnTargetMove = true, - BreakOnUserMove = true, + BreakOnMove = true, NeedHand = true }); } diff --git a/Content.Server/Chemistry/EntitySystems/InjectorSystem.cs b/Content.Server/Chemistry/EntitySystems/InjectorSystem.cs index e718e14683..85d4ade3a4 100644 --- a/Content.Server/Chemistry/EntitySystems/InjectorSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/InjectorSystem.cs @@ -205,9 +205,9 @@ public sealed class InjectorSystem : SharedInjectorSystem DoAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, user, actualDelay, new InjectorDoAfterEvent(), injector.Owner, target: target, used: injector.Owner) { - BreakOnUserMove = true, + BreakOnMove = true, + BreakOnWeightlessMove = false, BreakOnDamage = true, - BreakOnTargetMove = true, NeedHand = true, BreakOnHandChange = true, MovementThreshold = 0.1f, diff --git a/Content.Server/Communications/CommsHackerSystem.cs b/Content.Server/Communications/CommsHackerSystem.cs index 1248d21400..44b3aa28bd 100644 --- a/Content.Server/Communications/CommsHackerSystem.cs +++ b/Content.Server/Communications/CommsHackerSystem.cs @@ -45,7 +45,7 @@ public sealed class CommsHackerSystem : SharedCommsHackerSystem var doAfterArgs = new DoAfterArgs(EntityManager, uid, comp.Delay, new TerrorDoAfterEvent(), target: target, used: uid, eventTarget: uid) { BreakOnDamage = true, - BreakOnUserMove = true, + BreakOnMove = true, MovementThreshold = 0.5f, CancelDuplicate = false }; diff --git a/Content.Server/Construction/ConstructionSystem.Initial.cs b/Content.Server/Construction/ConstructionSystem.Initial.cs index e0bdf09629..2980366500 100644 --- a/Content.Server/Construction/ConstructionSystem.Initial.cs +++ b/Content.Server/Construction/ConstructionSystem.Initial.cs @@ -250,8 +250,7 @@ namespace Content.Server.Construction var doAfterArgs = new DoAfterArgs(EntityManager, user, doAfterTime, new AwaitedDoAfterEvent(), null) { BreakOnDamage = true, - BreakOnTargetMove = false, - BreakOnUserMove = true, + BreakOnMove = true, NeedHand = false, // allow simultaneously starting several construction jobs using the same stack of materials. CancelDuplicate = false, diff --git a/Content.Server/Construction/ConstructionSystem.Interactions.cs b/Content.Server/Construction/ConstructionSystem.Interactions.cs index 946aaa0d3e..59a5fd6af5 100644 --- a/Content.Server/Construction/ConstructionSystem.Interactions.cs +++ b/Content.Server/Construction/ConstructionSystem.Interactions.cs @@ -288,8 +288,7 @@ namespace Content.Server.Construction var doAfterEventArgs = new DoAfterArgs(EntityManager, interactUsing.User, step.DoAfter, doAfterEv, uid, uid, interactUsing.Used) { BreakOnDamage = false, - BreakOnTargetMove = true, - BreakOnUserMove = true, + BreakOnMove = true, NeedHand = true }; diff --git a/Content.Server/Construction/PartExchangerSystem.cs b/Content.Server/Construction/PartExchangerSystem.cs index ee5edcbd0a..174dd1d2fa 100644 --- a/Content.Server/Construction/PartExchangerSystem.cs +++ b/Content.Server/Construction/PartExchangerSystem.cs @@ -174,7 +174,7 @@ public sealed class PartExchangerSystem : EntitySystem _doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, component.ExchangeDuration, new ExchangerDoAfterEvent(), uid, target: args.Target, used: uid) { BreakOnDamage = true, - BreakOnUserMove = true + BreakOnMove = true }); } } diff --git a/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs b/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs index 6938792315..df375de695 100644 --- a/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs +++ b/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs @@ -512,8 +512,7 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem var doAfterArgs = new DoAfterArgs(EntityManager, userId.Value, delay, new DisposalDoAfterEvent(), unitId, target: toInsertId, used: unitId) { BreakOnDamage = true, - BreakOnTargetMove = true, - BreakOnUserMove = true, + BreakOnMove = true, NeedHand = false }; diff --git a/Content.Server/Engineering/EntitySystems/DisassembleOnAltVerbSystem.cs b/Content.Server/Engineering/EntitySystems/DisassembleOnAltVerbSystem.cs index 08bf68c4d2..61b6f3d93d 100644 --- a/Content.Server/Engineering/EntitySystems/DisassembleOnAltVerbSystem.cs +++ b/Content.Server/Engineering/EntitySystems/DisassembleOnAltVerbSystem.cs @@ -45,7 +45,7 @@ namespace Content.Server.Engineering.EntitySystems { var doAfterArgs = new DoAfterArgs(EntityManager, user, component.DoAfterTime, new AwaitedDoAfterEvent(), null) { - BreakOnUserMove = true, + BreakOnMove = true, }; var result = await doAfterSystem.WaitDoAfter(doAfterArgs); diff --git a/Content.Server/Engineering/EntitySystems/SpawnAfterInteractSystem.cs b/Content.Server/Engineering/EntitySystems/SpawnAfterInteractSystem.cs index 61c4937a27..57999ae48c 100644 --- a/Content.Server/Engineering/EntitySystems/SpawnAfterInteractSystem.cs +++ b/Content.Server/Engineering/EntitySystems/SpawnAfterInteractSystem.cs @@ -47,7 +47,7 @@ namespace Content.Server.Engineering.EntitySystems { var doAfterArgs = new DoAfterArgs(EntityManager, args.User, component.DoAfterTime, new AwaitedDoAfterEvent(), null) { - BreakOnUserMove = true, + BreakOnMove = true, }; var result = await _doAfterSystem.WaitDoAfter(doAfterArgs); diff --git a/Content.Server/Ensnaring/EnsnareableSystem.Ensnaring.cs b/Content.Server/Ensnaring/EnsnareableSystem.Ensnaring.cs index 169daca07a..12c701866c 100644 --- a/Content.Server/Ensnaring/EnsnareableSystem.Ensnaring.cs +++ b/Content.Server/Ensnaring/EnsnareableSystem.Ensnaring.cs @@ -118,8 +118,7 @@ public sealed partial class EnsnareableSystem var doAfterEventArgs = new DoAfterArgs(EntityManager, user, freeTime, new EnsnareableDoAfterEvent(), target, target: target, used: ensnare) { - BreakOnUserMove = breakOnMove, - BreakOnTargetMove = breakOnMove, + BreakOnMove = breakOnMove, BreakOnDamage = false, NeedHand = true, BlockDuplicate = true, diff --git a/Content.Server/Fluids/EntitySystems/DrainSystem.cs b/Content.Server/Fluids/EntitySystems/DrainSystem.cs index 19cb650db7..b8fa04b872 100644 --- a/Content.Server/Fluids/EntitySystems/DrainSystem.cs +++ b/Content.Server/Fluids/EntitySystems/DrainSystem.cs @@ -239,9 +239,8 @@ public sealed class DrainSystem : SharedDrainSystem var doAfterArgs = new DoAfterArgs(EntityManager, args.User, entity.Comp.UnclogDuration, new DrainDoAfterEvent(), entity, args.Target, args.Used) { - BreakOnTargetMove = true, - BreakOnUserMove = true, BreakOnDamage = true, + BreakOnMove = true, BreakOnHandChange = true }; diff --git a/Content.Server/Fluids/EntitySystems/PuddleSystem.Spillable.cs b/Content.Server/Fluids/EntitySystems/PuddleSystem.Spillable.cs index 3cd6d06aeb..efaca271d3 100644 --- a/Content.Server/Fluids/EntitySystems/PuddleSystem.Spillable.cs +++ b/Content.Server/Fluids/EntitySystems/PuddleSystem.Spillable.cs @@ -203,9 +203,8 @@ public sealed partial class PuddleSystem { _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, entity.Comp.SpillDelay ?? 0, new SpillDoAfterEvent(), entity.Owner, target: entity.Owner) { - BreakOnTargetMove = true, - BreakOnUserMove = true, BreakOnDamage = true, + BreakOnMove = true, NeedHand = true, }); }; diff --git a/Content.Server/Forensics/Systems/ForensicPadSystem.cs b/Content.Server/Forensics/Systems/ForensicPadSystem.cs index ad39817f8b..42512cb1fd 100644 --- a/Content.Server/Forensics/Systems/ForensicPadSystem.cs +++ b/Content.Server/Forensics/Systems/ForensicPadSystem.cs @@ -83,9 +83,8 @@ namespace Content.Server.Forensics var doAfterEventArgs = new DoAfterArgs(EntityManager, user, pad.ScanDelay, ev, used, target: target, used: used) { - BreakOnTargetMove = true, - BreakOnUserMove = true, - NeedHand = true + NeedHand = true, + BreakOnMove = true, }; _doAfterSystem.TryStartDoAfter(doAfterEventArgs); diff --git a/Content.Server/Forensics/Systems/ForensicScannerSystem.cs b/Content.Server/Forensics/Systems/ForensicScannerSystem.cs index 0d3168fd4e..729b7304fa 100644 --- a/Content.Server/Forensics/Systems/ForensicScannerSystem.cs +++ b/Content.Server/Forensics/Systems/ForensicScannerSystem.cs @@ -95,8 +95,7 @@ namespace Content.Server.Forensics { _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, component.ScanDelay, new ForensicScannerDoAfterEvent(), uid, target: target, used: uid) { - BreakOnTargetMove = true, - BreakOnUserMove = true, + BreakOnMove = true, NeedHand = true }); } diff --git a/Content.Server/Forensics/Systems/ForensicsSystem.cs b/Content.Server/Forensics/Systems/ForensicsSystem.cs index a081429fd3..a9ef23a2f5 100644 --- a/Content.Server/Forensics/Systems/ForensicsSystem.cs +++ b/Content.Server/Forensics/Systems/ForensicsSystem.cs @@ -116,7 +116,7 @@ namespace Content.Server.Forensics BreakOnHandChange = true, NeedHand = true, BreakOnDamage = true, - BreakOnTargetMove = true, + BreakOnMove = true, MovementThreshold = 0.01f, DistanceThreshold = forensicsComp.CleanDistance, }; diff --git a/Content.Server/Guardian/GuardianSystem.cs b/Content.Server/Guardian/GuardianSystem.cs index 627c336a36..808de9f667 100644 --- a/Content.Server/Guardian/GuardianSystem.cs +++ b/Content.Server/Guardian/GuardianSystem.cs @@ -193,11 +193,7 @@ namespace Content.Server.Guardian return; } - _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, component.InjectionDelay, new GuardianCreatorDoAfterEvent(), injector, target: target, used: injector) - { - BreakOnTargetMove = true, - BreakOnUserMove = true - }); + _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, component.InjectionDelay, new GuardianCreatorDoAfterEvent(), injector, target: target, used: injector){BreakOnMove = true}); } private void OnDoAfter(EntityUid uid, GuardianCreatorComponent component, DoAfterEvent args) diff --git a/Content.Server/Implants/ImplanterSystem.cs b/Content.Server/Implants/ImplanterSystem.cs index 0d46241f41..56d0bd3bbd 100644 --- a/Content.Server/Implants/ImplanterSystem.cs +++ b/Content.Server/Implants/ImplanterSystem.cs @@ -78,9 +78,8 @@ public sealed partial class ImplanterSystem : SharedImplanterSystem { var args = new DoAfterArgs(EntityManager, user, component.ImplantTime, new ImplantEvent(), implanter, target: target, used: implanter) { - BreakOnUserMove = true, - BreakOnTargetMove = true, BreakOnDamage = true, + BreakOnMove = true, NeedHand = true, }; @@ -105,9 +104,8 @@ public sealed partial class ImplanterSystem : SharedImplanterSystem { var args = new DoAfterArgs(EntityManager, user, component.DrawTime, new DrawEvent(), implanter, target: target, used: implanter) { - BreakOnUserMove = true, - BreakOnTargetMove = true, BreakOnDamage = true, + BreakOnMove = true, NeedHand = true, }; diff --git a/Content.Server/Kitchen/EntitySystems/KitchenSpikeSystem.cs b/Content.Server/Kitchen/EntitySystems/KitchenSpikeSystem.cs index 0419e13d23..b145bec014 100644 --- a/Content.Server/Kitchen/EntitySystems/KitchenSpikeSystem.cs +++ b/Content.Server/Kitchen/EntitySystems/KitchenSpikeSystem.cs @@ -257,9 +257,8 @@ namespace Content.Server.Kitchen.EntitySystems var doAfterArgs = new DoAfterArgs(EntityManager, userUid, component.SpikeDelay + butcherable.ButcherDelay, new SpikeDoAfterEvent(), uid, target: victimUid, used: uid) { - BreakOnTargetMove = true, - BreakOnUserMove = true, BreakOnDamage = true, + BreakOnMove = true, NeedHand = true }; diff --git a/Content.Server/Kitchen/EntitySystems/SharpSystem.cs b/Content.Server/Kitchen/EntitySystems/SharpSystem.cs index 2c5f88baec..2caab4063c 100644 --- a/Content.Server/Kitchen/EntitySystems/SharpSystem.cs +++ b/Content.Server/Kitchen/EntitySystems/SharpSystem.cs @@ -75,9 +75,8 @@ public sealed class SharpSystem : EntitySystem var doAfter = new DoAfterArgs(EntityManager, user, sharp.ButcherDelayModifier * butcher.ButcherDelay, new SharpDoAfterEvent(), knife, target: target, used: knife) { - BreakOnTargetMove = true, - BreakOnUserMove = true, BreakOnDamage = true, + BreakOnMove = true, NeedHand = true }; _doAfterSystem.TryStartDoAfter(doAfter); diff --git a/Content.Server/Light/EntitySystems/PoweredLightSystem.cs b/Content.Server/Light/EntitySystems/PoweredLightSystem.cs index e880cec5bb..8aa432c21e 100644 --- a/Content.Server/Light/EntitySystems/PoweredLightSystem.cs +++ b/Content.Server/Light/EntitySystems/PoweredLightSystem.cs @@ -150,7 +150,7 @@ namespace Content.Server.Light.EntitySystems // removing a working bulb, so require a delay _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, userUid, light.EjectBulbDelay, new PoweredLightDoAfterEvent(), uid, target: uid) { - BreakOnUserMove = true, + BreakOnMove = true, BreakOnDamage = true, }); diff --git a/Content.Server/Magic/MagicSystem.cs b/Content.Server/Magic/MagicSystem.cs index 2c9b11dbd3..371814cacb 100644 --- a/Content.Server/Magic/MagicSystem.cs +++ b/Content.Server/Magic/MagicSystem.cs @@ -118,9 +118,8 @@ public sealed class MagicSystem : EntitySystem { var doAfterEventArgs = new DoAfterArgs(EntityManager, args.User, component.LearnTime, new SpellbookDoAfterEvent(), uid, target: uid) { - BreakOnTargetMove = true, - BreakOnUserMove = true, BreakOnDamage = true, + BreakOnMove = true, NeedHand = true //What, are you going to read with your eyes only?? }; diff --git a/Content.Server/MagicMirror/MagicMirrorSystem.cs b/Content.Server/MagicMirror/MagicMirrorSystem.cs index aef6e11d71..9ffd9a07a9 100644 --- a/Content.Server/MagicMirror/MagicMirrorSystem.cs +++ b/Content.Server/MagicMirror/MagicMirrorSystem.cs @@ -95,11 +95,9 @@ public sealed class MagicMirrorSystem : EntitySystem _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, component.SelectSlotTime, doAfter, uid, target: target, used: uid) { DistanceThreshold = SharedInteractionSystem.InteractionRange, - BreakOnTargetMove = true, BreakOnDamage = true, + BreakOnMove = true, BreakOnHandChange = false, - BreakOnUserMove = true, - BreakOnWeightlessMove = false, NeedHand = true }, out var doAfterId); @@ -151,11 +149,9 @@ public sealed class MagicMirrorSystem : EntitySystem _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, component.ChangeSlotTime, doAfter, uid, target: target, used: uid) { - BreakOnTargetMove = true, BreakOnDamage = true, + BreakOnMove = true, BreakOnHandChange = false, - BreakOnUserMove = true, - BreakOnWeightlessMove = false, NeedHand = true }, out var doAfterId); @@ -206,11 +202,8 @@ public sealed class MagicMirrorSystem : EntitySystem _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, component.RemoveSlotTime, doAfter, uid, target: target, used: uid) { DistanceThreshold = SharedInteractionSystem.InteractionRange, - BreakOnTargetMove = true, BreakOnDamage = true, BreakOnHandChange = false, - BreakOnUserMove = true, - BreakOnWeightlessMove = false, NeedHand = true }, out var doAfterId); @@ -263,11 +256,9 @@ public sealed class MagicMirrorSystem : EntitySystem _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, message.Session.AttachedEntity.Value, component.AddSlotTime, doAfter, uid, target: component.Target.Value, used: uid) { - BreakOnTargetMove = true, BreakOnDamage = true, + BreakOnMove = true, BreakOnHandChange = false, - BreakOnUserMove = true, - BreakOnWeightlessMove = false, NeedHand = true }, out var doAfterId); diff --git a/Content.Server/Mech/Equipment/EntitySystems/MechGrabberSystem.cs b/Content.Server/Mech/Equipment/EntitySystems/MechGrabberSystem.cs index fa46792d2a..4b2ba8ffbd 100644 --- a/Content.Server/Mech/Equipment/EntitySystems/MechGrabberSystem.cs +++ b/Content.Server/Mech/Equipment/EntitySystems/MechGrabberSystem.cs @@ -157,8 +157,7 @@ public sealed class MechGrabberSystem : EntitySystem component.AudioStream = _audio.PlayPvs(component.GrabSound, uid).Value.Entity; var doAfterArgs = new DoAfterArgs(EntityManager, args.User, component.GrabDelay, new GrabberDoAfterEvent(), uid, target: target, used: uid) { - BreakOnTargetMove = true, - BreakOnUserMove = true + BreakOnMove = true }; _doAfter.TryStartDoAfter(doAfterArgs, out component.DoAfter); diff --git a/Content.Server/Mech/Systems/MechEquipmentSystem.cs b/Content.Server/Mech/Systems/MechEquipmentSystem.cs index 5191f53004..f51c0444e6 100644 --- a/Content.Server/Mech/Systems/MechEquipmentSystem.cs +++ b/Content.Server/Mech/Systems/MechEquipmentSystem.cs @@ -47,8 +47,7 @@ public sealed class MechEquipmentSystem : EntitySystem var doAfterEventArgs = new DoAfterArgs(EntityManager, args.User, component.InstallDuration, new InsertEquipmentEvent(), uid, target: mech, used: uid) { - BreakOnTargetMove = true, - BreakOnUserMove = true + BreakOnMove = true, }; _doAfter.TryStartDoAfter(doAfterEventArgs); diff --git a/Content.Server/Mech/Systems/MechSystem.cs b/Content.Server/Mech/Systems/MechSystem.cs index 1012b9727d..206eb894d7 100644 --- a/Content.Server/Mech/Systems/MechSystem.cs +++ b/Content.Server/Mech/Systems/MechSystem.cs @@ -92,10 +92,10 @@ public sealed partial class MechSystem : SharedMechSystem if (TryComp(args.Used, out var tool) && tool.Qualities.Contains("Prying") && component.BatterySlot.ContainedEntity != null) { - var doAfterEventArgs = new DoAfterArgs(EntityManager, args.User, component.BatteryRemovalDelay, new RemoveBatteryEvent(), uid, target: uid, used: args.Target) + var doAfterEventArgs = new DoAfterArgs(EntityManager, args.User, component.BatteryRemovalDelay, + new RemoveBatteryEvent(), uid, target: uid, used: args.Target) { - BreakOnTargetMove = true, - BreakOnUserMove = true, + BreakOnMove = true }; _doAfter.TryStartDoAfter(doAfterEventArgs); @@ -182,7 +182,7 @@ public sealed partial class MechSystem : SharedMechSystem { var doAfterEventArgs = new DoAfterArgs(EntityManager, args.User, component.EntryDelay, new MechEntryEvent(), uid, target: uid) { - BreakOnUserMove = true, + BreakOnMove = true, }; _doAfter.TryStartDoAfter(doAfterEventArgs); @@ -210,11 +210,8 @@ public sealed partial class MechSystem : SharedMechSystem return; } - var doAfterEventArgs = new DoAfterArgs(EntityManager, args.User, component.ExitDelay, new MechExitEvent(), uid, target: uid) - { - BreakOnUserMove = true, - BreakOnTargetMove = true, - }; + var doAfterEventArgs = new DoAfterArgs(EntityManager, args.User, component.ExitDelay, + new MechExitEvent(), uid, target: uid); _doAfter.TryStartDoAfter(doAfterEventArgs); } diff --git a/Content.Server/Medical/BiomassReclaimer/BiomassReclaimerSystem.cs b/Content.Server/Medical/BiomassReclaimer/BiomassReclaimerSystem.cs index d07858aec5..f8d5139a46 100644 --- a/Content.Server/Medical/BiomassReclaimer/BiomassReclaimerSystem.cs +++ b/Content.Server/Medical/BiomassReclaimer/BiomassReclaimerSystem.cs @@ -165,9 +165,8 @@ namespace Content.Server.Medical.BiomassReclaimer var delay = reclaimer.Comp.BaseInsertionDelay * physics.FixturesMass; _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, delay, new ReclaimerDoAfterEvent(), reclaimer, target: args.Target, used: args.Used) { - BreakOnTargetMove = true, - BreakOnUserMove = true, - NeedHand = true + NeedHand = true, + BreakOnMove = true }); } diff --git a/Content.Server/Medical/CryoPodSystem.cs b/Content.Server/Medical/CryoPodSystem.cs index 4ab94c72b9..a7d12d9f0f 100644 --- a/Content.Server/Medical/CryoPodSystem.cs +++ b/Content.Server/Medical/CryoPodSystem.cs @@ -142,8 +142,7 @@ public sealed partial class CryoPodSystem : SharedCryoPodSystem var doAfterArgs = new DoAfterArgs(EntityManager, args.User, entity.Comp.EntryDelay, new CryoPodDragFinished(), entity, target: args.Dragged, used: entity) { BreakOnDamage = true, - BreakOnTargetMove = true, - BreakOnUserMove = true, + BreakOnMove = true, NeedHand = false, }; _doAfterSystem.TryStartDoAfter(doAfterArgs); diff --git a/Content.Server/Medical/DefibrillatorSystem.cs b/Content.Server/Medical/DefibrillatorSystem.cs index 467085f49e..64861fdc51 100644 --- a/Content.Server/Medical/DefibrillatorSystem.cs +++ b/Content.Server/Medical/DefibrillatorSystem.cs @@ -178,8 +178,6 @@ public sealed class DefibrillatorSystem : EntitySystem uid, target, uid) { BlockDuplicate = true, - BreakOnUserMove = true, - BreakOnTargetMove = true, BreakOnHandChange = true, NeedHand = true }); diff --git a/Content.Server/Medical/HealingSystem.cs b/Content.Server/Medical/HealingSystem.cs index 1b90d195c4..fb6883dfd1 100644 --- a/Content.Server/Medical/HealingSystem.cs +++ b/Content.Server/Medical/HealingSystem.cs @@ -196,12 +196,11 @@ public sealed class HealingSystem : EntitySystem var doAfterEventArgs = new DoAfterArgs(EntityManager, user, delay, new HealingDoAfterEvent(), target, target: target, used: uid) { - //Raise the event on the target if it's not self, otherwise raise it on self. - BreakOnUserMove = true, - BreakOnTargetMove = true, // Didn't break on damage as they may be trying to prevent it and // not being able to heal your own ticking damage would be frustrating. NeedHand = true, + BreakOnMove = true, + BreakOnWeightlessMove = false, }; _doAfter.TryStartDoAfter(doAfterEventArgs); diff --git a/Content.Server/Medical/HealthAnalyzerSystem.cs b/Content.Server/Medical/HealthAnalyzerSystem.cs index 0e893c4114..01d0d5c791 100644 --- a/Content.Server/Medical/HealthAnalyzerSystem.cs +++ b/Content.Server/Medical/HealthAnalyzerSystem.cs @@ -76,9 +76,8 @@ public sealed class HealthAnalyzerSystem : EntitySystem _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, uid.Comp.ScanDelay, new HealthAnalyzerDoAfterEvent(), uid, target: args.Target, used: uid) { - BreakOnTargetMove = true, - BreakOnUserMove = true, - NeedHand = true + NeedHand = true, + BreakOnMove = true }); } diff --git a/Content.Server/Medical/Stethoscope/StethoscopeSystem.cs b/Content.Server/Medical/Stethoscope/StethoscopeSystem.cs index 9521c14f2e..f1864bb3a1 100644 --- a/Content.Server/Medical/Stethoscope/StethoscopeSystem.cs +++ b/Content.Server/Medical/Stethoscope/StethoscopeSystem.cs @@ -107,9 +107,8 @@ namespace Content.Server.Medical.Stethoscope { _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, comp.Delay, new StethoscopeDoAfterEvent(), scope, target: target, used: scope) { - BreakOnTargetMove = true, - BreakOnUserMove = true, - NeedHand = true + NeedHand = true, + BreakOnMove = true, }); } diff --git a/Content.Server/Ninja/Systems/BatteryDrainerSystem.cs b/Content.Server/Ninja/Systems/BatteryDrainerSystem.cs index 552ee0397f..59dec556fa 100644 --- a/Content.Server/Ninja/Systems/BatteryDrainerSystem.cs +++ b/Content.Server/Ninja/Systems/BatteryDrainerSystem.cs @@ -50,9 +50,8 @@ public sealed class BatteryDrainerSystem : SharedBatteryDrainerSystem var doAfterArgs = new DoAfterArgs(EntityManager, uid, comp.DrainTime, new DrainDoAfterEvent(), target: target, eventTarget: uid) { - BreakOnUserMove = true, - BreakOnWeightlessMove = true, // prevent a ninja on a pod remotely draining it MovementThreshold = 0.5f, + BreakOnMove = true, CancelDuplicate = false, AttemptFrequency = AttemptFrequency.StartAndEnd }; diff --git a/Content.Server/Nuke/NukeSystem.cs b/Content.Server/Nuke/NukeSystem.cs index d6767cd2de..60163015cc 100644 --- a/Content.Server/Nuke/NukeSystem.cs +++ b/Content.Server/Nuke/NukeSystem.cs @@ -591,8 +591,7 @@ public sealed class NukeSystem : EntitySystem var doAfter = new DoAfterArgs(EntityManager, user, nuke.DisarmDoafterLength, new NukeDisarmDoAfterEvent(), uid, target: uid) { BreakOnDamage = true, - BreakOnTargetMove = true, - BreakOnUserMove = true, + BreakOnMove = true, NeedHand = true }; diff --git a/Content.Server/Nutrition/EntitySystems/DrinkSystem.cs b/Content.Server/Nutrition/EntitySystems/DrinkSystem.cs index 6327cf6ae2..5fb090087a 100644 --- a/Content.Server/Nutrition/EntitySystems/DrinkSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/DrinkSystem.cs @@ -283,9 +283,8 @@ public sealed class DrinkSystem : EntitySystem target: target, used: item) { - BreakOnUserMove = forceDrink, + BreakOnMove = forceDrink, BreakOnDamage = true, - BreakOnTargetMove = forceDrink, MovementThreshold = 0.01f, DistanceThreshold = 1.0f, // Mice and the like can eat without hands. diff --git a/Content.Server/Nutrition/EntitySystems/FoodSystem.cs b/Content.Server/Nutrition/EntitySystems/FoodSystem.cs index 2b62715133..d87b0bd0b0 100644 --- a/Content.Server/Nutrition/EntitySystems/FoodSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/FoodSystem.cs @@ -180,9 +180,8 @@ public sealed class FoodSystem : EntitySystem target: target, used: food) { - BreakOnUserMove = forceFeed, + BreakOnMove = forceFeed, BreakOnDamage = true, - BreakOnTargetMove = forceFeed, MovementThreshold = 0.01f, DistanceThreshold = MaxFeedDistance, // Mice and the like can eat without hands. diff --git a/Content.Server/Nutrition/EntitySystems/SmokingSystem.Vape.cs b/Content.Server/Nutrition/EntitySystems/SmokingSystem.Vape.cs index fe0d1d0c16..fb56dffac9 100644 --- a/Content.Server/Nutrition/EntitySystems/SmokingSystem.Vape.cs +++ b/Content.Server/Nutrition/EntitySystems/SmokingSystem.Vape.cs @@ -113,8 +113,7 @@ namespace Content.Server.Nutrition.EntitySystems var vapeDoAfterEvent = new VapeDoAfterEvent(solution, forced); _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, delay, vapeDoAfterEvent, entity.Owner, target: args.Target, used: entity.Owner) { - BreakOnTargetMove = true, - BreakOnUserMove = false, + BreakOnMove = false, BreakOnDamage = true }); } diff --git a/Content.Server/Power/Generator/PortableGeneratorSystem.cs b/Content.Server/Power/Generator/PortableGeneratorSystem.cs index e8e9c5b45e..3cd18d7d56 100644 --- a/Content.Server/Power/Generator/PortableGeneratorSystem.cs +++ b/Content.Server/Power/Generator/PortableGeneratorSystem.cs @@ -84,7 +84,7 @@ public sealed class PortableGeneratorSystem : SharedPortableGeneratorSystem _doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, user, component.StartTime, new GeneratorStartedEvent(), uid, uid) { - BreakOnDamage = true, BreakOnTargetMove = true, BreakOnUserMove = true, RequireCanInteract = true, + BreakOnDamage = true, BreakOnMove = true, RequireCanInteract = true, NeedHand = true }); } diff --git a/Content.Server/Resist/EscapeInventorySystem.cs b/Content.Server/Resist/EscapeInventorySystem.cs index 8cb6d218e2..6bce38fbac 100644 --- a/Content.Server/Resist/EscapeInventorySystem.cs +++ b/Content.Server/Resist/EscapeInventorySystem.cs @@ -63,8 +63,7 @@ public sealed class EscapeInventorySystem : EntitySystem var doAfterEventArgs = new DoAfterArgs(EntityManager, user, component.BaseResistTime * multiplier, new EscapeInventoryEvent(), user, target: container) { - BreakOnTargetMove = false, - BreakOnUserMove = true, + BreakOnMove = true, BreakOnDamage = true, NeedHand = false }; diff --git a/Content.Server/Resist/ResistLockerSystem.cs b/Content.Server/Resist/ResistLockerSystem.cs index 7a17a2eba1..2ab277d0f1 100644 --- a/Content.Server/Resist/ResistLockerSystem.cs +++ b/Content.Server/Resist/ResistLockerSystem.cs @@ -47,8 +47,7 @@ public sealed class ResistLockerSystem : EntitySystem var doAfterEventArgs = new DoAfterArgs(EntityManager, user, resistLockerComponent.ResistTime, new ResistLockerDoAfterEvent(), target, target: target) { - BreakOnTargetMove = false, - BreakOnUserMove = true, + BreakOnMove = true, BreakOnDamage = true, NeedHand = false //No hands 'cause we be kickin' }; diff --git a/Content.Server/Revenant/EntitySystems/RevenantSystem.Abilities.cs b/Content.Server/Revenant/EntitySystems/RevenantSystem.Abilities.cs index eb6eb5a426..0ac6ccd613 100644 --- a/Content.Server/Revenant/EntitySystems/RevenantSystem.Abilities.cs +++ b/Content.Server/Revenant/EntitySystems/RevenantSystem.Abilities.cs @@ -85,7 +85,7 @@ public sealed partial class RevenantSystem { var searchDoAfter = new DoAfterArgs(EntityManager, uid, revenant.SoulSearchDuration, new SoulEvent(), uid, target: target) { - BreakOnUserMove = true, + BreakOnMove = true, BreakOnDamage = true, DistanceThreshold = 2 }; @@ -140,7 +140,7 @@ public sealed partial class RevenantSystem var doAfter = new DoAfterArgs(EntityManager, uid, revenant.HarvestDebuffs.X, new HarvestEvent(), uid, target: target) { DistanceThreshold = 2, - BreakOnUserMove = true, + BreakOnMove = true, BreakOnDamage = true, RequireCanInteract = false, // stuns itself }; diff --git a/Content.Server/SprayPainter/SprayPainterSystem.cs b/Content.Server/SprayPainter/SprayPainterSystem.cs index e49c49c1da..a8024e2d77 100644 --- a/Content.Server/SprayPainter/SprayPainterSystem.cs +++ b/Content.Server/SprayPainter/SprayPainterSystem.cs @@ -55,8 +55,7 @@ public sealed class SprayPainterSystem : SharedSprayPainterSystem var doAfterEventArgs = new DoAfterArgs(EntityManager, args.User, painter.PipeSprayTime, new SprayPainterPipeDoAfterEvent(color), args.Used, target: ent, used: args.Used) { - BreakOnTargetMove = true, - BreakOnUserMove = true, + BreakOnMove = true, BreakOnDamage = true, CancelDuplicate = true, // multiple pipes can be sprayed at once just not the same one diff --git a/Content.Server/Sticky/Systems/StickySystem.cs b/Content.Server/Sticky/Systems/StickySystem.cs index 2d1104e2ce..effe1b72f7 100644 --- a/Content.Server/Sticky/Systems/StickySystem.cs +++ b/Content.Server/Sticky/Systems/StickySystem.cs @@ -93,8 +93,7 @@ public sealed class StickySystem : EntitySystem // start sticking object to target _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, delay, new StickyDoAfterEvent(), uid, target: target, used: uid) { - BreakOnTargetMove = true, - BreakOnUserMove = true, + BreakOnMove = true, NeedHand = true }); } @@ -148,8 +147,7 @@ public sealed class StickySystem : EntitySystem // start unsticking object _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, delay, new StickyDoAfterEvent(), uid, target: uid) { - BreakOnTargetMove = true, - BreakOnUserMove = true, + BreakOnMove = true, NeedHand = true }); } diff --git a/Content.Server/Strip/StrippableSystem.cs b/Content.Server/Strip/StrippableSystem.cs index 3b38b65a19..d28744fe4a 100644 --- a/Content.Server/Strip/StrippableSystem.cs +++ b/Content.Server/Strip/StrippableSystem.cs @@ -262,8 +262,7 @@ namespace Content.Server.Strip Hidden = stealth, AttemptFrequency = AttemptFrequency.EveryTick, BreakOnDamage = true, - BreakOnTargetMove = true, - BreakOnUserMove = true, + BreakOnMove = true, NeedHand = true, DuplicateCondition = DuplicateConditions.SameTool }; @@ -356,8 +355,7 @@ namespace Content.Server.Strip Hidden = stealth, AttemptFrequency = AttemptFrequency.EveryTick, BreakOnDamage = true, - BreakOnTargetMove = true, - BreakOnUserMove = true, + BreakOnMove = true, NeedHand = true, BreakOnHandChange = false, // Allow simultaneously removing multiple items. DuplicateCondition = DuplicateConditions.SameTool @@ -454,8 +452,7 @@ namespace Content.Server.Strip Hidden = stealth, AttemptFrequency = AttemptFrequency.EveryTick, BreakOnDamage = true, - BreakOnTargetMove = true, - BreakOnUserMove = true, + BreakOnMove = true, NeedHand = true, DuplicateCondition = DuplicateConditions.SameTool }; @@ -554,8 +551,7 @@ namespace Content.Server.Strip Hidden = stealth, AttemptFrequency = AttemptFrequency.EveryTick, BreakOnDamage = true, - BreakOnTargetMove = true, - BreakOnUserMove = true, + BreakOnMove = true, NeedHand = true, BreakOnHandChange = false, // Allow simultaneously removing multiple items. DuplicateCondition = DuplicateConditions.SameTool diff --git a/Content.Server/Teleportation/HandTeleporterSystem.cs b/Content.Server/Teleportation/HandTeleporterSystem.cs index 29cde5d741..3d988b0916 100644 --- a/Content.Server/Teleportation/HandTeleporterSystem.cs +++ b/Content.Server/Teleportation/HandTeleporterSystem.cs @@ -58,7 +58,7 @@ public sealed class HandTeleporterSystem : EntitySystem var doafterArgs = new DoAfterArgs(EntityManager, args.User, component.PortalCreationDelay, new TeleporterDoAfterEvent(), uid, used: uid) { BreakOnDamage = true, - BreakOnUserMove = true, + BreakOnMove = true, MovementThreshold = 0.5f, }; diff --git a/Content.Server/Wires/WiresSystem.cs b/Content.Server/Wires/WiresSystem.cs index 0f9ee8b0f7..a2deb11fe7 100644 --- a/Content.Server/Wires/WiresSystem.cs +++ b/Content.Server/Wires/WiresSystem.cs @@ -701,7 +701,7 @@ public sealed class WiresSystem : SharedWiresSystem { NeedHand = true, BreakOnDamage = true, - BreakOnUserMove = true + BreakOnMove = true }; _doAfter.TryStartDoAfter(args); diff --git a/Content.Shared/Burial/BurialSystem.cs b/Content.Shared/Burial/BurialSystem.cs index 937784ca2a..e19ac2e9c6 100644 --- a/Content.Shared/Burial/BurialSystem.cs +++ b/Content.Shared/Burial/BurialSystem.cs @@ -45,8 +45,7 @@ public sealed class BurialSystem : EntitySystem { var doAfterEventArgs = new DoAfterArgs(EntityManager, args.User, component.DigDelay / shovel.SpeedModifier, new GraveDiggingDoAfterEvent(), uid, target: args.Target, used: uid) { - BreakOnTargetMove = true, - BreakOnUserMove = true, + BreakOnMove = true, BreakOnDamage = true, NeedHand = true, BreakOnHandChange = true @@ -159,8 +158,7 @@ public sealed class BurialSystem : EntitySystem var doAfterEventArgs = new DoAfterArgs(EntityManager, args.Entity, component.DigDelay / component.DigOutByHandModifier, new GraveDiggingDoAfterEvent(), uid, target: uid) { NeedHand = false, - BreakOnUserMove = true, - BreakOnTargetMove = false, + BreakOnMove = true, BreakOnHandChange = false, BreakOnDamage = false }; diff --git a/Content.Shared/Climbing/Systems/BonkSystem.cs b/Content.Shared/Climbing/Systems/BonkSystem.cs index e91d1eadbe..149abee8b0 100644 --- a/Content.Shared/Climbing/Systems/BonkSystem.cs +++ b/Content.Shared/Climbing/Systems/BonkSystem.cs @@ -82,8 +82,7 @@ public sealed partial class BonkSystem : EntitySystem var doAfterArgs = new DoAfterArgs(EntityManager, args.Dragged, component.BonkDelay, new BonkDoAfterEvent(), uid, target: uid) { - BreakOnTargetMove = true, - BreakOnUserMove = true, + BreakOnMove = true, BreakOnDamage = true }; diff --git a/Content.Shared/Climbing/Systems/ClimbSystem.cs b/Content.Shared/Climbing/Systems/ClimbSystem.cs index 7c760f2c5d..fcf473f9f1 100644 --- a/Content.Shared/Climbing/Systems/ClimbSystem.cs +++ b/Content.Shared/Climbing/Systems/ClimbSystem.cs @@ -211,8 +211,7 @@ public sealed partial class ClimbSystem : VirtualController target: climbable, used: entityToMove) { - BreakOnTargetMove = true, - BreakOnUserMove = true, + BreakOnMove = true, BreakOnDamage = true }; diff --git a/Content.Shared/Clothing/EntitySystems/ToggleableClothingSystem.cs b/Content.Shared/Clothing/EntitySystems/ToggleableClothingSystem.cs index 22a1d1a8f5..c828b22481 100644 --- a/Content.Shared/Clothing/EntitySystems/ToggleableClothingSystem.cs +++ b/Content.Shared/Clothing/EntitySystems/ToggleableClothingSystem.cs @@ -100,7 +100,7 @@ public sealed class ToggleableClothingSystem : EntitySystem var args = new DoAfterArgs(EntityManager, user, time, new ToggleClothingDoAfterEvent(), item, wearer, item) { BreakOnDamage = true, - BreakOnTargetMove = true, + BreakOnMove = true, // This should just re-use the BUI range checks & cancel the do after if the BUI closes. But that is all // server-side at the moment. // TODO BUI REFACTOR. diff --git a/Content.Shared/Cuffs/SharedCuffableSystem.cs b/Content.Shared/Cuffs/SharedCuffableSystem.cs index 5cade56aca..ca903719c4 100644 --- a/Content.Shared/Cuffs/SharedCuffableSystem.cs +++ b/Content.Shared/Cuffs/SharedCuffableSystem.cs @@ -479,10 +479,11 @@ namespace Content.Shared.Cuffs var doAfterEventArgs = new DoAfterArgs(EntityManager, user, cuffTime, new AddCuffDoAfterEvent(), handcuff, target, handcuff) { - BreakOnTargetMove = true, - BreakOnUserMove = true, + BreakOnMove = true, + BreakOnWeightlessMove = false, BreakOnDamage = true, - NeedHand = true + NeedHand = true, + DistanceThreshold = 0.3f }; if (!_doAfter.TryStartDoAfter(doAfterEventArgs)) @@ -574,11 +575,12 @@ namespace Content.Shared.Cuffs var doAfterEventArgs = new DoAfterArgs(EntityManager, user, uncuffTime, new UnCuffDoAfterEvent(), target, target, cuffsToRemove) { - BreakOnUserMove = true, - BreakOnTargetMove = true, + BreakOnMove = true, + BreakOnWeightlessMove = false, BreakOnDamage = true, NeedHand = true, RequireCanInteract = false, // Trust in UncuffAttemptEvent + DistanceThreshold = 0.3f }; if (!_doAfter.TryStartDoAfter(doAfterEventArgs)) diff --git a/Content.Shared/Devour/SharedDevourSystem.cs b/Content.Shared/Devour/SharedDevourSystem.cs index a2b788f3f3..3d73b14dd3 100644 --- a/Content.Shared/Devour/SharedDevourSystem.cs +++ b/Content.Shared/Devour/SharedDevourSystem.cs @@ -57,8 +57,7 @@ public abstract class SharedDevourSystem : EntitySystem _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, uid, component.DevourTime, new DevourDoAfterEvent(), uid, target: target, used: uid) { - BreakOnTargetMove = true, - BreakOnUserMove = true, + BreakOnMove = true, }); break; default: @@ -76,8 +75,7 @@ public abstract class SharedDevourSystem : EntitySystem _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, uid, component.StructureDevourTime, new DevourDoAfterEvent(), uid, target: target, used: uid) { - BreakOnTargetMove = true, - BreakOnUserMove = true, + BreakOnMove = true, }); } } diff --git a/Content.Shared/DoAfter/DoAfter.cs b/Content.Shared/DoAfter/DoAfter.cs index d999b370b3..f77a6dc272 100644 --- a/Content.Shared/DoAfter/DoAfter.cs +++ b/Content.Shared/DoAfter/DoAfter.cs @@ -82,12 +82,6 @@ public sealed partial class DoAfter { Index = index; - if (args.Target == null) - { - DebugTools.Assert(!args.BreakOnTargetMove); - args.BreakOnTargetMove = false; - } - Args = args; StartTime = startTime; } diff --git a/Content.Shared/DoAfter/DoAfterArgs.cs b/Content.Shared/DoAfter/DoAfterArgs.cs index d2729ad3c6..d96ea84e17 100644 --- a/Content.Shared/DoAfter/DoAfterArgs.cs +++ b/Content.Shared/DoAfter/DoAfterArgs.cs @@ -92,29 +92,23 @@ public sealed partial class DoAfterArgs public bool BreakOnHandChange = true; /// - /// If do_after stops when the user moves + /// If do_after stops when the user or target moves /// - [DataField("breakOnUserMove")] - public bool BreakOnUserMove; + [DataField] + public bool BreakOnMove; /// - /// If this is true then any movement, even when weightless, will break the doafter. - /// When there is no gravity, BreakOnUserMove is ignored. If it is false to begin with nothing will change. + /// Whether to break on movement when the user is weightless. + /// This does nothing if is false. /// - [DataField("breakOnWeightlessMove")] - public bool BreakOnWeightlessMove; - - /// - /// If do_after stops when the target moves (if there is a target) - /// - [DataField("breakOnTargetMove")] - public bool BreakOnTargetMove; + [DataField] + public bool BreakOnWeightlessMove = true; /// /// Threshold for user and target movement /// [DataField("movementThreshold")] - public float MovementThreshold = 0.1f; + public float MovementThreshold = 0.3f; /// /// Threshold for distance user from the used OR target entities. @@ -250,9 +244,8 @@ public sealed partial class DoAfterArgs Broadcast = other.Broadcast; NeedHand = other.NeedHand; BreakOnHandChange = other.BreakOnHandChange; - BreakOnUserMove = other.BreakOnUserMove; + BreakOnMove = other.BreakOnMove; BreakOnWeightlessMove = other.BreakOnWeightlessMove; - BreakOnTargetMove = other.BreakOnTargetMove; MovementThreshold = other.MovementThreshold; DistanceThreshold = other.DistanceThreshold; BreakOnDamage = other.BreakOnDamage; diff --git a/Content.Shared/DoAfter/SharedDoAfterSystem.Update.cs b/Content.Shared/DoAfter/SharedDoAfterSystem.Update.cs index abd8888f58..455491f524 100644 --- a/Content.Shared/DoAfter/SharedDoAfterSystem.Update.cs +++ b/Content.Shared/DoAfter/SharedDoAfterSystem.Update.cs @@ -1,5 +1,7 @@ using Content.Shared.Gravity; using Content.Shared.Hands.Components; +using Content.Shared.Interaction; +using Content.Shared.Physics; using Robust.Shared.Utility; namespace Content.Shared.DoAfter; @@ -8,6 +10,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!; private DoAfter[] _doAfters = Array.Empty(); @@ -163,24 +166,53 @@ public abstract partial class SharedDoAfterSystem : EntitySystem return true; // TODO: Re-use existing xform query for these calculations. - // when there is no gravity you will be drifting 99% of the time making many doafters impossible - // so this just ignores your movement if you are weightless (unless the doafter sets BreakOnWeightlessMove then moving will still break it) - if (args.BreakOnUserMove - && !userXform.Coordinates.InRange(EntityManager, _transform, doAfter.UserPosition, args.MovementThreshold) - && (args.BreakOnWeightlessMove || !_gravity.IsWeightless(args.User, xform: userXform))) - return true; - - if (args.BreakOnTargetMove) + if (args.BreakOnMove && !(!args.BreakOnWeightlessMove && _gravity.IsWeightless(args.User, xform: userXform))) { - DebugTools.Assert(targetXform != null, "Break on move is true, but no target specified?"); - if (targetXform != null && targetXform.Coordinates.TryDistance(EntityManager, userXform.Coordinates, out var distance)) + // Whether the user has moved too much from their original position. + if (!userXform.Coordinates.InRange(EntityManager, _transform, doAfter.UserPosition, args.MovementThreshold)) + return true; + + // Whether the distance between the user and target(if any) has changed too much. + if (targetXform != null && + targetXform.Coordinates.TryDistance(EntityManager, userXform.Coordinates, out var distance)) { - // once the target moves too far from you the do after breaks if (Math.Abs(distance - doAfter.TargetDistance) > args.MovementThreshold) return true; } } + // Whether the user and the target are too far apart. + if (args.Target != null) + { + if (args.DistanceThreshold != null) + { + if (!_interaction.InRangeUnobstructed(args.User, args.Target.Value, args.DistanceThreshold.Value)) + return true; + } + else + { + if (!_interaction.InRangeUnobstructed(args.User, args.Target.Value)) + return true; + } + } + + // Whether the distance between the tool and the user has grown too much. + if (args.Used != null) + { + if (args.DistanceThreshold != null) + { + if (!_interaction.InRangeUnobstructed(args.User, + args.Used.Value, + args.DistanceThreshold.Value)) + return true; + } + else + { + if (!_interaction.InRangeUnobstructed(args.User,args.Used.Value)) + return true; + } + } + if (args.AttemptFrequency == AttemptFrequency.EveryTick && !TryAttemptEvent(doAfter)) return true; @@ -199,23 +231,6 @@ public abstract partial class SharedDoAfterSystem : EntitySystem if (args.RequireCanInteract && !_actionBlocker.CanInteract(args.User, args.Target)) return true; - if (args.DistanceThreshold != null) - { - if (targetXform != null - && !args.User.Equals(args.Target) - && !userXform.Coordinates.InRange(EntityManager, _transform, targetXform.Coordinates, - args.DistanceThreshold.Value)) - { - return true; - } - - if (usedXform != null - && !userXform.Coordinates.InRange(EntityManager, _transform, usedXform.Coordinates, - args.DistanceThreshold.Value)) - { - return true; - } - } return false; } diff --git a/Content.Shared/DoAfter/SharedDoAfterSystem.cs b/Content.Shared/DoAfter/SharedDoAfterSystem.cs index 9e81c91550..d20da49485 100644 --- a/Content.Shared/DoAfter/SharedDoAfterSystem.cs +++ b/Content.Shared/DoAfter/SharedDoAfterSystem.cs @@ -214,12 +214,11 @@ public abstract partial class SharedDoAfterSystem : EntitySystem args.NetUser = GetNetEntity(args.User); args.NetEventTarget = GetNetEntity(args.EventTarget); - if (args.BreakOnUserMove || args.BreakOnTargetMove) + if (args.BreakOnMove) doAfter.UserPosition = Transform(args.User).Coordinates; - if (args.Target != null && args.BreakOnTargetMove) + if (args.Target != null && args.BreakOnMove) { - // Target should never be null if the bool is set. var targetPosition = Transform(args.Target.Value).Coordinates; doAfter.UserPosition.TryDistance(EntityManager, targetPosition, out doAfter.TargetDistance); } diff --git a/Content.Shared/Inventory/InventorySystem.Equip.cs b/Content.Shared/Inventory/InventorySystem.Equip.cs index 24006b0c9f..7c9279df20 100644 --- a/Content.Shared/Inventory/InventorySystem.Equip.cs +++ b/Content.Shared/Inventory/InventorySystem.Equip.cs @@ -168,8 +168,7 @@ public abstract partial class InventorySystem { BlockDuplicate = true, BreakOnHandChange = true, - BreakOnUserMove = true, - BreakOnTargetMove = true, + BreakOnMove = true, CancelDuplicate = true, RequireCanInteract = true, NeedHand = true @@ -414,8 +413,7 @@ public abstract partial class InventorySystem { BlockDuplicate = true, BreakOnHandChange = true, - BreakOnUserMove = true, - BreakOnTargetMove = true, + BreakOnMove = true, CancelDuplicate = true, RequireCanInteract = true, NeedHand = true diff --git a/Content.Shared/Lock/LockSystem.cs b/Content.Shared/Lock/LockSystem.cs index 53c199e410..74cf5496d9 100644 --- a/Content.Shared/Lock/LockSystem.cs +++ b/Content.Shared/Lock/LockSystem.cs @@ -111,7 +111,7 @@ public sealed class LockSystem : EntitySystem return _doAfter.TryStartDoAfter( new DoAfterArgs(EntityManager, user, lockComp.LockTime, new LockDoAfter(), uid, uid) { - BreakOnDamage = true, BreakOnTargetMove = true, BreakOnUserMove = true, RequireCanInteract = true, + BreakOnDamage = true, BreakOnMove = true, RequireCanInteract = true, NeedHand = true }); } @@ -187,7 +187,7 @@ public sealed class LockSystem : EntitySystem return _doAfter.TryStartDoAfter( new DoAfterArgs(EntityManager, user, lockComp.LockTime, new UnlockDoAfter(), uid, uid) { - BreakOnDamage = true, BreakOnTargetMove = true, BreakOnUserMove = true, RequireCanInteract = true, + BreakOnDamage = true, BreakOnMove = true, RequireCanInteract = true, NeedHand = true }); } diff --git a/Content.Shared/Mech/EntitySystems/SharedMechSystem.cs b/Content.Shared/Mech/EntitySystems/SharedMechSystem.cs index 7e44dea507..df0d7b78f0 100644 --- a/Content.Shared/Mech/EntitySystems/SharedMechSystem.cs +++ b/Content.Shared/Mech/EntitySystems/SharedMechSystem.cs @@ -434,7 +434,7 @@ public abstract class SharedMechSystem : EntitySystem var doAfterEventArgs = new DoAfterArgs(EntityManager, args.Dragged, component.EntryDelay, new MechEntryEvent(), uid, target: uid) { - BreakOnUserMove = true, + BreakOnMove = true, }; _doAfter.TryStartDoAfter(doAfterEventArgs); diff --git a/Content.Shared/Projectiles/SharedProjectileSystem.cs b/Content.Shared/Projectiles/SharedProjectileSystem.cs index f40a7a0363..372dc8a75d 100644 --- a/Content.Shared/Projectiles/SharedProjectileSystem.cs +++ b/Content.Shared/Projectiles/SharedProjectileSystem.cs @@ -53,10 +53,7 @@ public abstract partial class SharedProjectileSystem : EntitySystem args.Handled = true; _doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, component.RemovalTime.Value, - new RemoveEmbeddedProjectileEvent(), eventTarget: uid, target: uid) - { - DistanceThreshold = SharedInteractionSystem.InteractionRange, - }); + new RemoveEmbeddedProjectileEvent(), eventTarget: uid, target: uid)); } private void OnEmbedRemove(EntityUid uid, EmbeddableProjectileComponent component, RemoveEmbeddedProjectileEvent args) diff --git a/Content.Shared/Prying/Systems/PryingSystem.cs b/Content.Shared/Prying/Systems/PryingSystem.cs index fa7a135e6c..69a63f72b5 100644 --- a/Content.Shared/Prying/Systems/PryingSystem.cs +++ b/Content.Shared/Prying/Systems/PryingSystem.cs @@ -136,8 +136,7 @@ public sealed class PryingSystem : EntitySystem var doAfterArgs = new DoAfterArgs(EntityManager, user, TimeSpan.FromSeconds(modEv.BaseTime * modEv.PryTimeModifier / toolModifier), new DoorPryDoAfterEvent(), target, target, tool) { BreakOnDamage = true, - BreakOnUserMove = true, - BreakOnWeightlessMove = true, + BreakOnMove = true, }; if (tool != null) diff --git a/Content.Shared/RCD/Systems/RCDSystem.cs b/Content.Shared/RCD/Systems/RCDSystem.cs index 187c8d8a9d..f767d0b99c 100644 --- a/Content.Shared/RCD/Systems/RCDSystem.cs +++ b/Content.Shared/RCD/Systems/RCDSystem.cs @@ -104,8 +104,7 @@ public sealed class RCDSystem : EntitySystem BreakOnDamage = true, NeedHand = true, BreakOnHandChange = true, - BreakOnUserMove = true, - BreakOnTargetMove = args.Target != null, + BreakOnMove = true, AttemptFrequency = AttemptFrequency.EveryTick }; diff --git a/Content.Shared/RatKing/SharedRatKingSystem.cs b/Content.Shared/RatKing/SharedRatKingSystem.cs index d7a8ee5460..ea489e332d 100644 --- a/Content.Shared/RatKing/SharedRatKingSystem.cs +++ b/Content.Shared/RatKing/SharedRatKingSystem.cs @@ -119,7 +119,7 @@ public abstract class SharedRatKingSystem : EntitySystem { BlockDuplicate = true, BreakOnDamage = true, - BreakOnUserMove = true, + BreakOnMove = true, DistanceThreshold = 2f }); } diff --git a/Content.Shared/Research/Systems/SharedResearchStealerSystem.cs b/Content.Shared/Research/Systems/SharedResearchStealerSystem.cs index 1fffa8c025..070ff40b70 100644 --- a/Content.Shared/Research/Systems/SharedResearchStealerSystem.cs +++ b/Content.Shared/Research/Systems/SharedResearchStealerSystem.cs @@ -46,8 +46,8 @@ public abstract class SharedResearchStealerSystem : EntitySystem var doAfterArgs = new DoAfterArgs(EntityManager, uid, comp.Delay, new ResearchStealDoAfterEvent(), target: target, used: uid, eventTarget: uid) { BreakOnDamage = true, - BreakOnUserMove = true, - MovementThreshold = 0.5f + BreakOnMove = true, + MovementThreshold = 0.5f, }; _doAfter.TryStartDoAfter(doAfterArgs); diff --git a/Content.Shared/Salvage/Fulton/SharedFultonSystem.cs b/Content.Shared/Salvage/Fulton/SharedFultonSystem.cs index 0599482bbe..b355ae5873 100644 --- a/Content.Shared/Salvage/Fulton/SharedFultonSystem.cs +++ b/Content.Shared/Salvage/Fulton/SharedFultonSystem.cs @@ -153,8 +153,7 @@ public abstract partial class SharedFultonSystem : EntitySystem { CancelDuplicate = true, MovementThreshold = 0.5f, - BreakOnUserMove = true, - BreakOnTargetMove = true, + BreakOnMove = true, Broadcast = true, NeedHand = true, }); diff --git a/Content.Shared/Sericulture/SericultureSystem.cs b/Content.Shared/Sericulture/SericultureSystem.cs index 514ec79f68..f7586cc1ec 100644 --- a/Content.Shared/Sericulture/SericultureSystem.cs +++ b/Content.Shared/Sericulture/SericultureSystem.cs @@ -61,7 +61,7 @@ public abstract partial class SharedSericultureSystem : EntitySystem var doAfter = new DoAfterArgs(EntityManager, uid, comp.ProductionLength, new SericultureDoAfterEvent(), uid) { // I'm not sure if more things should be put here, but imo ideally it should probably be set in the component/YAML. Not sure if this is currently possible. - BreakOnUserMove = true, + BreakOnMove = true, BlockDuplicate = true, BreakOnDamage = true, CancelDuplicate = true, diff --git a/Content.Shared/Species/Systems/ReformSystem.cs b/Content.Shared/Species/Systems/ReformSystem.cs index dc2ce3fb90..d2ceecf28e 100644 --- a/Content.Shared/Species/Systems/ReformSystem.cs +++ b/Content.Shared/Species/Systems/ReformSystem.cs @@ -69,7 +69,7 @@ public sealed partial class ReformSystem : EntitySystem // Create a doafter & start it var doAfter = new DoAfterArgs(EntityManager, uid, comp.ReformTime, new ReformDoAfterEvent(), uid) { - BreakOnUserMove = true, + BreakOnMove = true, BlockDuplicate = true, BreakOnDamage = true, CancelDuplicate = true, @@ -89,7 +89,7 @@ public sealed partial class ReformSystem : EntitySystem return; // Spawn a new entity - // This is, to an extent, taken from polymorph. I don't use polymorph for various reasons- most notably that this is permanent. + // This is, to an extent, taken from polymorph. I don't use polymorph for various reasons- most notably that this is permanent. var child = Spawn(comp.ReformPrototype, Transform(uid).Coordinates); // This transfers the mind to the new entity @@ -105,7 +105,7 @@ public sealed partial class ReformSystem : EntitySystem _actionsSystem.RemoveAction(uid, comp.ActionEntity); // Zombies can't reform } - public sealed partial class ReformEvent : InstantActionEvent { } + public sealed partial class ReformEvent : InstantActionEvent { } [Serializable, NetSerializable] public sealed partial class ReformDoAfterEvent : SimpleDoAfterEvent { } diff --git a/Content.Shared/SprayPainter/SharedSprayPainterSystem.cs b/Content.Shared/SprayPainter/SharedSprayPainterSystem.cs index fa04a50f8b..feb1cebb8e 100644 --- a/Content.Shared/SprayPainter/SharedSprayPainterSystem.cs +++ b/Content.Shared/SprayPainter/SharedSprayPainterSystem.cs @@ -134,8 +134,7 @@ public abstract class SharedSprayPainterSystem : EntitySystem var doAfterEventArgs = new DoAfterArgs(EntityManager, args.User, painter.AirlockSprayTime, new SprayPainterDoorDoAfterEvent(sprite, style.Department), args.Used, target: ent, used: args.Used) { - BreakOnTargetMove = true, - BreakOnUserMove = true, + BreakOnMove = true, BreakOnDamage = true, NeedHand = true }; diff --git a/Content.Shared/Storage/EntitySystems/DumpableSystem.cs b/Content.Shared/Storage/EntitySystems/DumpableSystem.cs index 04f7231416..2b804cf732 100644 --- a/Content.Shared/Storage/EntitySystems/DumpableSystem.cs +++ b/Content.Shared/Storage/EntitySystems/DumpableSystem.cs @@ -133,8 +133,7 @@ public sealed class DumpableSystem : EntitySystem _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, userUid, delay, new DumpableDoAfterEvent(), storageUid, target: targetUid, used: storageUid) { - BreakOnTargetMove = true, - BreakOnUserMove = true, + BreakOnMove = true, NeedHand = true }); } diff --git a/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs b/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs index 98eac962e9..ef1b2b7c44 100644 --- a/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs +++ b/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs @@ -289,7 +289,7 @@ public abstract class SharedStorageSystem : EntitySystem var doAfterArgs = new DoAfterArgs(EntityManager, args.User, delay, new AreaPickupDoAfterEvent(GetNetEntityList(validStorables)), uid, target: uid) { BreakOnDamage = true, - BreakOnUserMove = true, + BreakOnMove = true, NeedHand = true }; diff --git a/Content.Shared/Tools/Systems/SharedToolSystem.cs b/Content.Shared/Tools/Systems/SharedToolSystem.cs index ee15b1e025..4204d7547e 100644 --- a/Content.Shared/Tools/Systems/SharedToolSystem.cs +++ b/Content.Shared/Tools/Systems/SharedToolSystem.cs @@ -124,8 +124,8 @@ public abstract partial class SharedToolSystem : EntitySystem var doAfterArgs = new DoAfterArgs(EntityManager, user, delay / toolComponent.SpeedModifier, toolEvent, tool, target: target, used: tool) { BreakOnDamage = true, - BreakOnTargetMove = true, - BreakOnUserMove = true, + BreakOnMove = true, + BreakOnWeightlessMove = false, NeedHand = tool != user, AttemptFrequency = IsWelder(tool) ? AttemptFrequency.EveryTick : AttemptFrequency.Never }; diff --git a/Content.Shared/VendingMachines/SharedVendingMachineSystem.Restock.cs b/Content.Shared/VendingMachines/SharedVendingMachineSystem.Restock.cs index 87e2f0890a..6aef4d0949 100644 --- a/Content.Shared/VendingMachines/SharedVendingMachineSystem.Restock.cs +++ b/Content.Shared/VendingMachines/SharedVendingMachineSystem.Restock.cs @@ -70,8 +70,7 @@ public abstract partial class SharedVendingMachineSystem var doAfterArgs = new DoAfterArgs(EntityManager, args.User, (float) component.RestockDelay.TotalSeconds, new RestockDoAfterEvent(), target, target: target, used: uid) { - BreakOnTargetMove = true, - BreakOnUserMove = true, + BreakOnMove = true, BreakOnDamage = true, NeedHand = true }; diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs index a8f7ee2395..261243fea3 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs @@ -74,8 +74,7 @@ public abstract partial class SharedGunSystem _doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, component.FillDelay, new AmmoFillDoAfterEvent(), used: uid, target: args.Target, eventTarget: uid) { - BreakOnTargetMove = true, - BreakOnUserMove = true, + BreakOnMove = true, BreakOnDamage = false, NeedHand = true });