| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- using Robust.Shared.Prototypes;
- using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
- namespace Content.Shared.Humanoid.Prototypes;
- [Prototype]
- public sealed partial class SpeciesPrototype : IPrototype
- {
- /// <summary>
- /// Prototype ID of the species.
- /// </summary>
- [IdDataField]
- public string ID { get; private set; } = default!;
- /// <summary>
- /// User visible name of the species.
- /// </summary>
- [DataField(required: true)]
- public string Name { get; private set; } = default!;
- /// <summary>
- /// Descriptor. Unused...? This is intended
- /// for an eventual integration into IdentitySystem
- /// (i.e., young human person, young lizard person, etc.)
- /// </summary>
- [DataField]
- public string Descriptor { get; private set; } = "humanoid";
- /// <summary>
- /// Whether the species is available "at round start" (In the character editor)
- /// </summary>
- [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!;
- /// <summary>
- /// Default skin tone for this species. This applies for non-human skin tones.
- /// </summary>
- [DataField]
- public Color DefaultSkinTone { get; private set; } = Color.White;
- /// <summary>
- /// Default human skin tone for this species. This applies for human skin tones.
- /// See <see cref="SkinColor.HumanSkinTone"/> for the valid range of skin tones.
- /// </summary>
- [DataField]
- public int DefaultHumanSkinTone { get; private set; } = 20;
- /// <summary>
- /// The limit of body markings that you can place on this species.
- /// </summary>
- [DataField("markingLimits")]
- public string MarkingPoints { get; private set; } = default!;
- /// <summary>
- /// Humanoid species variant used by this entity.
- /// </summary>
- [DataField(required: true)]
- public EntProtoId Prototype { get; private set; } = default!;
- /// <summary>
- /// Prototype used by the species for the dress-up doll in various menus.
- /// </summary>
- [DataField(required: true)]
- public EntProtoId DollPrototype { get; private set; } = default!;
- /// <summary>
- /// Method of skin coloration used by the species.
- /// </summary>
- [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<Sex> Sexes { get; private set; } = new() { Sex.Male, Sex.Female };
- /// <summary>
- /// Characters younger than this are too young to be hired by Nanotrasen.
- /// </summary>
- [DataField]
- public int MinAge = 18;
- /// <summary>
- /// Characters younger than this appear young.
- /// </summary>
- [DataField]
- public int YoungAge = 30;
- /// <summary>
- /// Characters older than this appear old. Characters in between young and old age appear middle aged.
- /// </summary>
- [DataField]
- public int OldAge = 60;
- /// <summary>
- /// Characters cannot be older than this. Only used for restrictions...
- /// although imagine if ghosts could age people WYCI...
- /// </summary>
- [DataField]
- public int MaxAge = 120;
- }
- public enum SpeciesNaming : byte
- {
- First,
- FirstLast,
- FirstDashFirst,
- TheFirstofLast,
- }
|