diff --git a/Content.Shared/Item/HeldSpeedModifierSystem.cs b/Content.Shared/Item/HeldSpeedModifierSystem.cs index d7afa8f40f..c3286191b9 100644 --- a/Content.Shared/Item/HeldSpeedModifierSystem.cs +++ b/Content.Shared/Item/HeldSpeedModifierSystem.cs @@ -29,7 +29,7 @@ public sealed class HeldSpeedModifierSystem : EntitySystem _movementSpeedModifier.RefreshMovementSpeedModifiers(args.User); } - private void OnRefreshMovementSpeedModifiers(EntityUid uid, HeldSpeedModifierComponent component, HeldRelayedEvent args) + public (float,float) GetHeldMovementSpeedModifiers(EntityUid uid, HeldSpeedModifierComponent component) { var walkMod = component.WalkModifier; var sprintMod = component.SprintModifier; @@ -39,6 +39,12 @@ public sealed class HeldSpeedModifierSystem : EntitySystem sprintMod = clothingSpeedModifier.SprintModifier; } + return (walkMod, sprintMod); + } + + private void OnRefreshMovementSpeedModifiers(EntityUid uid, HeldSpeedModifierComponent component, HeldRelayedEvent args) + { + var (walkMod, sprintMod) = GetHeldMovementSpeedModifiers(uid, component); args.Args.ModifySpeed(walkMod, sprintMod); } } diff --git a/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs b/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs index eb2872df9c..edc8ad5161 100644 --- a/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs +++ b/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs @@ -8,6 +8,7 @@ using Content.Shared.Hands; using Content.Shared.Hands.EntitySystems; using Content.Shared.Input; using Content.Shared.Interaction; +using Content.Shared.Item; using Content.Shared.Movement.Events; using Content.Shared.Movement.Pulling.Components; using Content.Shared.Movement.Pulling.Events; @@ -43,6 +44,7 @@ public sealed class PullingSystem : EntitySystem [Dependency] private readonly SharedInteractionSystem _interaction = default!; [Dependency] private readonly SharedPhysicsSystem _physics = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; + [Dependency] private readonly HeldSpeedModifierSystem _clothingMoveSpeed = default!; public override void Initialize() { @@ -192,6 +194,14 @@ public sealed class PullingSystem : EntitySystem private void OnRefreshMovespeed(EntityUid uid, PullerComponent component, RefreshMovementSpeedModifiersEvent args) { + if (TryComp(component.Pulling, out var heldMoveSpeed) && component.Pulling.HasValue) + { + var (walkMod, sprintMod) = + _clothingMoveSpeed.GetHeldMovementSpeedModifiers(component.Pulling.Value, heldMoveSpeed); + args.ModifySpeed(walkMod, sprintMod); + return; + } + args.ModifySpeed(component.WalkSpeedModifier, component.SprintSpeedModifier); } @@ -459,6 +469,7 @@ public sealed class PullingSystem : EntitySystem // Messaging var message = new PullStartedMessage(pullerUid, pullableUid); + _modifierSystem.RefreshMovementSpeedModifiers(pullerUid); _alertsSystem.ShowAlert(pullerUid, pullerComp.PullingAlert); _alertsSystem.ShowAlert(pullableUid, pullableComp.PulledAlert);