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)] #[derive(Clone, Debug)]
pub struct RaceGroup { pub struct RaceGroup {
pub name: String,
pub races: Vec<&'static str>, pub races: Vec<&'static str>,
pub name: String,
pub anus: String, pub anus: String,
pub f_breasts: String, pub f_breasts: String,
pub m_breasts: String, pub m_breasts: String,
@ -11,19 +11,17 @@ 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: bool, pub egg_implant: Option<bool>,
} }
impl RaceGroup { impl RaceGroup {
fn standard( fn standard(races: Vec<&'static str>,
species: &'static str, species: &'static str,
races: Vec<&'static str>, tag: &'static str,
tag: &'static str, sex_drive: &'static str,
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!("{}Person", species), name: format!("{}Person", species),
@ -34,18 +32,17 @@ 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: false, egg_implant: None,
} }
} }
fn standard_animal( fn standard_animal(races: Vec<&'static str>,
species: &'static str, species: &'static str,
races: Vec<&'static str>, tag: &'static str,
tag: &'static str, sex_drive: &'static str,
sex_drive: &'static str, egg_implant: Option<bool>,
breasts: &'static str, breasts: &'static str,
anus: &'static str, anus: &'static str,
genitals: (&'static str, &'static str) genitals: (&'static str, &'static str)) -> Self {
) -> Self {
Self { Self {
races, races,
name: format!("{}Animal", species), name: format!("{}Animal", species),
@ -56,7 +53,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: 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>")); races.push_str(&format!("\n\t\t\t<li>{race}</li>"));
} }
let fields = match group.egg_implant { let fields = match group.egg_implant {
true => "<oviPregnancy>true</oviPregnancy>\n\t\t<ImplantEggs>true</ImplantEggs>\n\t\t".to_string(), Some(imp) => {
false => String::new() 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([ let replace = HashMap::from([
("{name}", group.name.clone()), ("{name}", group.name.clone()),
@ -115,7 +117,6 @@ 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",
@ -160,13 +161,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",
@ -177,35 +178,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",
@ -214,6 +215,7 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"siro", "siro",
"WolfMan", "WolfMan",
], ],
"Canine",
"Fur", "1", "Fur", "1",
"Breasts", "Breasts",
"", "",
@ -221,7 +223,6 @@ 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",
@ -233,25 +234,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",
@ -260,24 +261,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",
@ -298,35 +299,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![
"AS_WHE_Race", "AS_WHE_Race",
"Alien_Astoriel", "Alien_Astoriel",
@ -357,13 +358,13 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"WoW_NightElf", "WoW_NightElf",
"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",
@ -378,13 +379,13 @@ 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",
@ -405,13 +406,13 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"PW_Staryu", "PW_Staryu",
"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",
@ -422,34 +423,34 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"PW_Misdreavus", "PW_Misdreavus",
"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",
@ -466,13 +467,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",
@ -485,34 +486,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",
@ -522,13 +523,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",
@ -543,23 +544,23 @@ 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",
@ -585,6 +586,7 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"PW_Vileplume", "PW_Vileplume",
"PW_Weepinbell", "PW_Weepinbell",
], ],
"Tree",
"Plant", "1", "Plant", "1",
"TreeBreasts", "TreeBreasts",
"Tree", "Tree",
@ -609,7 +611,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: false, egg_implant: None,
}, },
RaceGroup { RaceGroup {
races: vec![ races: vec![
@ -632,7 +634,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: false, egg_implant: None,
}, },
] ]
} }
@ -640,7 +642,6 @@ 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",
@ -649,13 +650,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Yokai_IssunAnimal", "Yokai_IssunAnimal",
"Andrewsarchus", "Andrewsarchus",
], ],
"Fur", "1", "GenericMammal",
"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",
@ -672,14 +673,14 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Dinopithecus", "Dinopithecus",
"Gigantopithecus", "Gigantopithecus",
], ],
"Fur", "1.1", "Ape",
"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",
@ -721,13 +722,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Arthropleura", "Arthropleura",
"Pulmonoscorpius", "Pulmonoscorpius",
], ],
"Chitin", "0.7", "Arthropod",
"Chitin", "0.7", Some(false),
"", "",
"Insect", "Insect",
("Ovipore", "Aedeagus"), ("Ovipore", "Aedeagus"),
), ),
RaceGroup::standard_animal( RaceGroup::standard_animal(
"Avian",
vec![ vec![
"Cassowary", "Cassowary",
"Chicken", "Chicken",
@ -798,13 +799,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Palaeeudyptes", "Palaeeudyptes",
"Titanis", "Titanis",
], ],
"Feathers", "0.8", "Avian",
"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",
@ -874,24 +875,24 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Omnicron", "Omnicron",
"Fuzztino", "Fuzztino",
], ],
"Fur", "1", "Canine",
"Fur", "1", None,
"MammalBreasts", "MammalBreasts",
"Dog", "Dog",
("Dog", "Dog"), ("Dog", "Dog"),
), ),
RaceGroup::standard_animal( RaceGroup::standard_animal(
"CanineSkin",
vec![ vec![
"AA_RipperHound", "AA_RipperHound",
], ],
"Skin", "0.9", "CanineSkin",
"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",
@ -905,13 +906,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"PW_Stantler", "PW_Stantler",
"RG-WF_WastelandDeer", "RG-WF_WastelandDeer",
], ],
"Fur", "1", "Cervine",
"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_Alligator", "AEXP_Alligator",
@ -922,13 +923,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Quinkana", "Quinkana",
"Purussaurus", "Purussaurus",
], ],
"Scales", "0.8", "Crocodilian",
"Scales", "0.8", Some(false),
"", "",
"Cloacal", "Cloacal",
("Cloacal", "Crocodilian"), ("Cloacal", "Crocodilian"),
), ),
RaceGroup::standard_animal( RaceGroup::standard_animal(
"DinoFeathered",
vec![ vec![
"AA_PedigreedRaptor", "AA_PedigreedRaptor",
"PW_Aerodactyl", "PW_Aerodactyl",
@ -940,13 +941,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Velociraptor", "Velociraptor",
"Yutyrannus", "Yutyrannus",
], ],
"Feathers", "1", "DinoFeathered",
"Feathers", "1", Some(false),
"", "",
"Cloacal", "Cloacal",
("Cloacal", "Dino"), ("Cloacal", "Dino"),
), ),
RaceGroup::standard_animal( RaceGroup::standard_animal(
"DinoScaled",
vec![ vec![
"PW_Cubone", "PW_Cubone",
"PW_Marowak", "PW_Marowak",
@ -980,13 +981,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"TyrannosaurusRex", "TyrannosaurusRex",
"Utahraptor", "Utahraptor",
], ],
"Scales", "1", "DinoScaled",
"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",
@ -1016,13 +1017,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Mystogen", "Mystogen",
"Voltaic", "Voltaic",
], ],
"Scales", "1.2", "Dragon",
"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",
@ -1042,13 +1043,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"WoollyMammoth", "WoollyMammoth",
"Zygolophodon", "Zygolophodon",
], ],
"Fur", "0.9", "Elephant",
"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",
@ -1103,24 +1104,24 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Smilodon", "Smilodon",
"Snow_leopard", "Snow_leopard",
], ],
"Fur", "1", "Feline",
"Fur", "1", None,
"CatBreasts", "CatBreasts",
"Feline", "Feline",
("Cat", "Cat"), ("Cat", "Cat"),
), ),
RaceGroup::standard_animal( RaceGroup::standard_animal(
"FelineHorny",
vec![ vec![
"AEXP_Hyena", "AEXP_Hyena",
], ],
"Fur", "1.3", "FelineHorny",
"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",
@ -1158,14 +1159,14 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Paraceratherium", "Paraceratherium",
"Uintatherium", "Uintatherium",
], ],
"Fur", "1", "Horse",
"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",
@ -1178,25 +1179,25 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"PW_Seel", "PW_Seel",
"Gomphotaria", "Gomphotaria",
], ],
"Fur", "0.9", "MarineMammal",
"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",
], ],
"Fur", "1", "Marsupial",
"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",
@ -1204,27 +1205,27 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"PW_Dugtrio", "PW_Dugtrio",
"Diprotodon", "Diprotodon",
], ],
"Fur", "1", "MarsupialBi",
"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",
], ],
"Skin", "1", "Orc",
"Skin", "1", None,
"MammalBreasts", "MammalBreasts",
"Orc", "Orc",
("Orc", "Orc"), ("Orc", "Orc"),
), ),
RaceGroup::standard_animal( RaceGroup::standard_animal(
"Pig",
vec![ vec![
"Pig", "Pig",
"WildBoar", "WildBoar",
@ -1242,25 +1243,25 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"MM_ErymanthianBoar", "MM_ErymanthianBoar",
"Daeodon", "Daeodon",
], ],
"Fur", "1", "Pig",
"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",
], ],
"Fur", "0.9", "Platypus",
"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",
@ -1277,13 +1278,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"PW_Sneasel", "PW_Sneasel",
"Enhydriodon", "Enhydriodon",
], ],
"Fur", "1", "Raccoon",
"Fur", "1", None,
"MammalBreasts", "MammalBreasts",
"Mammal", "Mammal",
("Mammal", "Raccoon"), ("Mammal", "Raccoon"),
), ),
RaceGroup::standard_animal( RaceGroup::standard_animal(
"Reptile",
vec![ vec![
"Cobra", "Cobra",
"Iguana", "Iguana",
@ -1320,14 +1321,14 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Rakk", "Rakk",
"Titanoboa", "Titanoboa",
], ],
"Scales", "0.8", "Reptile",
"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",
@ -1397,13 +1398,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Josephoartigasia", "Josephoartigasia",
"Pika", "Pika",
], ],
"Fur", "1.1", "Rodent",
"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",
@ -1413,13 +1414,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"PW_Tentacool", "PW_Tentacool",
"PW_Tentacruel", "PW_Tentacruel",
], ],
"Slime", "0.8", "Tentacle",
"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",
@ -1437,13 +1438,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Archothrumbo", "Archothrumbo",
"RoyalThrumbo", "RoyalThrumbo",
], ],
"Fur", "1", "Thrumbo",
"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",
@ -1455,13 +1456,13 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"Archotortoise", "Archotortoise",
"Megalochelys", "Megalochelys",
], ],
"Scales", "0.8", "Turtle",
"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",
@ -1486,18 +1487,19 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"AnimaBear", "AnimaBear",
"ShortfacedBear", "ShortfacedBear",
], ],
"Fur", "1", "Ursine",
"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",
], ],
"Scales", "1", "AA_SandProwler",
"Scales", "1", None,
"CatBreasts", "CatBreasts",
"Feline", "Feline",
("Cat", "Cat"), ("Cat", "Cat"),
@ -1602,7 +1604,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: false, egg_implant: None,
}, },
// Arthropods that reproduce through oviposition // Arthropods that reproduce through oviposition
RaceGroup { RaceGroup {
@ -1655,7 +1657,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: true, egg_implant: Some(true),
}, },
RaceGroup { RaceGroup {
races: vec![ races: vec![
@ -1670,7 +1672,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: true, egg_implant: Some(true),
}, },
] ]
} }