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; }