Update documentation

This commit is contained in:
AsmodeusRex 2022-10-27 10:36:18 -07:00
parent 46e055cc27
commit 66bd6eba47
10 changed files with 209 additions and 199 deletions

61
.vscode/settings.json vendored
View File

@ -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
}

View File

@ -29,11 +29,9 @@
<incompatibleWith>
<li>Lcom.yayo.raceQuestPawn</li>
<li>com.yayo.raceQuestPawn</li>
<li>EdB.PrepareCarefully</li>
<li>EdB.PrepareCarefully.UnofficialPatch</li>
<li>Mlie.MilkableColonists</li>
</incompatibleWith>
<description>
Hediff and detail fine tuning for Race and RJW integration.
Provides RJW compatibility for a wide array of mods that add races and animals.
</description>
</ModMetaData>

View File

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Manifest>
<identifier>RJW-RaceSupport</identifier>
<version>10.2.0</version>
<dependencies>
<li>RimJobWorld</li>
</dependencies>
<loadAfter>
<li>RimJobWorld</li>
</loadAfter>
</Manifest>

BIN
About/Preview.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

91
CONTRIBUTING.md Normal file
View File

@ -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.

View File

@ -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)

View File

@ -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

View File

@ -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>,
}

View File

@ -126,6 +126,9 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
"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<RaceGroup> {
"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> {
),
RaceGroup::standard(
vec![
"BearMan",
"WoW_Pandaren",
"BearMan",
],
"Bear",
"Fur", "0.9",
@ -194,11 +194,11 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
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<RaceGroup> {
"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> {
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<RaceGroup> {
"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<RaceGroup> {
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<RaceGroup> {
"WoW_NightElf",
"WoW_ForsakenHighElf",
"WoW_ForsakenNightElf",
"Sandy_Angel",
"ElfRace",
],
"Elf",
"Skin", "1.1",
@ -341,16 +341,16 @@ pub fn racegroup_data_humans() -> Vec<RaceGroup> {
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> {
),
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> {
),
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<RaceGroup> {
"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<RaceGroup> {
"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<RaceGroup> {
"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<RaceGroup> {
"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<RaceGroup> {
"Arctivore",
"Omnicron",
"Fuzztino",
"ERN_Palamute",
],
"Canine",
"Fur", "1", None,
@ -885,11 +885,11 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"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<RaceGroup> {
"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<RaceGroup> {
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<RaceGroup> {
"RG-WF_WastelandBeaver",
"Archojerboa",
"Castoroides",
"FoxSquirrel",
"Josephoartigasia",
"Pika",
"FoxSquirrel",
],
"Rodent",
"Fur", "1.1", None,
@ -1285,42 +1285,42 @@ pub fn racegroup_data_animals() -> Vec<RaceGroup> {
"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(),

View File

@ -1,97 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<!-- omit comments from final as if they were not even a line, follow the formatting and grouping -->
<!-- with exception to this one which houses the mod source details such that: Name.SteamID.SteamPageURL -->
<rjw.RaceGroupDef>
<defName>MakeThisUnique</defName>
<!-- if you have a race with the string Slime in it's DefName this will be useless for you -->
<raceNames>
<li>Race.DefName</li>
</raceNames>
<pawnKindNames>
<li>PawnKind.DefName</li>
</pawnKindNames>
<anuses>
<!-- These do not use Hediff DefNames but Rather the rjw.RacePartDef -->
<li>rjw.RacePartDef</li>
<li>rjw.RacePartDef.Other</li>
</anuses>
<chanceanuses>
<!-- uses float values to set chance of getting the part. first <li> targets first <li> of the Part and follows that in order -->
<li>0.5</li>
<li>0.5</li>
</chanceanuses>
<!-- no entry means defualt, blank entry means to not give anything -->
<!-- if there is only one or no entry in the above then omit the chance -->
<femaleBreasts>
</femaleBreasts>
<femaleGenitals>
<li>rjw.RacePartDef</li>
</femaleGenitals>
<!-- if you are going to intentionally leave something in but want it to be blank use the following method -->
<maleBreasts />
<chancemaleBreasts />
<maleGenitals>
<li>rjw.RacePartDef</li>
</maleGenitals>
<chancemaleGenitals />
<partAdders>
<!-- you can have more than one of these just add more <li> for better control -->
<li Class="rjw.PartAdder">
<chance>1.0</chance>
<rjwPart>rjw.RacePartDef</rjwPart>
<bodyParts>
<!-- any part is valid you can attached dicks to heads if you wanted -->
<li>Anus</li>
<li>Chest</li>
<li>Genitals</li>
</bodyParts>
</li>
</partAdders>
<tags>
<!-- your options, avoid using more than one skin type -->
<li>Chitin</li>
<li>Demon</li>
<li>Feathers</li>
<li>Fur</li>
<li>Plant</li>
<li>Robot</li>
<li>Scales</li>
<li>Skin</li>
<li>Slime</li>
</tags>
<!-- these are the defaults only include them if you are going to change them -->
<raceSexDrive>1.0</raceSexDrive>
<hasSingleGender>false</hasSingleGender>
<hasSexNeed>true</hasSexNeed>
<hasFertility>true</hasFertility>
<hasPregnancy>true</hasPregnancy>
<!-- for your eggs -->
<oviPregnancy>false</oviPregnancy>
<eggFertilizedDef>RJW_EggFertilized</eggFertilizedDef>
<eggUnfertilizedDef>RJW_EggUnfertilized</eggUnfertilizedDef>
<eggProgressUnfertilizedMax>1.0</eggProgressUnfertilizedMax>
<eggLayIntervalDays>3.5</eggLayIntervalDays>
<ImplantEggs>false</ImplantEggs>
<hybridRaceParents>
<!-- choose two at least, better to place this in the Child RaceSupport Def not the parent (or place it in a Def by it's self) -->
<li>Mother.PawnKindDef.Race</li>
<li>Father.PawnKindDef.Race</li>
<li>Any</li> <!-- - Any race ("Any" + mother/father race) -->
</hybridRaceParents>
<!-- now we tell it what the combos above produce -->
<hybridChildKindDef>
<li>PawnKindDef.defname</li> <!-- Any PawnKindDef -->
<li>MotherKindDef</li> <!-- use mother PawnKindDef -->
<li>FatherKindDef</li> <!-- use father PawnKindDef -->
</hybridChildKindDef>
</rjw.RaceGroupDef>
</Defs>