From: Preston Smith <92108534+thetolbean@users.noreply.github.com> Date: Mon, 16 Dec 2024 14:09:17 +0000 (-0600) Subject: Prevent pulling when teleporting (#33252) X-Git-Url: https://git.smokeofanarchy.ru/gitweb.cgi?a=commitdiff_plain;h=01c1d8f8241b552d3ce9a4f2ac55804840fd5100;p=space-station-14.git Prevent pulling when teleporting (#33252) * No more teleporting pulling * pulled dash * Update Content.Shared/Ninja/Systems/DashAbilitySystem.cs Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> * Update Content.Server/Implants/SubdermalImplantSystem.cs Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --------- Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- diff --git a/Content.Server/Implants/SubdermalImplantSystem.cs b/Content.Server/Implants/SubdermalImplantSystem.cs index 6e277dd29f..0c86e2f659 100644 --- a/Content.Server/Implants/SubdermalImplantSystem.cs +++ b/Content.Server/Implants/SubdermalImplantSystem.cs @@ -109,6 +109,10 @@ public sealed class SubdermalImplantSystem : SharedSubdermalImplantSystem if (TryComp(ent, out var pull) && _pullingSystem.IsPulled(ent, pull)) _pullingSystem.TryStopPull(ent, pull); + // Check if the user is pulling anything, and drop it if so + if (TryComp(ent, out var puller) && TryComp(puller.Pulling, out var pullable)) + _pullingSystem.TryStopPull(puller.Pulling.Value, pullable); + var xform = Transform(ent); var targetCoords = SelectRandomTileInRange(xform, implant.TeleportRadius); diff --git a/Content.Shared/Ninja/Systems/DashAbilitySystem.cs b/Content.Shared/Ninja/Systems/DashAbilitySystem.cs index 09be108505..830b51d5ad 100644 --- a/Content.Shared/Ninja/Systems/DashAbilitySystem.cs +++ b/Content.Shared/Ninja/Systems/DashAbilitySystem.cs @@ -1,8 +1,12 @@ using Content.Shared.Actions; using Content.Shared.Charges.Components; using Content.Shared.Charges.Systems; +using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; using Content.Shared.Interaction; +using Content.Shared.Movement.Pulling.Components; +using Content.Shared.Movement.Pulling.Events; +using Content.Shared.Movement.Pulling.Systems; using Content.Shared.Ninja.Components; using Content.Shared.Popups; using Content.Shared.Examine; @@ -22,6 +26,7 @@ public sealed class DashAbilitySystem : EntitySystem [Dependency] private readonly SharedHandsSystem _hands = default!; [Dependency] private readonly ExamineSystemShared _examine = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; + [Dependency] private readonly PullingSystem _pullingSystem = default!; [Dependency] private readonly SharedTransformSystem _transform = default!; public override void Initialize() @@ -80,6 +85,14 @@ public sealed class DashAbilitySystem : EntitySystem return; } + // Check if the user is BEING pulled, and escape if so + if (TryComp(user, out var pull) && _pullingSystem.IsPulled(user, pull)) + _pullingSystem.TryStopPull(user, pull); + + // Check if the user is pulling anything, and drop it if so + if (TryComp(user, out var puller) && TryComp(puller.Pulling, out var pullable)) + _pullingSystem.TryStopPull(puller.Pulling.Value, pullable); + var xform = Transform(user); _transform.SetCoordinates(user, xform, args.Target); _transform.AttachToGridOrMap(user, xform);