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)