diff --git a/Content.Server/Storage/EntitySystems/DumpableSystem.cs b/Content.Server/Storage/EntitySystems/DumpableSystem.cs index 9e9b4d9b05..a896e19222 100644 --- a/Content.Server/Storage/EntitySystems/DumpableSystem.cs +++ b/Content.Server/Storage/EntitySystems/DumpableSystem.cs @@ -42,9 +42,9 @@ namespace Content.Server.Storage.EntitySystems if (HasComp(args.Target) || HasComp(args.Target)) { StartDoAfter(uid, args.Target.Value, args.User, component, storage); - return; } } + private void AddDumpVerb(EntityUid uid, DumpableComponent dumpable, GetVerbsEvent args) { if (!args.CanAccess || !args.CanInteract) @@ -105,11 +105,7 @@ namespace Content.Server.Storage.EntitySystems public void StartDoAfter(EntityUid storageUid, EntityUid? targetUid, EntityUid userUid, DumpableComponent dumpable, ServerStorageComponent storage, float multiplier = 1) { if (dumpable.CancelToken != null) - { - dumpable.CancelToken.Cancel(); - dumpable.CancelToken = null; return; - } if (storage.StoredEntities == null) return; @@ -119,7 +115,7 @@ namespace Content.Server.Storage.EntitySystems dumpable.CancelToken = new CancellationTokenSource(); _doAfterSystem.DoAfter(new DoAfterEventArgs(userUid, delay, dumpable.CancelToken.Token, target: targetUid) { - BroadcastFinishedEvent = new DumpCompletedEvent(userUid, targetUid, storage.StoredEntities), + BroadcastFinishedEvent = new DumpCompletedEvent(dumpable, userUid, targetUid, storage.StoredEntities), BroadcastCancelledEvent = new DumpCancelledEvent(dumpable.Owner), BreakOnTargetMove = true, BreakOnUserMove = true, @@ -131,6 +127,8 @@ namespace Content.Server.Storage.EntitySystems private void OnDumpCompleted(DumpCompletedEvent args) { + args.Component.CancelToken = null; + Queue dumpQueue = new(); foreach (var entity in args.StoredEntities) { @@ -160,7 +158,6 @@ namespace Content.Server.Storage.EntitySystems { Transform(entity).LocalPosition = Transform(args.Target.Value).LocalPosition + _random.NextVector2Box() / 4; } - return; } } @@ -181,12 +178,14 @@ namespace Content.Server.Storage.EntitySystems private sealed class DumpCompletedEvent : EntityEventArgs { + public DumpableComponent Component { get; } public EntityUid User { get; } public EntityUid? Target { get; } public IReadOnlyList StoredEntities { get; } - public DumpCompletedEvent(EntityUid user, EntityUid? target, IReadOnlyList storedEntities) + public DumpCompletedEvent(DumpableComponent component, EntityUid user, EntityUid? target, IReadOnlyList storedEntities) { + Component = component; User = user; Target = target; StoredEntities = storedEntities;