From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Wed, 15 Mar 2023 02:05:53 +0000 (+1300) Subject: DoAfter and other bugfixes (#14669) X-Git-Url: https://git.smokeofanarchy.ru/gitweb.cgi?a=commitdiff_plain;h=2f88173730e1a257822bde43b5594155fa301a2b;p=space-station-14.git DoAfter and other bugfixes (#14669) --- diff --git a/Content.Server/Climbing/ClimbSystem.cs b/Content.Server/Climbing/ClimbSystem.cs index 1908b2b17f..c416906a8f 100644 --- a/Content.Server/Climbing/ClimbSystem.cs +++ b/Content.Server/Climbing/ClimbSystem.cs @@ -123,7 +123,8 @@ public sealed class ClimbSystem : SharedClimbSystem BreakOnDamage = true, BreakOnStun = true, RaiseOnUser = user == entityToMove, - RaiseOnTarget = user != entityToMove + RaiseOnTarget = user != entityToMove, + RaiseOnUsed = false, }; _doAfterSystem.DoAfter(args, ev); diff --git a/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs b/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs index 84f109e74a..a26b4c877a 100644 --- a/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs +++ b/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs @@ -496,6 +496,9 @@ namespace Content.Server.Disposal.Unit.EntitySystems BreakOnTargetMove = true, BreakOnUserMove = true, NeedHand = false, + RaiseOnTarget = false, + RaiseOnUser = false, + RaiseOnUsed = true, }; _doAfterSystem.DoAfter(doAfterArgs); diff --git a/Content.Server/Mech/Systems/MechSystem.cs b/Content.Server/Mech/Systems/MechSystem.cs index b23fb22106..90a929aaba 100644 --- a/Content.Server/Mech/Systems/MechSystem.cs +++ b/Content.Server/Mech/Systems/MechSystem.cs @@ -89,7 +89,10 @@ public sealed class MechSystem : SharedMechSystem var doAfterEventArgs = new DoAfterEventArgs(args.User, component.BatteryRemovalDelay, target: uid, used: args.Target) { BreakOnTargetMove = true, - BreakOnUserMove = true + BreakOnUserMove = true, + RaiseOnTarget = true, + RaiseOnUsed = false, + RaiseOnUser = false, }; _doAfter.DoAfter(doAfterEventArgs, removeBattery); @@ -168,6 +171,9 @@ public sealed class MechSystem : SharedMechSystem { BreakOnUserMove = true, BreakOnStun = true, + RaiseOnTarget = true, + RaiseOnUsed = false, + RaiseOnUser = false, }; _doAfter.DoAfter(doAfterEventArgs, mechEntryEvent); @@ -200,7 +206,10 @@ public sealed class MechSystem : SharedMechSystem { BreakOnUserMove = true, BreakOnTargetMove = true, - BreakOnStun = true + BreakOnStun = true, + RaiseOnTarget = true, + RaiseOnUsed = false, + RaiseOnUser = false, }; _doAfter.DoAfter(doAfterEventArgs, mechExitEvent); diff --git a/Content.Server/Resist/ResistLockerSystem.cs b/Content.Server/Resist/ResistLockerSystem.cs index c096d529f4..78da7c012a 100644 --- a/Content.Server/Resist/ResistLockerSystem.cs +++ b/Content.Server/Resist/ResistLockerSystem.cs @@ -22,7 +22,7 @@ public sealed class ResistLockerSystem : EntitySystem { base.Initialize(); SubscribeLocalEvent(OnRelayMovement); - SubscribeLocalEvent(OnDoAfter); + SubscribeLocalEvent>(OnDoAfter); SubscribeLocalEvent(OnRemoved); } @@ -58,7 +58,7 @@ public sealed class ResistLockerSystem : EntitySystem resistLockerComponent.IsResisting = true; _popupSystem.PopupEntity(Loc.GetString("resist-locker-component-start-resisting"), user, user, PopupType.Large); - _doAfterSystem.DoAfter(doAfterEventArgs); + _doAfterSystem.DoAfter(doAfterEventArgs, new LockerDoAfterData()); } private void OnRemoved(EntityUid uid, ResistLockerComponent component, EntRemovedFromContainerMessage args) @@ -67,7 +67,7 @@ public sealed class ResistLockerSystem : EntitySystem component.CancelToken = null; } - private void OnDoAfter(EntityUid uid, ResistLockerComponent component, DoAfterEvent args) + private void OnDoAfter(EntityUid uid, ResistLockerComponent component, DoAfterEvent args) { if (args.Cancelled) { @@ -96,4 +96,8 @@ public sealed class ResistLockerSystem : EntitySystem component.CancelToken = null; args.Handled = true; } + + private struct LockerDoAfterData + { + } } diff --git a/Content.Server/Tiles/FloorTileSystem.cs b/Content.Server/Tiles/FloorTileSystem.cs index c43832f7ed..fc6603c42e 100644 --- a/Content.Server/Tiles/FloorTileSystem.cs +++ b/Content.Server/Tiles/FloorTileSystem.cs @@ -31,7 +31,7 @@ namespace Content.Server.Tiles private void OnAfterInteract(EntityUid uid, FloorTileComponent component, AfterInteractEvent args) { - if (!args.CanReach) + if (!args.CanReach || args.Handled) return; if (!TryComp(uid, out var stack)) @@ -72,6 +72,8 @@ namespace Content.Server.Tiles continue; PlaceAt(mapGrid, location, currentTileDefinition.TileId, component.PlaceTileSound); + args.Handled = true; + return; } } else if (HasBaseTurf(currentTileDefinition, ContentTileDefinition.SpaceID)) @@ -81,6 +83,8 @@ namespace Content.Server.Tiles gridXform.WorldPosition = locationMap.Position; location = new EntityCoordinates(mapGrid.Owner, Vector2.Zero); PlaceAt(mapGrid, location, _tileDefinitionManager[component.OutputTiles[0]].TileId, component.PlaceTileSound, mapGrid.TileSize / 2f); + args.Handled = true; + return; } } } diff --git a/Content.Server/Tools/Systems/WeldableSystem.cs b/Content.Server/Tools/Systems/WeldableSystem.cs index 994a4c5e8f..780cab4368 100644 --- a/Content.Server/Tools/Systems/WeldableSystem.cs +++ b/Content.Server/Tools/Systems/WeldableSystem.cs @@ -69,7 +69,7 @@ public sealed class WeldableSystem : EntitySystem if (!CanWeld(uid, tool, user, component)) return false; - var toolEvData = new ToolEventData(new WeldFinishedEvent(user, tool), targetEntity: uid); + var toolEvData = new ToolEventData(new WeldFinishedEvent(user, tool), cancelledEv: new WeldCancelledEvent(),targetEntity: uid); component.BeingWelded = _toolSystem.UseTool(tool, user, uid, component.WeldingTime.Seconds, new[] { component.WeldingQuality }, toolEvData, fuel: component.FuelConsumption); // Log attempt