diff --git a/Content.Client/Movement/Systems/JetpackSystem.cs b/Content.Client/Movement/Systems/JetpackSystem.cs index 2954140d79..804736ab7a 100644 --- a/Content.Client/Movement/Systems/JetpackSystem.cs +++ b/Content.Client/Movement/Systems/JetpackSystem.cs @@ -49,13 +49,17 @@ public sealed class JetpackSystem : SharedJetpackSystem // TODO: Please don't copy-paste this I beg // make a generic particle emitter system / actual particles instead. - var query = EntityQueryEnumerator(); + var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var comp)) + while (query.MoveNext(out var uid, out var comp, out var xform)) { - if (_timing.CurTime < comp.TargetTime) - continue; + if (_transform.InRange(xform.Coordinates, comp.LastCoordinates, comp.MaxDistance)) + { + if (_timing.CurTime < comp.TargetTime) + continue; + } + comp.LastCoordinates = _transform.GetMoverCoordinates(xform.Coordinates); comp.TargetTime = _timing.CurTime + TimeSpan.FromSeconds(comp.EffectCooldown); CreateParticles(uid); diff --git a/Content.Shared/Movement/Components/ActiveJetpackComponent.cs b/Content.Shared/Movement/Components/ActiveJetpackComponent.cs index 615dc3aee4..03c2a8345d 100644 --- a/Content.Shared/Movement/Components/ActiveJetpackComponent.cs +++ b/Content.Shared/Movement/Components/ActiveJetpackComponent.cs @@ -1,4 +1,5 @@ using Robust.Shared.GameStates; +using Robust.Shared.Map; namespace Content.Shared.Movement.Components; @@ -9,5 +10,10 @@ namespace Content.Shared.Movement.Components; public sealed partial class ActiveJetpackComponent : Component { public float EffectCooldown = 0.3f; + + public float MaxDistance = 0.7f; + + public EntityCoordinates LastCoordinates; + public TimeSpan TargetTime = TimeSpan.Zero; }