Species info in Guidebook and at chargen (#25844)

* guidebook pages defined

* species info button in character profile editor

* if current species has no guidebook page then open the parent page

* skrek

* destroying evidence of secret vox plot

* icon size adjustment, no icon if guidebook page for species does not exist

* finished pages

* additional info

* weh
This commit is contained in:
Errant
2024-03-11 04:01:32 +01:00
committed by GitHub
parent 8de4b4196e
commit 84a07315dd
16 changed files with 279 additions and 17 deletions

View File

@@ -15,7 +15,7 @@ public sealed partial class SpeciesPrototype : IPrototype
/// <summary>
/// User visible name of the species.
/// </summary>
[DataField("name", required: true)]
[DataField(required: true)]
public string Name { get; private set; } = default!;
/// <summary>
@@ -23,13 +23,13 @@ public sealed partial class SpeciesPrototype : IPrototype
/// for an eventual integration into IdentitySystem
/// (i.e., young human person, young lizard person, etc.)
/// </summary>
[DataField("descriptor")]
[DataField]
public string Descriptor { get; private set; } = "humanoid";
/// <summary>
/// Whether the species is available "at round start" (In the character editor)
/// </summary>
[DataField("roundStart", required: true)]
[DataField(required: true)]
public bool RoundStart { get; private set; } = false;
// The below two are to avoid fetching information about the species from the entity
@@ -47,14 +47,14 @@ public sealed partial class SpeciesPrototype : IPrototype
/// <summary>
/// Default skin tone for this species. This applies for non-human skin tones.
/// </summary>
[DataField("defaultSkinTone")]
[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("defaultHumanSkinTone")]
[DataField]
public int DefaultHumanSkinTone { get; private set; } = 20;
/// <summary>
@@ -66,60 +66,66 @@ public sealed partial class SpeciesPrototype : IPrototype
/// <summary>
/// Humanoid species variant used by this entity.
/// </summary>
[DataField("prototype", required: true, customTypeSerializer:typeof(PrototypeIdSerializer<EntityPrototype>))]
[DataField(required: true, customTypeSerializer:typeof(PrototypeIdSerializer<EntityPrototype>))]
public string Prototype { get; private set; } = default!;
/// <summary>
/// Prototype used by the species for the dress-up doll in various menus.
/// </summary>
[DataField("dollPrototype", required: true, customTypeSerializer:typeof(PrototypeIdSerializer<EntityPrototype>))]
[DataField(required: true, customTypeSerializer:typeof(PrototypeIdSerializer<EntityPrototype>))]
public string DollPrototype { get; private set; } = default!;
/// <summary>
/// Method of skin coloration used by the species.
/// </summary>
[DataField("skinColoration", required: true)]
[DataField(required: true)]
public HumanoidSkinColor SkinColoration { get; private set; }
[DataField("maleFirstNames")]
[DataField]
public string MaleFirstNames { get; private set; } = "names_first_male";
[DataField("femaleFirstNames")]
[DataField]
public string FemaleFirstNames { get; private set; } = "names_first_female";
[DataField("lastNames")]
[DataField]
public string LastNames { get; private set; } = "names_last";
[DataField("naming")]
[DataField]
public SpeciesNaming Naming { get; private set; } = SpeciesNaming.FirstLast;
[DataField("sexes")]
[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("minAge")]
[DataField]
public int MinAge = 18;
/// <summary>
/// Characters younger than this appear young.
/// </summary>
[DataField("youngAge")]
[DataField]
public int YoungAge = 30;
/// <summary>
/// Characters older than this appear old. Characters in between young and old age appear middle aged.
/// </summary>
[DataField("oldAge")]
[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("maxAge")]
[DataField]
public int MaxAge = 120;
/// <summary>
/// The Style used for the guidebook info link in the character profile editor
/// </summary>
[DataField]
public string GuideBookIcon = "SpeciesInfoDefault";
}
public enum SpeciesNaming : byte