Compare commits

..

1 commit

Author SHA1 Message Date
purplepenguinonion
5d42491d35 Merge branch 'pokeworld' into 'master'
PokeWorld Gen 1/2

See merge request AsmodeusRex/rjw-race-support!1
2022-12-07 00:52:38 +00:00

View file

@ -2,8 +2,8 @@ use std::collections::HashMap;
#[derive(Clone, Debug)]
pub struct RaceGroup {
pub name: String,
pub races: Vec<&'static str>,
pub name: String,
pub anus: String,
pub f_breasts: String,
pub m_breasts: String,
@ -11,19 +11,17 @@ pub struct RaceGroup {
pub m_genitals: String,
pub tag: String,
pub sex_drive: String,
pub egg_implant: bool,
pub egg_implant: Option<bool>,
}
impl RaceGroup {
fn standard(
species: &'static str,
races: Vec<&'static str>,
tag: &'static str,
sex_drive: &'static str,
breasts: &'static str,
anus: &'static str,
genitals: (&'static str, &'static str)
) -> Self {
fn standard(races: Vec<&'static str>,
species: &'static str,
tag: &'static str,
sex_drive: &'static str,
breasts: &'static str,
anus: &'static str,
genitals: (&'static str, &'static str)) -> Self {
Self {
races,
name: format!("{}Person", species),
@ -34,18 +32,17 @@ impl RaceGroup {
m_genitals: format!("{}Penis", genitals.1),
tag: tag.to_string(),
sex_drive: sex_drive.to_string(),
egg_implant: false,
egg_implant: None,
}
}
fn standard_animal(
species: &'static str,
races: Vec<&'static str>,
tag: &'static str,
sex_drive: &'static str,
breasts: &'static str,
anus: &'static str,
genitals: (&'static str, &'static str)
) -> Self {
fn standard_animal(races: Vec<&'static str>,
species: &'static str,
tag: &'static str,
sex_drive: &'static str,
egg_implant: Option<bool>,
breasts: &'static str,
anus: &'static str,
genitals: (&'static str, &'static str)) -> Self {
Self {
races,
name: format!("{}Animal", species),
@ -56,7 +53,7 @@ impl RaceGroup {
m_genitals: format!("{}Penis", genitals.1),
tag: tag.to_string(),
sex_drive: sex_drive.to_string(),
egg_implant: false,
egg_implant,
}
}
}
@ -77,8 +74,13 @@ pub fn construct_racegroup(group: &RaceGroup) -> String {
races.push_str(&format!("\n\t\t\t<li>{race}</li>"));
}
let fields = match group.egg_implant {
true => "<oviPregnancy>true</oviPregnancy>\n\t\t<ImplantEggs>true</ImplantEggs>\n\t\t".to_string(),
false => String::new()
Some(imp) => {
match imp {
true => "<oviPregnancy>true</oviPregnancy>\n\t\t<ImplantEggs>true</ImplantEggs>\n\t\t".to_string(),
false => "<oviPregnancy>true</oviPregnancy>\n\t\t".to_string(),
}
},
None => String::new()
};
let replace = HashMap::from([
("{name}", group.name.clone()),
@ -115,7 +117,6 @@ const RACEGROUP_STRING: &'static str = "
pub fn racegroup_data_humans() -> Vec<RaceGroup> {
vec![
RaceGroup::standard(
"Human",
vec![
"AA_Mime",
"Alien_Goblin",
@ -160,13 +161,13 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"Ooka_Miko",
"TrollRace",
],
"Human",
"Skin", "1",
"Breasts",
"",
("", ""),
),
RaceGroup::standard(
"Arthropod",
vec![
"Alien_Beetle",
"Alien_Mantis",
@ -177,35 +178,35 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"Races_BlackWidow",
"Yokai_JorouGumo",
],
"Arthropod",
"Chitin", "0.8",
"Breasts",
"Insect",
("Ovipore", "Aedeagus"),
),
RaceGroup::standard(
"Avian",
vec![
"ATK_Avianmorph",
"Harpy",
],
"Avian",
"Feathers", "0.9",
"FeaturelessChest",
"Cloacal",
("Cloacal", "Cloacal"),
),
RaceGroup::standard(
"Bear",
vec![
"WoW_Pandaren",
"BearMan",
],
"Bear",
"Fur", "0.9",
"Breasts",
"",
("", "Bear"),
),
RaceGroup::standard(
"Canine",
vec![
"ATK_Caninemorph",
"WoW_Worgen",
@ -214,6 +215,7 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"siro",
"WolfMan",
],
"Canine",
"Fur", "1",
"Breasts",
"",
@ -221,7 +223,6 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
),
// For foxes, hyenas, werewolves, etc (hyenas are felines oops)
RaceGroup::standard(
"CanineHighSex",
vec![
"ATK_Gnollmorph",
"ATK_Vulpinemorph",
@ -233,25 +234,25 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"Yokai_NineTailWhite",
"FoxMan",
],
"CanineHighSex",
"Fur", "1.3",
"Breasts",
"",
("Dog", "Dog"),
),
RaceGroup::standard(
"Crocodilian",
vec![
"Alien_Argonian",
"SSD_DeathclawRace",
"Races_Lizardman",
],
"Crocodilian",
"Scales", "0.9",
"ScaleBreasts",
"Cloacal",
("Cloacal", "Crocodilian"),
),
RaceGroup::standard(
"Deer",
vec![
"ATK_Cervinemorph",
"CamelMan",
@ -260,24 +261,24 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"GazelleMan",
"Lliscean",
],
"Deer",
"Fur", "1",
"Breasts",
"",
("Narrow", "Needle"),
),
RaceGroup::standard(
"Dino",
vec![
"Raptor",
"Tyrannosaur",
],
"Dino",
"Scales", "0.9",
"ScaleBreasts",
"Cloacal",
("Cloacal", "Dino"),
),
RaceGroup::standard(
"Dragon",
vec![
"ATK_Dragomorph",
"WMH_Basilisk",
@ -298,35 +299,35 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"ALapelli",
"yuki",
],
"Dragon",
"Scales", "1.2",
"ScaleBreasts",
"Cloacal",
("Cloacal", "Dragon")
),
RaceGroup::standard(
"Elephant",
vec![
"ElephantMan",
],
"Elephant",
"Fur", "1",
"Breasts",
"",
("Elephant", "Elephant"),
),
RaceGroup::standard(
"FoxGirl",
vec![
"Alien_Hisa",
"kon",
"Vulpes",
],
"FoxGirl",
"Fur", "1.3",
"Petite_FoxGirl_Breasts",
"Petite_FoxGirl_",
("Petite_FoxGirl_", ""),
),
RaceGroup::standard(
"Elf",
vec![
"AS_WHE_Race",
"Alien_Astoriel",
@ -357,13 +358,13 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"WoW_NightElf",
"ElfRace",
],
"Elf",
"Skin", "1.1",
"Breasts",
"Elf",
("Elf", "Elf"),
),
RaceGroup::standard(
"Feline",
vec![
"Alien_Nyaron",
"ATK_Felinemorph",
@ -378,13 +379,13 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"Maidnukos",
"miko",
],
"Feline",
"Fur", "1",
"Breasts",
"Feline",
("Cat", "Cat"),
),
RaceGroup::standard(
"Fish",
vec![
"Alien_NiHal",
"Alien_Quarren",
@ -405,13 +406,13 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"PW_Staryu",
"IkquanRace",
],
"Fish",
"Scales", "0.8",
"FeaturelessChest",
"Cloacal",
("Cloacal", "Marine"),
),
RaceGroup::standard(
"Ghost",
vec![
"DRSKT_Race",
"HPLovecraft_MistCreature",
@ -422,34 +423,34 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"PW_Misdreavus",
"WoW_Skeleton",
],
"Ghost",
"Demon", "0.5",
"GhostBreasts",
"Ghost",
("Ghost", "Ghost"),
),
RaceGroup::standard(
"Ghoul",
vec![
"Ghoul",
"GlowingGhoul",
],
"Ghoul",
"Demon", "0.5",
"GhoulBreasts",
"Ghoul",
("Ghoul", "Ghoul"),
),
RaceGroup::standard(
"Horny",
vec![
"Alien_Kijin",
],
"Horny",
"Skin", "1.4",
"Horny_Breasts",
"",
("Horny_", "Horny_"),
),
RaceGroup::standard(
"Orc",
vec![
"Alien_Orc",
"O21_Alien_Orc",
@ -466,13 +467,13 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"OG_Alien_Grot",
"WoW_Orc",
],
"Orc",
"Skin", "1.3",
"OrcBreasts",
"Orc",
("Orc", "Orc"),
),
RaceGroup::standard(
"Horse",
vec![
"Alien_Bullgor",
"Alien_Equium",
@ -485,34 +486,34 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"Alien_ZPEquium",
"WoW_Draenei",
],
"Horse",
"Fur", "1.2",
"Breasts",
"Horse",
("Horse", "Horse"),
),
RaceGroup::standard(
"Pig",
vec![
"PigMan",
],
"Pig",
"Fur", "1",
"Breasts",
"",
("Pig", "Pig"),
),
RaceGroup::standard(
"Raccoon",
vec![
"RaccoonMan",
"StarWarsRaces_Ewok",
],
"Raccoon",
"Fur", "1.1",
"Breasts",
"",
("", "Raccoon"),
),
RaceGroup::standard(
"Reptile",
vec![
"O21_Alien_Kobold",
"O21_FR_Kobold",
@ -522,13 +523,13 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"Yokai_Samia",
"Naga",
],
"Reptile",
"Scales", "0.9",
"ScaleBreasts",
"Cloacal",
("Cloacal", "Hemi"),
),
RaceGroup::standard(
"Rodent",
vec![
"ATK_Lagomorph",
"Alien_Skaven",
@ -543,23 +544,23 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"Rotti",
"Rabbie",
],
"Rodent",
"Fur", "1.3",
"Petite_Breasts",
"Petite_",
("Rodent", "Rodent"),
),
RaceGroup::standard(
"Thrumbo",
vec![
"Thrumkin",
],
"Thrumbo",
"Fur", "1.2",
"Breasts",
"Cloacal",
("Cloacal", "Dragon")
),
RaceGroup::standard(
"Tree",
vec![
"Alien_Dryad",
"Alien_DryadWild",
@ -585,6 +586,7 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"PW_Vileplume",
"PW_Weepinbell",
],
"Tree",
"Plant", "1",
"TreeBreasts",
"Tree",
@ -609,7 +611,7 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
m_genitals: "BovinePenis".to_string(),
tag: "Fur".to_string(),
sex_drive: "1".to_string(),
egg_implant: false,
egg_implant: None,
},
RaceGroup {
races: vec![
@ -632,7 +634,7 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
m_genitals: "SlimeTentacles".to_string(),
tag: "Slime".to_string(),
sex_drive: "1".to_string(),
egg_implant: false,
egg_implant: None,
},
]
}
@ -640,7 +642,6 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
pub fn racegroup_data_animals() -> Vec<RaceGroup> {
vec![
RaceGroup::standard_animal(
"GenericMammal",
vec![
"Megasloth",
"ACPRedPanda",
@ -649,13 +650,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Yokai_IssunAnimal",
"Andrewsarchus",
],
"Fur", "1",
"GenericMammal",
"Fur", "1", None,
"MammalBreasts",
"Mammal",
("Mammal", "Mammal"),
),
RaceGroup::standard_animal(
"Ape",
vec![
"Monkey",
"AEXP_Gorilla",
@ -672,14 +673,14 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Dinopithecus",
"Gigantopithecus",
],
"Fur", "1.1",
"Ape",
"Fur", "1.1", None,
"MammalBreasts",
"Mammal",
("Mammal", "Monkey"),
),
// Arthropods that have aedeagi and ovipores, and reproduce via spermatophores and egg-laying
RaceGroup::standard_animal(
"Arthropod",
vec![
"AA_AngelMoth",
"AA_Atispec",
@ -721,13 +722,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Arthropleura",
"Pulmonoscorpius",
],
"Chitin", "0.7",
"Arthropod",
"Chitin", "0.7", Some(false),
"",
"Insect",
("Ovipore", "Aedeagus"),
),
RaceGroup::standard_animal(
"Avian",
vec![
"Cassowary",
"Chicken",
@ -798,13 +799,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Palaeeudyptes",
"Titanis",
],
"Feathers", "0.8",
"Avian",
"Feathers", "0.8", Some(false),
"",
"Cloacal",
("Cloacal", "Cloacal"),
),
RaceGroup::standard_animal(
"Canine",
vec![
"Fox_Arctic",
"Fox_Fennec",
@ -874,24 +875,24 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Omnicron",
"Fuzztino",
],
"Fur", "1",
"Canine",
"Fur", "1", None,
"MammalBreasts",
"Dog",
("Dog", "Dog"),
),
RaceGroup::standard_animal(
"CanineSkin",
vec![
"AA_RipperHound",
],
"Skin", "0.9",
"CanineSkin",
"Skin", "0.9", None,
"MammalBreasts",
"Dog",
("Dog", "Dog"),
),
// Most even-toed ungulates go here, obviously excluding cetaceans
RaceGroup::standard_animal(
"Cervine",
vec![
"Alpaca",
"Deer",
@ -905,13 +906,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"PW_Stantler",
"RG-WF_WastelandDeer",
],
"Fur", "1",
"Cervine",
"Fur", "1", None,
"MammalBreasts",
"Mammal",
("Narrow", "Needle"),
),
RaceGroup::standard_animal(
"Crocodilian",
vec![
"AA_RoughPlatedMonitor",
"AEXP_Alligator",
@ -922,13 +923,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Quinkana",
"Purussaurus",
],
"Scales", "0.8",
"Crocodilian",
"Scales", "0.8", Some(false),
"",
"Cloacal",
("Cloacal", "Crocodilian"),
),
RaceGroup::standard_animal(
"DinoFeathered",
vec![
"AA_PedigreedRaptor",
"PW_Aerodactyl",
@ -940,13 +941,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Velociraptor",
"Yutyrannus",
],
"Feathers", "1",
"DinoFeathered",
"Feathers", "1", Some(false),
"",
"Cloacal",
("Cloacal", "Dino"),
),
RaceGroup::standard_animal(
"DinoScaled",
vec![
"PW_Cubone",
"PW_Marowak",
@ -980,13 +981,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"TyrannosaurusRex",
"Utahraptor",
],
"Scales", "1",
"DinoScaled",
"Scales", "1", Some(false),
"",
"Cloacal",
("Cloacal", "Dino"),
),
RaceGroup::standard_animal(
"Dragon",
vec![
"AA_Behemoth",
"AA_DecayDrake",
@ -1016,13 +1017,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Mystogen",
"Voltaic",
],
"Scales", "1.2",
"Dragon",
"Scales", "1.2", Some(false),
"",
"Cloacal",
("Cloacal", "Dragon"),
),
RaceGroup::standard_animal(
"Elephant",
vec![
"Elephant",
"AA_Gallatross",
@ -1042,13 +1043,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"WoollyMammoth",
"Zygolophodon",
],
"Fur", "0.9",
"Elephant",
"Fur", "0.9", None,
"MammalBreasts",
"Mammal",
("Elephant", "Elephant"),
),
RaceGroup::standard_animal(
"Feline",
vec![
"Cat",
"Cougar",
@ -1103,24 +1104,24 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Smilodon",
"Snow_leopard",
],
"Fur", "1",
"Feline",
"Fur", "1", None,
"CatBreasts",
"Feline",
("Cat", "Cat"),
),
RaceGroup::standard_animal(
"FelineHorny",
vec![
"AEXP_Hyena",
],
"Fur", "1.3",
"FelineHorny",
"Fur", "1.3", None,
"CatBreasts",
"Feline",
("Cat", "Cat"),
),
// Rhinos belong here, not with elephants, as they are odd-toed ungulates
RaceGroup::standard_animal(
"Horse",
vec![
"Donkey",
"Horse",
@ -1158,14 +1159,14 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Paraceratherium",
"Uintatherium",
],
"Fur", "1",
"Horse",
"Fur", "1", None,
"MammalBreasts",
"Horse",
("Horse", "Horse"),
),
// I know hippos are more closely related to other artiodactyls than to pinnipeds, but their genitalia are strikingly similar due to convergent evolution
RaceGroup::standard_animal(
"MarineMammal",
vec![
"ACPSpottedSeal",
"ACPWalrus",
@ -1178,25 +1179,25 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"PW_Seel",
"Gomphotaria",
],
"Fur", "0.9",
"MarineMammal",
"Fur", "0.9", None,
"MammalBreasts",
"Mammal",
("Mammal", "Marine"),
),
RaceGroup::standard_animal(
"Marsupial",
vec![
"AEXP_Kangaroo",
"Procoptodon",
],
"Fur", "1",
"Marsupial",
"Fur", "1", None,
"MammalBreasts",
"Cloacal",
("Cloacal", "Cloacal"),
),
// Marsupials with a bifurcated penis: All except kangaroos and marsupial moles
RaceGroup::standard_animal(
"MarsupialBi",
vec![
"AEXP_Koala",
"AEXP_TasmanianDevil",
@ -1204,27 +1205,27 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"PW_Dugtrio",
"Diprotodon",
],
"Fur", "1",
"MarsupialBi",
"Fur", "1", None,
"MammalBreasts",
"Cloacal",
("Cloacal", "Hemi"),
),
// TODO: Should be single gender
RaceGroup::standard_animal(
"Orc",
vec![
"OG_Squig",
"OG_Squig_Eatin",
"OG_Squig_Oily",
"OG_Snotling",
],
"Skin", "1",
"Orc",
"Skin", "1", None,
"MammalBreasts",
"Orc",
("Orc", "Orc"),
),
RaceGroup::standard_animal(
"Pig",
vec![
"Pig",
"WildBoar",
@ -1242,25 +1243,25 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"MM_ErymanthianBoar",
"Daeodon",
],
"Fur", "1",
"Pig",
"Fur", "1", None,
"MammalBreasts",
"Mammal",
("Pig", "Pig"),
),
RaceGroup::standard_animal(
"Platypus",
vec![
"ACPDuckBilledPlatypus",
"AEXP_Platypus",
],
"Fur", "0.9",
"Platypus",
"Fur", "0.9", Some(false),
"MammalBreasts",
"Cloacal",
("Cloacal", "Cloacal"),
),
// Mustelids
RaceGroup::standard_animal(
"Raccoon",
vec![
"Raccoon",
"ACPMegaFerret",
@ -1277,13 +1278,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"PW_Sneasel",
"Enhydriodon",
],
"Fur", "1",
"Raccoon",
"Fur", "1", None,
"MammalBreasts",
"Mammal",
("Mammal", "Raccoon"),
),
RaceGroup::standard_animal(
"Reptile",
vec![
"Cobra",
"Iguana",
@ -1320,14 +1321,14 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Rakk",
"Titanoboa",
],
"Scales", "0.8",
"Reptile",
"Scales", "0.8", Some(false),
"",
"Cloacal",
("Cloacal", "Hemi"),
),
// Rodents and Lagomorphs
RaceGroup::standard_animal(
"Rodent",
vec![
"Alphabeaver",
"Boomrat",
@ -1397,13 +1398,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Josephoartigasia",
"Pika",
],
"Fur", "1.1",
"Rodent",
"Fur", "1.1", None,
"MammalBreasts",
"Mammal",
("Mammal", "Rodent"),
),
RaceGroup::standard_animal(
"Tentacle",
vec![
"AA_Helixien",
"AA_Plasmorph",
@ -1413,13 +1414,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"PW_Tentacool",
"PW_Tentacruel",
],
"Slime", "0.8",
"Tentacle",
"Slime", "0.8", Some(false),
"",
"Cloacal",
("Cloacal", "Tentacle"),
),
RaceGroup::standard_animal(
"Thrumbo",
vec![
"Thrumbo",
"GR_Thrumbear",
@ -1437,13 +1438,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Archothrumbo",
"RoyalThrumbo",
],
"Fur", "1",
"Thrumbo",
"Fur", "1", None,
"MammalBreasts",
"Cloacal",
("Cloacal", "Dragon"),
),
RaceGroup::standard_animal(
"Turtle",
vec![
"Tortoise",
"AEXP_DesertTortoise",
@ -1455,13 +1456,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Archotortoise",
"Megalochelys",
],
"Scales", "0.8",
"Turtle",
"Scales", "0.8", Some(false),
"",
"Cloacal",
("Cloacal", "Turtle"),
),
RaceGroup::standard_animal(
"Ursine",
vec![
"Bear",
"Bear_Grizzly",
@ -1486,18 +1487,19 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"AnimaBear",
"ShortfacedBear",
],
"Fur", "1",
"Ursine",
"Fur", "1", None,
"MammalBreasts",
"Mammal",
("Mammal", "Bear"),
),
// AA
RaceGroup::standard_animal(
"AA_SandProwler",
vec![
"AA_SandProwler",
],
"Scales", "1",
"AA_SandProwler",
"Scales", "1", None,
"CatBreasts",
"Feline",
("Cat", "Cat"),
@ -1602,7 +1604,7 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
m_genitals: "BovinePenis".to_string(),
tag: "Fur".to_string(),
sex_drive: "1".to_string(),
egg_implant: false,
egg_implant: None,
},
// Arthropods that reproduce through oviposition
RaceGroup {
@ -1655,7 +1657,7 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
m_genitals: "OvipositorM".to_string(),
tag: "Chitin".to_string(),
sex_drive: "1".to_string(),
egg_implant: true,
egg_implant: Some(true),
},
RaceGroup {
races: vec![
@ -1670,7 +1672,7 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
m_genitals: "OvipositorM".to_string(),
tag: "Chitin".to_string(),
sex_drive: "1.5".to_string(),
egg_implant: true,
egg_implant: Some(true),
},
]
}