Lizard name datasets (#7890)

Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
This commit is contained in:
T-Stalker
2022-05-12 20:43:15 -03:00
committed by GitHub
parent 9217cc02af
commit d750e7b599
7 changed files with 565 additions and 26 deletions

View File

@@ -29,9 +29,8 @@ namespace Content.Client.Preferences.UI
private void RandomizeName()
{
if (Profile == null) return;
var firstName = _random.Pick(Profile.Sex.FirstNames(_prototypeManager).Values);
var lastName = _random.Pick(_prototypeManager.Index<DatasetPrototype>("names_last"));
SetName($"{firstName} {lastName}");
var name = Profile.Sex.GetName(Profile.Species, _prototypeManager, _random);
SetName(name);
UpdateNameEdit();
}
}

View File

@@ -1,11 +1,13 @@
using System;
using Content.Shared.Dataset;
using Content.Shared.Species;
using Robust.Shared.IoC;
using Robust.Shared.Prototypes;
using Robust.Shared.Random;
namespace Content.Shared.CharacterAppearance
{
public enum Sex
public enum Sex : byte
{
Male,
Female
@@ -13,19 +15,50 @@ namespace Content.Shared.CharacterAppearance
public static class SexExtensions
{
public static DatasetPrototype FirstNames(this Sex sex, IPrototypeManager? prototypeManager = null)
public static string GetName(this Sex sex, string species, IPrototypeManager? prototypeManager = null, IRobustRandom? random = null)
{
prototypeManager ??= IoCManager.Resolve<IPrototypeManager>();
IoCManager.Resolve(ref prototypeManager);
IoCManager.Resolve(ref random);
// if they have an old species or whatever just fall back to human I guess?
// Some downstream is probably gonna have this eventually but then they can deal with fallbacks.
if (!prototypeManager.TryIndex(species, out SpeciesPrototype? speciesProto))
{
speciesProto = prototypeManager.Index<SpeciesPrototype>("Human");
Logger.Warning($"Unable to find species {species} for name, falling back to Human");
}
switch (speciesProto.Naming)
{
case SpeciesNaming.FirstDashFirst:
return $"{GetFirstName(sex, speciesProto, prototypeManager, random)}-{GetFirstName(sex, speciesProto, prototypeManager, random)}";
case SpeciesNaming.FirstLast:
default:
return $"{GetFirstName(sex, speciesProto, prototypeManager, random)} {GetLastName(sex, speciesProto, prototypeManager, random)}";
}
}
public static string GetFirstName(this Sex sex, SpeciesPrototype speciesProto, IPrototypeManager? protoManager = null, IRobustRandom? random = null)
{
IoCManager.Resolve(ref protoManager);
IoCManager.Resolve(ref random);
switch (sex)
{
case Sex.Male:
return prototypeManager.Index<DatasetPrototype>("names_first_male");
return random.Pick(protoManager.Index<DatasetPrototype>(speciesProto.MaleFirstNames).Values);
case Sex.Female:
return prototypeManager.Index<DatasetPrototype>("names_first_female");
return random.Pick(protoManager.Index<DatasetPrototype>(speciesProto.FemaleFirstNames).Values);
default:
throw new ArgumentOutOfRangeException(nameof(sex), sex, null);
throw new ArgumentOutOfRangeException();
}
}
public static string GetLastName(this Sex sex, SpeciesPrototype speciesProto, IPrototypeManager? protoManager = null, IRobustRandom? random = null)
{
IoCManager.Resolve(ref protoManager);
IoCManager.Resolve(ref random);
return random.Pick(protoManager.Index<DatasetPrototype>(speciesProto.LastNames).Values);
}
}
}

View File

@@ -112,17 +112,15 @@ namespace Content.Shared.Preferences
public static HumanoidCharacterProfile Random()
{
var prototypeManager = IoCManager.Resolve<IPrototypeManager>();
var random = IoCManager.Resolve<IRobustRandom>();
var species = random.Pick(IoCManager.Resolve<IPrototypeManager>()
var species = random.Pick(prototypeManager
.EnumeratePrototypes<SpeciesPrototype>().Where(x => x.RoundStart).ToArray()).ID;
var sex = random.Prob(0.5f) ? Sex.Male : Sex.Female;
var gender = sex == Sex.Male ? Gender.Male : Gender.Female;
var prototypeManager = IoCManager.Resolve<IPrototypeManager>();
var firstName = random.Pick(sex.FirstNames(prototypeManager).Values);
var lastName = random.Pick(prototypeManager.Index<DatasetPrototype>("names_last"));
var name = $"{firstName} {lastName}";
var name = sex.GetName(species, prototypeManager, random);
var age = random.Next(MinimumAge, MaximumAge);
return new HumanoidCharacterProfile(name, species, age, sex, gender, HumanoidCharacterAppearance.Random(sex), ClothingPreference.Jumpsuit, BackpackPreference.Backpack,
@@ -279,7 +277,7 @@ namespace Content.Shared.Preferences
string name;
if (string.IsNullOrEmpty(Name))
{
name = RandomName();
name = Sex.GetName(Species);
}
else if (Name.Length > MaxNameLength)
{
@@ -299,7 +297,7 @@ namespace Content.Shared.Preferences
if (string.IsNullOrEmpty(name))
{
name = RandomName();
name = Sex.GetName(Species);
}
var appearance = HumanoidCharacterAppearance.EnsureValid(Appearance, Species);
@@ -361,15 +359,6 @@ namespace Content.Shared.Preferences
_antagPreferences.Clear();
_antagPreferences.AddRange(antags);
string RandomName()
{
var random = IoCManager.Resolve<IRobustRandom>();
var protoMan = IoCManager.Resolve<IPrototypeManager>();
var firstName = random.Pick(Sex.FirstNames(protoMan).Values);
var lastName = random.Pick(protoMan.Index<DatasetPrototype>("names_last"));
return $"{firstName} {lastName}";
}
}
public override bool Equals(object? obj)

View File

@@ -43,11 +43,29 @@ public sealed class SpeciesPrototype : IPrototype
/// </summary>
[DataField("skinColoration", required: true)]
public SpeciesSkinColor SkinColoration { get; }
[DataField("maleFirstNames")]
public string MaleFirstNames { get; } = "names_first_male";
[DataField("femaleFirstNames")]
public string FemaleFirstNames { get; } = "names_first_female";
[DataField("lastNames")]
public string LastNames { get; } = "names_last";
[DataField("naming")]
public SpeciesNaming Naming { get; } = SpeciesNaming.FirstLast;
}
public enum SpeciesSkinColor
public enum SpeciesSkinColor : byte
{
HumanToned,
Hues,
TintedHues, //This gives a color tint to a humanoid's skin (10% saturation with full hue range).
}
public enum SpeciesNaming : byte
{
FirstLast,
FirstDashFirst,
}

View File

@@ -0,0 +1,166 @@
- type: dataset
id: names_reptilian_female
values:
- Adzi
- Ah
- Ahaht
- Ajim
- Akeenus
- Akish
- Akishan
- Aleeto
- Am
- Amussa
- An
- Anozz
- Asheemar
- Asska
- Awas
- Azala
- Azbai
- Azeez
- Azum
- Banalz
- Bar
- Baseenar
- Beek
- Beekatan
- Beekus
- Beela
- Beelei
- Beem
- Beewos
- Bejeen
- Ber
- Betzi
- Bishalus
- Bokeeus
- Bur
- Bura
- Chalaree
- Chana
- Chanil
- Chee
- Cheesh
- Chimatei
- Chirurgeon
- Cholasistu
- Chuna
- Churasu
- Crath
- Dar
- Deeja
- Deesei
- Deesh
- Deetsan
- Deetwos
- Dooka
- Druja
- Eepa
- Ei
- Eix
- El
- Ereel
- Eutei
- Gai
- Gih
- Gilm
- Gish
- Go
- Hal
- Hul
- Ja
- Jaseen
- Jasuda
- Jeed
- Jeen
- Kajul
- Kal
- Kasa
- Keel
- Keerava
- Kiurz
- Kud
- La
- Lee
- Lei
- Lifts
- Liurz
- Lurasha
- Ma
- Mach
- Marz
- Meedish
- Meeh
- Meema
- Meen
- Meena
- Meenus
- Meerana
- Meesei
- Meeus
- Mei
- Milah
- Mim
- Mota
- Mudeska
- Muz
- Na
- Nakuma
- Nam
- Nassa
- Natoo
- Neesha
- Neetizei
- Neetra
- Neeus
- Niima
- Numeen
- Nuralg
- Nush
- Ocheeva
- Okur
- Olank
- On
- Onasha
- Osheeka
- Pasha
- Ra
- Rana
- Raniur
- Ree
- Reesa
- Rei
- Sa
- Saak
- Sanax
- Seeba
- Seed
- Seen
- Shah
- Shahvee
- Shaleez
- Shatalg
- Sheer
- Shei
- Sigerthe
- Skaleel
- Sudie
- Tail
- Tar
- Tasha
- Tei
- Telixith
- Tumma
- Veek
- Wan
- Wazei
- Weedum
- Weewish
- Witseidutsei
- Wuja
- Wujeeta
- Wusha
- Xil
- Zish
- Zollassa

View File

@@ -0,0 +1,331 @@
- type: dataset
id: names_reptilian_male
values:
- Abijoo
- Ah
- Ajum
- Am
- Amusei
- An
- Anoo
- Aojee
- Asum
- Az
- Azeel
- Azinar
- Azjai
- Baar
- Banka
- Bar
- Barnaxi
- Batar
- Batuus
- Beem
- Beshnus
- Betu
- Bex
- Bijot
- Bimee
- Binyaar
- Bosekus
- Brand
- Bun
- Bunach
- Bunish
- Busheeus
- Buujhan
- Chakuk
- Chalish
- Chalureel
- Chath
- Chee
- Cheedal
- Chilwir
- Chitakus
- Chiwish
- Chulz
- Chuna
- Da
- Dakee
- Dan
- Dar
- Darasken
- DarJee
- Debameel
- Deed
- Deegeeta
- Deeh
- Deekonus
- Deekum
- Deekus
- Deerkaza
- Deetum
- Demeepa
- Depasa
- Derkeethus
- Deroh
- Dezanu
- Dreet
- Drumarz
- Dum
- Dunaxith
- Effe
- Ei
- Eidu
- Eius
- Eiuus
- Eix
- Eleedal
- Er
- Esqoo
- Etaku
- Gah
- Gajul
- Gam
- Geeh
- Geel
- Geem
- Geh
- Gei
- Gih
- Gin
- Goh
- Gulum
- Haj
- Han
- Haran
- Hareeya
- Hathei
- Heedul
- Heem
- Hei
- Heir
- Hixeeh
- Huleeya
- Huzei
- Ilas
- Im
- Inee
- Itan
- J'Ram
- Ja
- Jah
- Jaraleet
- Jaree
- Jas
- Jasaiin
- Jaseen
- Jat
- Jee
- Jeela
- Jeelius
- Jeelus
- Jeen
- Jeer
- Jeetum
- Jei
- Jilux
- Jin
- Jon
- Jul
- Julan
- Junal
- Jush
- Juunei
- Kai
- Kajin
- Kamax
- Kas
- Keema
- Keer
- Keerasa
- Kepanuu
- Kia
- Kiameed
- Kilaya
- Kiurz
- Kur
- Kuz
- La
- Lah
- Lai
- Lan
- Lara
- Leem
- Lei
- Loh
- Lotash
- Luh
- Lurz
- Luteema
- Maahi
- Madesi
- Maheelius
- Mahei
- Maht
- Malz
- Marz
- Mathei
- Maxath
- Meej
- Meejapa
- Meensuda
- Meer
- Mema
- Mere
- Metaku
- Miharil
- Milos
- Miun
- Mobareed
- Mohimeem
- Mopakuz
- Motuu
- Mujeen
- Muranatepa
- Mush
- Muz
- Na
- Napetui
- Nazuux
- Nebutil
- Neeti
- Neetinei
- Neetrenaza
- Neetzara
- Neeus
- Nema
- Neposh
- Netapatuu
- Nexith
- Nodeeus
- Nomu
- Nosaleeth
- Nowajeem
- Noyei
- Nulaz
- Nur
- Obaxith
- Okan
- Okaw
- Okeeh
- Oleed
- Oleen
- Olik
- Olink
- Onuja
- Onurai
- Opatieel
- Otumeel
- Owai
- Pachat
- Pacheeva
- Pad
- Paduxi
- Pajeen
- Parash
- Peeradeeh
- Pejureel
- Petaxai
- Pideelus
- Pimaxi
- Pojeel
- Ra
- Radithax
- Raj
- Rareel
- Rasha
- Redieeus
- Ree
- Reeh
- Reemukeeus
- Reenum
- Reesa
- Reet
- Reezal
- Resari
- Riker
- Ru
- Rupah
- Sakeepa
- Sakeeus
- Sakka
- Saliith
- Sar
- Schiavas
- Seek
- Seewul
- Sei
- Sejaijilax
- Shakiis
- Shehs
- Shei
- Silm
- Skee
- Skeetul
- Sureeus
- Ta
- Taeed
- Tah
- Taleel
- Talen
- Tan
- Tanaka
- Tanan
- Tee
- Teeba
- Teegla
- Teeka
- Teekeeus
- Teemeeta
- Teeus
- Tehat
- Tei
- Teinaava
- Teineeja
- Terezeeus
- Tikaasi
- Tim
- Topeeth
- Topith
- Tsleeixth
- Tul
- Tulm
- Tun
- Ukatsei
- Ukawei
- Ula
- Ulawa
- Ullis
- Usha
- Usheeja
- Utadeek
- Utamukeeus
- Utatul
- Uxith
- Vara
- Veekas
- Veenaza
- Veezara
- Vistha
- Vudeelal
- Wanan
- Wanum
- Wayiteh
- Weebam
- Weeltul
- Weer
- Wih
- Wud
- Wuleen
- Wulm
- Wumeek
- Xal
- Xemo
- Yinz
- Yinz'r
- Zaw
- Ze
- Zeen
- Zeeus
- Zish

View File

@@ -21,6 +21,9 @@
prototype: MobReptilian
dollPrototype: MobReptilianDummy
skinColoration: Hues
maleFirstNames: names_reptilian_male
femaleFirstNames: names_reptilian_female
naming: FirstDashFirst
- type: species
id: SlimePerson