using Content.Shared.DoAfter;
using Robust.Shared.GameStates;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
namespace Content.Shared.Stunnable;
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(fieldDeltas:true), AutoGenerateComponentPause, Access(typeof(SharedStunSystem))]
public sealed partial class KnockedDownComponent : Component
{
///
/// Game time that we can stand up.
///
[DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), AutoNetworkedField, AutoPausedField]
public TimeSpan NextUpdate;
///
/// Should we try to stand up?
///
[DataField, AutoNetworkedField]
public bool AutoStand = true;
///
/// The Standing Up DoAfter.
///
[DataField, AutoNetworkedField]
public ushort? DoAfterId;
///
/// Friction modifier for knocked down players.
/// Makes them accelerate and deccelerate slower.
///
[DataField, AutoNetworkedField]
public float FrictionModifier = 1f; // Should add a friction modifier to slipping to compensate for this
///
/// Modifier to the maximum movement speed of a knocked down mover.
///
[DataField, AutoNetworkedField]
public float SpeedModifier = 1f;
///
/// How long does it take us to get up?
///
[DataField, AutoNetworkedField]
public TimeSpan GetUpDoAfter = TimeSpan.FromSeconds(1);
}