diff --git a/Content.Server/GameObjects/Components/Movement/AiControllerComponent.cs b/Content.Server/GameObjects/Components/Movement/AiControllerComponent.cs index dab617671d..9f1e87f05c 100644 --- a/Content.Server/GameObjects/Components/Movement/AiControllerComponent.cs +++ b/Content.Server/GameObjects/Components/Movement/AiControllerComponent.cs @@ -90,11 +90,14 @@ namespace Content.Server.GameObjects.Components.Movement /// [ViewVariables(VVAccess.ReadWrite)] - public float PushStrength { get; set; } = 0.4f; + public float PushStrength { get; set; } = IMobMoverComponent.PushStrengthDefault; + + [ViewVariables(VVAccess.ReadWrite)] + public float WeightlessStrength { get; set; } = IMobMoverComponent.WeightlessStrengthDefault; /// [ViewVariables(VVAccess.ReadWrite)] - public float GrabRange { get; set; } = 0.2f; + public float GrabRange { get; set; } = IMobMoverComponent.GrabRangeDefault; /// /// Is the entity Sprinting (running)? diff --git a/Content.Shared/GameObjects/Components/Movement/IMobMoverComponent.cs b/Content.Shared/GameObjects/Components/Movement/IMobMoverComponent.cs index 1e8572837a..9220ac72a2 100644 --- a/Content.Shared/GameObjects/Components/Movement/IMobMoverComponent.cs +++ b/Content.Shared/GameObjects/Components/Movement/IMobMoverComponent.cs @@ -6,6 +6,10 @@ namespace Content.Shared.GameObjects.Components.Movement { public interface IMobMoverComponent : IComponent { + const float GrabRangeDefault = 0.6f; + const float PushStrengthDefault = 600.0f; + const float WeightlessStrengthDefault = 0.4f; + EntityCoordinates LastPosition { get; set; } public float StepSoundDistance { get; set; } @@ -13,5 +17,7 @@ namespace Content.Shared.GameObjects.Components.Movement float GrabRange { get; set; } float PushStrength { get; set; } + + float WeightlessStrength { get; set; } } } diff --git a/Content.Shared/GameObjects/Components/Movement/SharedPlayerMobMoverComponent.cs b/Content.Shared/GameObjects/Components/Movement/SharedPlayerMobMoverComponent.cs index 410504d9bf..35f739e8c4 100644 --- a/Content.Shared/GameObjects/Components/Movement/SharedPlayerMobMoverComponent.cs +++ b/Content.Shared/GameObjects/Components/Movement/SharedPlayerMobMoverComponent.cs @@ -25,9 +25,12 @@ namespace Content.Shared.GameObjects.Components.Movement private float _stepSoundDistance; [DataField("grabRange")] - private float _grabRange = 0.2f; + private float _grabRange = IMobMoverComponent.GrabRangeDefault; [DataField("pushStrength")] - private float _pushStrength = 0.4f; + private float _pushStrength = IMobMoverComponent.PushStrengthDefault; + + [DataField("weightlessStrength")] + private float _weightlessStrength = IMobMoverComponent.WeightlessStrengthDefault; [ViewVariables(VVAccess.ReadWrite)] public EntityCoordinates LastPosition { get; set; } @@ -70,6 +73,18 @@ namespace Content.Shared.GameObjects.Components.Movement } } + [ViewVariables(VVAccess.ReadWrite)] + public float WeightlessStrength + { + get => _weightlessStrength; + set + { + if (MathHelper.CloseTo(_weightlessStrength, value)) return; + _weightlessStrength = value; + Dirty(); + } + } + public override void Initialize() { base.Initialize(); @@ -86,7 +101,7 @@ namespace Content.Shared.GameObjects.Components.Movement public override ComponentState GetComponentState(ICommonSession session) { - return new PlayerMobMoverComponentState(_grabRange, _pushStrength); + return new PlayerMobMoverComponentState(_grabRange, _pushStrength, _weightlessStrength); } public override void HandleComponentState(ComponentState? curState, ComponentState? nextState) @@ -112,11 +127,13 @@ namespace Content.Shared.GameObjects.Components.Movement { public float GrabRange; public float PushStrength; + public float WeightlessStrength; - public PlayerMobMoverComponentState(float grabRange, float pushStrength) : base(ContentNetIDs.PLAYER_MOB_MOVER) + public PlayerMobMoverComponentState(float grabRange, float pushStrength, float weightlessStrength) : base(ContentNetIDs.PLAYER_MOB_MOVER) { GrabRange = grabRange; PushStrength = pushStrength; + WeightlessStrength = weightlessStrength; } } } diff --git a/Content.Shared/Physics/Controllers/SharedMoverController.cs b/Content.Shared/Physics/Controllers/SharedMoverController.cs index c1a12bb975..0ad0c1a134 100644 --- a/Content.Shared/Physics/Controllers/SharedMoverController.cs +++ b/Content.Shared/Physics/Controllers/SharedMoverController.cs @@ -85,7 +85,7 @@ namespace Content.Shared.Physics.Controllers if (weightless) { - total *= mobMover.PushStrength; + total *= mobMover.WeightlessStrength; } if (total != Vector2.Zero)