using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Shared.Humanoid.Prototypes; [Prototype] public sealed partial class SpeciesPrototype : IPrototype { /// /// Prototype ID of the species. /// [IdDataField] public string ID { get; private set; } = default!; /// /// User visible name of the species. /// [DataField(required: true)] public string Name { get; private set; } = default!; /// /// Descriptor. Unused...? This is intended /// for an eventual integration into IdentitySystem /// (i.e., young human person, young lizard person, etc.) /// [DataField] public string Descriptor { get; private set; } = "humanoid"; /// /// Whether the species is available "at round start" (In the character editor) /// [DataField(required: true)] public bool RoundStart { get; private set; } = false; // The below two are to avoid fetching information about the species from the entity // prototype. // This one here is a utility field, and is meant to *avoid* having to duplicate // the massive SpriteComponent found in every species. // Species implementors can just override SpriteComponent if they want a custom // sprite layout, and leave this null. Keep in mind that this will disable // sprite accessories. [DataField("sprites")] public string SpriteSet { get; private set; } = default!; /// /// Default skin tone for this species. This applies for non-human skin tones. /// [DataField] public Color DefaultSkinTone { get; private set; } = Color.White; /// /// Default human skin tone for this species. This applies for human skin tones. /// See for the valid range of skin tones. /// [DataField] public int DefaultHumanSkinTone { get; private set; } = 20; /// /// The limit of body markings that you can place on this species. /// [DataField("markingLimits")] public string MarkingPoints { get; private set; } = default!; /// /// Humanoid species variant used by this entity. /// [DataField(required: true)] public EntProtoId Prototype { get; private set; } = default!; /// /// Prototype used by the species for the dress-up doll in various menus. /// [DataField(required: true)] public EntProtoId DollPrototype { get; private set; } = default!; /// /// Method of skin coloration used by the species. /// [DataField(required: true)] public HumanoidSkinColor SkinColoration { get; private set; } [DataField] public string MaleFirstNames { get; private set; } = "NamesFirstMale"; [DataField] public string FemaleFirstNames { get; private set; } = "NamesFirstFemale"; [DataField] public string LastNames { get; private set; } = "NamesLast"; [DataField] public SpeciesNaming Naming { get; private set; } = SpeciesNaming.FirstLast; [DataField] public List Sexes { get; private set; } = new() { Sex.Male, Sex.Female }; /// /// Characters younger than this are too young to be hired by Nanotrasen. /// [DataField] public int MinAge = 18; /// /// Characters younger than this appear young. /// [DataField] public int YoungAge = 30; /// /// Characters older than this appear old. Characters in between young and old age appear middle aged. /// [DataField] public int OldAge = 60; /// /// Characters cannot be older than this. Only used for restrictions... /// although imagine if ghosts could age people WYCI... /// [DataField] public int MaxAge = 120; } public enum SpeciesNaming : byte { First, FirstLast, FirstDashFirst, TheFirstofLast, }