Change racegroup to defer to default egg settings

This commit is contained in:
AsmodeusRex 2022-12-13 14:15:57 -08:00
parent a3e99a80b2
commit b9084af56f
1 changed files with 113 additions and 115 deletions

View File

@ -2,8 +2,8 @@ use std::collections::HashMap;
#[derive(Clone, Debug)] #[derive(Clone, Debug)]
pub struct RaceGroup { pub struct RaceGroup {
pub races: Vec<&'static str>,
pub name: String, pub name: String,
pub races: Vec<&'static str>,
pub anus: String, pub anus: String,
pub f_breasts: String, pub f_breasts: String,
pub m_breasts: String, pub m_breasts: String,
@ -11,17 +11,19 @@ pub struct RaceGroup {
pub m_genitals: String, pub m_genitals: String,
pub tag: String, pub tag: String,
pub sex_drive: String, pub sex_drive: String,
pub egg_implant: Option<bool>, pub egg_implant: bool,
} }
impl RaceGroup { impl RaceGroup {
fn standard(races: Vec<&'static str>, fn standard(
species: &'static str, species: &'static str,
tag: &'static str, races: Vec<&'static str>,
sex_drive: &'static str, tag: &'static str,
breasts: &'static str, sex_drive: &'static str,
anus: &'static str, breasts: &'static str,
genitals: (&'static str, &'static str)) -> Self { anus: &'static str,
genitals: (&'static str, &'static str)
) -> Self {
Self { Self {
races, races,
name: format!("{}Person", species), name: format!("{}Person", species),
@ -32,17 +34,18 @@ impl RaceGroup {
m_genitals: format!("{}Penis", genitals.1), m_genitals: format!("{}Penis", genitals.1),
tag: tag.to_string(), tag: tag.to_string(),
sex_drive: sex_drive.to_string(), sex_drive: sex_drive.to_string(),
egg_implant: None, egg_implant: false,
} }
} }
fn standard_animal(races: Vec<&'static str>, fn standard_animal(
species: &'static str, species: &'static str,
tag: &'static str, races: Vec<&'static str>,
sex_drive: &'static str, tag: &'static str,
egg_implant: Option<bool>, sex_drive: &'static str,
breasts: &'static str, breasts: &'static str,
anus: &'static str, anus: &'static str,
genitals: (&'static str, &'static str)) -> Self { genitals: (&'static str, &'static str)
) -> Self {
Self { Self {
races, races,
name: format!("{}Animal", species), name: format!("{}Animal", species),
@ -53,7 +56,7 @@ impl RaceGroup {
m_genitals: format!("{}Penis", genitals.1), m_genitals: format!("{}Penis", genitals.1),
tag: tag.to_string(), tag: tag.to_string(),
sex_drive: sex_drive.to_string(), sex_drive: sex_drive.to_string(),
egg_implant, egg_implant: false,
} }
} }
} }
@ -74,13 +77,8 @@ pub fn construct_racegroup(group: &RaceGroup) -> String {
races.push_str(&format!("\n\t\t\t<li>{race}</li>")); races.push_str(&format!("\n\t\t\t<li>{race}</li>"));
} }
let fields = match group.egg_implant { let fields = match group.egg_implant {
Some(imp) => { true => "<oviPregnancy>true</oviPregnancy>\n\t\t<ImplantEggs>true</ImplantEggs>\n\t\t".to_string(),
match imp { false => String::new()
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([ let replace = HashMap::from([
("{name}", group.name.clone()), ("{name}", group.name.clone()),
@ -117,6 +115,7 @@ const RACEGROUP_STRING: &'static str = "
pub fn racegroup_data_humans() -> Vec<RaceGroup> { pub fn racegroup_data_humans() -> Vec<RaceGroup> {
vec![ vec![
RaceGroup::standard( RaceGroup::standard(
"Human",
vec![ vec![
"AA_Mime", "AA_Mime",
"Alien_Goblin", "Alien_Goblin",
@ -146,13 +145,13 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"Ooka_Miko", "Ooka_Miko",
"TrollRace", "TrollRace",
], ],
"Human",
"Skin", "1", "Skin", "1",
"Breasts", "Breasts",
"", "",
("", ""), ("", ""),
), ),
RaceGroup::standard( RaceGroup::standard(
"Arthropod",
vec![ vec![
"Alien_Beetle", "Alien_Beetle",
"Alien_Mantis", "Alien_Mantis",
@ -163,35 +162,35 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"Races_BlackWidow", "Races_BlackWidow",
"Yokai_JorouGumo", "Yokai_JorouGumo",
], ],
"Arthropod",
"Chitin", "0.8", "Chitin", "0.8",
"Breasts", "Breasts",
"Insect", "Insect",
("Ovipore", "Aedeagus"), ("Ovipore", "Aedeagus"),
), ),
RaceGroup::standard( RaceGroup::standard(
"Avian",
vec![ vec![
"ATK_Avianmorph", "ATK_Avianmorph",
"Harpy", "Harpy",
], ],
"Avian",
"Feathers", "0.9", "Feathers", "0.9",
"FeaturelessChest", "FeaturelessChest",
"Cloacal", "Cloacal",
("Cloacal", "Cloacal"), ("Cloacal", "Cloacal"),
), ),
RaceGroup::standard( RaceGroup::standard(
"Bear",
vec![ vec![
"WoW_Pandaren", "WoW_Pandaren",
"BearMan", "BearMan",
], ],
"Bear",
"Fur", "0.9", "Fur", "0.9",
"Breasts", "Breasts",
"", "",
("", "Bear"), ("", "Bear"),
), ),
RaceGroup::standard( RaceGroup::standard(
"Canine",
vec![ vec![
"ATK_Caninemorph", "ATK_Caninemorph",
"WoW_Worgen", "WoW_Worgen",
@ -200,7 +199,6 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"siro", "siro",
"WolfMan", "WolfMan",
], ],
"Canine",
"Fur", "1", "Fur", "1",
"Breasts", "Breasts",
"", "",
@ -208,6 +206,7 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
), ),
// For foxes, hyenas, werewolves, etc (hyenas are felines oops) // For foxes, hyenas, werewolves, etc (hyenas are felines oops)
RaceGroup::standard( RaceGroup::standard(
"CanineHighSex",
vec![ vec![
"ATK_Gnollmorph", "ATK_Gnollmorph",
"ATK_Vulpinemorph", "ATK_Vulpinemorph",
@ -219,25 +218,25 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"Yokai_NineTailWhite", "Yokai_NineTailWhite",
"FoxMan", "FoxMan",
], ],
"CanineHighSex",
"Fur", "1.3", "Fur", "1.3",
"Breasts", "Breasts",
"", "",
("Dog", "Dog"), ("Dog", "Dog"),
), ),
RaceGroup::standard( RaceGroup::standard(
"Crocodilian",
vec![ vec![
"Alien_Argonian", "Alien_Argonian",
"SSD_DeathclawRace", "SSD_DeathclawRace",
"Races_Lizardman", "Races_Lizardman",
], ],
"Crocodilian",
"Scales", "0.9", "Scales", "0.9",
"ScaleBreasts", "ScaleBreasts",
"Cloacal", "Cloacal",
("Cloacal", "Crocodilian"), ("Cloacal", "Crocodilian"),
), ),
RaceGroup::standard( RaceGroup::standard(
"Deer",
vec![ vec![
"ATK_Cervinemorph", "ATK_Cervinemorph",
"CamelMan", "CamelMan",
@ -246,24 +245,24 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"GazelleMan", "GazelleMan",
"Lliscean", "Lliscean",
], ],
"Deer",
"Fur", "1", "Fur", "1",
"Breasts", "Breasts",
"", "",
("Narrow", "Needle"), ("Narrow", "Needle"),
), ),
RaceGroup::standard( RaceGroup::standard(
"Dino",
vec![ vec![
"Raptor", "Raptor",
"Tyrannosaur", "Tyrannosaur",
], ],
"Dino",
"Scales", "0.9", "Scales", "0.9",
"ScaleBreasts", "ScaleBreasts",
"Cloacal", "Cloacal",
("Cloacal", "Dino"), ("Cloacal", "Dino"),
), ),
RaceGroup::standard( RaceGroup::standard(
"Dragon",
vec![ vec![
"ATK_Dragomorph", "ATK_Dragomorph",
"WMH_Basilisk", "WMH_Basilisk",
@ -284,35 +283,35 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"ALapelli", "ALapelli",
"yuki", "yuki",
], ],
"Dragon",
"Scales", "1.2", "Scales", "1.2",
"ScaleBreasts", "ScaleBreasts",
"Cloacal", "Cloacal",
("Cloacal", "Dragon") ("Cloacal", "Dragon")
), ),
RaceGroup::standard( RaceGroup::standard(
"Elephant",
vec![ vec![
"ElephantMan", "ElephantMan",
], ],
"Elephant",
"Fur", "1", "Fur", "1",
"Breasts", "Breasts",
"", "",
("Elephant", "Elephant"), ("Elephant", "Elephant"),
), ),
RaceGroup::standard( RaceGroup::standard(
"FoxGirl",
vec![ vec![
"Alien_Hisa", "Alien_Hisa",
"kon", "kon",
"Vulpes", "Vulpes",
], ],
"FoxGirl",
"Fur", "1.3", "Fur", "1.3",
"Petite_FoxGirl_Breasts", "Petite_FoxGirl_Breasts",
"Petite_FoxGirl_", "Petite_FoxGirl_",
("Petite_FoxGirl_", ""), ("Petite_FoxGirl_", ""),
), ),
RaceGroup::standard( RaceGroup::standard(
"Elf",
vec![ vec![
"Alien_Eldar", "Alien_Eldar",
"AS_WHE_Race", "AS_WHE_Race",
@ -334,13 +333,13 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"Sandy_Angel", "Sandy_Angel",
"ElfRace", "ElfRace",
], ],
"Elf",
"Skin", "1.1", "Skin", "1.1",
"Breasts", "Breasts",
"Elf", "Elf",
("Elf", "Elf"), ("Elf", "Elf"),
), ),
RaceGroup::standard( RaceGroup::standard(
"Feline",
vec![ vec![
"Alien_Nyaron", "Alien_Nyaron",
"ATK_Felinemorph", "ATK_Felinemorph",
@ -355,60 +354,60 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"Maidnukos", "Maidnukos",
"miko", "miko",
], ],
"Feline",
"Fur", "1", "Fur", "1",
"Breasts", "Breasts",
"Feline", "Feline",
("Cat", "Cat"), ("Cat", "Cat"),
), ),
RaceGroup::standard( RaceGroup::standard(
"Fish",
vec![ vec![
"Alien_NiHal", "Alien_NiHal",
"Alien_Quarren", "Alien_Quarren",
"Alien_MonCalamari", "Alien_MonCalamari",
"IkquanRace", "IkquanRace",
], ],
"Fish",
"Scales", "0.8", "Scales", "0.8",
"FeaturelessChest", "FeaturelessChest",
"Cloacal", "Cloacal",
("Cloacal", "Marine"), ("Cloacal", "Marine"),
), ),
RaceGroup::standard( RaceGroup::standard(
"Ghost",
vec![ vec![
"DRSKT_Race", "DRSKT_Race",
"HPLovecraft_MistCreature", "HPLovecraft_MistCreature",
"MM_WillOWisp", "MM_WillOWisp",
"WoW_Skeleton", "WoW_Skeleton",
], ],
"Ghost",
"Demon", "0.5", "Demon", "0.5",
"GhostBreasts", "GhostBreasts",
"Ghost", "Ghost",
("Ghost", "Ghost"), ("Ghost", "Ghost"),
), ),
RaceGroup::standard( RaceGroup::standard(
"Ghoul",
vec![ vec![
"Ghoul", "Ghoul",
"GlowingGhoul", "GlowingGhoul",
], ],
"Ghoul",
"Demon", "0.5", "Demon", "0.5",
"GhoulBreasts", "GhoulBreasts",
"Ghoul", "Ghoul",
("Ghoul", "Ghoul"), ("Ghoul", "Ghoul"),
), ),
RaceGroup::standard( RaceGroup::standard(
"Horny",
vec![ vec![
"Alien_Kijin", "Alien_Kijin",
], ],
"Horny",
"Skin", "1.4", "Skin", "1.4",
"Horny_Breasts", "Horny_Breasts",
"", "",
("Horny_", "Horny_"), ("Horny_", "Horny_"),
), ),
RaceGroup::standard( RaceGroup::standard(
"Orc",
vec![ vec![
"Alien_Orc", "Alien_Orc",
"O21_Alien_Orc", "O21_Alien_Orc",
@ -425,13 +424,13 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"OG_Alien_Grot", "OG_Alien_Grot",
"WoW_Orc", "WoW_Orc",
], ],
"Orc",
"Skin", "1.3", "Skin", "1.3",
"OrcBreasts", "OrcBreasts",
"Orc", "Orc",
("Orc", "Orc"), ("Orc", "Orc"),
), ),
RaceGroup::standard( RaceGroup::standard(
"Horse",
vec![ vec![
"Alien_Bullgor", "Alien_Bullgor",
"Alien_Equium", "Alien_Equium",
@ -444,34 +443,34 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"Alien_ZPEquium", "Alien_ZPEquium",
"WoW_Draenei", "WoW_Draenei",
], ],
"Horse",
"Fur", "1.2", "Fur", "1.2",
"Breasts", "Breasts",
"Horse", "Horse",
("Horse", "Horse"), ("Horse", "Horse"),
), ),
RaceGroup::standard( RaceGroup::standard(
"Pig",
vec![ vec![
"PigMan", "PigMan",
], ],
"Pig",
"Fur", "1", "Fur", "1",
"Breasts", "Breasts",
"", "",
("Pig", "Pig"), ("Pig", "Pig"),
), ),
RaceGroup::standard( RaceGroup::standard(
"Raccoon",
vec![ vec![
"RaccoonMan", "RaccoonMan",
"StarWarsRaces_Ewok", "StarWarsRaces_Ewok",
], ],
"Raccoon",
"Fur", "1.1", "Fur", "1.1",
"Breasts", "Breasts",
"", "",
("", "Raccoon"), ("", "Raccoon"),
), ),
RaceGroup::standard( RaceGroup::standard(
"Reptile",
vec![ vec![
"O21_Alien_Kobold", "O21_Alien_Kobold",
"O21_FR_Kobold", "O21_FR_Kobold",
@ -481,13 +480,13 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"Yokai_Samia", "Yokai_Samia",
"Naga", "Naga",
], ],
"Reptile",
"Scales", "0.9", "Scales", "0.9",
"ScaleBreasts", "ScaleBreasts",
"Cloacal", "Cloacal",
("Cloacal", "Hemi"), ("Cloacal", "Hemi"),
), ),
RaceGroup::standard( RaceGroup::standard(
"Rodent",
vec![ vec![
"ATK_Lagomorph", "ATK_Lagomorph",
"Alien_Skaven", "Alien_Skaven",
@ -502,29 +501,28 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"Rotti", "Rotti",
"Rabbie", "Rabbie",
], ],
"Rodent",
"Fur", "1.3", "Fur", "1.3",
"Petite_Breasts", "Petite_Breasts",
"Petite_", "Petite_",
("Rodent", "Rodent"), ("Rodent", "Rodent"),
), ),
RaceGroup::standard( RaceGroup::standard(
"Thrumbo",
vec![ vec![
"Thrumkin", "Thrumkin",
], ],
"Thrumbo",
"Fur", "1.2", "Fur", "1.2",
"Breasts", "Breasts",
"Cloacal", "Cloacal",
("Cloacal", "Dragon") ("Cloacal", "Dragon")
), ),
RaceGroup::standard( RaceGroup::standard(
"Tree",
vec![ vec![
"Alien_Dryad", "Alien_Dryad",
"Alien_DryadWild", "Alien_DryadWild",
"Alien_Tree", "Alien_Tree",
], ],
"Tree",
"Plant", "1", "Plant", "1",
"TreeBreasts", "TreeBreasts",
"Tree", "Tree",
@ -549,7 +547,7 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
m_genitals: "BovinePenis".to_string(), m_genitals: "BovinePenis".to_string(),
tag: "Fur".to_string(), tag: "Fur".to_string(),
sex_drive: "1".to_string(), sex_drive: "1".to_string(),
egg_implant: None, egg_implant: false,
}, },
RaceGroup { RaceGroup {
races: vec![ races: vec![
@ -567,7 +565,7 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
m_genitals: "SlimeTentacles".to_string(), m_genitals: "SlimeTentacles".to_string(),
tag: "Slime".to_string(), tag: "Slime".to_string(),
sex_drive: "1".to_string(), sex_drive: "1".to_string(),
egg_implant: None, egg_implant: false,
}, },
] ]
} }
@ -575,6 +573,7 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
pub fn racegroup_data_animals() -> Vec<RaceGroup> { pub fn racegroup_data_animals() -> Vec<RaceGroup> {
vec![ vec![
RaceGroup::standard_animal( RaceGroup::standard_animal(
"GenericMammal",
vec![ vec![
"Megasloth", "Megasloth",
"ACPRedPanda", "ACPRedPanda",
@ -583,13 +582,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Yokai_IssunAnimal", "Yokai_IssunAnimal",
"Andrewsarchus", "Andrewsarchus",
], ],
"GenericMammal", "Fur", "1",
"Fur", "1", None,
"MammalBreasts", "MammalBreasts",
"Mammal", "Mammal",
("Mammal", "Mammal"), ("Mammal", "Mammal"),
), ),
RaceGroup::standard_animal( RaceGroup::standard_animal(
"Ape",
vec![ vec![
"Monkey", "Monkey",
"AEXP_Gorilla", "AEXP_Gorilla",
@ -600,14 +599,14 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Dinopithecus", "Dinopithecus",
"Gigantopithecus", "Gigantopithecus",
], ],
"Ape", "Fur", "1.1",
"Fur", "1.1", None,
"MammalBreasts", "MammalBreasts",
"Mammal", "Mammal",
("Mammal", "Monkey"), ("Mammal", "Monkey"),
), ),
// Arthropods that have aedeagi and ovipores, and reproduce via spermatophores and egg-laying // Arthropods that have aedeagi and ovipores, and reproduce via spermatophores and egg-laying
RaceGroup::standard_animal( RaceGroup::standard_animal(
"Arthropod",
vec![ vec![
"AA_AngelMoth", "AA_AngelMoth",
"AA_Atispec", "AA_Atispec",
@ -639,13 +638,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Arthropleura", "Arthropleura",
"Pulmonoscorpius", "Pulmonoscorpius",
], ],
"Arthropod", "Chitin", "0.7",
"Chitin", "0.7", Some(false),
"", "",
"Insect", "Insect",
("Ovipore", "Aedeagus"), ("Ovipore", "Aedeagus"),
), ),
RaceGroup::standard_animal( RaceGroup::standard_animal(
"Avian",
vec![ vec![
"Cassowary", "Cassowary",
"Chicken", "Chicken",
@ -694,13 +693,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Palaeeudyptes", "Palaeeudyptes",
"Titanis", "Titanis",
], ],
"Avian", "Feathers", "0.8",
"Feathers", "0.8", Some(false),
"", "",
"Cloacal", "Cloacal",
("Cloacal", "Cloacal"), ("Cloacal", "Cloacal"),
), ),
RaceGroup::standard_animal( RaceGroup::standard_animal(
"Canine",
vec![ vec![
"Fox_Arctic", "Fox_Arctic",
"Fox_Fennec", "Fox_Fennec",
@ -753,24 +752,24 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Omnicron", "Omnicron",
"Fuzztino", "Fuzztino",
], ],
"Canine", "Fur", "1",
"Fur", "1", None,
"MammalBreasts", "MammalBreasts",
"Dog", "Dog",
("Dog", "Dog"), ("Dog", "Dog"),
), ),
RaceGroup::standard_animal( RaceGroup::standard_animal(
"CanineSkin",
vec![ vec![
"AA_RipperHound", "AA_RipperHound",
], ],
"CanineSkin", "Skin", "0.9",
"Skin", "0.9", None,
"MammalBreasts", "MammalBreasts",
"Dog", "Dog",
("Dog", "Dog"), ("Dog", "Dog"),
), ),
// Most even-toed ungulates go here, obviously excluding cetaceans // Most even-toed ungulates go here, obviously excluding cetaceans
RaceGroup::standard_animal( RaceGroup::standard_animal(
"Cervine",
vec![ vec![
"Alpaca", "Alpaca",
"Deer", "Deer",
@ -782,13 +781,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"AEXP_Moose", "AEXP_Moose",
"RG-WF_WastelandDeer", "RG-WF_WastelandDeer",
], ],
"Cervine", "Fur", "1",
"Fur", "1", None,
"MammalBreasts", "MammalBreasts",
"Mammal", "Mammal",
("Narrow", "Needle"), ("Narrow", "Needle"),
), ),
RaceGroup::standard_animal( RaceGroup::standard_animal(
"Crocodilian",
vec![ vec![
"AA_RoughPlatedMonitor", "AA_RoughPlatedMonitor",
"AEXP_Crocodile", "AEXP_Crocodile",
@ -796,13 +795,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Quinkana", "Quinkana",
"Purussaurus", "Purussaurus",
], ],
"Crocodilian", "Scales", "0.8",
"Scales", "0.8", Some(false),
"", "",
"Cloacal", "Cloacal",
("Cloacal", "Crocodilian"), ("Cloacal", "Crocodilian"),
), ),
RaceGroup::standard_animal( RaceGroup::standard_animal(
"DinoFeathered",
vec![ vec![
"AA_PedigreedRaptor", "AA_PedigreedRaptor",
"Dakotaraptor", "Dakotaraptor",
@ -813,13 +812,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Velociraptor", "Velociraptor",
"Yutyrannus", "Yutyrannus",
], ],
"DinoFeathered", "Feathers", "1",
"Feathers", "1", Some(false),
"", "",
"Cloacal", "Cloacal",
("Cloacal", "Dino"), ("Cloacal", "Dino"),
), ),
RaceGroup::standard_animal( RaceGroup::standard_animal(
"DinoScaled",
vec![ vec![
"Allosaurus", "Allosaurus",
"Ankylosaurus", "Ankylosaurus",
@ -848,13 +847,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"TyrannosaurusRex", "TyrannosaurusRex",
"Utahraptor", "Utahraptor",
], ],
"DinoScaled", "Scales", "1",
"Scales", "1", Some(false),
"", "",
"Cloacal", "Cloacal",
("Cloacal", "Dino"), ("Cloacal", "Dino"),
), ),
RaceGroup::standard_animal( RaceGroup::standard_animal(
"Dragon",
vec![ vec![
"AA_Behemoth", "AA_Behemoth",
"AA_DecayDrake", "AA_DecayDrake",
@ -878,13 +877,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Mystogen", "Mystogen",
"Voltaic", "Voltaic",
], ],
"Dragon", "Scales", "1.2",
"Scales", "1.2", Some(false),
"", "",
"Cloacal", "Cloacal",
("Cloacal", "Dragon"), ("Cloacal", "Dragon"),
), ),
RaceGroup::standard_animal( RaceGroup::standard_animal(
"Elephant",
vec![ vec![
"Elephant", "Elephant",
"AA_Gallatross", "AA_Gallatross",
@ -900,13 +899,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"WoollyMammoth", "WoollyMammoth",
"Zygolophodon", "Zygolophodon",
], ],
"Elephant", "Fur", "0.9",
"Fur", "0.9", None,
"MammalBreasts", "MammalBreasts",
"Mammal", "Mammal",
("Elephant", "Elephant"), ("Elephant", "Elephant"),
), ),
RaceGroup::standard_animal( RaceGroup::standard_animal(
"Feline",
vec![ vec![
"Cat", "Cat",
"Cougar", "Cougar",
@ -959,24 +958,24 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Smilodon", "Smilodon",
"Snow_leopard", "Snow_leopard",
], ],
"Feline", "Fur", "1",
"Fur", "1", None,
"CatBreasts", "CatBreasts",
"Feline", "Feline",
("Cat", "Cat"), ("Cat", "Cat"),
), ),
RaceGroup::standard_animal( RaceGroup::standard_animal(
"FelineHorny",
vec![ vec![
"AEXP_Hyena", "AEXP_Hyena",
], ],
"FelineHorny", "Fur", "1.3",
"Fur", "1.3", None,
"CatBreasts", "CatBreasts",
"Feline", "Feline",
("Cat", "Cat"), ("Cat", "Cat"),
), ),
// Rhinos belong here, not with elephants, as they are odd-toed ungulates // Rhinos belong here, not with elephants, as they are odd-toed ungulates
RaceGroup::standard_animal( RaceGroup::standard_animal(
"Horse",
vec![ vec![
"Donkey", "Donkey",
"Horse", "Horse",
@ -1010,14 +1009,14 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Paraceratherium", "Paraceratherium",
"Uintatherium", "Uintatherium",
], ],
"Horse", "Fur", "1",
"Fur", "1", None,
"MammalBreasts", "MammalBreasts",
"Horse", "Horse",
("Horse", "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 // 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( RaceGroup::standard_animal(
"MarineMammal",
vec![ vec![
"ACPSpottedSeal", "ACPSpottedSeal",
"ACPWalrus", "ACPWalrus",
@ -1026,51 +1025,51 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"AEXP_Walrus", "AEXP_Walrus",
"Gomphotaria", "Gomphotaria",
], ],
"MarineMammal", "Fur", "0.9",
"Fur", "0.9", None,
"MammalBreasts", "MammalBreasts",
"Mammal", "Mammal",
("Mammal", "Marine"), ("Mammal", "Marine"),
), ),
RaceGroup::standard_animal( RaceGroup::standard_animal(
"Marsupial",
vec![ vec![
"AEXP_Kangaroo", "AEXP_Kangaroo",
"Procoptodon", "Procoptodon",
], ],
"Marsupial", "Fur", "1",
"Fur", "1", None,
"MammalBreasts", "MammalBreasts",
"Cloacal", "Cloacal",
("Cloacal", "Cloacal"), ("Cloacal", "Cloacal"),
), ),
// Marsupials with a bifurcated penis: All except kangaroos and marsupial moles // Marsupials with a bifurcated penis: All except kangaroos and marsupial moles
RaceGroup::standard_animal( RaceGroup::standard_animal(
"MarsupialBi",
vec![ vec![
"AEXP_Koala", "AEXP_Koala",
"AEXP_TasmanianDevil", "AEXP_TasmanianDevil",
"Diprotodon", "Diprotodon",
], ],
"MarsupialBi", "Fur", "1",
"Fur", "1", None,
"MammalBreasts", "MammalBreasts",
"Cloacal", "Cloacal",
("Cloacal", "Hemi"), ("Cloacal", "Hemi"),
), ),
// TODO: Should be single gender // TODO: Should be single gender
RaceGroup::standard_animal( RaceGroup::standard_animal(
"Orc",
vec![ vec![
"OG_Squig", "OG_Squig",
"OG_Squig_Eatin", "OG_Squig_Eatin",
"OG_Squig_Oily", "OG_Squig_Oily",
"OG_Snotling", "OG_Snotling",
], ],
"Orc", "Skin", "1",
"Skin", "1", None,
"MammalBreasts", "MammalBreasts",
"Orc", "Orc",
("Orc", "Orc"), ("Orc", "Orc"),
), ),
RaceGroup::standard_animal( RaceGroup::standard_animal(
"Pig",
vec![ vec![
"Pig", "Pig",
"WildBoar", "WildBoar",
@ -1083,25 +1082,25 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"MM_ErymanthianBoar", "MM_ErymanthianBoar",
"Daeodon", "Daeodon",
], ],
"Pig", "Fur", "1",
"Fur", "1", None,
"MammalBreasts", "MammalBreasts",
"Mammal", "Mammal",
("Pig", "Pig"), ("Pig", "Pig"),
), ),
RaceGroup::standard_animal( RaceGroup::standard_animal(
"Platypus",
vec![ vec![
"ACPDuckBilledPlatypus", "ACPDuckBilledPlatypus",
"AEXP_Platypus", "AEXP_Platypus",
], ],
"Platypus", "Fur", "0.9",
"Fur", "0.9", Some(false),
"MammalBreasts", "MammalBreasts",
"Cloacal", "Cloacal",
("Cloacal", "Cloacal"), ("Cloacal", "Cloacal"),
), ),
// Mustelids // Mustelids
RaceGroup::standard_animal( RaceGroup::standard_animal(
"Raccoon",
vec![ vec![
"Raccoon", "Raccoon",
"ACPMegaFerret", "ACPMegaFerret",
@ -1116,13 +1115,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"AEXP_Badger", "AEXP_Badger",
"Enhydriodon", "Enhydriodon",
], ],
"Raccoon", "Fur", "1",
"Fur", "1", None,
"MammalBreasts", "MammalBreasts",
"Mammal", "Mammal",
("Mammal", "Raccoon"), ("Mammal", "Raccoon"),
), ),
RaceGroup::standard_animal( RaceGroup::standard_animal(
"Reptile",
vec![ vec![
"Cobra", "Cobra",
"Iguana", "Iguana",
@ -1157,14 +1156,14 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Rakk", "Rakk",
"Titanoboa", "Titanoboa",
], ],
"Reptile", "Scales", "0.8",
"Scales", "0.8", Some(false),
"", "",
"Cloacal", "Cloacal",
("Cloacal", "Hemi"), ("Cloacal", "Hemi"),
), ),
// Rodents and Lagomorphs // Rodents and Lagomorphs
RaceGroup::standard_animal( RaceGroup::standard_animal(
"Rodent",
vec![ vec![
"Alphabeaver", "Alphabeaver",
"Boomrat", "Boomrat",
@ -1215,26 +1214,26 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Josephoartigasia", "Josephoartigasia",
"Pika", "Pika",
], ],
"Rodent", "Fur", "1.1",
"Fur", "1.1", None,
"MammalBreasts", "MammalBreasts",
"Mammal", "Mammal",
("Mammal", "Rodent"), ("Mammal", "Rodent"),
), ),
RaceGroup::standard_animal( RaceGroup::standard_animal(
"Tentacle",
vec![ vec![
"AA_Helixien", "AA_Helixien",
"AA_Plasmorph", "AA_Plasmorph",
"AA_SandSquid", "AA_SandSquid",
"AA_TarGuzzler", "AA_TarGuzzler",
], ],
"Tentacle", "Slime", "0.8",
"Slime", "0.8", Some(false),
"", "",
"Cloacal", "Cloacal",
("Cloacal", "Tentacle"), ("Cloacal", "Tentacle"),
), ),
RaceGroup::standard_animal( RaceGroup::standard_animal(
"Thrumbo",
vec![ vec![
"Thrumbo", "Thrumbo",
"GR_Thrumbear", "GR_Thrumbear",
@ -1252,26 +1251,26 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Archothrumbo", "Archothrumbo",
"RoyalThrumbo", "RoyalThrumbo",
], ],
"Thrumbo", "Fur", "1",
"Fur", "1", None,
"MammalBreasts", "MammalBreasts",
"Cloacal", "Cloacal",
("Cloacal", "Dragon"), ("Cloacal", "Dragon"),
), ),
RaceGroup::standard_animal( RaceGroup::standard_animal(
"Turtle",
vec![ vec![
"Tortoise", "Tortoise",
"AEXP_DesertTortoise", "AEXP_DesertTortoise",
"Archotortoise", "Archotortoise",
"Megalochelys", "Megalochelys",
], ],
"Turtle", "Scales", "0.8",
"Scales", "0.8", Some(false),
"", "",
"Cloacal", "Cloacal",
("Cloacal", "Turtle"), ("Cloacal", "Turtle"),
), ),
RaceGroup::standard_animal( RaceGroup::standard_animal(
"Ursine",
vec![ vec![
"Bear", "Bear",
"Bear_Grizzly", "Bear_Grizzly",
@ -1294,19 +1293,18 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"AnimaBear", "AnimaBear",
"ShortfacedBear", "ShortfacedBear",
], ],
"Ursine", "Fur", "1",
"Fur", "1", None,
"MammalBreasts", "MammalBreasts",
"Mammal", "Mammal",
("Mammal", "Bear"), ("Mammal", "Bear"),
), ),
// AA // AA
RaceGroup::standard_animal( RaceGroup::standard_animal(
"AA_SandProwler",
vec![ vec![
"AA_SandProwler", "AA_SandProwler",
], ],
"AA_SandProwler", "Scales", "1",
"Scales", "1", None,
"CatBreasts", "CatBreasts",
"Feline", "Feline",
("Cat", "Cat"), ("Cat", "Cat"),
@ -1406,7 +1404,7 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
m_genitals: "BovinePenis".to_string(), m_genitals: "BovinePenis".to_string(),
tag: "Fur".to_string(), tag: "Fur".to_string(),
sex_drive: "1".to_string(), sex_drive: "1".to_string(),
egg_implant: None, egg_implant: false,
}, },
// Arthropods that reproduce through oviposition // Arthropods that reproduce through oviposition
RaceGroup { RaceGroup {
@ -1439,7 +1437,7 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
m_genitals: "OvipositorM".to_string(), m_genitals: "OvipositorM".to_string(),
tag: "Chitin".to_string(), tag: "Chitin".to_string(),
sex_drive: "1".to_string(), sex_drive: "1".to_string(),
egg_implant: Some(true), egg_implant: true,
}, },
RaceGroup { RaceGroup {
races: vec![ races: vec![
@ -1454,7 +1452,7 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
m_genitals: "OvipositorM".to_string(), m_genitals: "OvipositorM".to_string(),
tag: "Chitin".to_string(), tag: "Chitin".to_string(),
sex_drive: "1.5".to_string(), sex_drive: "1.5".to_string(),
egg_implant: Some(true), egg_implant: true,
}, },
] ]
} }