diff --git a/.vscode/settings.json b/.vscode/settings.json index e2a6936..c6c2091 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,54 +2,105 @@ "cSpell.enabled": true, "cSpell.words": [ "AACP", + "Acanthamoeba", "aedeagi", "Aedeagus", "Aerofleet", "AEXP", + "akame", + "Anthromorphs", "Antinium", + "aome", + "Apini", "Archotech", + "Argonian", + "ASMR", + "Astoriel", + "Avianmorph", + "baculum", "Boomalope", + "Bovinemorph", "Byakhee", + "Callistan", + "Callistans", + "Caninemorph", + "Cervinemorph", "chanceanuses", "chancefemale", "chancemale", "Deathclaw", + "Donk", + "Dragomorph", + "Drow", + "DRSKT", + "Eavy", "Ecto", "eggsize", + "Elona", + "Epona", "Equium", + "erdelf", + "Felinemorph", "Fert", "Fleshbeast", "Fogman", "Futa", + "Gigantea", "Girthy", + "Gnollmorph", "Hediff", "hediffs", + "hemi", + "Hisa", "Hitech", "Hiver", "humanlike", + "Ikquan", + "Imouto", "Insectoid", + "Kemomimihouse", "Kenshi", + "Kijin", "Kikimore", + "Kilhn", "Klickmala", + "Kurin", + "kuro", + "Lapelli", + "Lliscean", + "Lupaios", "Meganeura", "Megascarab", "Megaspider", "Metallovore", + "Miko", "Milkable", + "Mincho", + "Momu", "Moyo", "Muffalo", "Mustelids", "Necro", "Neko", + "Nukos", + "Nyaron", + "Ooka", "Ovipore", "ovipores", "oviposition", "Poleepkwa", + "Protogen", + "Rabbie", "racegroup", "racegroups", "racepart", "raceparts", + "Rakkle", + "Ratkin", "selffertilized", + "Shoggoth", + "Shoujo", + "siro", "Skaven", "Skrix", "Spelopede", @@ -60,10 +111,18 @@ "Thermadon", "thingdef", "thingdefs", + "Thrumkin", + "Vulpes", + "Vulpinemorph", "Warg", + "Warhammer", + "Xenohumans", "Xenomorph", + "xmls", "Yanzihko", - "Yokai" + "Yokai", + "Yuki", + "Zabrak" ], "cSpell.maxNumberOfProblems": 1000 } \ No newline at end of file diff --git a/About/About.xml b/About/About.xml index 00f1a61..1e142d6 100644 --- a/About/About.xml +++ b/About/About.xml @@ -29,11 +29,9 @@
  • Lcom.yayo.raceQuestPawn
  • com.yayo.raceQuestPawn
  • -
  • EdB.PrepareCarefully
  • -
  • EdB.PrepareCarefully.UnofficialPatch
  • Mlie.MilkableColonists
  • - Hediff and detail fine tuning for Race and RJW integration. + Provides RJW compatibility for a wide array of mods that add races and animals. \ No newline at end of file diff --git a/About/Manifest.xml b/About/Manifest.xml deleted file mode 100644 index b85965c..0000000 --- a/About/Manifest.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - RJW-RaceSupport - 10.2.0 - -
  • RimJobWorld
  • -
    - -
  • RimJobWorld
  • -
    -
    \ No newline at end of file diff --git a/About/Preview.png b/About/Preview.png new file mode 100644 index 0000000..5aae629 Binary files /dev/null and b/About/Preview.png differ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..20f56bb --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,91 @@ +# VERY WIP + +# Issues +https://gitgud.io/AsmodeusRex/rjw-race-support/-/issues +## Create a new issue +The most efficient (and probably fastest) way to get support added for a race you want is to open an issue. Clearly state what mod you want support for, make sure it isn't in the list of supported mods, and put a link to the steam workshop page if it has one. + +You should also open an issue if there is a problem with existing race support or the mod in general. +## Solve an issue +Help is of course always appreciated. Make sure you follow the guidelines in the rest of this file. + +# Add support for a new mod +There are two methods to add support for a new mod. If the mod isn't doing anything super wild, the first method is preferred. Only use the second method if you can't use the first method. + +No matter what method you use, you will need to know the "defName" of the races you are adding support for. This can be found in the XML files of the mod that adds those races. The path to the files you are looking for will be something like: "ModDirectory/1.4/Defs/ThingDefs_Races/animals.xml". + +You will also need to fork the repository. Check out the GitHub guide at the bottom of the page. + +## Method 1: Rust +This method involves adding new entries to the list of parts and races in the Rust source files (.rs). +### Racegroups +A racegroup is a group of... races that all share the same characteristics. For example, both a Cassowary and an Ostrich are in the avian animal group. +At the bottom of the file generator/src/racegroup.rs (around line 100 or so) you will find the lists of racegroups. Find the racegroup that has the right parts and skin type for each race you want to support. Simply add the defName of each race to the appropriate racegroup. Make sure to properly put the defName in alphabetical order. The scheme is as follows: +* Vanilla animals (e.g. Cobra) +* Mod animals with a mod prefix (e.g. AA_BloodShrimp) +* Mod animals without a mod prefix (e.g. Rakk) + +Remember that each category is in alphabetical order. + +There! You're already done. That's all that you need to do for most patches. The generator will do all the rest for you. Go ahead and skip to the PRs section. + +If you couldn't find an appropriate racegroup for your race, look again. If you really can't find one, the process is much more complicated. + +#### **Adding a new racegroup** +*Coming soon* + +#### **Tags** +* Chitin +* Demon +* Feathers +* Fur +* Plant +* Robot +* Scales +* Skin +* Slime + +### Parts +Adding to the Rust source files is the only way to create new parts. Technically you can make the xmls by hand, but you have to remember to add a single very rote and repetitive entry to at least 3 different files, and it quickly becomes unmaintainable. If you can't figure out how to use the generator to make what you want, don't hesitate to open an issue. + +First, figure out if the part you are adding is for a human or animal, or if it is breasts for either. Make sure you put your part in the correct list, or it won't work. + +Next, open generator/src/parts.rs. Find the correct list (starting around line 200), copy and edit the template, making sure to put it in alphabetical order by species name (animal parts are further grouped into mammal and non-mammal). + +**Template** + + Part::standard("a", PartType::Penis, "species", + "Part Description", + vec!["Tag", "AnotherTag"] + ).unwrap(), + +#### **Properties** + +Penis: +* Girthy/Thin +* Long/Small +* Artificial +* Flared +* Humanlike (automatically added to the human group, generally don't use) +* Internal (retractable) +* Knotted +* Multiple (has multiple members, such as a tentacle or hemi-penis) +* Prehensile +* Rigid (has a baculum) +* Sheathed +* Solid (is made of a solid inorganic material, such as stone or metal. Not to be confused with rigid) +* Tapered + +Hole: +* Loose/Tight +* Deep + +Either: +* Barbed +* Glowing +* Resizable (grows or shrinks to fit) +* Ridged (not to be confused with rigid) +* STDImmune (immune to STDs) + +# PRs +After you make changes, you need to make a PR. This should get you started: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/getting-started/about-collaborative-development-models. \ No newline at end of file diff --git a/ReadMe.md b/ReadMe.md index e4f30f8..c3b8a1b 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -1,5 +1,5 @@ # RJW Race Support -Hediff and detail fine tuning for Race and RJW integration. +Provides RJW compatibility for a wide array of mods that add races and animals. This mod requires RJW and must be placed somewhere below it. @@ -125,14 +125,14 @@ This mod requires RJW and must be placed somewhere below it. * Kenshi shek race * VFE insects * Android tiers -* Pawnmorpher * RimEffect * Update milk mod support ### Thanks * Ed86 (for Maintaining RJW) +* Glitched Securitron (Preview image) * Mehni (for keeping so many of these mods alive) -* MewTopian (for the expantion on RaceSupport) +* MewTopian (for the expansion on RaceSupport) * DarkSlayerEX (for Traits and Breeders Charm) * ShauaPuta (Adding Support for their Races, Age Patches) * Zimtraucher (Megafauna) @@ -148,7 +148,7 @@ This mod requires RJW and must be placed somewhere below it. * NΓ©monian (Textures) * Caisy Rose (ReGrowth Animals support) * Natsu_Zirok (Translation Russian) -* AlexDuKaNa (Xeno Humans Race Support) +* AlexDuKaNa (Xenohumans Race Support) * π•Άπ–šπ–—π–” 𝖓𝖔 π•Άπ–Šπ–Žπ–žπ–†π–π–šπ–˜π–π–† (some races or mods) * Nejarrie (some races or mods) * jhagatai (Translation Korean) diff --git a/generator/Cargo.toml b/generator/Cargo.toml index 50c4e0a..1b33e03 100644 --- a/generator/Cargo.toml +++ b/generator/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "generator" -version = "0.1.0" +version = "1.0.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/generator/src/parts.rs b/generator/src/parts.rs index d77aba0..ce8fbe7 100644 --- a/generator/src/parts.rs +++ b/generator/src/parts.rs @@ -15,36 +15,6 @@ pub struct Part { pub label: String, pub label_noun: String, pub description: String, - // Known props: - // Penis: - // Girthy/Thin - // Long/Small - // Artificial - // Barbed - // Flared - // Glowing - // Humanlike - // Internal - // Knotted - // Multiple - // Prehensile - // Resizable - // Ridged - // Rigid - // Sheathed - // Solid - // STDImmune - // Tapered - // - // Hole: - // Loose/Tight - // Barbed - // Deep - // Glowing - // Resizable - // Ridged - // STDImmune - pub props: Vec<&'static str>, } diff --git a/generator/src/racegroups.rs b/generator/src/racegroups.rs index 87d1eb5..3b94577 100644 --- a/generator/src/racegroups.rs +++ b/generator/src/racegroups.rs @@ -126,6 +126,9 @@ pub fn racegroup_data_humans() -> Vec { "Alien_Shearl", "Alien_Twi'lek", "Alien_Zabrak", + "FP_OgreRace", + "WMH_Cyclops", + "Yokai_YukiShizuku", "DwarfRace", "eCutefairy", "eDefender", @@ -138,11 +141,8 @@ pub fn racegroup_data_humans() -> Vec { "Elona_Imouto", "Giant", "Shoujo", - "FP_OgreRace", "Ooka_Miko", "TrollRace", - "WMH_Cyclops", - "Yokai_YukiShizuku", ], "Human", "Skin", "1", @@ -181,8 +181,8 @@ pub fn racegroup_data_humans() -> Vec { ), RaceGroup::standard( vec![ - "BearMan", "WoW_Pandaren", + "BearMan", ], "Bear", "Fur", "0.9", @@ -194,11 +194,11 @@ pub fn racegroup_data_humans() -> Vec { vec![ "Alien_Hellhound", "ATK_Caninemorph", + "WoW_Worgen", "Lupaios", "kuro", "siro", "WolfMan", - "WoW_Worgen", ], "Canine", "Fur", "1", @@ -213,11 +213,11 @@ pub fn racegroup_data_humans() -> Vec { "ATK_Vulpinemorph", "Alien_Fennex", "Alien_Frijjid", - "FoxMan", "StarWarsRaces_Wookie", "WMH_Werewolf", "Yokai_NineTail", "Yokai_NineTailWhite", + "FoxMan", ], "CanineHighSex", "Fur", "1.3", @@ -265,11 +265,6 @@ pub fn racegroup_data_humans() -> Vec { RaceGroup::standard( vec![ "ATK_Dragomorph", - "EmperorDragon", - "HalfDragon", - "Dragon_Kilhn", - "ALapelli", - "Thrumkin", "WMH_Basilisk", "WMH_Wyvern", "Yokai_Dragon_MoonDragon", @@ -279,6 +274,11 @@ pub fn racegroup_data_humans() -> Vec { "Yokai_Raid_Mdra", "Yokai_Raid_Pekodra", "Yokai_Raid_Redra", + "EmperorDragon", + "HalfDragon", + "Dragon_Kilhn", + "ALapelli", + "Thrumkin", "yuki", ], "Dragon", @@ -313,10 +313,8 @@ pub fn racegroup_data_humans() -> Vec { vec![ "Alien_Eldar", "AS_WHE_Race", - "Sandy_Angel", "Alien_Astoriel", "Alien_Drow_Otto", - "ElfRace", "O21_Alien_DarkElf", "O21_Alien_MoonElf", "O21_Alien_SunElf", @@ -330,6 +328,8 @@ pub fn racegroup_data_humans() -> Vec { "WoW_NightElf", "WoW_ForsakenHighElf", "WoW_ForsakenNightElf", + "Sandy_Angel", + "ElfRace", ], "Elf", "Skin", "1.1", @@ -341,16 +341,16 @@ pub fn racegroup_data_humans() -> Vec { vec![ "Alien_Nyaron", "ATK_Felinemorph", - "GuardianBast", - "LynxMan", - "Maidnukos", - "miko", "YanzihkoCheetah", "YanzihkoJaguar", "YanzihkoLeo", "YanzihkoPanther", "YanzihkoTigris", "Yokai_NekoMusume", + "GuardianBast", + "LynxMan", + "Maidnukos", + "miko", ], "Feline", "Fur", "1", @@ -360,10 +360,10 @@ pub fn racegroup_data_humans() -> Vec { ), RaceGroup::standard( vec![ - "IkquanRace", "Alien_NiHal", "Alien_Quarren", "Alien_MonCalamari", + "IkquanRace", ], "Fish", "Scales", "0.8", @@ -474,13 +474,13 @@ pub fn racegroup_data_humans() -> Vec { ), RaceGroup::standard( vec![ - "Naga", "O21_Alien_Kobold", "O21_FR_Kobold", "Pawnbold_bold", "StarWarsRaces_Rodian", "Yokai_Lamia", "Yokai_Samia", + "Naga", ], "Reptile", "Scales", "0.9", @@ -496,13 +496,13 @@ pub fn racegroup_data_humans() -> Vec { "Alien_SkavenStorm", "Alien_SkavenMoulder", "Alien_HornedSkaven", + "RK_KingHamster", + "Yokai_Kamaitachi", "hana", "Ratkin", "Ratkin_Su", "Rotti", - "RK_KingHamster", "Rabbie", - "Yokai_Kamaitachi", ], "Rodent", "Fur", "1.3", @@ -527,11 +527,11 @@ pub fn racegroup_data_humans() -> Vec { "ATK_Bovinemorph", "Alien_Gor", "Alien_Ungor", - "akame", - "aome", "WoW_Tauren", "WMH_Chort", "WMH_Fiend", + "akame", + "aome", ], name: "Bovine".to_string(), anus: "Anus".to_string(), @@ -548,8 +548,8 @@ pub fn racegroup_data_humans() -> Vec { "Alien_Slime", "Alien_Slug", "Mincho_ThingDef", - "Slime", "Yokai_HihiiroKabe", + "Slime", ], name: "Slime".to_string(), anus: "SlimeAnus".to_string(), @@ -714,6 +714,7 @@ pub fn racegroup_data_animals() -> Vec { "AEXP_Shih-Tzu", "AEXP_WelshTerrier", "AEXP_AfricanWildDog", + "ERN_Palamute", "GR_Wolfbear", "GR_Wolfalope", "GR_Wolfchicken", @@ -732,7 +733,6 @@ pub fn racegroup_data_animals() -> Vec { "Arctivore", "Omnicron", "Fuzztino", - "ERN_Palamute", ], "Canine", "Fur", "1", None, @@ -885,11 +885,11 @@ pub fn racegroup_data_animals() -> Vec { "AEXP_Tapir", "HC_WoollyMammoth", "RG-EAP_WoollyMammoth", + "Boltusk", "Deinotherium", "Platybelodon", "WoollyMammoth", "Zygolophodon", - "Boltusk", ], "Elephant", "Fur", "0.9", None, @@ -976,13 +976,13 @@ pub fn racegroup_data_animals() -> Vec { "MM_Manticore", "MM_Xiezhi", "MM_Griffin", - "eBlackcat", - "Snow_leopard", - "Pallas_cat", - "Dinocrocuta", - "Smilodon", - "Jeeta", "Carnagrius", + "Dinocrocuta", + "eBlackcat", + "Jeeta", + "Pallas_cat", + "Smilodon", + "Snow_leopard", ], "Feline", "Fur", "1", None, @@ -1044,10 +1044,10 @@ pub fn racegroup_data_animals() -> Vec { vec![ "Pig", "WildBoar", - "ACPTapir", - "ACPPeccary", "AA_Thunderbeast", "AA_Darkbeast", + "ACPTapir", + "ACPPeccary", "FO_DarkVandal", "MM_ErymanthianBoar", "Daeodon", @@ -1173,9 +1173,9 @@ pub fn racegroup_data_animals() -> Vec { "RG-WF_WastelandBeaver", "Archojerboa", "Castoroides", + "FoxSquirrel", "Josephoartigasia", "Pika", - "FoxSquirrel", ], "Rodent", "Fur", "1.1", None, @@ -1285,42 +1285,42 @@ pub fn racegroup_data_animals() -> Vec { "MM_WildMinotaur", "MM_Catoblepas", "MM_CeryneianHind", - "Archoffalo", - "Archolope", + "Addax", + "Andrewsarchus", "AngusCow", "AnkoleWatusiCow", + "AnimaYak", + "Archoffalo", + "Archolope", + "AssafSheep", + "Aurochs", + "AwassiSheep", + "BighornSheep", + "Bongo", "BoomooCow", + "BorderLeicesterSheep", "BrahmanCow", "BravaCow", "BrownSwissCow", + "Gemsbok", "HarianaCow", "HerefordCow", "HighlandCow", "HolsteinFriesianCow", + "JacobsSheep", "JerseyCow", "LimousinCow", "LonghornCow", - "ZebuCow", - "AssafSheep", - "AwassiSheep", - "BighornSheep", - "BorderLeicesterSheep", - "JacobsSheep", "LincolnSheep", "MerinoSheep", "MouflonSheep", - "SuffolkSheep", - "Addax", - "Andrewsarchus", - "Aurochs", "Macrauchenia", "Megaloceros", - "Sivatherium", - "Bongo", - "Gemsbok", - "WaterDeer", - "AnimaYak", "Raamu", + "Sivatherium", + "SuffolkSheep", + "WaterDeer", + "ZebuCow", ], name: "BovineAnimal".to_string(), anus: "MammalAnus".to_string(), diff --git a/template.xml b/template.xml deleted file mode 100644 index 3bbb516..0000000 --- a/template.xml +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - MakeThisUnique - - -
  • Race.DefName
  • -
    - - -
  • PawnKind.DefName
  • -
    - - - -
  • rjw.RacePartDef
  • -
  • rjw.RacePartDef.Other
  • -
    - - -
  • 0.5
  • -
  • 0.5
  • -
    - - - - - - -
  • rjw.RacePartDef
  • -
    - - - - - - -
  • rjw.RacePartDef
  • -
    - - - - -
  • - 1.0 - rjw.RacePartDef - - -
  • Anus
  • -
  • Chest
  • -
  • Genitals
  • - - -
    - - - -
  • Chitin
  • -
  • Demon
  • -
  • Feathers
  • -
  • Fur
  • -
  • Plant
  • -
  • Robot
  • -
  • Scales
  • -
  • Skin
  • -
  • Slime
  • -
    - - 1.0 - false - true - true - true - - false - RJW_EggFertilized - RJW_EggUnfertilized - 1.0 - 3.5 - false - - - -
  • Mother.PawnKindDef.Race
  • -
  • Father.PawnKindDef.Race
  • -
  • Any
  • -
    - - -
  • PawnKindDef.defname
  • -
  • MotherKindDef
  • -
  • FatherKindDef
  • -
    -
    -
    \ No newline at end of file