Code/StaminaForTheDefaultPlayerController.cs
using Sandbox;
namespace Maxine;
/// <summary>
/// An implementation for Facepunch's default character controller.
/// </summary>
[Title( "Maxine's Simple Stamina - Simple Stamina for default player controller" )]
public sealed class StaminaForTheDefaultPlayerController : Component
{
[Property] private Stamina Stamina;
[Property] private PlayerController controller;
[Property] private float minimumSpeedBeforeConsumingStamina = 300;
[Property] private float staminaToConsume = 1f;
protected override void OnAwake()
{
base.OnAwake();
controller ??= GetComponent<PlayerController>();
Stamina ??= GetComponent<Stamina>();
}
protected override void OnUpdate()
{
base.OnUpdate();
if ( controller == null ) return;
VelocityCheck( controller.Velocity );
}
private void VelocityCheck( Vector3 velocity )
{
if ( velocity.Length >= minimumSpeedBeforeConsumingStamina && controller.IsOnGround )
{
Stamina.ConsumeStamina( staminaToConsume );
if ( Stamina.CurrentStamina <= 0 )
{
controller.WishVelocity = velocity / 6;
controller.GroundVelocity = -velocity / 1.25f;
}
}
}
}