using Robust.Shared.GameStates;
namespace Content.Shared.SegmentedEntity;
///
/// Controls initialization of any Multi-segmented entity
///
[RegisterComponent, NetworkedComponent]
[AutoGenerateComponentState]
public sealed partial class SegmentedEntityComponent : Component
{
///
/// A list of each UID attached to the Lamia, in order of spawn
///
[DataField, AutoNetworkedField]
public List Segments = new();
///
/// A clamped variable that represents the number of segments to be spawned
///
[DataField]
public int NumberOfSegments = 18;
///
/// How wide the initial segment should be.
///
[DataField]
public float InitialRadius = 0.3f;
///
/// Texture of the segment.
///
[DataField(required: true)]
public string TexturePath;
///
/// If UseTaperSystem is true, this constant represents the rate at which a segmented entity will taper towards the tip. Tapering is on a logarithmic scale, and will asymptotically approach 0.
///
[DataField]
public float OffsetConstant = 1.03f;
///
/// Represents the prototype used to parent all segments
///
[DataField]
public string InitialSegmentId = "LamiaInitialSegment";
///
/// Represents the segment prototype to be spawned
///
[DataField]
public string SegmentId = "LamiaSegment";
///
/// How much to slim each successive segment.
///
[DataField]
public float SlimFactor = 0.93f;
///
/// Set to false for constant width
///
[DataField]
public bool UseTaperSystem = true;
///
/// The standard distance between the centerpoint of each segment.
///
[DataField]
public float StaticOffset = 0.15f;
///
/// The standard sprite scale of each segment.
///
[DataField]
public float StaticScale = 1f;
///
/// Used to more finely tune how much damage should be transfered from tail to body.
///
[DataField]
public float DamageModifierOffset = 0.4f;
///
/// A clamped variable that represents how far from the tip should tapering begin.
///
[DataField]
public int TaperOffset = 18;
///
/// Coefficient used to finely tune how much explosion damage should be transfered to the body. This is calculated multiplicatively with the derived damage modifier set.
///
[DataField]
public float ExplosiveModifierOffset = 0.1f;
///
/// Controls whether or not lamia segments always block bullets, or use the bullet passover system for laying down bodies.
///
[DataField]
public bool BulletPassover = true;
}