rjw-race-support-AsmodeusRex/CONTRIBUTING.md

4.7 KiB

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.

Setting up

Fork the repository

Create a GitGud/Sapphire account. Hit the fork button.

Installing tools

Install Visual Studio Code. This is to make use of the spelling dictionary and other VSCode specific configuration.

Install the VSCode extensions "Code Spell Checker" and "rust-analyzer".

Install Rust. Don't worry about learning rust, all you'll be doing in it is data definition from pre-defined templates.

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

Actual instructions coming soon

Copy and paste the right racegroup def/function call into the right place alphabetically. Use RaceGroup::standard for humans and RaceGroup::standard_animal for animals. Edit the fields.

Tags

These are the available tags/skin types for a race group.

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