Add slipping moving you forward a few tiles (#1520)
* Add slipping moving you forward * Check for weightless and change decay to a multiplier * Pragma moment
This commit is contained in:
@@ -74,6 +74,12 @@ namespace Content.Shared.GameObjects.Components.Movement
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (entity.TryGetComponent(out ICollidableComponent collidable))
|
||||||
|
{
|
||||||
|
var controller = collidable.EnsureController<SlipController>();
|
||||||
|
controller.LinearVelocity = collidable.LinearVelocity;
|
||||||
|
}
|
||||||
|
|
||||||
stun.Paralyze(5);
|
stun.Paralyze(5);
|
||||||
_slipped.Add(entity.Uid);
|
_slipped.Add(entity.Uid);
|
||||||
|
|
||||||
|
|||||||
40
Content.Shared/Physics/SlipController.cs
Normal file
40
Content.Shared/Physics/SlipController.cs
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
using Robust.Shared.Interfaces.Physics;
|
||||||
|
using Robust.Shared.IoC;
|
||||||
|
using Robust.Shared.Physics;
|
||||||
|
|
||||||
|
namespace Content.Shared.Physics
|
||||||
|
{
|
||||||
|
public class SlipController : VirtualController
|
||||||
|
{
|
||||||
|
#pragma warning disable 649
|
||||||
|
[Dependency] private readonly IPhysicsManager _physicsManager;
|
||||||
|
#pragma warning restore 649
|
||||||
|
|
||||||
|
public SlipController()
|
||||||
|
{
|
||||||
|
IoCManager.InjectDependencies(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
private float Decay { get; set; } = 0.95f;
|
||||||
|
|
||||||
|
public override void UpdateAfterProcessing()
|
||||||
|
{
|
||||||
|
if (ControlledComponent == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_physicsManager.IsWeightless(ControlledComponent.Owner.Transform.GridPosition))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
LinearVelocity *= Decay;
|
||||||
|
|
||||||
|
if (LinearVelocity.Length < 0.001)
|
||||||
|
{
|
||||||
|
Stop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user