From bde44382e55a6639e3fc667e7923e31ec8c3e71f Mon Sep 17 00:00:00 2001 From: AsmodeusRex Date: Fri, 16 Dec 2022 21:03:37 -0800 Subject: [PATCH] Add gender to constructor --- ReadMe.md | 5 +- changelog.txt | 3 + generator/src/racegroups.rs | 190 +++++++++++++++++++++++------------- 3 files changed, 128 insertions(+), 70 deletions(-) diff --git a/ReadMe.md b/ReadMe.md index 67e2adb..f9539f6 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -115,11 +115,8 @@ This mod requires RJW and must be placed somewhere below it. * FCP dogmeat * Alpha mythology ### Test and improve -* Emperor of dragon -* Gods of elona * Race to the rim -* Ooka miko -* kemomimihouse +* Dragon's descent crossbreeding ## Thanks * Ed86 (for Maintaining RJW) diff --git a/changelog.txt b/changelog.txt index 4d19124..a2a12ff 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,6 @@ +11.3.1 +-Fixed Emperor of dragon, Gods of elona, Ooka miko, and kemomimihouse + 11.3.0 -Fixed some viviparous species laying chicken eggs -Added PokeWorld support diff --git a/generator/src/racegroups.rs b/generator/src/racegroups.rs index 1db2576..ca3a66d 100644 --- a/generator/src/racegroups.rs +++ b/generator/src/racegroups.rs @@ -11,6 +11,7 @@ pub struct RaceGroup { pub m_genitals: String, pub tag: String, pub sex_drive: String, + pub gendered: bool, pub egg_implant: bool, } @@ -20,6 +21,7 @@ impl RaceGroup { races: Vec<&'static str>, tag: &'static str, sex_drive: &'static str, + gendered: bool, breasts: &'static str, anus: &'static str, genitals: (&'static str, &'static str) @@ -34,6 +36,7 @@ impl RaceGroup { m_genitals: format!("{}Penis", genitals.1), tag: tag.to_string(), sex_drive: sex_drive.to_string(), + gendered, egg_implant: false, } } @@ -42,6 +45,7 @@ impl RaceGroup { races: Vec<&'static str>, tag: &'static str, sex_drive: &'static str, + gendered: bool, breasts: &'static str, anus: &'static str, genitals: (&'static str, &'static str) @@ -56,6 +60,7 @@ impl RaceGroup { m_genitals: format!("{}Penis", genitals.1), tag: tag.to_string(), sex_drive: sex_drive.to_string(), + gendered, egg_implant: false, } } @@ -72,22 +77,37 @@ fn tagify(content: &str, tag: &str) -> String { pub fn construct_racegroup(group: &RaceGroup) -> String { let mut s = String::from(RACEGROUP_STRING); + let mut races = String::new(); for race in &group.races { races.push_str(&format!("\n\t\t\t
  • {race}
  • ")); } + let fields = match group.egg_implant { true => "true\n\t\ttrue\n\t\t".to_string(), false => String::new() }; + + let mut f_breasts = tagify(&group.f_breasts, "femaleBreasts"); + let mut f_genital = tagify(&group.f_genitals, "femaleGenitals"); + let gender = match !group.gendered { + true => { + f_breasts = "".to_string(); + f_genital = "".to_string(); + format!("\n\t\t{}", !group.gendered) + }, + false => String::new(), + }; + let replace = HashMap::from([ ("{name}", group.name.clone()), ("{anus}", tagify(&group.anus, "anuses")), - ("{f_breasts}", tagify(&group.f_breasts, "femaleBreasts")), - ("{f_genitals}", tagify(&group.f_genitals, "femaleGenitals")), + ("{f_breasts}", f_breasts), + ("{f_genitals}", f_genital), ("{m_breasts}", tagify(&group.m_breasts, "maleBreasts")), ("{m_genitals}", tagify(&group.m_genitals, "maleGenitals")), ("{tag}", tagify(&group.tag, "tags")), + ("{gendered}", gender), ("{sex_drive}", group.sex_drive.clone()), ("{races}", races), ("{fields}", fields) @@ -109,7 +129,7 @@ const RACEGROUP_STRING: &'static str = " {m_breasts} {m_genitals} {tag} - {fields}{sex_drive} + {fields}{sex_drive}{gendered} \n"; pub fn racegroup_data_humans() -> Vec { @@ -146,12 +166,6 @@ pub fn racegroup_data_humans() -> Vec { "Yokai_Yamanba", "Yokai_YukiShizuku", "DwarfRace", - "eCutefairy", - "eDefender", - "eGoldenknight", - "eGwen", - "eYoungercatsister", - "eYoungersister", "HorrorsInfestedHuman", "HorrorsOverlord", "Elona_Imouto", @@ -160,7 +174,7 @@ pub fn racegroup_data_humans() -> Vec { "Ooka_Miko", "TrollRace", ], - "Skin", "1", + "Skin", "1", true, "Breasts", "", ("", ""), @@ -177,7 +191,7 @@ pub fn racegroup_data_humans() -> Vec { "Races_BlackWidow", "Yokai_JorouGumo", ], - "Chitin", "0.8", + "Chitin", "0.8", true, "Breasts", "Insect", ("Ovipore", "Aedeagus"), @@ -188,7 +202,7 @@ pub fn racegroup_data_humans() -> Vec { "ATK_Avianmorph", "Harpy", ], - "Feathers", "0.9", + "Feathers", "0.9", true, "FeaturelessChest", "Cloacal", ("Cloacal", "Cloacal"), @@ -199,7 +213,7 @@ pub fn racegroup_data_humans() -> Vec { "WoW_Pandaren", "BearMan", ], - "Fur", "0.9", + "Fur", "0.9", true, "Breasts", "", ("", "Bear"), @@ -214,7 +228,7 @@ pub fn racegroup_data_humans() -> Vec { "siro", "WolfMan", ], - "Fur", "1", + "Fur", "1", true, "Breasts", "", ("Dog", "Dog"), @@ -233,7 +247,7 @@ pub fn racegroup_data_humans() -> Vec { "Yokai_NineTailWhite", "FoxMan", ], - "Fur", "1.3", + "Fur", "1.3", true, "Breasts", "", ("Dog", "Dog"), @@ -245,7 +259,7 @@ pub fn racegroup_data_humans() -> Vec { "SSD_DeathclawRace", "Races_Lizardman", ], - "Scales", "0.9", + "Scales", "0.9", true, "ScaleBreasts", "Cloacal", ("Cloacal", "Crocodilian"), @@ -260,7 +274,7 @@ pub fn racegroup_data_humans() -> Vec { "GazelleMan", "Lliscean", ], - "Fur", "1", + "Fur", "1", true, "Breasts", "", ("Narrow", "Needle"), @@ -271,7 +285,7 @@ pub fn racegroup_data_humans() -> Vec { "Raptor", "Tyrannosaur", ], - "Scales", "0.9", + "Scales", "0.9", true, "ScaleBreasts", "Cloacal", ("Cloacal", "Dino"), @@ -292,13 +306,12 @@ pub fn racegroup_data_humans() -> Vec { "Yokai_Tenaga", "Yokai_TenagaH", "Yokai_TubakiAnimal", - "EmperorDragon", "HalfDragon", "Dragon_Kilhn", "ALapelli", "yuki", ], - "Scales", "1.2", + "Scales", "1.2", true, "ScaleBreasts", "Cloacal", ("Cloacal", "Dragon") @@ -308,7 +321,7 @@ pub fn racegroup_data_humans() -> Vec { vec![ "ElephantMan", ], - "Fur", "1", + "Fur", "1", true, "Breasts", "", ("Elephant", "Elephant"), @@ -320,7 +333,7 @@ pub fn racegroup_data_humans() -> Vec { "kon", "Vulpes", ], - "Fur", "1.3", + "Fur", "1.3", true, "Petite_FoxGirl_Breasts", "Petite_FoxGirl_", ("Petite_FoxGirl_", ""), @@ -357,7 +370,7 @@ pub fn racegroup_data_humans() -> Vec { "WoW_NightElf", "ElfRace", ], - "Skin", "1.1", + "Skin", "1.1", true, "Breasts", "Elf", ("Elf", "Elf"), @@ -378,7 +391,7 @@ pub fn racegroup_data_humans() -> Vec { "Maidnukos", "miko", ], - "Fur", "1", + "Fur", "1", true, "Breasts", "Feline", ("Cat", "Cat"), @@ -405,7 +418,7 @@ pub fn racegroup_data_humans() -> Vec { "PW_Staryu", "IkquanRace", ], - "Scales", "0.8", + "Scales", "0.8", true, "FeaturelessChest", "Cloacal", ("Cloacal", "Marine"), @@ -422,7 +435,7 @@ pub fn racegroup_data_humans() -> Vec { "PW_Misdreavus", "WoW_Skeleton", ], - "Demon", "0.5", + "Demon", "0.5", true, "GhostBreasts", "Ghost", ("Ghost", "Ghost"), @@ -433,7 +446,7 @@ pub fn racegroup_data_humans() -> Vec { "Ghoul", "GlowingGhoul", ], - "Demon", "0.5", + "Demon", "0.5", true, "GhoulBreasts", "Ghoul", ("Ghoul", "Ghoul"), @@ -443,7 +456,7 @@ pub fn racegroup_data_humans() -> Vec { vec![ "Alien_Kijin", ], - "Skin", "1.4", + "Skin", "1.4", true, "Horny_Breasts", "", ("Horny_", "Horny_"), @@ -466,7 +479,7 @@ pub fn racegroup_data_humans() -> Vec { "OG_Alien_Grot", "WoW_Orc", ], - "Skin", "1.3", + "Skin", "1.3", true, "OrcBreasts", "Orc", ("Orc", "Orc"), @@ -485,7 +498,7 @@ pub fn racegroup_data_humans() -> Vec { "Alien_ZPEquium", "WoW_Draenei", ], - "Fur", "1.2", + "Fur", "1.2", true, "Breasts", "Horse", ("Horse", "Horse"), @@ -495,7 +508,7 @@ pub fn racegroup_data_humans() -> Vec { vec![ "PigMan", ], - "Fur", "1", + "Fur", "1", true, "Breasts", "", ("Pig", "Pig"), @@ -506,7 +519,7 @@ pub fn racegroup_data_humans() -> Vec { "RaccoonMan", "StarWarsRaces_Ewok", ], - "Fur", "1.1", + "Fur", "1.1", true, "Breasts", "", ("", "Raccoon"), @@ -522,7 +535,7 @@ pub fn racegroup_data_humans() -> Vec { "Yokai_Samia", "Naga", ], - "Scales", "0.9", + "Scales", "0.9", true, "ScaleBreasts", "Cloacal", ("Cloacal", "Hemi"), @@ -543,7 +556,7 @@ pub fn racegroup_data_humans() -> Vec { "Rotti", "Rabbie", ], - "Fur", "1.3", + "Fur", "1.3", true, "Petite_Breasts", "Petite_", ("Rodent", "Rodent"), @@ -553,7 +566,7 @@ pub fn racegroup_data_humans() -> Vec { vec![ "Thrumkin", ], - "Fur", "1.2", + "Fur", "1.2", true, "Breasts", "Cloacal", ("Cloacal", "Dragon") @@ -585,7 +598,7 @@ pub fn racegroup_data_humans() -> Vec { "PW_Vileplume", "PW_Weepinbell", ], - "Plant", "1", + "Plant", "1", true, "TreeBreasts", "Tree", ("Tree", "Tree"), @@ -609,6 +622,7 @@ pub fn racegroup_data_humans() -> Vec { m_genitals: "BovinePenis".to_string(), tag: "Fur".to_string(), sex_drive: "1".to_string(), + gendered: true, egg_implant: false, }, RaceGroup { @@ -632,6 +646,7 @@ pub fn racegroup_data_humans() -> Vec { m_genitals: "SlimeTentacles".to_string(), tag: "Slime".to_string(), sex_drive: "1".to_string(), + gendered: true, egg_implant: false, }, ] @@ -649,7 +664,7 @@ pub fn racegroup_data_animals() -> Vec { "Yokai_IssunAnimal", "Andrewsarchus", ], - "Fur", "1", + "Fur", "1", true, "MammalBreasts", "Mammal", ("Mammal", "Mammal"), @@ -672,7 +687,7 @@ pub fn racegroup_data_animals() -> Vec { "Dinopithecus", "Gigantopithecus", ], - "Fur", "1.1", + "Fur", "1.1", true, "MammalBreasts", "Mammal", ("Mammal", "Monkey"), @@ -721,7 +736,7 @@ pub fn racegroup_data_animals() -> Vec { "Arthropleura", "Pulmonoscorpius", ], - "Chitin", "0.7", + "Chitin", "0.7", true, "", "Insect", ("Ovipore", "Aedeagus"), @@ -798,7 +813,7 @@ pub fn racegroup_data_animals() -> Vec { "Palaeeudyptes", "Titanis", ], - "Feathers", "0.8", + "Feathers", "0.8", true, "", "Cloacal", ("Cloacal", "Cloacal"), @@ -874,7 +889,7 @@ pub fn racegroup_data_animals() -> Vec { "Omnicron", "Fuzztino", ], - "Fur", "1", + "Fur", "1", true, "MammalBreasts", "Dog", ("Dog", "Dog"), @@ -884,7 +899,7 @@ pub fn racegroup_data_animals() -> Vec { vec![ "AA_RipperHound", ], - "Skin", "0.9", + "Skin", "0.9", true, "MammalBreasts", "Dog", ("Dog", "Dog"), @@ -905,7 +920,7 @@ pub fn racegroup_data_animals() -> Vec { "PW_Stantler", "RG-WF_WastelandDeer", ], - "Fur", "1", + "Fur", "1", true, "MammalBreasts", "Mammal", ("Narrow", "Needle"), @@ -922,7 +937,7 @@ pub fn racegroup_data_animals() -> Vec { "Quinkana", "Purussaurus", ], - "Scales", "0.8", + "Scales", "0.8", true, "", "Cloacal", ("Cloacal", "Crocodilian"), @@ -940,7 +955,7 @@ pub fn racegroup_data_animals() -> Vec { "Velociraptor", "Yutyrannus", ], - "Feathers", "1", + "Feathers", "1", true, "", "Cloacal", ("Cloacal", "Dino"), @@ -980,7 +995,7 @@ pub fn racegroup_data_animals() -> Vec { "TyrannosaurusRex", "Utahraptor", ], - "Scales", "1", + "Scales", "1", true, "", "Cloacal", ("Cloacal", "Dino"), @@ -1017,7 +1032,7 @@ pub fn racegroup_data_animals() -> Vec { "Mystogen", "Voltaic", ], - "Scales", "1.2", + "Scales", "1.2", true, "", "Cloacal", ("Cloacal", "Dragon"), @@ -1043,7 +1058,7 @@ pub fn racegroup_data_animals() -> Vec { "WoollyMammoth", "Zygolophodon", ], - "Fur", "0.9", + "Fur", "0.9", true, "MammalBreasts", "Mammal", ("Elephant", "Elephant"), @@ -1098,13 +1113,12 @@ pub fn racegroup_data_animals() -> Vec { "PW_Persian", "Carnagrius", "Dinocrocuta", - "eBlackcat", "Jeeta", "Pallas_cat", "Smilodon", "Snow_leopard", ], - "Fur", "1", + "Fur", "1", true, "CatBreasts", "Feline", ("Cat", "Cat"), @@ -1114,7 +1128,17 @@ pub fn racegroup_data_animals() -> Vec { vec![ "AEXP_Hyena", ], - "Fur", "1.3", + "Fur", "1.3", true, + "CatBreasts", + "Feline", + ("Cat", "Cat"), + ), + RaceGroup::standard_animal( + "FelineSingleGender", + vec![ + "eBlackcat", + ], + "Fur", "1", false, "CatBreasts", "Feline", ("Cat", "Cat"), @@ -1159,11 +1183,42 @@ pub fn racegroup_data_animals() -> Vec { "Paraceratherium", "Uintatherium", ], - "Fur", "1", + "Fur", "1", true, "MammalBreasts", "Horse", ("Horse", "Horse"), ), + RaceGroup::standard_animal( + "HumanlikeGenderless", + vec![ + "eCutefairy", + "eDefender", + "eGoldenknight", + "eGwen", + "eYoungercatsister", + "eYoungersister", + "EmperorDragon", + "akame", + "aome", + "baier", + "buer", + "hana", + "jiaer", + "juer", + "kohime", + "kon", + "kuoer", + "kuro", + "miko", + "siro", + "yuki", + "zhuer", + ], + "Skin", "1", false, + "Breasts", + "", + ("", ""), + ), // 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", @@ -1179,7 +1234,7 @@ pub fn racegroup_data_animals() -> Vec { "PW_Seel", "Gomphotaria", ], - "Fur", "0.9", + "Fur", "0.9", true, "MammalBreasts", "Mammal", ("Mammal", "Marine"), @@ -1190,7 +1245,7 @@ pub fn racegroup_data_animals() -> Vec { "AEXP_Kangaroo", "Procoptodon", ], - "Fur", "1", + "Fur", "1", true, "MammalBreasts", "Cloacal", ("Cloacal", "Cloacal"), @@ -1205,7 +1260,7 @@ pub fn racegroup_data_animals() -> Vec { "PW_Dugtrio", "Diprotodon", ], - "Fur", "1", + "Fur", "1", true, "MammalBreasts", "Cloacal", ("Cloacal", "Hemi"), @@ -1219,7 +1274,7 @@ pub fn racegroup_data_animals() -> Vec { "OG_Squig_Oily", "OG_Snotling", ], - "Skin", "1", + "Skin", "1", true, "MammalBreasts", "Orc", ("Orc", "Orc"), @@ -1243,7 +1298,7 @@ pub fn racegroup_data_animals() -> Vec { "MM_ErymanthianBoar", "Daeodon", ], - "Fur", "1", + "Fur", "1", true, "MammalBreasts", "Mammal", ("Pig", "Pig"), @@ -1254,7 +1309,7 @@ pub fn racegroup_data_animals() -> Vec { "ACPDuckBilledPlatypus", "AEXP_Platypus", ], - "Fur", "0.9", + "Fur", "0.9", true, "MammalBreasts", "Cloacal", ("Cloacal", "Cloacal"), @@ -1278,7 +1333,7 @@ pub fn racegroup_data_animals() -> Vec { "PW_Sneasel", "Enhydriodon", ], - "Fur", "1", + "Fur", "1", true, "MammalBreasts", "Mammal", ("Mammal", "Raccoon"), @@ -1322,7 +1377,7 @@ pub fn racegroup_data_animals() -> Vec { "Rakk", "Titanoboa", ], - "Scales", "0.8", + "Scales", "0.8", true, "", "Cloacal", ("Cloacal", "Hemi"), @@ -1399,7 +1454,7 @@ pub fn racegroup_data_animals() -> Vec { "Josephoartigasia", "Pika", ], - "Fur", "1.1", + "Fur", "1.1", true, "MammalBreasts", "Mammal", ("Mammal", "Rodent"), @@ -1415,7 +1470,7 @@ pub fn racegroup_data_animals() -> Vec { "PW_Tentacool", "PW_Tentacruel", ], - "Slime", "0.8", + "Slime", "0.8", true, "", "Cloacal", ("Cloacal", "Tentacle"), @@ -1439,7 +1494,7 @@ pub fn racegroup_data_animals() -> Vec { "Archothrumbo", "RoyalThrumbo", ], - "Fur", "1", + "Fur", "1", true, "MammalBreasts", "Cloacal", ("Cloacal", "Dragon"), @@ -1457,7 +1512,7 @@ pub fn racegroup_data_animals() -> Vec { "Archotortoise", "Megalochelys", ], - "Scales", "0.8", + "Scales", "0.8", true, "", "Cloacal", ("Cloacal", "Turtle"), @@ -1489,7 +1544,7 @@ pub fn racegroup_data_animals() -> Vec { "AnimaBear", "ShortfacedBear", ], - "Fur", "1", + "Fur", "1", true, "MammalBreasts", "Mammal", ("Mammal", "Bear"), @@ -1500,7 +1555,7 @@ pub fn racegroup_data_animals() -> Vec { vec![ "AA_SandProwler", ], - "Scales", "1", + "Scales", "1", true, "CatBreasts", "Feline", ("Cat", "Cat"), @@ -1605,6 +1660,7 @@ pub fn racegroup_data_animals() -> Vec { m_genitals: "BovinePenis".to_string(), tag: "Fur".to_string(), sex_drive: "1".to_string(), + gendered: true, egg_implant: false, }, // Arthropods that reproduce through oviposition @@ -1658,6 +1714,7 @@ pub fn racegroup_data_animals() -> Vec { m_genitals: "OvipositorM".to_string(), tag: "Chitin".to_string(), sex_drive: "1".to_string(), + gendered: true, egg_implant: true, }, RaceGroup { @@ -1673,6 +1730,7 @@ pub fn racegroup_data_animals() -> Vec { m_genitals: "OvipositorM".to_string(), tag: "Chitin".to_string(), sex_drive: "1.5".to_string(), + gendered: true, egg_implant: true, }, ]