<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://rimworldwiki.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Halicade</id>
	<title>RimWorld Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://rimworldwiki.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Halicade"/>
	<link rel="alternate" type="text/html" href="https://rimworldwiki.com/wiki/Special:Contributions/Halicade"/>
	<updated>2026-05-18T22:26:24Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.8</generator>
	<entry>
		<id>https://rimworldwiki.com/index.php?title=Modding_Tutorials/Biomes&amp;diff=180070</id>
		<title>Modding Tutorials/Biomes</title>
		<link rel="alternate" type="text/html" href="https://rimworldwiki.com/index.php?title=Modding_Tutorials/Biomes&amp;diff=180070"/>
		<updated>2026-05-06T01:54:17Z</updated>

		<summary type="html">&lt;p&gt;Halicade: updated IncidentDefs text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Biomes}}&lt;br /&gt;
&lt;br /&gt;
{{BackToTutorials}}&lt;br /&gt;
&lt;br /&gt;
{{:Modding_Tutorials/Under_Review}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is a basic overview of biomes and their creation. As well as different places that a biome is taken into consideration.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;BiomeDef&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Biomes are defined in XML using &amp;lt;code&amp;gt;BiomeDef&amp;lt;/code&amp;gt; [[Modding_Tutorials/Defs|Defs]]. As with all Defs, looking at the vanilla examples is a great way to get a feel for how the system is used.&lt;br /&gt;
In order to generate a biome on the world map, biomes also require a &amp;lt;code&amp;gt;workerClass&amp;lt;/code&amp;gt; defined in code. See [[Modding_Tutorials/Setting_up_a_solution|Setting up a solution]] to get started.&lt;br /&gt;
&lt;br /&gt;
=== Fields ===&lt;br /&gt;
&lt;br /&gt;
The following are valid fields in &amp;lt;code&amp;gt;BiomeDef&amp;lt;/code&amp;gt;. Not all fields are necessary, look at vanilla BiomeDefs for examples.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;TutorialTableWrapper&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;TutorialCodeTable&amp;quot;&lt;br /&gt;
! XML Example !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;workerClass&amp;gt;MyCustomBiome.BiomeWorker_CustomForest&amp;lt;/workerClass&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A reference to code that defines where your biome will spawn on the world map. In Rimworld, these start with &amp;lt;code&amp;gt;BiomeWorker&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;implemented&amp;gt;true&amp;lt;/true&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if the biome gets generated from &amp;lt;code&amp;gt;WorldGenStep_Terrain&amp;lt;/code&amp;gt;. Defaults to true. Likely this is used for debugging/development purposes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;generatesNaturally&amp;gt;true&amp;lt;/generatesNaturally&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if the biome gets generated from &amp;lt;code&amp;gt;WorldGenStep_Terrain&amp;lt;/code&amp;gt;. Requires &amp;lt;code&amp;gt;implemented&amp;lt;/code&amp;gt; to be true. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;canBuildBase&amp;gt;true&amp;lt;/canBuildBase&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if a player or npc faction can be generated here. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;settlementSelectionWeight&amp;gt;0.75&amp;lt;/settlementSelectionWeight&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
How likely a settlement can spawn on the selected tile. This is a value from 0-1. Defaults to 1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowRoads&amp;gt;true&amp;lt;/allowRoads&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Whether roads can appear on this biome. Note that unless both this and &amp;lt;code&amp;gt;allowRivers&amp;lt;/code&amp;gt; are false, roads will still display visually. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowRivers&amp;gt;true&amp;lt;/allowRivers&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Whether rivers can appear on this biome. Note that unless both this and &amp;lt;code&amp;gt;allowRoads&amp;lt;/code&amp;gt; are false, rivers will still display visually. Defaults to true. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animalDensity&amp;gt;3.5&amp;lt;/animalDensity&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
How much animals will spawn on your biome. Higher numbers lead to an increase in animals.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;plantDensity&amp;gt;0.7&amp;lt;/plantDensity&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
How many plants will spawn on your biome. Higher numbers lead to an increase in plants.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowFarmingCamps&amp;gt;true&amp;lt;/allowFarmingCamps&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Ideology]] {{IdeologyIcon}} Only) Allow farming camps to spawn. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;campSelectionWeight&amp;gt;0.65&amp;lt;campSelectionWeight&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Ideology]] {{IdeologyIcon}} Only) How likely a camp can spawn on the selected tile. This is a value from 0-1. Defaults to 1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pollutionOffset&amp;gt;0.2&amp;lt;pollutionOffset&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Biotech]] {{BiotechIcon}} Only) This will be the biomes initial pollution. This can be increased during the world creation screen.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;impassable&amp;gt;false&amp;lt;/impassable&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Whether the biome can be passed via caravan.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;hasVirtualPlants&amp;gt;true&amp;lt;/hasVirtualPlants&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if animals are allowed to graze on this tile while caravanning. Defauilts to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;forageability&amp;gt;0.75&amp;lt;forageability&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A multiplier of nutrition [[forage]]d per day. Requires a &amp;lt;code&amp;gt;foragedFood&amp;lt;/code&amp;gt; defined. This is also used for animals that can forage ([[Odyssey]]{{OdysseyIcon}}).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;foragedFood&amp;gt;RawBerries&amp;lt;/foragedFood&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Food that will be retrieved.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildPlantsCareAboutLocalFertility&amp;gt;false&amp;lt;/wildPlantsCareAboutLocalFertility&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If this is false and the tile you are in is not a mixed biome, total plant population is based on the whole map rather than a 20 cell radius. Defauilts to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildPlantsAreCavePlants&amp;gt;true&amp;lt;/wildPlantsAreCavePlants&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Cave plants have their own weight which is used to place them in caves. This makes it so the weight defined in &amp;lt;code&amp;gt;wildPlants&amp;lt;/code&amp;gt; is used instead.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildPlantRegrowDays&amp;gt;13&amp;lt;/wildPlantRegrowDays&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A wild plant has a chance to regrow after a set number of days. Defaults to 25.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;movementDifficulty&amp;gt;1.25&amp;lt;/movementDifficulty&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The base movement difficulty for a caravan to travel across the tile. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;baseWeatherCommonalities&amp;gt;&lt;br /&gt;
  &amp;lt;Clear&amp;gt;18&amp;lt;/Clear&amp;gt;&lt;br /&gt;
  &amp;lt;Fog&amp;gt;1&amp;lt;/Fog&amp;gt;&lt;br /&gt;
  &amp;lt;Rain&amp;gt;2&amp;lt;/Rain&amp;gt;&lt;br /&gt;
  &amp;lt;DryThunderstorm&amp;gt;1&amp;lt;/DryThunderstorm&amp;gt;&lt;br /&gt;
  &amp;lt;RainyThunderstorm&amp;gt;1&amp;lt;/RainyThunderstorm&amp;gt;&lt;br /&gt;
  &amp;lt;FoggyRain&amp;gt;1&amp;lt;/FoggyRain&amp;gt;&lt;br /&gt;
  &amp;lt;SnowGentle&amp;gt;4&amp;lt;/SnowGentle&amp;gt;&lt;br /&gt;
  &amp;lt;SnowHard&amp;gt;4&amp;lt;/SnowHard&amp;gt;&lt;br /&gt;
  &amp;lt;GrayPall MayRequire=&amp;quot;Ludeon.RimWorld.Anomaly&amp;quot;&amp;gt;1&amp;lt;/GrayPall&amp;gt;&lt;br /&gt;
  &amp;lt;Overcast MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;2&amp;lt;/Overcast&amp;gt;&lt;br /&gt;
&amp;lt;/baseWeatherCommonalities&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
What weather events can occur and how often they can occur. Note that multiple other variables are taken into effect with weather&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;terrainsByFertility&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;terrain&amp;gt;Soil&amp;lt;/terrain&amp;gt;&lt;br /&gt;
    &amp;lt;min&amp;gt;-999&amp;lt;/min&amp;gt;&lt;br /&gt;
    &amp;lt;max&amp;gt;0.87&amp;lt;/max&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;terrain&amp;gt;SoilRich&amp;lt;/terrain&amp;gt;&lt;br /&gt;
    &amp;lt;min&amp;gt;0.87&amp;lt;/min&amp;gt;&lt;br /&gt;
    &amp;lt;max&amp;gt;999&amp;lt;/max&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/terrainsByFertility&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The terrain that will appear based on fertility values generated by the genSteps &amp;lt;code&amp;gt;ElevationFertility&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;MutatorPostElevationFertility&amp;lt;/code&amp;gt;. Will default to regular soil if a value is omitted.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;terrainPatchMakers&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;perlinFrequency&amp;gt;0.04&amp;lt;/perlinFrequency&amp;gt;&lt;br /&gt;
    &amp;lt;thresholds&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&lt;br /&gt;
        &amp;lt;terrain&amp;gt;MarshyTerrain&amp;lt;/terrain&amp;gt;&lt;br /&gt;
        &amp;lt;min&amp;gt;0.7&amp;lt;/min&amp;gt;&lt;br /&gt;
        &amp;lt;max&amp;gt;999&amp;lt;/max&amp;gt;&lt;br /&gt;
      &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/thresholds&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/terrainPatchMakers&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Terrain generated through perlin noise. This can be used for patches of highly fertile soil, marshes, ponds, or other variable land. For a visual representation, you can use the [[Development_mode|Dev mode]] command &amp;lt;code&amp;gt;Map noise visualizer&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;soundsAmbient&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Ambient_NightInsects_Standard&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/soundsAmbient&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Sounds that will play when zoomed in on the map.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildPlants&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_TallGrass&amp;gt;3.2&amp;lt;/Plant_TallGrass&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Chokevine&amp;gt;0.8&amp;lt;/Plant_Chokevine&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Bush&amp;gt;0.2&amp;lt;/Plant_Bush&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Witchwood MayRequire=&amp;quot;Ludeon.RimWorld.Biotech&amp;quot;&amp;gt;1.0&amp;lt;/Plant_Witchwood&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Reeds MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Plant_Reeds&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_LilyPad MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.2&amp;lt;/Plant_LilyPad&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Bulrush MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.2&amp;lt;/Plant_Bulrush&amp;gt;&lt;br /&gt;
  &amp;lt;MCP_MyCustomPlant MayRequire=&amp;quot;username.CustomPlantMod&amp;quot;&amp;gt;0.3&amp;lt;/MCP_MyCustomPlant&amp;gt;&lt;br /&gt;
&amp;lt;/wildPlants&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
What plants can spawn in the wild for this biome. Based on weight. These can also be included on an plants properties. Duplicates are not allowed between the two. Plants that appear due to pollution appear in this list as well. Disable &amp;lt;wildPlantsAreCavePlants&amp;gt; to have weights defined here affect cave plants.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildAnimals&amp;gt;&lt;br /&gt;
  &amp;lt;Donkey&amp;gt;0.34&amp;lt;/Donkey&amp;gt;&lt;br /&gt;
  &amp;lt;GuineaPig&amp;gt;0.48&amp;lt;/GuineaPig&amp;gt;&lt;br /&gt;
  &amp;lt;Yak&amp;gt;0.05&amp;lt;/Yak&amp;gt;&lt;br /&gt;
  &amp;lt;Bison&amp;gt;0.06&amp;lt;/Bison&amp;gt;&lt;br /&gt;
  &amp;lt;Crow MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.6&amp;lt;/Crow&amp;gt;&lt;br /&gt;
  &amp;lt;Bluebird MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.6&amp;lt;/Bluebird&amp;gt;&lt;br /&gt;
  &amp;lt;Quail MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.6&amp;lt;/Quail&amp;gt;&lt;br /&gt;
  &amp;lt;MCA_MyCustomAnimal MayRequire=&amp;quot;username.CustomAnimalMod&amp;quot;&amp;gt;0.3&amp;lt;/MCP_MyCustomanimal&amp;gt;&lt;br /&gt;
&amp;lt;/wildAnimals&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
What animals can spawn in the biome based on weight. These can also be included on an animals race properties. Duplicates are not allowed between the two.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pollutionWildAnimals&amp;gt;&lt;br /&gt;
  &amp;lt;Toxalope MayRequire=&amp;quot;Ludeon.RimWorld.Biotech&amp;quot;&amp;gt;0.3&amp;lt;/Toxalope&amp;gt;&lt;br /&gt;
  &amp;lt;WasteRat MayRequire=&amp;quot;Ludeon.RimWorld.Biotech&amp;quot;&amp;gt;0.4&amp;lt;/WasteRat&amp;gt;&lt;br /&gt;
  &amp;lt;Rat&amp;gt;1&amp;lt;/Rat&amp;gt;&lt;br /&gt;
  &amp;lt;Raccoon&amp;gt;0.5&amp;lt;/Raccoon&amp;gt;&lt;br /&gt;
&amp;lt;/pollutionWildAnimals&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Biotech]] {{BiotechIcon}} Only) Animals defined in this field will only spawn if there is pollution on the map. The chance of these animals spawning is based on a curve with a 10% chance at 25% pollution, 90% chance at 75% pollution and 100% at 100% pollution&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;coastalWildAnimals&amp;gt;&lt;br /&gt;
  &amp;lt;SeaLion MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.1&amp;lt;/SeaLion&amp;gt;&lt;br /&gt;
  &amp;lt;Seal MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.1&amp;lt;/Seal&amp;gt;&lt;br /&gt;
&amp;lt;/coastalWildAnimals&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) Animals defined here will spawn if the tile has the &amp;lt;code&amp;gt;Coast&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;. A coast requires a tile neighboring an ocean tile.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;diseaseMtbDays&amp;gt;50&amp;lt;/diseaseMtbDays&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The mean time between a disease incident occurring. Possible diseases are chosen from &amp;lt;code&amp;gt;diseases&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;diseases&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;diseaseInc&amp;gt;Disease_Flu&amp;lt;/diseaseInc&amp;gt;&lt;br /&gt;
    &amp;lt;commonality&amp;gt;120&amp;lt;/commonality&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;diseaseInc&amp;gt;Disease_Plague&amp;lt;/diseaseInc&amp;gt;&lt;br /&gt;
    &amp;lt;commonality&amp;gt;80&amp;lt;/commonality&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/diseases&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Possible diseases that can occur. One will be chosen at random by weight&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowedPackAnimals&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Muffalo&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Alpaca&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/allowedPackAnimals&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Pack animals that can appear from caravan traders.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;hasBedrock&amp;gt;true&amp;lt;/hasBedrock&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If a tile can be [[Deep_drill|deep drilled]] for materials. Defaults to true. Also prevents the [[Ground-penetrating_scanner|Ground-penetrating scanner]] from working on this tile.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;isExtremeBiome&amp;gt;true&amp;lt;/isExtremeBiome&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Prevents spawning of Special trees as well as Royalty intro quests. Defaults to false.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;isWaterBiome&amp;gt;false&amp;lt;/isWaterBiome&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Unused field that is located on Ocean and Lake biomes.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowPollution&amp;gt;true&amp;lt;/allowPollution&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Pollution can appear on the world maps tile. Defaults to true. Note that this tile can still be polluted while on the map tile or by sending a drop-pod of wastepacks to the area.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildAnimalsCanWanderInto&amp;gt;true&amp;lt;/wildAnimalsCanWanderInto&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If false, animals will not appear when using the draw animals [[Anomaly]] Ritual. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;noAmbientWind&amp;gt;false&amp;lt;/noAmbientWind&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If false, When the camera is zoomed out, you will hear wind effects.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;inVacuum&amp;gt;false&amp;lt;/inVacuum&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) Tiles from this map will have no oxygen. [[Wind_turbine|Wind turbines]] will be unable to function.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;disableSkyLighting&amp;gt;false&amp;lt;/disableSkyLighting&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Enables Sky Lighting. This is from weather events as well as day/night time.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;disableShadows&amp;gt;false&amp;lt;/disableShadows&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Shadows from buildings and structures will not be displayed.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;canExitMap&amp;gt;true&amp;lt;/canExitMap&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if pawns are able to leave the map through caravan or other means. Defaults to True.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;onlyAllowWhitelistedArrivalModes&amp;gt;false&amp;lt;/onlyAllowWhitelistedArrivalModes&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Only allow arrival modes for pawns as specified in their &amp;lt;code&amp;gt;PawnsArrivalModeDef&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;isBackgroundBiome&amp;gt;false&amp;lt;/isBackgroundBiome&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Rotates coastal landmarks in the correct orientation when needed. Used for Ocean and Lake biomes.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildAnimalScariaChance&amp;gt;0.3&amp;lt;/wildAnimalScariaChance&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The chance that a wild animal spawned will have scaria. Defaults to 0.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;geyserCountFactor&amp;gt;0.75&amp;lt;/geyserCountFactor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Multiplies the amount of Steam Geysers that can appear on the map. Defaults to 1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;constantOutdoorTemperature&amp;gt;10&amp;lt;/constantOutdoorTemperature&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A set temperature for a map. Measured in Celsius.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;coastalBeachTerrain&amp;gt;Mud&amp;lt;/coastalBeachTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating beach. Defaults to sand.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;lakeBeachTerrain&amp;gt;Ice&amp;lt;/lakeBeachTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating a lake or beach. Defaults to sand.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;riverbankTerrain&amp;gt;Marsh&amp;lt;/riverbankTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used for the sides of a river. Requires a &amp;lt;code&amp;gt;riverbankSizeRange&amp;lt;/code&amp;gt; defined. Defaults to RiverBank.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;riverbankSizeRange&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Size of a riverbank that can appear alongside a river.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mudTerrain&amp;gt;MossyTerrain&amp;lt;/mudTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) Defines what terrain should be used when generating a Wetlands Tile mutator. Defaults to Mud.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;noGravel&amp;gt;false&amp;lt;/noGravel&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If Gravel (Stony soil) should be generated. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gravelTerrain&amp;gt;Ice&amp;lt;/gravelTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain to use when generating gravel. Defaults to Stony Soil. Requires &amp;lt;code&amp;gt;noGravel&amp;lt;/code&amp;gt; to be false.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;waterShallowTerrain&amp;gt;SoilRich&amp;lt;waterShallowTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain to use when generating shallow water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to shallow water.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;waterDeepTerrain&amp;gt;WaterOceanDeep&amp;lt;/waterDeepTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain to use when generating deep water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to deep water.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;oceanShallowTerrain&amp;gt;MossyTerrain&amp;lt;/oceanShallowTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating shallow ocean water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to shallow ocean Water&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;oceanDeepTerrain&amp;gt;Mud&amp;lt;/oceanDeepTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating Deep ocean water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to deep ocean water&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;waterMovingShallowTerrain&amp;gt;Mud&amp;lt;/waterMovingShallowTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating shallow moving water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to shallow moving water&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;waterMovingChestDeepTerrain&amp;gt;Sand&amp;lt;/waterMovingChestDeepTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating deep moving water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to chest-deep moving water&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;biomeMapConditions&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;SolarFlare&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;biomeMapConditions&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A list of permanent &amp;lt;code&amp;gt;GameConditionDef&amp;lt;/code&amp;gt; that can occur on the map.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extraGenSteps&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;MNCS_CheeseChunks&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;MNCS_MoonHives&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;MNCS_FixPlayerStartSpot&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/extraGenSteps&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Extra &amp;lt;code&amp;gt;GenStepDef&amp;lt;/code&amp;gt; that can occur on this biomes maps.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;preventGenSteps&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;RockChunks&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;CaveHives&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/preventGenSteps&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
These &amp;lt;code&amp;gt;GenStepDef&amp;lt;/code&amp;gt; will not occur on this biomes maps.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extraRockTypes&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;SolidIce&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/extraRockTypes&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Provided that the rock is defined as &amp;lt;code&amp;gt;biomeSpecific&amp;lt;/code&amp;gt;, these rocks will be able to appear on the selected biome naturally&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;forceRockTypes&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Sandstone&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/forceRockTypes&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Only rocks defined in this field will appear. This is a 100% rate meaning no variation on the biome.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;maxFishPopulation&amp;gt;500&amp;lt;/maxFishPopulation&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) The maximum amount of fish a body of water is able to have. Defaults to 0.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fishTypes&amp;gt;&lt;br /&gt;
  &amp;lt;freshwater_Common&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Bass MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Bass&amp;gt;&lt;br /&gt;
  &amp;lt;/freshwater_Common&amp;gt;&lt;br /&gt;
  &amp;lt;freshwater_Uncommon&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Catfish MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Catfish&amp;gt;&lt;br /&gt;
  &amp;lt;/freshwater_Uncommon&amp;gt;&lt;br /&gt;
  &amp;lt;saltwater_Common&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Bluefish MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Bluefish&amp;gt;&lt;br /&gt;
  &amp;lt;/saltwater_Common&amp;gt;&lt;br /&gt;
  &amp;lt;saltwater_Uncommon&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Marlin MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Marlin&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Flounder MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Flounder&amp;gt;&lt;br /&gt;
  &amp;lt;/saltwater_Uncommon&amp;gt;&lt;br /&gt;
  &amp;lt;rareCatchesSetMaker &lt;br /&gt;
  MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;RareFishingCatches_Temperate&amp;lt;/rareCatchesSetMaker&amp;gt;&lt;br /&gt;
&amp;lt;/fishTypes&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) Fish that can appear in bodies of water. If multiple fish are in a list, one is randomly chosen. If a category is not present, no fish from that category will appear. Despite there being a &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; to indicate chance, this field is not utilized.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;layerWhitelist&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;MP_MyCustomPlanetLayer&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/layerWhitelist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
&amp;lt;code&amp;gt;PlanetLayerDef&amp;lt;/code&amp;gt; this biome is allowed to occur in. If this is set it will only appear on the specified layers&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;layerBlacklist&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Surface&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/layerBlacklist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
&amp;lt;code&amp;gt;PlanetLayerDef&amp;lt;/code&amp;gt; this biome is not allowed to occur in. If this is set it will not appear in on the specified layers&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;settleWarning&amp;gt;This biome is very dangerous.&amp;lt;/settleWarning&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A warning that can appear when trying to settle on a tile of that biome.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fogOfWarColor&amp;gt;(249,145,104)&amp;lt;/fogOfWarColor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The color of Fog of war. Fogged/undiscovered locations on your map. Default is null and this field is not necessary to fill in. Normal fog of war color is (77, 69, 66).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;orbitalDebris&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
TODO&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;texture&amp;gt;World/Biomes/MNCS_SurfaceSwiss&amp;lt;/texture&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The texture that will be displayed on the world map. Vanilla uses a 512x512 texture.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Determining Biome ==&lt;br /&gt;
&lt;br /&gt;
Biome calculation is done during world generations &amp;lt;code&amp;gt;WorldGenStep_Terrain&amp;lt;/code&amp;gt;. Each tile is calculated individually. After verifying the biome can be placed via the BiomeDefs &amp;lt;code&amp;gt;generatesNaturally&amp;lt;/code&amp;gt;, and the BiomeWorkers &amp;lt;code&amp;gt;CanPlaceOnLayer&amp;lt;/code&amp;gt;, it's score is calculated from the individual biome workers &amp;lt;code&amp;gt;GetScore&amp;lt;/code&amp;gt;. The biome with the highest score will be placed on that specific tile.&lt;br /&gt;
&lt;br /&gt;
=== Biome Generation ===&lt;br /&gt;
&lt;br /&gt;
There is no right or wrong way to create the score for biomes. If you look at biome workers, many of them will use different formula or logic to appear on the map. Here is an example used from the mod [https://github.com/Halicade/GuldenBiome/blob/master/Source/BiomeWorker.cs| Gulden Biome (Continued)].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cs&amp;quot;&amp;gt;&lt;br /&gt;
// We are subclassing the temperate forest biome worker&lt;br /&gt;
public class BiomeWorker_GuldenForest : BiomeWorker_TemperateForest&lt;br /&gt;
{&lt;br /&gt;
  public override float GetScore(BiomeDef biome, Tile tile, PlanetTile planetTile) {&lt;br /&gt;
    // We don't want to completely overwrite the parent biome. &lt;br /&gt;
    // That's why we only want tiles with an elevation between 500 and 800.&lt;br /&gt;
    if (tile.elevation is &amp;lt;= 500 or &amp;gt;= 800) {&lt;br /&gt;
        return 0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // Get what the score is of the parent biome, temperate forest&lt;br /&gt;
    float score = base.GetScore(biome, tile, planetTile);&lt;br /&gt;
    // If that score is 0 or less we don't want this biome there.&lt;br /&gt;
    if (score &amp;lt;= 0) {&lt;br /&gt;
        return 0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // We add 1.5 so that it is higher than the temperate forest.&lt;br /&gt;
    // We don't want this number too large, otherwise it will overwrite other biomes.&lt;br /&gt;
    return score + 1.5f;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using Rand ===&lt;br /&gt;
&lt;br /&gt;
If you want a biome to appear randomly around the world map, you need to seed your Rand value. Without this, if you were to regenerate the world using the same world seed, your biome would appear in different tiles. You can use &amp;lt;code&amp;gt;Rand.PushState&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Rand.PopState&amp;lt;/code&amp;gt;. Or you can use &amp;lt;code&amp;gt;Rand.ValueSeeded&amp;lt;/code&amp;gt; or any other method that allows for a seeded outcome. This below example comes from multiple different sources and was rewritten here for better understanding.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cs&amp;quot;&amp;gt;&lt;br /&gt;
public class BiomeWorker_MyCustomBiome : BiomeWorker&lt;br /&gt;
{&lt;br /&gt;
    public override float GetScore(BiomeDef biome, Tile tile, PlanetTile planetTile) {&lt;br /&gt;
        // We don't want to generate on water.&lt;br /&gt;
        if (tile.WaterCovered) {&lt;br /&gt;
            return -100f;&lt;br /&gt;
        }&lt;br /&gt;
        // We don't want to generate where it's too cold&lt;br /&gt;
        if (tile.temperature &amp;lt; -10f) {&lt;br /&gt;
            return 0f;&lt;br /&gt;
        }&lt;br /&gt;
        //We don't want to generate where there is a lot of rain&lt;br /&gt;
        if (tile.rainfall &amp;lt; 600f) {&lt;br /&gt;
            return 0f;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // We use the tileId as part of the seed to get a constant for each tile.&lt;br /&gt;
        // &amp;quot;^&amp;quot; is to perform a bitwise XOR operation&lt;br /&gt;
        // 0x11245d7a is a random hexadecimal value&lt;br /&gt;
        // We add these last two pieces so that if another mod randomly generates their tiles, the values won't be the same&lt;br /&gt;
        // If our random value is above 0.009 we won't generate here&lt;br /&gt;
        // This might seem like a small amount, but there is over 100,000 tiles on a map with 30% coverage so the odds are quite high&lt;br /&gt;
        if (Rand.ValueSeeded(planetTile.tileId ^ 0x11245d7a) &amp;gt; 0.009f) {&lt;br /&gt;
            return 0f;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // A formula to calculate the score at this tile.&lt;br /&gt;
        return (float)(16.0 + (tile.temperature - 7.0) + (tile.rainfall - 600.0) / 180.0);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== About Terrain modifiers ==&lt;br /&gt;
&lt;br /&gt;
There are many terrain modifiers like &amp;lt;code&amp;gt;lakeBeachTerrain&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;gravelTerrain&amp;lt;/code&amp;gt;. These are used by MapGenUtility to get the appropriate terrain at a specific cell. These can change depending on if you have a [[Landmarks#Mixed_biome|mixed biome]]{{OdysseyIcon}} or a &amp;lt;code&amp;gt;tileMutatorDef&amp;lt;/code&amp;gt; that overrides a terrain such as &amp;lt;code&amp;gt;overrideLakeBeachTerrain&amp;lt;/code&amp;gt;. Note that not every terrain modifier has an equivalent override. Some specific terrain may be hardcoded.&lt;br /&gt;
&lt;br /&gt;
== Places That Use Biomes ==&lt;br /&gt;
&lt;br /&gt;
In addition to the fields required for biomes, some feilds require knowledge of the biome to trigger specific events or occurences. In these cases a [[Modding_Tutorials/PatchOperations|patch operation]] will be necessary&lt;br /&gt;
&lt;br /&gt;
=== Animals and plants ===&lt;br /&gt;
&lt;br /&gt;
Animals and plants can also set where they spawn in their raceProperties and plantProperties respectively. Duplicates are not allowed between the biome and properties list. Either method is acceptable for appearance rates. However, if you are creating a biome, it might be more sensible to place the appearances in the &amp;lt;code&amp;gt;BiomeDef&amp;lt;/code&amp;gt;. Additionally, you are not able to set their pollution appearance rate or coastal appearance rate through their properties field either.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;IncidentDef&amp;lt;/code&amp;gt;s ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Ambush&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ManhunterAmbush&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;CaravanMeeting&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;CaravanDemand&amp;lt;/code&amp;gt; requires a biome listed in their &amp;lt;code&amp;gt;mtbDaysByBiome&amp;lt;/code&amp;gt; to be considered a valid map to have their incidents occur.&lt;br /&gt;
&lt;br /&gt;
Some incidents have &amp;lt;code&amp;gt;allowedBiomes&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;disallowedBiomes&amp;lt;/code&amp;gt;. [[Events#Beavers!|Alphabeavers]] for example can only appear in the Tundra or Arid Shrubland. Affected incidents include &amp;lt;code&amp;gt;AmbrosiaSprout&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HerdMigration&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Alphabeavers&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;VolcanicAsh&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LavaEmergence&amp;lt;/code&amp;gt;{{OdysseyIcon}}, &amp;lt;code&amp;gt;LavaFlow&amp;lt;/code&amp;gt;{{OdysseyIcon}}, &amp;lt;code&amp;gt;VolcanicDebris&amp;lt;/code&amp;gt;{{OdysseyIcon}}, &amp;lt;code&amp;gt;BoomshroomSprout&amp;lt;/code&amp;gt;{{OdysseyIcon}}, &amp;lt;code&amp;gt;BioluminescentSpores&amp;lt;/code&amp;gt;{{OdysseyIcon}}, &amp;lt;code&amp;gt;DroughtInitial&amp;lt;/code&amp;gt;{{OdysseyIcon}}, and &amp;lt;code&amp;gt;Drought&amp;lt;/code&amp;gt;{{OdysseyIcon}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;GauranlenPodSpawn&amp;lt;/code&amp;gt;{{IdeologyIcon}} is the only incident that makes use of &amp;lt;code&amp;gt;disallowedBiomes&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;FeatureDef&amp;lt;/code&amp;gt;s ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;FeatureDef&amp;lt;/code&amp;gt;s generate names that can appear alongside landforms on the world map. These are things like &amp;quot;Barra Sea&amp;quot;, &amp;quot;Bat Cheek Flats&amp;quot;, and &amp;quot;Gorar Desert&amp;quot;. Some &amp;lt;code&amp;gt;FeatureDef&amp;lt;/code&amp;gt;s have &amp;lt;code&amp;gt;rootBiome&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;acceptableBiome&amp;lt;/code&amp;gt;. For example, the &amp;lt;code&amp;gt;Desert&amp;lt;/code&amp;gt; FeatureDef has &amp;lt;code&amp;gt;Desert&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ExtremeDesert&amp;lt;/code&amp;gt; as &amp;lt;code&amp;gt;rootBiomes&amp;lt;/code&amp;gt; meaning at least one of these are required for an area to be given this name. &amp;lt;code&amp;gt;acceptableBiomes&amp;lt;/code&amp;gt; are adjacent biomes that can also fulfill the qualifications for the Desert Feature. This is purely for visual and does not have impact on gameplay.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s ===&lt;br /&gt;
Most &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s in Odyssey will not be active on a biome unless they are patched into the TileMutatorDefs &amp;lt;code&amp;gt;biomeWhitelist&amp;lt;/code&amp;gt;. You can also restrict certain biomes using the &amp;lt;code&amp;gt;biomeBlacklist&amp;lt;/code&amp;gt;. [[Modding_Tutorials/Mod_Folder_Structure#LoadFolders.xml_.28Optional.29|LoadFolders]] is recommended here.&lt;br /&gt;
&lt;br /&gt;
[[Category:Modding tutorials]]&lt;/div&gt;</summary>
		<author><name>Halicade</name></author>
	</entry>
	<entry>
		<id>https://rimworldwiki.com/index.php?title=Modding_Tutorials/Mod_Folder_Structure&amp;diff=180041</id>
		<title>Modding Tutorials/Mod Folder Structure</title>
		<link rel="alternate" type="text/html" href="https://rimworldwiki.com/index.php?title=Modding_Tutorials/Mod_Folder_Structure&amp;diff=180041"/>
		<updated>2026-05-03T16:22:25Z</updated>

		<summary type="html">&lt;p&gt;Halicade: _steam applies to 1.5 versions and below&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Mod Folder Structure}}&lt;br /&gt;
&lt;br /&gt;
{{BackToTutorials}}&lt;br /&gt;
&lt;br /&gt;
This is a guide explaining the contents of mod folders and best practices for how they should be laid out for proper recognition by RimWorld as well as compatibility with other mods.&lt;br /&gt;
&lt;br /&gt;
== RimWorld Mod Folder ==&lt;br /&gt;
&lt;br /&gt;
Your local &amp;lt;code&amp;gt;Mods&amp;lt;/code&amp;gt; folder for manually installed mods as well as new local mods can be found in the following default installation locations:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-right:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operating System !! Default Folder Location&lt;br /&gt;
|-&lt;br /&gt;
| Windows || &amp;lt;code&amp;gt;C:\Program Files (x86)\Steam\steamapps\common\RimWorld\Mods&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Mac || &amp;lt;code&amp;gt;~/Library/Application Support/Steam/steamapps/common/RimWorld/RimWorldMac.app/Mods&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Linux (standalone) || &amp;lt;code&amp;gt;~/.steam/steam/steamapps/common/RimWorld/Mods&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Linux (GoG) || &amp;lt;code&amp;gt;/home/&amp;lt;user&amp;gt;/GOG/Games/RimWorld/game/Mods/&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each mod should have its own subfolder within the main &amp;lt;code&amp;gt;Mods&amp;lt;/code&amp;gt; folder. The name of individual mod folders does not matter and you can name them freely for your own personal organization; your mod's internal ID and title are defined in [[Modding_Tutorials/About.xml|About.xml]] (see below). Unless specified otherwise, all specific files mentioned below must be capitalized and spelled correctly or RimWorld will not recognize them.&lt;br /&gt;
&lt;br /&gt;
=== Example Mod Folder ===&lt;br /&gt;
&lt;br /&gt;
The following is an example of a mod folder with all recognized subfolders:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
Mods&lt;br /&gt;
└ MyModFolder&lt;br /&gt;
  ├ About&lt;br /&gt;
  │ ├ About.xml&lt;br /&gt;
  │ └ Preview.png&lt;br /&gt;
  ├ Assemblies&lt;br /&gt;
  ├ Defs&lt;br /&gt;
  ├ Languages&lt;br /&gt;
  ├ Patches&lt;br /&gt;
  ├ Sounds&lt;br /&gt;
  └ Textures&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;About&amp;lt;/code&amp;gt; (Required) ==&lt;br /&gt;
&lt;br /&gt;
The only folder required for all mods, the &amp;lt;code&amp;gt;About&amp;lt;/code&amp;gt; folder contains information that identifies your mod to RimWorld and allows it to be loaded.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;TutorialTableWrapper&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;TutorialCodeTable&amp;quot;&lt;br /&gt;
! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
&amp;lt;code&amp;gt;About.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
'''(Required)'''&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
''See: [[Modding_Tutorials/About.xml|About.xml]]''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;About.xml&amp;lt;/code&amp;gt; is used to identify a mod to RimWorld so it can be loaded, and can also be used to specify dependencies and load order helpers for mod compatibility. Please see the [[Modding_Tutorials/About.xml|full guide]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
&amp;lt;code&amp;gt;Preview.png&amp;lt;/code&amp;gt;&lt;br /&gt;
'''(Required)'''&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A mod's &amp;lt;code&amp;gt;Preview.png&amp;lt;/code&amp;gt; is used as the preview image for that mod in both the in-game mod manager as well as Steam Workshop. It is strongly recommended to use a 640x360 PNG file as this is the default size and aspect ratio (16/9) configured for RimWorld and using other sizes may result in blurring or letterboxing. You can also opt to use 1280x720 for higher resolution artwork, but '''preview files must remain under 1MB or Steam Workshop will reject your upload'''. If you get a &amp;quot;limit exceeded&amp;quot; error, then double-check the size of your &amp;lt;code&amp;gt;Preview.png&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Note''': While PNG files are standard, RimWorld does not actually require a PNG file. It is possible to use JPG or even animated GIF files by simply renaming them &amp;quot;Preview.png&amp;quot;, but the PNG extension must be used or RimWorld will not recognize it.&lt;br /&gt;
|-&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
&amp;lt;code&amp;gt;ModIcon.png&amp;lt;/code&amp;gt;&lt;br /&gt;
''(Optional)''&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
New in RimWorld 1.5, a mod's &amp;lt;code&amp;gt;ModIcon.png&amp;lt;/code&amp;gt; is shown during game loading screens and in the Options UI if your mod has [[Modding_Tutorials/ModSettings|mod settings]]. It should be either a 32x32 or 64x64 PNG file, and too much detail or color should be avoided; Unity texture compression will make overcomplicated icons very crunchy.&lt;br /&gt;
|-&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
&amp;lt;code&amp;gt;Manifest.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
''(Obsolete)''&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
You may see a &amp;lt;code&amp;gt;Manifest.xml&amp;lt;/code&amp;gt; file in some older mods. This was a file used by [https://steamcommunity.com/sharedfiles/filedetails/?id=1507748539 Fluffy's Mod Manager] as well as some external mod managers for dependency and versioning information in older versions of RimWorld. This is generally considered obsolete as the most important benefits of having a manifest file have largely been mainlined into &amp;lt;code&amp;gt;About.xml&amp;lt;/code&amp;gt;; you do not need this file unless you want specific additional features provided by Mod Manager.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;Assemblies&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;Assemblies&amp;lt;/code&amp;gt; folder can be used to add custom code to RimWorld in the form of compiled [https://en.wikipedia.org/wiki/Dynamic-link_library dynamic-link library] or DLL files. Properly compiled assemblies will be automatically loaded by RimWorld.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;Defs&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
''See: [[Modding_Tutorials/Defs|Defs]]''&lt;br /&gt;
&lt;br /&gt;
'''XML Definitions''' or '''Defs''' are the primary content definition and configuration source for RimWorld. These Defs define everything from items and plants and animals to faction types and ideoligion options, and as a general rule any mod that adds additional content for RimWorld will likely be adding one or more Defs. Please see the [[Modding_Tutorials/Defs|Def guide]] for more detailed information.&lt;br /&gt;
&lt;br /&gt;
Subfolders and even file names within the &amp;lt;code&amp;gt;Defs&amp;lt;/code&amp;gt; does not matter as all XML files are read into memory from each individual mod and you can freely name them however you want for your own personal organization, however it is recommended that you follow vanilla conventions (&amp;lt;code&amp;gt;SoundDef&amp;lt;/code&amp;gt;s in the &amp;lt;code&amp;gt;/SoundDefs&amp;lt;/code&amp;gt; folder, &amp;lt;code&amp;gt;ThingDef&amp;lt;/code&amp;gt;s in the various &amp;lt;code&amp;gt;/ThingDef_***&amp;lt;/code&amp;gt; folders) for readability. The one exception to this is if you are using versioned &amp;lt;code&amp;gt;LoadFolders.xml&amp;lt;/code&amp;gt; entries: XML files with the same resolved path will overwrite each other, with the last one to be loaded taking precedence.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;Languages&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
''See: [[Modding_Tutorials/Localization|Localization]]''&lt;br /&gt;
&lt;br /&gt;
'''[https://en.wikipedia.org/wiki/Internationalization_and_localization Localization]''' is the process of creating and translating game and mod language content for different languages. This includes both translations for Defs and code-referenced text as well as word list for procedural name and content generation. Please see the [[Modding_Tutorials/Localization|localization guide]] for more information about the &amp;lt;code&amp;gt;Languages&amp;lt;/code&amp;gt; folder and its subfolders.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;Patches&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
''See: [[Modding_Tutorials/PatchOperations|PatchOperations]]''&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;code&amp;gt;PatchOperations&amp;lt;/code&amp;gt;''' are a way of modifying Defs from the vanilla game, DLCs, or even other mods in a safe and interoperable manner. This can be used to rebalance or adjust vanilla content, remove or disable unwanted content, or provide optional changes or content for better mod compatibility. Please see the [[Modding_Tutorials/PatchOperations|PatchOperations guide]] for more information.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;Sounds&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
''See: [[Modding_Tutorials/Sounds|Sounds]]''&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;Sounds&amp;lt;/code&amp;gt; folder is used to hold custom sound files for mods. It is generally recommended to use [https://en.wikipedia.org/wiki/Ogg Ogg files], though Unity can also recognize and use MP3 and WAV files. Please see the [[Modding_Tutorials/Sounds|Sounds guide]] for more information.&lt;br /&gt;
&lt;br /&gt;
Just like textures, sound files in RimWorld are identified by their path names; if a mod contains a sound file with the same path and file name as another mod or even the vanilla game or DLCs, then the last one to be loaded in your mod list will overwrite the others. This is sometimes done intentionally by mods that want to change vanilla or other mod's audio.&lt;br /&gt;
&lt;br /&gt;
To avoid accidental collisions, it's recommended to prefix either your file names or use a namespace folder to reduce the chance that you have the exact same path as another mod:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
Mods&lt;br /&gt;
└ MyModFolder&lt;br /&gt;
  └ Sounds&lt;br /&gt;
    └ MyNamespace&lt;br /&gt;
      ├ MyCustomSound.ogg&lt;br /&gt;
      └ AnotherCustomSound.ogg&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;Textures&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
''See: [[Modding_Tutorials/Textures|Textures]]''&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;Textures&amp;lt;/code&amp;gt; folder is used to hold custom texture files for mods. It is generally recommended to use [https://en.wikipedia.org/wiki/PNG PNG files]. Please see the [[Modding_Tutorials/Textures|Textures guide]] for more information.&lt;br /&gt;
&lt;br /&gt;
Just like sounds, texture files in RimWorld are identified by their path names; if a mod contains a texture file with the same path and file name as another mod or even the vanilla game or DLCs, then the last one to be loaded in your mod list will overwrite the others. This is sometimes done intentionally by re-texture mods that want to change textures from the vanilla game or other mods.&lt;br /&gt;
&lt;br /&gt;
To avoid accidental collisions, it's recommended to prefix either your file names or use a namespace folder to reduce the chance that you have the exact same path as another mod:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
Mods&lt;br /&gt;
└ MyModFolder&lt;br /&gt;
  └ Textures&lt;br /&gt;
    └ MyNamespace&lt;br /&gt;
      ├ MyCustomTexture.png&lt;br /&gt;
      └ AnotherCustomTexture.png&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Versioned Folders (Optional) ==&lt;br /&gt;
&lt;br /&gt;
''Note: It is strongly recommended that you do not declare support for versions of RimWorld that you do not personally test every release with, as RimWorld code and XML has changed in significant ways between every version.''&lt;br /&gt;
&lt;br /&gt;
Content for specific versions of RimWorld can be implemented by placing them in folders named after their minor version numbers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
Mods&lt;br /&gt;
└ MyModFolder&lt;br /&gt;
  ├ 1.4&lt;br /&gt;
  │ ├ Assemblies&lt;br /&gt;
  │ ├ Defs&lt;br /&gt;
  | ├ Languages&lt;br /&gt;
  │ ├ Sounds&lt;br /&gt;
  │ ├ Patches&lt;br /&gt;
  │ └ Textures&lt;br /&gt;
  ├ 1.3&lt;br /&gt;
  │ └ ...&lt;br /&gt;
  ├ 1.2&lt;br /&gt;
  │ └ ...&lt;br /&gt;
  ├ 1.1&lt;br /&gt;
  │ └ ...&lt;br /&gt;
  │&lt;br /&gt;
  ├ Common&lt;br /&gt;
  │ └ ...&lt;br /&gt;
  │&lt;br /&gt;
  ├ About&lt;br /&gt;
  ├ Defs&lt;br /&gt;
  ├ Languages&lt;br /&gt;
  ├ Sounds&lt;br /&gt;
  ├ Patches&lt;br /&gt;
  └ Textures&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* All versioned folders and the &amp;lt;code&amp;gt;Common&amp;lt;/code&amp;gt; folder can contain all normal root folders other than the &amp;lt;code&amp;gt;About&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
* '''For RimWorld 1.1 and later''', the game will load the first versioned folder that is compatible with the version of the game. Thus, if you only had folders for &amp;lt;code&amp;gt;1.4&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;1.2&amp;lt;/code&amp;gt;, then RimWorld v1.4 would load the &amp;lt;code&amp;gt;1.4&amp;lt;/code&amp;gt; folder, while RimWorld v1.3 and v1.2 would both load the &amp;lt;code&amp;gt;1.2&amp;lt;/code&amp;gt; folder. All versions will also load &amp;lt;code&amp;gt;Common&amp;lt;/code&amp;gt; and any direct root folders.&lt;br /&gt;
* '''For RimWorld 1.0 only''', the game does not recognize the &amp;lt;code&amp;gt;Common&amp;lt;/code&amp;gt; folder. RimWorld v1.0 is capable of recognizing a &amp;lt;code&amp;gt;1.0&amp;lt;/code&amp;gt; folder, but if it is used then the game '''WILL NOT''' load from the root folder; for mods that support RimWorld v1.0, it is typically recommended that content be placed into root folders and override content for newer versions be placed into versioned folders.&lt;br /&gt;
* Files with the same relative path will overwrite each other, with the most specific one taking precedence; this applies to XML files (both Def and Patch files), audio files, language files, and textures. Thus, if you have &amp;lt;code&amp;gt;Defs/MyFile.xml&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Common/Defs/MyFile.xml&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;1.4/Defs/MyFile.xml&amp;lt;/code&amp;gt;, only the last one will be read.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;LoadFolders.xml&amp;lt;/code&amp;gt; (Optional) ==&lt;br /&gt;
&lt;br /&gt;
Specific rules for which folders are loaded for which version of the game, as well as optional folders to be loaded for specific DLCs or mods can be specified by using a special file called &amp;lt;code&amp;gt;LoadFolders.xml&amp;lt;/code&amp;gt;. This file should be placed in your root mod folder:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
Mods&lt;br /&gt;
└ MyModFolder&lt;br /&gt;
  └ LoadFolders.xml&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;LoadFolders.xml&amp;lt;/code&amp;gt; allows you to specify exactly which folders should be loaded for given versions of RimWorld. '''This supersedes the default versioned folder rules as specified above for all versions of RimWorld except v1.0''', which means that you will need to specify the root or &amp;lt;code&amp;gt;Common&amp;lt;/code&amp;gt; folders if you wish to use them. An example file is shown here:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;loadFolders&amp;gt;&lt;br /&gt;
  &amp;lt;v1.3&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;/&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1.3&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li IfModActive=&amp;quot;Ludeon.RimWorld.Ideology&amp;quot;&amp;gt;Ideology/1.3&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li IfModActive=&amp;quot;CETeam.CombatExtended&amp;quot;&amp;gt;CombatExtended/1.3&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/v1.3&amp;gt;&lt;br /&gt;
  &amp;lt;v1.4&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;/&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1.4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li IfModActive=&amp;quot;Ludeon.RimWorld.Ideology&amp;quot;&amp;gt;Ideology/1.4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li IfModActive=&amp;quot;Ludeon.RimWorld.Biotech&amp;quot;&amp;gt;Biotech/1.4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li IfModActive=&amp;quot;CETeam.CombatExtended&amp;quot;&amp;gt;CombatExtended/1.4&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/v1.4&amp;gt;&lt;br /&gt;
&amp;lt;/loadFolders&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example file specifies that the root folder and a versioned folder should be loaded for RimWorld v1.3 and v1.4, and optionally loads extra folders based on whether the [[Ideology]] DLC and/or Combat Extended mods are loaded. This might correspond to a mod folder structure as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
Mods&lt;br /&gt;
└ MyModFolder&lt;br /&gt;
  ├ 1.4&lt;br /&gt;
  │ ├ Assemblies&lt;br /&gt;
  │ ├ Defs&lt;br /&gt;
  │ └ Patches&lt;br /&gt;
  ├ 1.3&lt;br /&gt;
  │ └ ...&lt;br /&gt;
  │&lt;br /&gt;
  ├ Ideology&lt;br /&gt;
  │ ├ 1.4&lt;br /&gt;
  │ │ └ ...&lt;br /&gt;
  │ └ 1.3&lt;br /&gt;
  │   └ ...&lt;br /&gt;
  ├ Biotech&lt;br /&gt;
  │ └ 1.4&lt;br /&gt;
  │   └ ...&lt;br /&gt;
  ├ CombatExtended&lt;br /&gt;
  │ ├ 1.4&lt;br /&gt;
  │ │ └ ...&lt;br /&gt;
  │ └ 1.3&lt;br /&gt;
  │   └ ...&lt;br /&gt;
  │&lt;br /&gt;
  ├ About&lt;br /&gt;
  ├ Sounds&lt;br /&gt;
  ├ Textures&lt;br /&gt;
  └ LoadFolders.xml&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* You can also use &amp;lt;code&amp;gt;IfModNotActive&amp;lt;/code&amp;gt; to specify that a folder should be loaded if the target DLC or mod is not active:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;loadFolders&amp;gt;&lt;br /&gt;
  &amp;lt;v1.6&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;/&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1.6&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;!-- active if Odyssey is not loaded --&amp;gt;&lt;br /&gt;
    &amp;lt;li IfModNotActive=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;CustomBiomes&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;!-- active if Odyssey is loaded --&amp;gt;&lt;br /&gt;
    &amp;lt;li IfModActive=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;Odyssey&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/v1.6&amp;gt;&lt;br /&gt;
&amp;lt;/loadFolders&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Folders that should be loaded if mods and DLCs are ''not'' loaded can also be specified using &amp;lt;code&amp;gt;IfModNotActive&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Individual &amp;lt;code&amp;gt;IfModActive&amp;lt;/code&amp;gt; attribute values can also contain multiple values separated by commas. &amp;lt;code&amp;gt;IfModActive&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;IfModNotActive&amp;lt;/code&amp;gt; are treated as an &amp;quot;or&amp;quot;, whereas &amp;lt;code&amp;gt;IfModActiveAll&amp;lt;/code&amp;gt; (new in RimWorld 1.6) is treated as an &amp;quot;and&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;loadFolders&amp;gt;&lt;br /&gt;
  &amp;lt;v1.6&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;/&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1.6&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;!-- active if either DBH or DBH Lite is loaded --&amp;gt;&lt;br /&gt;
    &amp;lt;li IfModActive=&amp;quot;Dubwise.DubsBadHygiene,Dubwise.DubsBadHygiene.Lite&amp;quot;&amp;gt;DBH&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;!-- active if both Biotech and Odyssey are loaded --&amp;gt;&lt;br /&gt;
    &amp;lt;li IfModActiveAll=&amp;quot;Ludeon.RimWorld.Biotech,Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;SpaceXenotypes&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/v1.6&amp;gt;&lt;br /&gt;
&amp;lt;/loadFolders&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you have files with the same relative path, then the last one specified by your load order will be used. Thus in the above example setup, if you had &amp;lt;code&amp;gt;Defs/MyFile.xml&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1.4/Defs/MyFile.xml&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;Ideology/1.4/Defs/MyFile.xml&amp;lt;/code&amp;gt;, then the Ideology version would be loaded. This applies to all XML files (both Defs and Patches), Sounds, Textures, and Language files.&lt;br /&gt;
* (Applies to 1.5 and below) If you have both a local version of the mod, as well as the steam version, you will need to qualify the steam version with &amp;lt;code&amp;gt;_steam&amp;lt;/code&amp;gt; for requiring it to test out compatibility with the steam version. In the example above, &amp;lt;code&amp;gt;IfModActive=&amp;quot;CETeam.CombatExtended&amp;quot;&amp;lt;/code&amp;gt; would become &amp;lt;code&amp;gt;IfModActive=&amp;quot;CETeam.CombatExtended,CETeam.CombatExtended_steam&amp;quot;&amp;lt;/code&amp;gt; to support both a local mod version of Combat Extended as well as the steam version.&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;Core&amp;lt;/code&amp;gt; game as well as all DLC folders are functionally identical to mod folders with the exception that official content textures and sound files are bundled into a Unity asset bundle rather than being saved directly to their respective folders. You can find these under the &amp;lt;code&amp;gt;/Data&amp;lt;/code&amp;gt; folder inside your RimWorld directory.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;Source&amp;lt;/code&amp;gt; Files ===&lt;br /&gt;
&lt;br /&gt;
Some mods contain a &amp;lt;code&amp;gt;Source&amp;lt;/code&amp;gt; folder containing the source code for their compiled assemblies. This is not read by RimWorld in any way but can be included if you wish to share the source code for your assemblies, but it is strongly recommended that you use a public code repository such as [https://github.com/ GitHub] instead as it's easier to read at a glance and shows changes over time that can help diagnose issues and bugs.&lt;br /&gt;
&lt;br /&gt;
[[Category:Modding]]&lt;br /&gt;
[[Category:Modding tutorials]]&lt;/div&gt;</summary>
		<author><name>Halicade</name></author>
	</entry>
	<entry>
		<id>https://rimworldwiki.com/index.php?title=Modding_Tutorials/Biomes&amp;diff=180040</id>
		<title>Modding Tutorials/Biomes</title>
		<link rel="alternate" type="text/html" href="https://rimworldwiki.com/index.php?title=Modding_Tutorials/Biomes&amp;diff=180040"/>
		<updated>2026-05-03T16:19:20Z</updated>

		<summary type="html">&lt;p&gt;Halicade: /* Fields */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Biomes}}&lt;br /&gt;
&lt;br /&gt;
{{BackToTutorials}}&lt;br /&gt;
&lt;br /&gt;
{{:Modding_Tutorials/Under_Review}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is a basic overview of biomes and their creation. As well as different places that a biome is taken into consideration.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;BiomeDef&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Biomes are defined in XML using &amp;lt;code&amp;gt;BiomeDef&amp;lt;/code&amp;gt; [[Modding_Tutorials/Defs|Defs]]. As with all Defs, looking at the vanilla examples is a great way to get a feel for how the system is used.&lt;br /&gt;
In order to generate a biome on the world map, biomes also require a &amp;lt;code&amp;gt;workerClass&amp;lt;/code&amp;gt; defined in code. See [[Modding_Tutorials/Setting_up_a_solution|Setting up a solution]] to get started.&lt;br /&gt;
&lt;br /&gt;
=== Fields ===&lt;br /&gt;
&lt;br /&gt;
The following are valid fields in &amp;lt;code&amp;gt;BiomeDef&amp;lt;/code&amp;gt;. Not all fields are necessary, look at vanilla BiomeDefs for examples.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;TutorialTableWrapper&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;TutorialCodeTable&amp;quot;&lt;br /&gt;
! XML Example !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;workerClass&amp;gt;MyCustomBiome.BiomeWorker_CustomForest&amp;lt;/workerClass&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A reference to code that defines where your biome will spawn on the world map. In Rimworld, these start with &amp;lt;code&amp;gt;BiomeWorker&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;implemented&amp;gt;true&amp;lt;/true&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if the biome gets generated from &amp;lt;code&amp;gt;WorldGenStep_Terrain&amp;lt;/code&amp;gt;. Defaults to true. Likely this is used for debugging/development purposes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;generatesNaturally&amp;gt;true&amp;lt;/generatesNaturally&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if the biome gets generated from &amp;lt;code&amp;gt;WorldGenStep_Terrain&amp;lt;/code&amp;gt;. Requires &amp;lt;code&amp;gt;implemented&amp;lt;/code&amp;gt; to be true. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;canBuildBase&amp;gt;true&amp;lt;/canBuildBase&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if a player or npc faction can be generated here. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;settlementSelectionWeight&amp;gt;0.75&amp;lt;/settlementSelectionWeight&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
How likely a settlement can spawn on the selected tile. This is a value from 0-1. Defaults to 1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowRoads&amp;gt;true&amp;lt;/allowRoads&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Whether roads can appear on this biome. Note that unless both this and &amp;lt;code&amp;gt;allowRivers&amp;lt;/code&amp;gt; are false, roads will still display visually. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowRivers&amp;gt;true&amp;lt;/allowRivers&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Whether rivers can appear on this biome. Note that unless both this and &amp;lt;code&amp;gt;allowRoads&amp;lt;/code&amp;gt; are false, rivers will still display visually. Defaults to true. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animalDensity&amp;gt;3.5&amp;lt;/animalDensity&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
How much animals will spawn on your biome. Higher numbers lead to an increase in animals.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;plantDensity&amp;gt;0.7&amp;lt;/plantDensity&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
How many plants will spawn on your biome. Higher numbers lead to an increase in plants.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowFarmingCamps&amp;gt;true&amp;lt;/allowFarmingCamps&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Ideology]] {{IdeologyIcon}} Only) Allow farming camps to spawn. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;campSelectionWeight&amp;gt;0.65&amp;lt;campSelectionWeight&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Ideology]] {{IdeologyIcon}} Only) How likely a camp can spawn on the selected tile. This is a value from 0-1. Defaults to 1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pollutionOffset&amp;gt;0.2&amp;lt;pollutionOffset&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Biotech]] {{BiotechIcon}} Only) This will be the biomes initial pollution. This can be increased during the world creation screen.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;impassable&amp;gt;false&amp;lt;/impassable&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Whether the biome can be passed via caravan.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;hasVirtualPlants&amp;gt;true&amp;lt;/hasVirtualPlants&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if animals are allowed to graze on this tile while caravanning. Defauilts to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;forageability&amp;gt;0.75&amp;lt;forageability&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A multiplier of nutrition [[forage]]d per day. Requires a &amp;lt;code&amp;gt;foragedFood&amp;lt;/code&amp;gt; defined. This is also used for animals that can forage ([[Odyssey]]{{OdysseyIcon}}).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;foragedFood&amp;gt;RawBerries&amp;lt;/foragedFood&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Food that will be retrieved.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildPlantsCareAboutLocalFertility&amp;gt;false&amp;lt;/wildPlantsCareAboutLocalFertility&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If this is false and the tile you are in is not a mixed biome, total plant population is based on the whole map rather than a 20 cell radius. Defauilts to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildPlantsAreCavePlants&amp;gt;true&amp;lt;/wildPlantsAreCavePlants&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Cave plants have their own weight which is used to place them in caves. This makes it so the weight defined in &amp;lt;code&amp;gt;wildPlants&amp;lt;/code&amp;gt; is used instead.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildPlantRegrowDays&amp;gt;13&amp;lt;/wildPlantRegrowDays&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A wild plant has a chance to regrow after a set number of days. Defaults to 25.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;movementDifficulty&amp;gt;1.25&amp;lt;/movementDifficulty&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The base movement difficulty for a caravan to travel across the tile. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;baseWeatherCommonalities&amp;gt;&lt;br /&gt;
  &amp;lt;Clear&amp;gt;18&amp;lt;/Clear&amp;gt;&lt;br /&gt;
  &amp;lt;Fog&amp;gt;1&amp;lt;/Fog&amp;gt;&lt;br /&gt;
  &amp;lt;Rain&amp;gt;2&amp;lt;/Rain&amp;gt;&lt;br /&gt;
  &amp;lt;DryThunderstorm&amp;gt;1&amp;lt;/DryThunderstorm&amp;gt;&lt;br /&gt;
  &amp;lt;RainyThunderstorm&amp;gt;1&amp;lt;/RainyThunderstorm&amp;gt;&lt;br /&gt;
  &amp;lt;FoggyRain&amp;gt;1&amp;lt;/FoggyRain&amp;gt;&lt;br /&gt;
  &amp;lt;SnowGentle&amp;gt;4&amp;lt;/SnowGentle&amp;gt;&lt;br /&gt;
  &amp;lt;SnowHard&amp;gt;4&amp;lt;/SnowHard&amp;gt;&lt;br /&gt;
  &amp;lt;GrayPall MayRequire=&amp;quot;Ludeon.RimWorld.Anomaly&amp;quot;&amp;gt;1&amp;lt;/GrayPall&amp;gt;&lt;br /&gt;
  &amp;lt;Overcast MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;2&amp;lt;/Overcast&amp;gt;&lt;br /&gt;
&amp;lt;/baseWeatherCommonalities&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
What weather events can occur and how often they can occur. Note that multiple other variables are taken into effect with weather&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;terrainsByFertility&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;terrain&amp;gt;Soil&amp;lt;/terrain&amp;gt;&lt;br /&gt;
    &amp;lt;min&amp;gt;-999&amp;lt;/min&amp;gt;&lt;br /&gt;
    &amp;lt;max&amp;gt;0.87&amp;lt;/max&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;terrain&amp;gt;SoilRich&amp;lt;/terrain&amp;gt;&lt;br /&gt;
    &amp;lt;min&amp;gt;0.87&amp;lt;/min&amp;gt;&lt;br /&gt;
    &amp;lt;max&amp;gt;999&amp;lt;/max&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/terrainsByFertility&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The terrain that will appear based on fertility values generated by the genSteps &amp;lt;code&amp;gt;ElevationFertility&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;MutatorPostElevationFertility&amp;lt;/code&amp;gt;. Will default to regular soil if a value is omitted.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;terrainPatchMakers&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;perlinFrequency&amp;gt;0.04&amp;lt;/perlinFrequency&amp;gt;&lt;br /&gt;
    &amp;lt;thresholds&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&lt;br /&gt;
        &amp;lt;terrain&amp;gt;MarshyTerrain&amp;lt;/terrain&amp;gt;&lt;br /&gt;
        &amp;lt;min&amp;gt;0.7&amp;lt;/min&amp;gt;&lt;br /&gt;
        &amp;lt;max&amp;gt;999&amp;lt;/max&amp;gt;&lt;br /&gt;
      &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/thresholds&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/terrainPatchMakers&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Terrain generated through perlin noise. This can be used for patches of highly fertile soil, marshes, ponds, or other variable land. For a visual representation, you can use the [[Development_mode|Dev mode]] command &amp;lt;code&amp;gt;Map noise visualizer&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;soundsAmbient&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Ambient_NightInsects_Standard&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/soundsAmbient&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Sounds that will play when zoomed in on the map.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildPlants&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_TallGrass&amp;gt;3.2&amp;lt;/Plant_TallGrass&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Chokevine&amp;gt;0.8&amp;lt;/Plant_Chokevine&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Bush&amp;gt;0.2&amp;lt;/Plant_Bush&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Witchwood MayRequire=&amp;quot;Ludeon.RimWorld.Biotech&amp;quot;&amp;gt;1.0&amp;lt;/Plant_Witchwood&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Reeds MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Plant_Reeds&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_LilyPad MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.2&amp;lt;/Plant_LilyPad&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Bulrush MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.2&amp;lt;/Plant_Bulrush&amp;gt;&lt;br /&gt;
  &amp;lt;MCP_MyCustomPlant MayRequire=&amp;quot;username.CustomPlantMod&amp;quot;&amp;gt;0.3&amp;lt;/MCP_MyCustomPlant&amp;gt;&lt;br /&gt;
&amp;lt;/wildPlants&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
What plants can spawn in the wild for this biome. Based on weight. These can also be included on an plants properties. Duplicates are not allowed between the two. Plants that appear due to pollution appear in this list as well. Disable &amp;lt;wildPlantsAreCavePlants&amp;gt; to have weights defined here affect cave plants.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildAnimals&amp;gt;&lt;br /&gt;
  &amp;lt;Donkey&amp;gt;0.34&amp;lt;/Donkey&amp;gt;&lt;br /&gt;
  &amp;lt;GuineaPig&amp;gt;0.48&amp;lt;/GuineaPig&amp;gt;&lt;br /&gt;
  &amp;lt;Yak&amp;gt;0.05&amp;lt;/Yak&amp;gt;&lt;br /&gt;
  &amp;lt;Bison&amp;gt;0.06&amp;lt;/Bison&amp;gt;&lt;br /&gt;
  &amp;lt;Crow MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.6&amp;lt;/Crow&amp;gt;&lt;br /&gt;
  &amp;lt;Bluebird MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.6&amp;lt;/Bluebird&amp;gt;&lt;br /&gt;
  &amp;lt;Quail MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.6&amp;lt;/Quail&amp;gt;&lt;br /&gt;
  &amp;lt;MCA_MyCustomAnimal MayRequire=&amp;quot;username.CustomAnimalMod&amp;quot;&amp;gt;0.3&amp;lt;/MCP_MyCustomanimal&amp;gt;&lt;br /&gt;
&amp;lt;/wildAnimals&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
What animals can spawn in the biome based on weight. These can also be included on an animals race properties. Duplicates are not allowed between the two.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pollutionWildAnimals&amp;gt;&lt;br /&gt;
  &amp;lt;Toxalope MayRequire=&amp;quot;Ludeon.RimWorld.Biotech&amp;quot;&amp;gt;0.3&amp;lt;/Toxalope&amp;gt;&lt;br /&gt;
  &amp;lt;WasteRat MayRequire=&amp;quot;Ludeon.RimWorld.Biotech&amp;quot;&amp;gt;0.4&amp;lt;/WasteRat&amp;gt;&lt;br /&gt;
  &amp;lt;Rat&amp;gt;1&amp;lt;/Rat&amp;gt;&lt;br /&gt;
  &amp;lt;Raccoon&amp;gt;0.5&amp;lt;/Raccoon&amp;gt;&lt;br /&gt;
&amp;lt;/pollutionWildAnimals&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Biotech]] {{BiotechIcon}} Only) Animals defined in this field will only spawn if there is pollution on the map. The chance of these animals spawning is based on a curve with a 10% chance at 25% pollution, 90% chance at 75% pollution and 100% at 100% pollution&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;coastalWildAnimals&amp;gt;&lt;br /&gt;
  &amp;lt;SeaLion MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.1&amp;lt;/SeaLion&amp;gt;&lt;br /&gt;
  &amp;lt;Seal MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.1&amp;lt;/Seal&amp;gt;&lt;br /&gt;
&amp;lt;/coastalWildAnimals&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) Animals defined here will spawn if the tile has the &amp;lt;code&amp;gt;Coast&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;. A coast requires a tile neighboring an ocean tile.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;diseaseMtbDays&amp;gt;50&amp;lt;/diseaseMtbDays&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The mean time between a disease incident occurring. Possible diseases are chosen from &amp;lt;code&amp;gt;diseases&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;diseases&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;diseaseInc&amp;gt;Disease_Flu&amp;lt;/diseaseInc&amp;gt;&lt;br /&gt;
    &amp;lt;commonality&amp;gt;120&amp;lt;/commonality&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;diseaseInc&amp;gt;Disease_Plague&amp;lt;/diseaseInc&amp;gt;&lt;br /&gt;
    &amp;lt;commonality&amp;gt;80&amp;lt;/commonality&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/diseases&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Possible diseases that can occur. One will be chosen at random by weight&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowedPackAnimals&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Muffalo&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Alpaca&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/allowedPackAnimals&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Pack animals that can appear from caravan traders.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;hasBedrock&amp;gt;true&amp;lt;/hasBedrock&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If a tile can be [[Deep_drill|deep drilled]] for materials. Defaults to true. Also prevents the [[Ground-penetrating_scanner|Ground-penetrating scanner]] from working on this tile.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;isExtremeBiome&amp;gt;true&amp;lt;/isExtremeBiome&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Prevents spawning of Special trees as well as Royalty intro quests. Defaults to false.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;isWaterBiome&amp;gt;false&amp;lt;/isWaterBiome&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Unused field that is located on Ocean and Lake biomes.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowPollution&amp;gt;true&amp;lt;/allowPollution&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Pollution can appear on the world maps tile. Defaults to true. Note that this tile can still be polluted while on the map tile or by sending a drop-pod of wastepacks to the area.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildAnimalsCanWanderInto&amp;gt;true&amp;lt;/wildAnimalsCanWanderInto&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If false, animals will not appear when using the draw animals [[Anomaly]] Ritual. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;noAmbientWind&amp;gt;false&amp;lt;/noAmbientWind&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If false, When the camera is zoomed out, you will hear wind effects.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;inVacuum&amp;gt;false&amp;lt;/inVacuum&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) Tiles from this map will have no oxygen. [[Wind_turbine|Wind turbines]] will be unable to function.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;disableSkyLighting&amp;gt;false&amp;lt;/disableSkyLighting&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Enables Sky Lighting. This is from weather events as well as day/night time.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;disableShadows&amp;gt;false&amp;lt;/disableShadows&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Shadows from buildings and structures will not be displayed.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;canExitMap&amp;gt;true&amp;lt;/canExitMap&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if pawns are able to leave the map through caravan or other means. Defaults to True.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;onlyAllowWhitelistedArrivalModes&amp;gt;false&amp;lt;/onlyAllowWhitelistedArrivalModes&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Only allow arrival modes for pawns as specified in their &amp;lt;code&amp;gt;PawnsArrivalModeDef&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;isBackgroundBiome&amp;gt;false&amp;lt;/isBackgroundBiome&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Rotates coastal landmarks in the correct orientation when needed. Used for Ocean and Lake biomes.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildAnimalScariaChance&amp;gt;0.3&amp;lt;/wildAnimalScariaChance&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The chance that a wild animal spawned will have scaria. Defaults to 0.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;geyserCountFactor&amp;gt;0.75&amp;lt;/geyserCountFactor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Multiplies the amount of Steam Geysers that can appear on the map. Defaults to 1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;constantOutdoorTemperature&amp;gt;10&amp;lt;/constantOutdoorTemperature&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A set temperature for a map. Measured in Celsius.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;coastalBeachTerrain&amp;gt;Mud&amp;lt;/coastalBeachTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating beach. Defaults to sand.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;lakeBeachTerrain&amp;gt;Ice&amp;lt;/lakeBeachTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating a lake or beach. Defaults to sand.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;riverbankTerrain&amp;gt;Marsh&amp;lt;/riverbankTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used for the sides of a river. Requires a &amp;lt;code&amp;gt;riverbankSizeRange&amp;lt;/code&amp;gt; defined. Defaults to RiverBank.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;riverbankSizeRange&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Size of a riverbank that can appear alongside a river.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mudTerrain&amp;gt;MossyTerrain&amp;lt;/mudTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) Defines what terrain should be used when generating a Wetlands Tile mutator. Defaults to Mud.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;noGravel&amp;gt;false&amp;lt;/noGravel&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If Gravel (Stony soil) should be generated. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gravelTerrain&amp;gt;Ice&amp;lt;/gravelTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain to use when generating gravel. Defaults to Stony Soil. Requires &amp;lt;code&amp;gt;noGravel&amp;lt;/code&amp;gt; to be false.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;waterShallowTerrain&amp;gt;SoilRich&amp;lt;waterShallowTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain to use when generating shallow water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to shallow water.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;waterDeepTerrain&amp;gt;WaterOceanDeep&amp;lt;/waterDeepTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain to use when generating deep water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to deep water.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;oceanShallowTerrain&amp;gt;MossyTerrain&amp;lt;/oceanShallowTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating shallow ocean water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to shallow ocean Water&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;oceanDeepTerrain&amp;gt;Mud&amp;lt;/oceanDeepTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating Deep ocean water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to deep ocean water&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;waterMovingShallowTerrain&amp;gt;Mud&amp;lt;/waterMovingShallowTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating shallow moving water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to shallow moving water&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;waterMovingChestDeepTerrain&amp;gt;Sand&amp;lt;/waterMovingChestDeepTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating deep moving water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to chest-deep moving water&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;biomeMapConditions&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;SolarFlare&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;biomeMapConditions&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A list of permanent &amp;lt;code&amp;gt;GameConditionDef&amp;lt;/code&amp;gt; that can occur on the map.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extraGenSteps&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;MNCS_CheeseChunks&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;MNCS_MoonHives&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;MNCS_FixPlayerStartSpot&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/extraGenSteps&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Extra &amp;lt;code&amp;gt;GenStepDef&amp;lt;/code&amp;gt; that can occur on this biomes maps.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;preventGenSteps&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;RockChunks&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;CaveHives&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/preventGenSteps&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
These &amp;lt;code&amp;gt;GenStepDef&amp;lt;/code&amp;gt; will not occur on this biomes maps.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extraRockTypes&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;SolidIce&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/extraRockTypes&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Provided that the rock is defined as &amp;lt;code&amp;gt;biomeSpecific&amp;lt;/code&amp;gt;, these rocks will be able to appear on the selected biome naturally&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;forceRockTypes&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Sandstone&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/forceRockTypes&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Only rocks defined in this field will appear. This is a 100% rate meaning no variation on the biome.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;maxFishPopulation&amp;gt;500&amp;lt;/maxFishPopulation&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) The maximum amount of fish a body of water is able to have. Defaults to 0.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fishTypes&amp;gt;&lt;br /&gt;
  &amp;lt;freshwater_Common&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Bass MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Bass&amp;gt;&lt;br /&gt;
  &amp;lt;/freshwater_Common&amp;gt;&lt;br /&gt;
  &amp;lt;freshwater_Uncommon&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Catfish MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Catfish&amp;gt;&lt;br /&gt;
  &amp;lt;/freshwater_Uncommon&amp;gt;&lt;br /&gt;
  &amp;lt;saltwater_Common&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Bluefish MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Bluefish&amp;gt;&lt;br /&gt;
  &amp;lt;/saltwater_Common&amp;gt;&lt;br /&gt;
  &amp;lt;saltwater_Uncommon&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Marlin MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Marlin&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Flounder MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Flounder&amp;gt;&lt;br /&gt;
  &amp;lt;/saltwater_Uncommon&amp;gt;&lt;br /&gt;
  &amp;lt;rareCatchesSetMaker &lt;br /&gt;
  MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;RareFishingCatches_Temperate&amp;lt;/rareCatchesSetMaker&amp;gt;&lt;br /&gt;
&amp;lt;/fishTypes&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) Fish that can appear in bodies of water. If multiple fish are in a list, one is randomly chosen. If a category is not present, no fish from that category will appear. Despite there being a &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; to indicate chance, this field is not utilized.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;layerWhitelist&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;MP_MyCustomPlanetLayer&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/layerWhitelist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
&amp;lt;code&amp;gt;PlanetLayerDef&amp;lt;/code&amp;gt; this biome is allowed to occur in. If this is set it will only appear on the specified layers&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;layerBlacklist&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Surface&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/layerBlacklist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
&amp;lt;code&amp;gt;PlanetLayerDef&amp;lt;/code&amp;gt; this biome is not allowed to occur in. If this is set it will not appear in on the specified layers&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;settleWarning&amp;gt;This biome is very dangerous.&amp;lt;/settleWarning&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A warning that can appear when trying to settle on a tile of that biome.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fogOfWarColor&amp;gt;(249,145,104)&amp;lt;/fogOfWarColor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The color of Fog of war. Fogged/undiscovered locations on your map. Default is null and this field is not necessary to fill in. Normal fog of war color is (77, 69, 66).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;orbitalDebris&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
TODO&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;texture&amp;gt;World/Biomes/MNCS_SurfaceSwiss&amp;lt;/texture&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The texture that will be displayed on the world map. Vanilla uses a 512x512 texture.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Determining Biome ==&lt;br /&gt;
&lt;br /&gt;
Biome calculation is done during world generations &amp;lt;code&amp;gt;WorldGenStep_Terrain&amp;lt;/code&amp;gt;. Each tile is calculated individually. After verifying the biome can be placed via the BiomeDefs &amp;lt;code&amp;gt;generatesNaturally&amp;lt;/code&amp;gt;, and the BiomeWorkers &amp;lt;code&amp;gt;CanPlaceOnLayer&amp;lt;/code&amp;gt;, it's score is calculated from the individual biome workers &amp;lt;code&amp;gt;GetScore&amp;lt;/code&amp;gt;. The biome with the highest score will be placed on that specific tile.&lt;br /&gt;
&lt;br /&gt;
=== Biome Generation ===&lt;br /&gt;
&lt;br /&gt;
There is no right or wrong way to create the score for biomes. If you look at biome workers, many of them will use different formula or logic to appear on the map. Here is an example used from the mod [https://github.com/Halicade/GuldenBiome/blob/master/Source/BiomeWorker.cs| Gulden Biome (Continued)].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cs&amp;quot;&amp;gt;&lt;br /&gt;
// We are subclassing the temperate forest biome worker&lt;br /&gt;
public class BiomeWorker_GuldenForest : BiomeWorker_TemperateForest&lt;br /&gt;
{&lt;br /&gt;
  public override float GetScore(BiomeDef biome, Tile tile, PlanetTile planetTile) {&lt;br /&gt;
    // We don't want to completely overwrite the parent biome. &lt;br /&gt;
    // That's why we only want tiles with an elevation between 500 and 800.&lt;br /&gt;
    if (tile.elevation is &amp;lt;= 500 or &amp;gt;= 800) {&lt;br /&gt;
        return 0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // Get what the score is of the parent biome, temperate forest&lt;br /&gt;
    float score = base.GetScore(biome, tile, planetTile);&lt;br /&gt;
    // If that score is 0 or less we don't want this biome there.&lt;br /&gt;
    if (score &amp;lt;= 0) {&lt;br /&gt;
        return 0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // We add 1.5 so that it is higher than the temperate forest.&lt;br /&gt;
    // We don't want this number too large, otherwise it will overwrite other biomes.&lt;br /&gt;
    return score + 1.5f;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using Rand ===&lt;br /&gt;
&lt;br /&gt;
If you want a biome to appear randomly around the world map, you need to seed your Rand value. Without this, if you were to regenerate the world using the same world seed, your biome would appear in different tiles. You can use &amp;lt;code&amp;gt;Rand.PushState&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Rand.PopState&amp;lt;/code&amp;gt;. Or you can use &amp;lt;code&amp;gt;Rand.ValueSeeded&amp;lt;/code&amp;gt; or any other method that allows for a seeded outcome. This below example comes from multiple different sources and was rewritten here for better understanding.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cs&amp;quot;&amp;gt;&lt;br /&gt;
public class BiomeWorker_MyCustomBiome : BiomeWorker&lt;br /&gt;
{&lt;br /&gt;
    public override float GetScore(BiomeDef biome, Tile tile, PlanetTile planetTile) {&lt;br /&gt;
        // We don't want to generate on water.&lt;br /&gt;
        if (tile.WaterCovered) {&lt;br /&gt;
            return -100f;&lt;br /&gt;
        }&lt;br /&gt;
        // We don't want to generate where it's too cold&lt;br /&gt;
        if (tile.temperature &amp;lt; -10f) {&lt;br /&gt;
            return 0f;&lt;br /&gt;
        }&lt;br /&gt;
        //We don't want to generate where there is a lot of rain&lt;br /&gt;
        if (tile.rainfall &amp;lt; 600f) {&lt;br /&gt;
            return 0f;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // We use the tileId as part of the seed to get a constant for each tile.&lt;br /&gt;
        // &amp;quot;^&amp;quot; is to perform a bitwise XOR operation&lt;br /&gt;
        // 0x11245d7a is a random hexadecimal value&lt;br /&gt;
        // We add these last two pieces so that if another mod randomly generates their tiles, the values won't be the same&lt;br /&gt;
        // If our random value is above 0.009 we won't generate here&lt;br /&gt;
        // This might seem like a small amount, but there is over 100,000 tiles on a map with 30% coverage so the odds are quite high&lt;br /&gt;
        if (Rand.ValueSeeded(planetTile.tileId ^ 0x11245d7a) &amp;gt; 0.009f) {&lt;br /&gt;
            return 0f;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // A formula to calculate the score at this tile.&lt;br /&gt;
        return (float)(16.0 + (tile.temperature - 7.0) + (tile.rainfall - 600.0) / 180.0);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== About Terrain modifiers ==&lt;br /&gt;
&lt;br /&gt;
There are many terrain modifiers like &amp;lt;code&amp;gt;lakeBeachTerrain&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;gravelTerrain&amp;lt;/code&amp;gt;. These are used by MapGenUtility to get the appropriate terrain at a specific cell. These can change depending on if you have a [[Landmarks#Mixed_biome|mixed biome]]{{OdysseyIcon}} or a &amp;lt;code&amp;gt;tileMutatorDef&amp;lt;/code&amp;gt; that overrides a terrain such as &amp;lt;code&amp;gt;overrideLakeBeachTerrain&amp;lt;/code&amp;gt;. Note that not every terrain modifier has an equivalent override. Some specific terrain may be hardcoded.&lt;br /&gt;
&lt;br /&gt;
== Places That Use Biomes ==&lt;br /&gt;
&lt;br /&gt;
In addition to the fields required for biomes, some feilds require knowledge of the biome to trigger specific events or occurences. In these cases a [[Modding_Tutorials/PatchOperations|patch operation]] will be necessary&lt;br /&gt;
&lt;br /&gt;
=== Animals and plants ===&lt;br /&gt;
&lt;br /&gt;
Animals and plants can also set where they spawn in their raceProperties and plantProperties respectively. Duplicates are not allowed between the biome and properties list. Either method is acceptable for appearance rates. However, if you are creating a biome, it might be more sensible to place the appearances in the &amp;lt;code&amp;gt;BiomeDef&amp;lt;/code&amp;gt;. Additionally, you are not able to set their pollution appearance rate or coastal appearance rate through their properties field either.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;IncidentDef&amp;lt;/code&amp;gt;s ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Ambush&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ManhunterAmbush&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;CaravanMeeting&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;CaravanDemand&amp;lt;/code&amp;gt; requires a biome listed in their &amp;lt;code&amp;gt;mtbDaysByBiome&amp;lt;/code&amp;gt; to be considered a valid map to have their incidents occur.&lt;br /&gt;
Some incidents have &amp;lt;code&amp;gt;sallowedBiomes&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;disallowedBiomes&amp;lt;/code&amp;gt;. [[Events#Beavers!|Alphabeavers]] for example can only appear in the Tundra or Arid Shrubland.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;FeatureDef&amp;lt;/code&amp;gt;s ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;FeatureDef&amp;lt;/code&amp;gt;s generate names that can appear alongside landforms on the world map. These are things like &amp;quot;Barra Sea&amp;quot;, &amp;quot;Bat Cheek Flats&amp;quot;, and &amp;quot;Gorar Desert&amp;quot;. Some &amp;lt;code&amp;gt;FeatureDef&amp;lt;/code&amp;gt;s have &amp;lt;code&amp;gt;rootBiome&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;acceptableBiome&amp;lt;/code&amp;gt;. For example, the &amp;lt;code&amp;gt;Desert&amp;lt;/code&amp;gt; FeatureDef has &amp;lt;code&amp;gt;Desert&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ExtremeDesert&amp;lt;/code&amp;gt; as &amp;lt;code&amp;gt;rootBiomes&amp;lt;/code&amp;gt; meaning at least one of these are required for an area to be given this name. &amp;lt;code&amp;gt;acceptableBiomes&amp;lt;/code&amp;gt; are adjacent biomes that can also fulfill the qualifications for the Desert Feature. This is purely for visual and does not have impact on gameplay.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s ===&lt;br /&gt;
Most &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s in Odyssey will not be active on a biome unless they are patched into the TileMutatorDefs &amp;lt;code&amp;gt;biomeWhitelist&amp;lt;/code&amp;gt;. You can also restrict certain biomes using the &amp;lt;code&amp;gt;biomeBlacklist&amp;lt;/code&amp;gt;. [[Modding_Tutorials/Mod_Folder_Structure#LoadFolders.xml_.28Optional.29|LoadFolders]] is recommended here.&lt;br /&gt;
&lt;br /&gt;
[[Category:Modding tutorials]]&lt;/div&gt;</summary>
		<author><name>Halicade</name></author>
	</entry>
	<entry>
		<id>https://rimworldwiki.com/index.php?title=Modding_Tutorials/Biomes&amp;diff=177709</id>
		<title>Modding Tutorials/Biomes</title>
		<link rel="alternate" type="text/html" href="https://rimworldwiki.com/index.php?title=Modding_Tutorials/Biomes&amp;diff=177709"/>
		<updated>2026-03-16T02:12:51Z</updated>

		<summary type="html">&lt;p&gt;Halicade: Added info about using Rand&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Biomes}}&lt;br /&gt;
&lt;br /&gt;
{{BackToTutorials}}&lt;br /&gt;
&lt;br /&gt;
{{:Modding_Tutorials/Under_Review}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is a basic overview of biomes and their creation. As well as different places that a biome is taken into consideration.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;BiomeDef&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Biomes are defined in XML using &amp;lt;code&amp;gt;BiomeDef&amp;lt;/code&amp;gt; [[Modding_Tutorials/Defs|Defs]]. As with all Defs, looking at the vanilla examples is a great way to get a feel for how the system is used.&lt;br /&gt;
In order to generate a biome on the world map, biomes also require a &amp;lt;code&amp;gt;workerClass&amp;lt;/code&amp;gt; defined in code. See [[Modding_Tutorials/Setting_up_a_solution|Setting up a solution]] to get started.&lt;br /&gt;
&lt;br /&gt;
=== Fields ===&lt;br /&gt;
&lt;br /&gt;
The following are valid fields in &amp;lt;code&amp;gt;BiomeDef&amp;lt;/code&amp;gt;. Not all fields are necessary, look at vanilla BiomeDefs for examples.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;TutorialTableWrapper&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;TutorialCodeTable&amp;quot;&lt;br /&gt;
! XML Example !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;workerClass&amp;gt;MyCustomBiome.BiomeWorker_CustomForest&amp;lt;/workerClass&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A reference to code that defines where your biome will spawn on the world map. In Rimworld, these start with &amp;lt;code&amp;gt;BiomeWorker&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;implemented&amp;gt;true&amp;lt;/true&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if the biome gets generated from &amp;lt;code&amp;gt;WorldGenStep_Terrain&amp;lt;/code&amp;gt;. Defaults to true. Likely this is used for debugging/development purposes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;generatesNaturally&amp;gt;true&amp;lt;/generatesNaturally&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if the biome gets generated from &amp;lt;code&amp;gt;WorldGenStep_Terrain&amp;lt;/code&amp;gt;. Requires &amp;lt;code&amp;gt;implemented&amp;lt;/code&amp;gt; to be true. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;canBuildBase&amp;gt;true&amp;lt;/canBuildBase&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if a player or npc faction can be generated here. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;settlementSelectionWeight&amp;gt;0.75&amp;lt;/settlementSelectionWeight&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
How likely a settlement can spawn on the selected tile. This is a value from 0-1. Defaults to 1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowRoads&amp;gt;true&amp;lt;/allowRoads&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Whether roads can appear on this biome. Note that unless both this and &amp;lt;code&amp;gt;allowRivers&amp;lt;/code&amp;gt; are false, roads will still display visually. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowRivers&amp;gt;true&amp;lt;/allowRivers&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Whether rivers can appear on this biome. Note that unless both this and &amp;lt;code&amp;gt;allowRoads&amp;lt;/code&amp;gt; are false, rivers will still display visually. Defaults to true. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animalDensity&amp;gt;3.5&amp;lt;/animalDensity&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
How much animals will spawn on your biome. Higher numbers lead to an increase in animals.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;plantDensity&amp;gt;0.7&amp;lt;/plantDensity&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
How many plants will spawn on your biome. Higher numbers lead to an increase in plants.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowFarmingCamps&amp;gt;true&amp;lt;/allowFarmingCamps&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Ideology]] {{IdeologyIcon}} Only) Allow farming camps to spawn. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;campSelectionWeight&amp;gt;0.65&amp;lt;campSelectionWeight&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Ideology]] {{IdeologyIcon}} Only) How likely a camp can spawn on the selected tile. This is a value from 0-1. Defaults to 1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pollutionOffset&amp;gt;0.2&amp;lt;pollutionOffset&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Biotech]] {{BiotechIcon}} Only) This will be the biomes initial pollution. This can be increased during the world creation screen.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;impassable&amp;gt;false&amp;lt;/impassable&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Whether the biome can be passed via caravan.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;hasVirtualPlants&amp;gt;true&amp;lt;/hasVirtualPlants&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if animals are allowed to graze on this tile while caravanning. Defauilts to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;forageability&amp;gt;0.75&amp;lt;forageability&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A multiplier of nutrition [[forage]]d per day. Requires a &amp;lt;code&amp;gt;foragedFood&amp;lt;/code&amp;gt; defined. This is also used for animals that can forage ([[Odyssey]]{{OdysseyIcon}}).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;foragedFood&amp;gt;RawBerries&amp;lt;/foragedFood&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Food that will be retrieved.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildPlantsCareAboutLocalFertility&amp;gt;false&amp;lt;/wildPlantsCareAboutLocalFertility&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If this is false and the tile you are in is not a mixed biome, total plant population is based on the whole map rather than a 20 cell radius. Defauilts to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildPlantsAreCavePlants&amp;gt;true&amp;lt;/wildPlantsAreCavePlants&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Cave plants have their own weight which is used to place them in caves. This makes it so the weight defined in &amp;lt;code&amp;gt;wildPlants&amp;lt;/code&amp;gt; is used instead.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildPlantRegrowDays&amp;gt;13&amp;lt;/wildPlantRegrowDays&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A wild plant has a chance to regrow after a set number of days. Defaults to 25.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;movementDifficulty&amp;gt;1.25&amp;lt;/movementDifficulty&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The base movement difficulty for a caravan to travel across the tile. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;baseWeatherCommonalities&amp;gt;&lt;br /&gt;
  &amp;lt;Clear&amp;gt;18&amp;lt;/Clear&amp;gt;&lt;br /&gt;
  &amp;lt;Fog&amp;gt;1&amp;lt;/Fog&amp;gt;&lt;br /&gt;
  &amp;lt;Rain&amp;gt;2&amp;lt;/Rain&amp;gt;&lt;br /&gt;
  &amp;lt;DryThunderstorm&amp;gt;1&amp;lt;/DryThunderstorm&amp;gt;&lt;br /&gt;
  &amp;lt;RainyThunderstorm&amp;gt;1&amp;lt;/RainyThunderstorm&amp;gt;&lt;br /&gt;
  &amp;lt;FoggyRain&amp;gt;1&amp;lt;/FoggyRain&amp;gt;&lt;br /&gt;
  &amp;lt;SnowGentle&amp;gt;4&amp;lt;/SnowGentle&amp;gt;&lt;br /&gt;
  &amp;lt;SnowHard&amp;gt;4&amp;lt;/SnowHard&amp;gt;&lt;br /&gt;
  &amp;lt;GrayPall MayRequire=&amp;quot;Ludeon.RimWorld.Anomaly&amp;quot;&amp;gt;1&amp;lt;/GrayPall&amp;gt;&lt;br /&gt;
  &amp;lt;Overcast MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;2&amp;lt;/Overcast&amp;gt;&lt;br /&gt;
&amp;lt;/baseWeatherCommonalities&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
What weather events can occur and how often they can occur. Note that multiple other variables are taken into effect with weather&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;terrainsByFertility&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;terrain&amp;gt;Soil&amp;lt;/terrain&amp;gt;&lt;br /&gt;
    &amp;lt;min&amp;gt;-999&amp;lt;/min&amp;gt;&lt;br /&gt;
    &amp;lt;max&amp;gt;0.87&amp;lt;/max&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;terrain&amp;gt;SoilRich&amp;lt;/terrain&amp;gt;&lt;br /&gt;
    &amp;lt;min&amp;gt;0.87&amp;lt;/min&amp;gt;&lt;br /&gt;
    &amp;lt;max&amp;gt;999&amp;lt;/max&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/terrainsByFertility&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The terrain that will appear based on fertility values generated by the genSteps &amp;lt;code&amp;gt;ElevationFertility&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;MutatorPostElevationFertility&amp;lt;/code&amp;gt;. Will default to regular soil if a value is omitted.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;terrainPatchMakers&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;perlinFrequency&amp;gt;0.04&amp;lt;/perlinFrequency&amp;gt;&lt;br /&gt;
    &amp;lt;thresholds&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&lt;br /&gt;
        &amp;lt;terrain&amp;gt;MarshyTerrain&amp;lt;/terrain&amp;gt;&lt;br /&gt;
        &amp;lt;min&amp;gt;0.7&amp;lt;/min&amp;gt;&lt;br /&gt;
        &amp;lt;max&amp;gt;999&amp;lt;/max&amp;gt;&lt;br /&gt;
      &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/thresholds&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/terrainPatchMakers&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Terrain generated through perlin noise. This can be used for patches of highly fertile soil, marshes, ponds, or other variable land. For a visual representation, you can use the [[Development_mode|Dev mode]] command &amp;lt;code&amp;gt;Map noise visualizer&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;soundsAmbient&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Ambient_NightInsects_Standard&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/soundsAmbient&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Sounds that will play when zoomed in on the map.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildPlants&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_TallGrass&amp;gt;3.2&amp;lt;/Plant_TallGrass&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Chokevine&amp;gt;0.8&amp;lt;/Plant_Chokevine&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Bush&amp;gt;0.2&amp;lt;/Plant_Bush&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Witchwood MayRequire=&amp;quot;Ludeon.RimWorld.Biotech&amp;quot;&amp;gt;1.0&amp;lt;/Plant_Witchwood&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Reeds MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Plant_Reeds&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_LilyPad MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.2&amp;lt;/Plant_LilyPad&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Bulrush MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.2&amp;lt;/Plant_Bulrush&amp;gt;&lt;br /&gt;
  &amp;lt;MCP_MyCustomPlant MayRequire=&amp;quot;username.CustomPlantMod&amp;quot;&amp;gt;0.3&amp;lt;/MCP_MyCustomPlant&amp;gt;&lt;br /&gt;
&amp;lt;/wildPlants&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
What plants can spawn in the wild for this biome. Based on weight. These can also be included on an plants properties. Duplicates are not allowed between the two. Plants that appear due to pollution appear in this list as well.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildAnimals&amp;gt;&lt;br /&gt;
  &amp;lt;Donkey&amp;gt;0.34&amp;lt;/Donkey&amp;gt;&lt;br /&gt;
  &amp;lt;GuineaPig&amp;gt;0.48&amp;lt;/GuineaPig&amp;gt;&lt;br /&gt;
  &amp;lt;Yak&amp;gt;0.05&amp;lt;/Yak&amp;gt;&lt;br /&gt;
  &amp;lt;Bison&amp;gt;0.06&amp;lt;/Bison&amp;gt;&lt;br /&gt;
  &amp;lt;Crow MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.6&amp;lt;/Crow&amp;gt;&lt;br /&gt;
  &amp;lt;Bluebird MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.6&amp;lt;/Bluebird&amp;gt;&lt;br /&gt;
  &amp;lt;Quail MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.6&amp;lt;/Quail&amp;gt;&lt;br /&gt;
  &amp;lt;MCA_MyCustomAnimal MayRequire=&amp;quot;username.CustomAnimalMod&amp;quot;&amp;gt;0.3&amp;lt;/MCP_MyCustomanimal&amp;gt;&lt;br /&gt;
&amp;lt;/wildAnimals&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
What animals can spawn in the biome based on weight. These can also be included on an animals race properties. Duplicates are not allowed between the two.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pollutionWildAnimals&amp;gt;&lt;br /&gt;
  &amp;lt;Toxalope MayRequire=&amp;quot;Ludeon.RimWorld.Biotech&amp;quot;&amp;gt;0.3&amp;lt;/Toxalope&amp;gt;&lt;br /&gt;
  &amp;lt;WasteRat MayRequire=&amp;quot;Ludeon.RimWorld.Biotech&amp;quot;&amp;gt;0.4&amp;lt;/WasteRat&amp;gt;&lt;br /&gt;
  &amp;lt;Rat&amp;gt;1&amp;lt;/Rat&amp;gt;&lt;br /&gt;
  &amp;lt;Raccoon&amp;gt;0.5&amp;lt;/Raccoon&amp;gt;&lt;br /&gt;
&amp;lt;/pollutionWildAnimals&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Biotech]] {{BiotechIcon}} Only) Animals defined in this field will only spawn if there is pollution on the map. The chance of these animals spawning is based on a curve with a 10% chance at 25% pollution, 90% chance at 75% pollution and 100% at 100% pollution&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;coastalWildAnimals&amp;gt;&lt;br /&gt;
  &amp;lt;SeaLion MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.1&amp;lt;/SeaLion&amp;gt;&lt;br /&gt;
  &amp;lt;Seal MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.1&amp;lt;/Seal&amp;gt;&lt;br /&gt;
&amp;lt;/coastalWildAnimals&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) Animals defined here will spawn if the tile has the &amp;lt;code&amp;gt;Coast&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;. A coast requires a tile neighboring an ocean tile.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;diseaseMtbDays&amp;gt;50&amp;lt;/diseaseMtbDays&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The mean time between a disease incident occurring. Possible diseases are chosen from &amp;lt;code&amp;gt;diseases&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;diseases&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;diseaseInc&amp;gt;Disease_Flu&amp;lt;/diseaseInc&amp;gt;&lt;br /&gt;
    &amp;lt;commonality&amp;gt;120&amp;lt;/commonality&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;diseaseInc&amp;gt;Disease_Plague&amp;lt;/diseaseInc&amp;gt;&lt;br /&gt;
    &amp;lt;commonality&amp;gt;80&amp;lt;/commonality&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/diseases&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Possible diseases that can occur. One will be chosen at random by weight&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowedPackAnimals&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Muffalo&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Alpaca&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/allowedPackAnimals&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Pack animals that can appear from caravan traders.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;hasBedrock&amp;gt;true&amp;lt;/hasBedrock&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If a tile can be [[Deep_drill|deep drilled]] for materials. Defaults to true. Also prevents the [[Ground-penetrating_scanner|Ground-penetrating scanner]] from working on this tile.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;isExtremeBiome&amp;gt;true&amp;lt;/isExtremeBiome&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Prevents spawning of Special trees. Defaults to false.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;isWaterBiome&amp;gt;false&amp;lt;/isWaterBiome&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Unused field that is located on Ocean and Lake biomes.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowPollution&amp;gt;true&amp;lt;/allowPollution&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Pollution can appear on the world maps tile. Defaults to true. Note that this tile can still be polluted while on the map tile or by sending a drop-pod of wastepacks to the area.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildAnimalsCanWanderInto&amp;gt;true&amp;lt;/wildAnimalsCanWanderInto&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If false, animals will not appear when using the draw animals [[Anomaly]] Ritual. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;noAmbientWind&amp;gt;false&amp;lt;/noAmbientWind&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If false, When the camera is zoomed out, you will hear wind effects.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;inVacuum&amp;gt;false&amp;lt;/inVacuum&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) Tiles from this map will have no oxygen. [[Wind_turbine|Wind turbines]] will be unable to function.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;disableSkyLighting&amp;gt;false&amp;lt;/disableSkyLighting&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Enables Sky Lighting. This is from weather events as well as day/night time.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;disableShadows&amp;gt;false&amp;lt;/disableShadows&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Shadows from buildings and structures will not be displayed.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;canExitMap&amp;gt;true&amp;lt;/canExitMap&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if pawns are able to leave the map through caravan or other means. Defaults to True.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;onlyAllowWhitelistedArrivalModes&amp;gt;false&amp;lt;/onlyAllowWhitelistedArrivalModes&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Only allow arrival modes for pawns as specified in their &amp;lt;code&amp;gt;PawnsArrivalModeDef&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;isBackgroundBiome&amp;gt;false&amp;lt;/isBackgroundBiome&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Rotates coastal landmarks in the correct orientation when needed. Used for Ocean and Lake biomes.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildAnimalScariaChance&amp;gt;0.3&amp;lt;/wildAnimalScariaChance&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The chance that a wild animal spawned will have scaria. Defaults to 0.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;geyserCountFactor&amp;gt;0.75&amp;lt;/geyserCountFactor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Multiplies the amount of Steam Geysers that can appear on the map. Defaults to 1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;constantOutdoorTemperature&amp;gt;10&amp;lt;/constantOutdoorTemperature&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A set temperature for a map. Measured in Celsius.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;coastalBeachTerrain&amp;gt;Mud&amp;lt;/coastalBeachTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating beach. Defaults to sand.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;lakeBeachTerrain&amp;gt;Ice&amp;lt;/lakeBeachTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating a lake or beach. Defaults to sand.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;riverbankTerrain&amp;gt;Marsh&amp;lt;/riverbankTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used for the sides of a river. Requires a &amp;lt;code&amp;gt;riverbankSizeRange&amp;lt;/code&amp;gt; defined. Defaults to RiverBank.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;riverbankSizeRange&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Size of a riverbank that can appear alongside a river.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mudTerrain&amp;gt;MossyTerrain&amp;lt;/mudTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) Defines what terrain should be used when generating a Wetlands Tile mutator. Defaults to Mud.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;noGravel&amp;gt;false&amp;lt;/noGravel&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If Gravel (Stony soil) should be generated. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gravelTerrain&amp;gt;Ice&amp;lt;/gravelTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain to use when generating gravel. Defaults to Stony Soil. Requires &amp;lt;code&amp;gt;noGravel&amp;lt;/code&amp;gt; to be false.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;waterShallowTerrain&amp;gt;SoilRich&amp;lt;waterShallowTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain to use when generating shallow water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to shallow water.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;waterDeepTerrain&amp;gt;WaterOceanDeep&amp;lt;/waterDeepTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain to use when generating deep water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to deep water.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;oceanShallowTerrain&amp;gt;MossyTerrain&amp;lt;/oceanShallowTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating shallow ocean water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to shallow ocean Water&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;oceanDeepTerrain&amp;gt;Mud&amp;lt;/oceanDeepTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating Deep ocean water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to deep ocean water&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;waterMovingShallowTerrain&amp;gt;Mud&amp;lt;/waterMovingShallowTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating shallow moving water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to shallow moving water&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;waterMovingChestDeepTerrain&amp;gt;Sand&amp;lt;/waterMovingChestDeepTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating deep moving water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to chest-deep moving water&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;biomeMapConditions&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;SolarFlare&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;biomeMapConditions&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A list of permanent &amp;lt;code&amp;gt;GameConditionDef&amp;lt;/code&amp;gt; that can occur on the map.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extraGenSteps&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;MNCS_CheeseChunks&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;MNCS_MoonHives&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;MNCS_FixPlayerStartSpot&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/extraGenSteps&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Extra &amp;lt;code&amp;gt;GenStepDef&amp;lt;/code&amp;gt; that can occur on this biomes maps.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;preventGenSteps&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;RockChunks&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;CaveHives&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/preventGenSteps&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
These &amp;lt;code&amp;gt;GenStepDef&amp;lt;/code&amp;gt; will not occur on this biomes maps.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extraRockTypes&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;SolidIce&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/extraRockTypes&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Provided that the rock is defined as &amp;lt;code&amp;gt;biomeSpecific&amp;lt;/code&amp;gt;, these rocks will be able to appear on the selected biome naturally&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;forceRockTypes&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Sandstone&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/forceRockTypes&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Only rocks defined in this field will appear. This is a 100% rate meaning no variation on the biome.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;maxFishPopulation&amp;gt;500&amp;lt;/maxFishPopulation&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) The maximum amount of fish a body of water is able to have. Defaults to 0.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fishTypes&amp;gt;&lt;br /&gt;
  &amp;lt;freshwater_Common&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Bass MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Bass&amp;gt;&lt;br /&gt;
  &amp;lt;/freshwater_Common&amp;gt;&lt;br /&gt;
  &amp;lt;freshwater_Uncommon&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Catfish MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Catfish&amp;gt;&lt;br /&gt;
  &amp;lt;/freshwater_Uncommon&amp;gt;&lt;br /&gt;
  &amp;lt;saltwater_Common&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Bluefish MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Bluefish&amp;gt;&lt;br /&gt;
  &amp;lt;/saltwater_Common&amp;gt;&lt;br /&gt;
  &amp;lt;saltwater_Uncommon&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Marlin MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Marlin&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Flounder MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Flounder&amp;gt;&lt;br /&gt;
  &amp;lt;/saltwater_Uncommon&amp;gt;&lt;br /&gt;
  &amp;lt;rareCatchesSetMaker &lt;br /&gt;
  MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;RareFishingCatches_Temperate&amp;lt;/rareCatchesSetMaker&amp;gt;&lt;br /&gt;
&amp;lt;/fishTypes&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) Fish that can appear in bodies of water. If multiple fish are in a list, one is randomly chosen. If a category is not present, no fish from that category will appear. Despite there being a &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; to indicate chance, this field is not utilized.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;layerWhitelist&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;MP_MyCustomPlanetLayer&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/layerWhitelist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
&amp;lt;code&amp;gt;PlanetLayerDef&amp;lt;/code&amp;gt; this biome is allowed to occur in. If this is set it will only appear on the specified layers&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;layerBlacklist&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Surface&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/layerBlacklist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
&amp;lt;code&amp;gt;PlanetLayerDef&amp;lt;/code&amp;gt; this biome is not allowed to occur in. If this is set it will not appear in on the specified layers&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;settleWarning&amp;gt;This biome is very dangerous.&amp;lt;/settleWarning&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A warning that can appear when trying to settle on a tile of that biome.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fogOfWarColor&amp;gt;(249,145,104)&amp;lt;/fogOfWarColor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The color of Fog of war. Fogged/undiscovered locations on your map. Default is null and this field is not necessary to fill in. Normal fog of war color is (77, 69, 66).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;orbitalDebris&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
TODO&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;texture&amp;gt;World/Biomes/MNCS_SurfaceSwiss&amp;lt;/texture&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The texture that will be displayed on the world map. Vanilla uses a 512x512 texture.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Determining Biome ==&lt;br /&gt;
&lt;br /&gt;
Biome calculation is done during world generations &amp;lt;code&amp;gt;WorldGenStep_Terrain&amp;lt;/code&amp;gt;. Each tile is calculated individually. After verifying the biome can be placed via the BiomeDefs &amp;lt;code&amp;gt;generatesNaturally&amp;lt;/code&amp;gt;, and the BiomeWorkers &amp;lt;code&amp;gt;CanPlaceOnLayer&amp;lt;/code&amp;gt;, it's score is calculated from the individual biome workers &amp;lt;code&amp;gt;GetScore&amp;lt;/code&amp;gt;. The biome with the highest score will be placed on that specific tile.&lt;br /&gt;
&lt;br /&gt;
=== Biome Generation ===&lt;br /&gt;
&lt;br /&gt;
There is no right or wrong way to create the score for biomes. If you look at biome workers, many of them will use different formula or logic to appear on the map. Here is an example used from the mod [https://github.com/Halicade/GuldenBiome/blob/master/Source/BiomeWorker.cs| Gulden Biome (Continued)].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cs&amp;quot;&amp;gt;&lt;br /&gt;
// We are subclassing the temperate forest biome worker&lt;br /&gt;
public class BiomeWorker_GuldenForest : BiomeWorker_TemperateForest&lt;br /&gt;
{&lt;br /&gt;
  public override float GetScore(BiomeDef biome, Tile tile, PlanetTile planetTile) {&lt;br /&gt;
    // We don't want to completely overwrite the parent biome. &lt;br /&gt;
    // That's why we only want tiles with an elevation between 500 and 800.&lt;br /&gt;
    if (tile.elevation is &amp;lt;= 500 or &amp;gt;= 800) {&lt;br /&gt;
        return 0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // Get what the score is of the parent biome, temperate forest&lt;br /&gt;
    float score = base.GetScore(biome, tile, planetTile);&lt;br /&gt;
    // If that score is 0 or less we don't want this biome there.&lt;br /&gt;
    if (score &amp;lt;= 0) {&lt;br /&gt;
        return 0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // We add 1.5 so that it is higher than the temperate forest.&lt;br /&gt;
    // We don't want this number too large, otherwise it will overwrite other biomes.&lt;br /&gt;
    return score + 1.5f;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using Rand ===&lt;br /&gt;
&lt;br /&gt;
If you want a biome to appear randomly around the world map, you need to seed your Rand value. Without this, if you were to regenerate the world using the same world seed, your biome would appear in different tiles. You can use &amp;lt;code&amp;gt;Rand.PushState&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Rand.PopState&amp;lt;/code&amp;gt;. Or you can use &amp;lt;code&amp;gt;Rand.ValueSeeded&amp;lt;/code&amp;gt; or any other method that allows for a seeded outcome. This below example comes from multiple different sources and was rewritten here for better understanding.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cs&amp;quot;&amp;gt;&lt;br /&gt;
public class BiomeWorker_MyCustomBiome : BiomeWorker&lt;br /&gt;
{&lt;br /&gt;
    public override float GetScore(BiomeDef biome, Tile tile, PlanetTile planetTile) {&lt;br /&gt;
        // We don't want to generate on water.&lt;br /&gt;
        if (tile.WaterCovered) {&lt;br /&gt;
            return -100f;&lt;br /&gt;
        }&lt;br /&gt;
        // We don't want to generate where it's too cold&lt;br /&gt;
        if (tile.temperature &amp;lt; -10f) {&lt;br /&gt;
            return 0f;&lt;br /&gt;
        }&lt;br /&gt;
        //We don't want to generate where there is a lot of rain&lt;br /&gt;
        if (tile.rainfall &amp;lt; 600f) {&lt;br /&gt;
            return 0f;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // We use the tileId as part of the seed to get a constant for each tile.&lt;br /&gt;
        // &amp;quot;^&amp;quot; is to perform a bitwise XOR operation&lt;br /&gt;
        // 0x11245d7a is a random hexadecimal value&lt;br /&gt;
        // We add these last two pieces so that if another mod randomly generates their tiles, the values won't be the same&lt;br /&gt;
        // If our random value is above 0.009 we won't generate here&lt;br /&gt;
        // This might seem like a small amount, but there is over 100,000 tiles on a map with 30% coverage so the odds are quite high&lt;br /&gt;
        if (Rand.ValueSeeded(planetTile.tileId ^ 0x11245d7a) &amp;gt; 0.009f) {&lt;br /&gt;
            return 0f;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // A formula to calculate the score at this tile.&lt;br /&gt;
        return (float)(16.0 + (tile.temperature - 7.0) + (tile.rainfall - 600.0) / 180.0);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== About Terrain modifiers ==&lt;br /&gt;
&lt;br /&gt;
There are many terrain modifiers like &amp;lt;code&amp;gt;lakeBeachTerrain&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;gravelTerrain&amp;lt;/code&amp;gt;. These are used by MapGenUtility to get the appropriate terrain at a specific cell. These can change depending on if you have a [[Landmarks#Mixed_biome|mixed biome]]{{OdysseyIcon}} or a &amp;lt;code&amp;gt;tileMutatorDef&amp;lt;/code&amp;gt; that overrides a terrain such as &amp;lt;code&amp;gt;overrideLakeBeachTerrain&amp;lt;/code&amp;gt;. Note that not every terrain modifier has an equivalent override. Some specific terrain may be hardcoded.&lt;br /&gt;
&lt;br /&gt;
== Places That Use Biomes ==&lt;br /&gt;
&lt;br /&gt;
In addition to the fields required for biomes, some feilds require knowledge of the biome to trigger specific events or occurences. In these cases a [[Modding_Tutorials/PatchOperations|patch operation]] will be necessary&lt;br /&gt;
&lt;br /&gt;
=== Animals and plants ===&lt;br /&gt;
&lt;br /&gt;
Animals and plants can also set where they spawn in their raceProperties and plantProperties respectively. Duplicates are not allowed between the biome and properties list. Either method is acceptable for appearance rates. However, if you are creating a biome, it might be more sensible to place the appearances in the &amp;lt;code&amp;gt;BiomeDef&amp;lt;/code&amp;gt;. Additionally, you are not able to set their pollution appearance rate or coastal appearance rate through their properties field either.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;IncidentDef&amp;lt;/code&amp;gt;s ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Ambush&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ManhunterAmbush&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;CaravanMeeting&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;CaravanDemand&amp;lt;/code&amp;gt; requires a biome listed in their &amp;lt;code&amp;gt;mtbDaysByBiome&amp;lt;/code&amp;gt; to be considered a valid map to have their incidents occur.&lt;br /&gt;
Some incidents have &amp;lt;code&amp;gt;sallowedBiomes&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;disallowedBiomes&amp;lt;/code&amp;gt;. [[Events#Beavers!|Alphabeavers]] for example can only appear in the Tundra or Arid Shrubland.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;FeatureDef&amp;lt;/code&amp;gt;s ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;FeatureDef&amp;lt;/code&amp;gt;s generate names that can appear alongside landforms on the world map. These are things like &amp;quot;Barra Sea&amp;quot;, &amp;quot;Bat Cheek Flats&amp;quot;, and &amp;quot;Gorar Desert&amp;quot;. Some &amp;lt;code&amp;gt;FeatureDef&amp;lt;/code&amp;gt;s have &amp;lt;code&amp;gt;rootBiome&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;acceptableBiome&amp;lt;/code&amp;gt;. For example, the &amp;lt;code&amp;gt;Desert&amp;lt;/code&amp;gt; FeatureDef has &amp;lt;code&amp;gt;Desert&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ExtremeDesert&amp;lt;/code&amp;gt; as &amp;lt;code&amp;gt;rootBiomes&amp;lt;/code&amp;gt; meaning at least one of these are required for an area to be given this name. &amp;lt;code&amp;gt;acceptableBiomes&amp;lt;/code&amp;gt; are adjacent biomes that can also fulfill the qualifications for the Desert Feature. This is purely for visual and does not have impact on gameplay.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s ===&lt;br /&gt;
Most &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s in Odyssey will not be active on a biome unless they are patched into the TileMutatorDefs &amp;lt;code&amp;gt;biomeWhitelist&amp;lt;/code&amp;gt;. You can also restrict certain biomes using the &amp;lt;code&amp;gt;biomeBlacklist&amp;lt;/code&amp;gt;. [[Modding_Tutorials/Mod_Folder_Structure#LoadFolders.xml_.28Optional.29|LoadFolders]] is recommended here.&lt;br /&gt;
&lt;br /&gt;
[[Category:Modding tutorials]]&lt;/div&gt;</summary>
		<author><name>Halicade</name></author>
	</entry>
	<entry>
		<id>https://rimworldwiki.com/index.php?title=Modding_Tutorials/Biomes&amp;diff=176700</id>
		<title>Modding Tutorials/Biomes</title>
		<link rel="alternate" type="text/html" href="https://rimworldwiki.com/index.php?title=Modding_Tutorials/Biomes&amp;diff=176700"/>
		<updated>2026-03-05T19:10:04Z</updated>

		<summary type="html">&lt;p&gt;Halicade: wildPlantsAreCavePlants fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Biomes}}&lt;br /&gt;
&lt;br /&gt;
{{BackToTutorials}}&lt;br /&gt;
&lt;br /&gt;
{{:Modding_Tutorials/Under_Review}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is a basic overview of biomes and their creation. As well as different places that a biome is taken into consideration.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;BiomeDef&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Biomes are defined in XML using &amp;lt;code&amp;gt;BiomeDef&amp;lt;/code&amp;gt; [[Modding_Tutorials/Defs|Defs]]. As with all Defs, looking at the vanilla examples is a great way to get a feel for how the system is used.&lt;br /&gt;
In order to generate a biome on the world map, biomes also require a &amp;lt;code&amp;gt;workerClass&amp;lt;/code&amp;gt; defined in code. See [[Modding_Tutorials/Setting_up_a_solution|Setting up a solution]] to get started.&lt;br /&gt;
&lt;br /&gt;
=== Fields ===&lt;br /&gt;
&lt;br /&gt;
The following are valid fields in &amp;lt;code&amp;gt;BiomeDef&amp;lt;/code&amp;gt;. Not all fields are necessary, look at vanilla BiomeDefs for examples.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;TutorialTableWrapper&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;TutorialCodeTable&amp;quot;&lt;br /&gt;
! XML Example !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;workerClass&amp;gt;MyCustomBiome.BiomeWorker_CustomForest&amp;lt;/workerClass&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A reference to code that defines where your biome will spawn on the world map. In Rimworld, these start with &amp;lt;code&amp;gt;BiomeWorker&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;implemented&amp;gt;true&amp;lt;/true&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if the biome gets generated from &amp;lt;code&amp;gt;WorldGenStep_Terrain&amp;lt;/code&amp;gt;. Defaults to true. Likely this is used for debugging/development purposes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;generatesNaturally&amp;gt;true&amp;lt;/generatesNaturally&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if the biome gets generated from &amp;lt;code&amp;gt;WorldGenStep_Terrain&amp;lt;/code&amp;gt;. Requires &amp;lt;code&amp;gt;implemented&amp;lt;/code&amp;gt; to be true. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;canBuildBase&amp;gt;true&amp;lt;/canBuildBase&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if a player or npc faction can be generated here. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;settlementSelectionWeight&amp;gt;0.75&amp;lt;/settlementSelectionWeight&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
How likely a settlement can spawn on the selected tile. This is a value from 0-1. Defaults to 1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowRoads&amp;gt;true&amp;lt;/allowRoads&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Whether roads can appear on this biome. Note that unless both this and &amp;lt;code&amp;gt;allowRivers&amp;lt;/code&amp;gt; are false, roads will still display visually. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowRivers&amp;gt;true&amp;lt;/allowRivers&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Whether rivers can appear on this biome. Note that unless both this and &amp;lt;code&amp;gt;allowRoads&amp;lt;/code&amp;gt; are false, rivers will still display visually. Defaults to true. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animalDensity&amp;gt;3.5&amp;lt;/animalDensity&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
How much animals will spawn on your biome. Higher numbers lead to an increase in animals.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;plantDensity&amp;gt;0.7&amp;lt;/plantDensity&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
How many plants will spawn on your biome. Higher numbers lead to an increase in plants.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowFarmingCamps&amp;gt;true&amp;lt;/allowFarmingCamps&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Ideology]] {{IdeologyIcon}} Only) Allow farming camps to spawn. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;campSelectionWeight&amp;gt;0.65&amp;lt;campSelectionWeight&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Ideology]] {{IdeologyIcon}} Only) How likely a camp can spawn on the selected tile. This is a value from 0-1. Defaults to 1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pollutionOffset&amp;gt;0.2&amp;lt;pollutionOffset&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Biotech]] {{BiotechIcon}} Only) This will be the biomes initial pollution. This can be increased during the world creation screen.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;impassable&amp;gt;false&amp;lt;/impassable&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Whether the biome can be passed via caravan.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;hasVirtualPlants&amp;gt;true&amp;lt;/hasVirtualPlants&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if animals are allowed to graze on this tile while caravanning. Defauilts to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;forageability&amp;gt;0.75&amp;lt;forageability&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A multiplier of nutrition [[forage]]d per day. Requires a &amp;lt;code&amp;gt;foragedFood&amp;lt;/code&amp;gt; defined. This is also used for animals that can forage ([[Odyssey]]{{OdysseyIcon}}).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;foragedFood&amp;gt;RawBerries&amp;lt;/foragedFood&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Food that will be retrieved.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildPlantsCareAboutLocalFertility&amp;gt;false&amp;lt;/wildPlantsCareAboutLocalFertility&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If this is false and the tile you are in is not a mixed biome, total plant population is based on the whole map rather than a 20 cell radius. Defauilts to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildPlantsAreCavePlants&amp;gt;true&amp;lt;/wildPlantsAreCavePlants&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Cave plants have their own weight which is used to place them in caves. This makes it so the weight defined in &amp;lt;code&amp;gt;wildPlants&amp;lt;/code&amp;gt; is used instead.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildPlantRegrowDays&amp;gt;13&amp;lt;/wildPlantRegrowDays&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A wild plant has a chance to regrow after a set number of days. Defaults to 25.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;movementDifficulty&amp;gt;1.25&amp;lt;/movementDifficulty&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The base movement difficulty for a caravan to travel across the tile. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;baseWeatherCommonalities&amp;gt;&lt;br /&gt;
  &amp;lt;Clear&amp;gt;18&amp;lt;/Clear&amp;gt;&lt;br /&gt;
  &amp;lt;Fog&amp;gt;1&amp;lt;/Fog&amp;gt;&lt;br /&gt;
  &amp;lt;Rain&amp;gt;2&amp;lt;/Rain&amp;gt;&lt;br /&gt;
  &amp;lt;DryThunderstorm&amp;gt;1&amp;lt;/DryThunderstorm&amp;gt;&lt;br /&gt;
  &amp;lt;RainyThunderstorm&amp;gt;1&amp;lt;/RainyThunderstorm&amp;gt;&lt;br /&gt;
  &amp;lt;FoggyRain&amp;gt;1&amp;lt;/FoggyRain&amp;gt;&lt;br /&gt;
  &amp;lt;SnowGentle&amp;gt;4&amp;lt;/SnowGentle&amp;gt;&lt;br /&gt;
  &amp;lt;SnowHard&amp;gt;4&amp;lt;/SnowHard&amp;gt;&lt;br /&gt;
  &amp;lt;GrayPall MayRequire=&amp;quot;Ludeon.RimWorld.Anomaly&amp;quot;&amp;gt;1&amp;lt;/GrayPall&amp;gt;&lt;br /&gt;
  &amp;lt;Overcast MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;2&amp;lt;/Overcast&amp;gt;&lt;br /&gt;
&amp;lt;/baseWeatherCommonalities&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
What weather events can occur and how often they can occur. Note that multiple other variables are taken into effect with weather&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;terrainsByFertility&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;terrain&amp;gt;Soil&amp;lt;/terrain&amp;gt;&lt;br /&gt;
    &amp;lt;min&amp;gt;-999&amp;lt;/min&amp;gt;&lt;br /&gt;
    &amp;lt;max&amp;gt;0.87&amp;lt;/max&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;terrain&amp;gt;SoilRich&amp;lt;/terrain&amp;gt;&lt;br /&gt;
    &amp;lt;min&amp;gt;0.87&amp;lt;/min&amp;gt;&lt;br /&gt;
    &amp;lt;max&amp;gt;999&amp;lt;/max&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/terrainsByFertility&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The terrain that will appear based on fertility values generated by the genSteps &amp;lt;code&amp;gt;ElevationFertility&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;MutatorPostElevationFertility&amp;lt;/code&amp;gt;. Will default to regular soil if a value is omitted.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;terrainPatchMakers&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;perlinFrequency&amp;gt;0.04&amp;lt;/perlinFrequency&amp;gt;&lt;br /&gt;
    &amp;lt;thresholds&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&lt;br /&gt;
        &amp;lt;terrain&amp;gt;MarshyTerrain&amp;lt;/terrain&amp;gt;&lt;br /&gt;
        &amp;lt;min&amp;gt;0.7&amp;lt;/min&amp;gt;&lt;br /&gt;
        &amp;lt;max&amp;gt;999&amp;lt;/max&amp;gt;&lt;br /&gt;
      &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/thresholds&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/terrainPatchMakers&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Terrain generated through perlin noise. This can be used for patches of highly fertile soil, marshes, ponds, or other variable land. For a visual representation, you can use the [[Development_mode|Dev mode]] command &amp;lt;code&amp;gt;Map noise visualizer&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;soundsAmbient&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Ambient_NightInsects_Standard&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/soundsAmbient&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Sounds that will play when zoomed in on the map.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildPlants&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_TallGrass&amp;gt;3.2&amp;lt;/Plant_TallGrass&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Chokevine&amp;gt;0.8&amp;lt;/Plant_Chokevine&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Bush&amp;gt;0.2&amp;lt;/Plant_Bush&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Witchwood MayRequire=&amp;quot;Ludeon.RimWorld.Biotech&amp;quot;&amp;gt;1.0&amp;lt;/Plant_Witchwood&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Reeds MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Plant_Reeds&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_LilyPad MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.2&amp;lt;/Plant_LilyPad&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Bulrush MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.2&amp;lt;/Plant_Bulrush&amp;gt;&lt;br /&gt;
  &amp;lt;MCP_MyCustomPlant MayRequire=&amp;quot;username.CustomPlantMod&amp;quot;&amp;gt;0.3&amp;lt;/MCP_MyCustomPlant&amp;gt;&lt;br /&gt;
&amp;lt;/wildPlants&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
What plants can spawn in the wild for this biome. Based on weight. These can also be included on an plants properties. Duplicates are not allowed between the two. Plants that appear due to pollution appear in this list as well.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildAnimals&amp;gt;&lt;br /&gt;
  &amp;lt;Donkey&amp;gt;0.34&amp;lt;/Donkey&amp;gt;&lt;br /&gt;
  &amp;lt;GuineaPig&amp;gt;0.48&amp;lt;/GuineaPig&amp;gt;&lt;br /&gt;
  &amp;lt;Yak&amp;gt;0.05&amp;lt;/Yak&amp;gt;&lt;br /&gt;
  &amp;lt;Bison&amp;gt;0.06&amp;lt;/Bison&amp;gt;&lt;br /&gt;
  &amp;lt;Crow MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.6&amp;lt;/Crow&amp;gt;&lt;br /&gt;
  &amp;lt;Bluebird MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.6&amp;lt;/Bluebird&amp;gt;&lt;br /&gt;
  &amp;lt;Quail MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.6&amp;lt;/Quail&amp;gt;&lt;br /&gt;
  &amp;lt;MCA_MyCustomAnimal MayRequire=&amp;quot;username.CustomAnimalMod&amp;quot;&amp;gt;0.3&amp;lt;/MCP_MyCustomanimal&amp;gt;&lt;br /&gt;
&amp;lt;/wildAnimals&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
What animals can spawn in the biome based on weight. These can also be included on an animals race properties. Duplicates are not allowed between the two.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pollutionWildAnimals&amp;gt;&lt;br /&gt;
  &amp;lt;Toxalope MayRequire=&amp;quot;Ludeon.RimWorld.Biotech&amp;quot;&amp;gt;0.3&amp;lt;/Toxalope&amp;gt;&lt;br /&gt;
  &amp;lt;WasteRat MayRequire=&amp;quot;Ludeon.RimWorld.Biotech&amp;quot;&amp;gt;0.4&amp;lt;/WasteRat&amp;gt;&lt;br /&gt;
  &amp;lt;Rat&amp;gt;1&amp;lt;/Rat&amp;gt;&lt;br /&gt;
  &amp;lt;Raccoon&amp;gt;0.5&amp;lt;/Raccoon&amp;gt;&lt;br /&gt;
&amp;lt;/pollutionWildAnimals&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Biotech]] {{BiotechIcon}} Only) Animals defined in this field will only spawn if there is pollution on the map. The chance of these animals spawning is based on a curve with a 10% chance at 25% pollution, 90% chance at 75% pollution and 100% at 100% pollution&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;coastalWildAnimals&amp;gt;&lt;br /&gt;
  &amp;lt;SeaLion MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.1&amp;lt;/SeaLion&amp;gt;&lt;br /&gt;
  &amp;lt;Seal MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.1&amp;lt;/Seal&amp;gt;&lt;br /&gt;
&amp;lt;/coastalWildAnimals&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) Animals defined here will spawn if the tile has the &amp;lt;code&amp;gt;Coast&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;. A coast requires a tile neighboring an ocean tile.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;diseaseMtbDays&amp;gt;50&amp;lt;/diseaseMtbDays&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The mean time between a disease incident occurring. Possible diseases are chosen from &amp;lt;code&amp;gt;diseases&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;diseases&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;diseaseInc&amp;gt;Disease_Flu&amp;lt;/diseaseInc&amp;gt;&lt;br /&gt;
    &amp;lt;commonality&amp;gt;120&amp;lt;/commonality&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;diseaseInc&amp;gt;Disease_Plague&amp;lt;/diseaseInc&amp;gt;&lt;br /&gt;
    &amp;lt;commonality&amp;gt;80&amp;lt;/commonality&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/diseases&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Possible diseases that can occur. One will be chosen at random by weight&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowedPackAnimals&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Muffalo&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Alpaca&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/allowedPackAnimals&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Pack animals that can appear from caravan traders.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;hasBedrock&amp;gt;true&amp;lt;/hasBedrock&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If a tile can be [[Deep_drill|deep drilled]] for materials. Defaults to true. Also prevents the [[Ground-penetrating_scanner|Ground-penetrating scanner]] from working on this tile.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;isExtremeBiome&amp;gt;true&amp;lt;/isExtremeBiome&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Prevents spawning of Special trees. Defaults to false.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;isWaterBiome&amp;gt;false&amp;lt;/isWaterBiome&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Unused field that is located on Ocean and Lake biomes.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowPollution&amp;gt;true&amp;lt;/allowPollution&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Pollution can appear on the world maps tile. Defaults to true. Note that this tile can still be polluted while on the map tile or by sending a drop-pod of wastepacks to the area.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildAnimalsCanWanderInto&amp;gt;true&amp;lt;/wildAnimalsCanWanderInto&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If false, animals will not appear when using the draw animals [[Anomaly]] Ritual. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;noAmbientWind&amp;gt;false&amp;lt;/noAmbientWind&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If false, When the camera is zoomed out, you will hear wind effects.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;inVacuum&amp;gt;false&amp;lt;/inVacuum&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) Tiles from this map will have no oxygen. [[Wind_turbine|Wind turbines]] will be unable to function.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;disableSkyLighting&amp;gt;false&amp;lt;/disableSkyLighting&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Enables Sky Lighting. This is from weather events as well as day/night time.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;disableShadows&amp;gt;false&amp;lt;/disableShadows&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Shadows from buildings and structures will not be displayed.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;canExitMap&amp;gt;true&amp;lt;/canExitMap&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if pawns are able to leave the map through caravan or other means. Defaults to True.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;onlyAllowWhitelistedArrivalModes&amp;gt;false&amp;lt;/onlyAllowWhitelistedArrivalModes&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Only allow arrival modes for pawns as specified in their &amp;lt;code&amp;gt;PawnsArrivalModeDef&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;isBackgroundBiome&amp;gt;false&amp;lt;/isBackgroundBiome&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Rotates coastal landmarks in the correct orientation when needed. Used for Ocean and Lake biomes.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildAnimalScariaChance&amp;gt;0.3&amp;lt;/wildAnimalScariaChance&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The chance that a wild animal spawned will have scaria. Defaults to 0.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;geyserCountFactor&amp;gt;0.75&amp;lt;/geyserCountFactor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Multiplies the amount of Steam Geysers that can appear on the map. Defaults to 1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;constantOutdoorTemperature&amp;gt;10&amp;lt;/constantOutdoorTemperature&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A set temperature for a map. Measured in Celsius.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;coastalBeachTerrain&amp;gt;Mud&amp;lt;/coastalBeachTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating beach. Defaults to sand.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;lakeBeachTerrain&amp;gt;Ice&amp;lt;/lakeBeachTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating a lake or beach. Defaults to sand.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;riverbankTerrain&amp;gt;Marsh&amp;lt;/riverbankTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used for the sides of a river. Requires a &amp;lt;code&amp;gt;riverbankSizeRange&amp;lt;/code&amp;gt; defined. Defaults to RiverBank.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;riverbankSizeRange&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Size of a riverbank that can appear alongside a river.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mudTerrain&amp;gt;MossyTerrain&amp;lt;/mudTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) Defines what terrain should be used when generating a Wetlands Tile mutator. Defaults to Mud.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;noGravel&amp;gt;false&amp;lt;/noGravel&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If Gravel (Stony soil) should be generated. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gravelTerrain&amp;gt;Ice&amp;lt;/gravelTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain to use when generating gravel. Defaults to Stony Soil. Requires &amp;lt;code&amp;gt;noGravel&amp;lt;/code&amp;gt; to be false.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;waterShallowTerrain&amp;gt;SoilRich&amp;lt;waterShallowTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain to use when generating shallow water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to shallow water.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;waterDeepTerrain&amp;gt;WaterOceanDeep&amp;lt;/waterDeepTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain to use when generating deep water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to deep water.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;oceanShallowTerrain&amp;gt;MossyTerrain&amp;lt;/oceanShallowTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating shallow ocean water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to shallow ocean Water&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;oceanDeepTerrain&amp;gt;Mud&amp;lt;/oceanDeepTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating Deep ocean water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to deep ocean water&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;waterMovingShallowTerrain&amp;gt;Mud&amp;lt;/waterMovingShallowTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating shallow moving water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to shallow moving water&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;waterMovingChestDeepTerrain&amp;gt;Sand&amp;lt;/waterMovingChestDeepTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating deep moving water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to chest-deep moving water&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;biomeMapConditions&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;SolarFlare&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;biomeMapConditions&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A list of permanent &amp;lt;code&amp;gt;GameConditionDef&amp;lt;/code&amp;gt; that can occur on the map.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extraGenSteps&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;MNCS_CheeseChunks&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;MNCS_MoonHives&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;MNCS_FixPlayerStartSpot&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/extraGenSteps&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Extra &amp;lt;code&amp;gt;GenStepDef&amp;lt;/code&amp;gt; that can occur on this biomes maps.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;preventGenSteps&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;RockChunks&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;CaveHives&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/preventGenSteps&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
These &amp;lt;code&amp;gt;GenStepDef&amp;lt;/code&amp;gt; will not occur on this biomes maps.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extraRockTypes&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;SolidIce&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/extraRockTypes&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Provided that the rock is defined as &amp;lt;code&amp;gt;biomeSpecific&amp;lt;/code&amp;gt;, these rocks will be able to appear on the selected biome naturally&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;forceRockTypes&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Sandstone&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/forceRockTypes&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Only rocks defined in this field will appear. This is a 100% rate meaning no variation on the biome.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;maxFishPopulation&amp;gt;500&amp;lt;/maxFishPopulation&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) The maximum amount of fish a body of water is able to have. Defaults to 0.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fishTypes&amp;gt;&lt;br /&gt;
  &amp;lt;freshwater_Common&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Bass MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Bass&amp;gt;&lt;br /&gt;
  &amp;lt;/freshwater_Common&amp;gt;&lt;br /&gt;
  &amp;lt;freshwater_Uncommon&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Catfish MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Catfish&amp;gt;&lt;br /&gt;
  &amp;lt;/freshwater_Uncommon&amp;gt;&lt;br /&gt;
  &amp;lt;saltwater_Common&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Bluefish MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Bluefish&amp;gt;&lt;br /&gt;
  &amp;lt;/saltwater_Common&amp;gt;&lt;br /&gt;
  &amp;lt;saltwater_Uncommon&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Marlin MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Marlin&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Flounder MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Flounder&amp;gt;&lt;br /&gt;
  &amp;lt;/saltwater_Uncommon&amp;gt;&lt;br /&gt;
  &amp;lt;rareCatchesSetMaker &lt;br /&gt;
  MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;RareFishingCatches_Temperate&amp;lt;/rareCatchesSetMaker&amp;gt;&lt;br /&gt;
&amp;lt;/fishTypes&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) Fish that can appear in bodies of water. If multiple fish are in a list, one is randomly chosen. If a category is not present, no fish from that category will appear. Despite there being a &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; to indicate chance, this field is not utilized.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;layerWhitelist&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;MP_MyCustomPlanetLayer&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/layerWhitelist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
&amp;lt;code&amp;gt;PlanetLayerDef&amp;lt;/code&amp;gt; this biome is allowed to occur in. If this is set it will only appear on the specified layers&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;layerBlacklist&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Surface&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/layerBlacklist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
&amp;lt;code&amp;gt;PlanetLayerDef&amp;lt;/code&amp;gt; this biome is not allowed to occur in. If this is set it will not appear in on the specified layers&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;settleWarning&amp;gt;This biome is very dangerous.&amp;lt;/settleWarning&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A warning that can appear when trying to settle on a tile of that biome.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fogOfWarColor&amp;gt;(249,145,104)&amp;lt;/fogOfWarColor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The color of Fog of war. Fogged/undiscovered locations on your map. Default is null and this field is not necessary to fill in. Normal fog of war color is (77, 69, 66).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;orbitalDebris&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
TODO&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;texture&amp;gt;World/Biomes/MNCS_SurfaceSwiss&amp;lt;/texture&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The texture that will be displayed on the world map. Vanilla uses a 512x512 texture.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Determining Biome ==&lt;br /&gt;
&lt;br /&gt;
Biome calculation is done during world generations &amp;lt;code&amp;gt;WorldGenStep_Terrain&amp;lt;/code&amp;gt;. Each tile is calculated individually. After verifying the biome can be placed via the BiomeDefs &amp;lt;code&amp;gt;generatesNaturally&amp;lt;/code&amp;gt;, and the BiomeWorkers &amp;lt;code&amp;gt;CanPlaceOnLayer&amp;lt;/code&amp;gt;, it's score is calculated from the individual biome workers &amp;lt;code&amp;gt;GetScore&amp;lt;/code&amp;gt;. The biome with the highest score will be placed on that specific tile.&lt;br /&gt;
&lt;br /&gt;
=== Biome Generation ===&lt;br /&gt;
&lt;br /&gt;
There is no right or wrong way to create the score for biomes. If you look at biome workers, many of them will use different formula or logic to appear on the map. Here is an example used from the mod [https://github.com/Halicade/GuldenBiome/blob/master/Source/BiomeWorker.cs| Gulden Biome (Continued)].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cs&amp;quot;&amp;gt;&lt;br /&gt;
// We are subclassing the temperate forest biome worker&lt;br /&gt;
public class BiomeWorker_GuldenForest : BiomeWorker_TemperateForest&lt;br /&gt;
{&lt;br /&gt;
  public override float GetScore(BiomeDef biome, Tile tile, PlanetTile planetTile) {&lt;br /&gt;
    // We don't want to completely overwrite the parent biome. &lt;br /&gt;
    // That's why we only want tiles with an elevation between 500 and 800.&lt;br /&gt;
    if (tile.elevation is &amp;lt;= 500 or &amp;gt;= 800) {&lt;br /&gt;
        return 0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // Get what the score is of the parent biome, temperate forest&lt;br /&gt;
    float score = base.GetScore(biome, tile, planetTile);&lt;br /&gt;
    // If that score is 0 or less we don't want this biome there.&lt;br /&gt;
    if (score &amp;lt;= 0) {&lt;br /&gt;
        return 0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // We add 1.5 so that it is higher than the temperate forest.&lt;br /&gt;
    // We don't want this number too large, otherwise it will overwrite other biomes.&lt;br /&gt;
    return score + 1.5f;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== About Terrain modifiers ==&lt;br /&gt;
&lt;br /&gt;
There are many terrain modifiers like &amp;lt;code&amp;gt;lakeBeachTerrain&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;gravelTerrain&amp;lt;/code&amp;gt;. These are used by MapGenUtility to get the appropriate terrain at a specific cell. These can change depending on if you have a [[Landmarks#Mixed_biome|mixed biome]]{{OdysseyIcon}} or a &amp;lt;code&amp;gt;tileMutatorDef&amp;lt;/code&amp;gt; that overrides a terrain such as &amp;lt;code&amp;gt;overrideLakeBeachTerrain&amp;lt;/code&amp;gt;. Note that not every terrain modifier has an equivalent override. Some specific terrain may be hardcoded.&lt;br /&gt;
&lt;br /&gt;
== Places That Use Biomes ==&lt;br /&gt;
&lt;br /&gt;
In addition to the fields required for biomes, some feilds require knowledge of the biome to trigger specific events or occurences. In these cases a [[Modding_Tutorials/PatchOperations|patch operation]] will be necessary&lt;br /&gt;
&lt;br /&gt;
=== Animals and plants ===&lt;br /&gt;
&lt;br /&gt;
Animals and plants can also set where they spawn in their raceProperties and plantProperties respectively. Duplicates are not allowed between the biome and properties list. Either method is acceptable for appearance rates. However, if you are creating a biome, it might be more sensible to place the appearances in the &amp;lt;code&amp;gt;BiomeDef&amp;lt;/code&amp;gt;. Additionally, you are not able to set their pollution appearance rate or coastal appearance rate through their properties field either.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;IncidentDef&amp;lt;/code&amp;gt;s ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Ambush&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ManhunterAmbush&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;CaravanMeeting&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;CaravanDemand&amp;lt;/code&amp;gt; requires a biome listed in their &amp;lt;code&amp;gt;mtbDaysByBiome&amp;lt;/code&amp;gt; to be considered a valid map to have their incidents occur.&lt;br /&gt;
Some incidents have &amp;lt;code&amp;gt;sallowedBiomes&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;disallowedBiomes&amp;lt;/code&amp;gt;. [[Events#Beavers!|Alphabeavers]] for example can only appear in the Tundra or Arid Shrubland.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;FeatureDef&amp;lt;/code&amp;gt;s ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;FeatureDef&amp;lt;/code&amp;gt;s generate names that can appear alongside landforms on the world map. These are things like &amp;quot;Barra Sea&amp;quot;, &amp;quot;Bat Cheek Flats&amp;quot;, and &amp;quot;Gorar Desert&amp;quot;. Some &amp;lt;code&amp;gt;FeatureDef&amp;lt;/code&amp;gt;s have &amp;lt;code&amp;gt;rootBiome&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;acceptableBiome&amp;lt;/code&amp;gt;. For example, the &amp;lt;code&amp;gt;Desert&amp;lt;/code&amp;gt; FeatureDef has &amp;lt;code&amp;gt;Desert&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ExtremeDesert&amp;lt;/code&amp;gt; as &amp;lt;code&amp;gt;rootBiomes&amp;lt;/code&amp;gt; meaning at least one of these are required for an area to be given this name. &amp;lt;code&amp;gt;acceptableBiomes&amp;lt;/code&amp;gt; are adjacent biomes that can also fulfill the qualifications for the Desert Feature. This is purely for visual and does not have impact on gameplay.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s ===&lt;br /&gt;
Most &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s in Odyssey will not be active on a biome unless they are patched into the TileMutatorDefs &amp;lt;code&amp;gt;biomeWhitelist&amp;lt;/code&amp;gt;. You can also restrict certain biomes using the &amp;lt;code&amp;gt;biomeBlacklist&amp;lt;/code&amp;gt;. [[Modding_Tutorials/Mod_Folder_Structure#LoadFolders.xml_.28Optional.29|LoadFolders]] is recommended here.&lt;br /&gt;
&lt;br /&gt;
[[Category:Modding tutorials]]&lt;/div&gt;</summary>
		<author><name>Halicade</name></author>
	</entry>
	<entry>
		<id>https://rimworldwiki.com/index.php?title=Ideoligion&amp;diff=174568</id>
		<title>Ideoligion</title>
		<link rel="alternate" type="text/html" href="https://rimworldwiki.com/index.php?title=Ideoligion&amp;diff=174568"/>
		<updated>2026-01-31T14:42:42Z</updated>

		<summary type="html">&lt;p&gt;Halicade: Added days required for cannibalism precepts&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ideology}}&lt;br /&gt;
{{Stub|reason=Add Nomadic and space habitat precept. Shipborn meme requirements/associated not implemented. traders guild}}&lt;br /&gt;
'''Ideoligions''' are both a system of mechanics introduced by, and the primary focus of, the [[Ideology DLC]]. They allow colonies to introduce a variety of new restrictions and capabilities to change gameplay, as well as new interactions with other factions.&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
== Type of ideoligion ==&lt;br /&gt;
Whenever you start a new game, you will see the Ideology selection menu once you've selected a world tile.&lt;br /&gt;
&lt;br /&gt;
* '''Ideology system inactive''' - Disables most of the Ideology system. Player colonies and factions will no longer have any ideoligion. With this option, you can create any ''style'', or cosmetic variant, of building (click the circle icon in the [[Architect]] tab, right next to the search bar).&lt;br /&gt;
:However, some aspects of the ideoligion system remain. You can still assign a [[Leader]], and will have access to a funeral and 2 [[ritual]]s - a dance party and drum party.{{Check Tag|Verify|Extremely quick testing}} In addition, there will be 3 randomized [[relic]]s that you can search for.&lt;br /&gt;
&lt;br /&gt;
* '''Create ideoligion (fluid)''' - Design an ideoligion that can change over time.&lt;br /&gt;
:A fluid ideoligion only has access to 1 [[meme]] at the start of the game, which cannot be a high impact meme. Otherwise, a fluid ideoligion has the same customization options as a fixed ideoligion. The difference is that a fluid ideology can change over the course of the game. As you gain [[#Development points|development points]], you can add / remove memes, and re-customize just about everything else.&lt;br /&gt;
&lt;br /&gt;
* '''Create ideoligion (fixed)''' - Design an ideoligion with complete control.&lt;br /&gt;
&lt;br /&gt;
* '''Presets''' - Use an ideoligion already created for you. Want to live under the mountain, but don't want to make a full ideoligion? Pick the &amp;quot;Mole people&amp;quot; preset. You will start with a Funeral and 2 other random [[ritual]]s, as well as a random [[relic]]. Other aspects of the ideoligion will also be randomized.&lt;br /&gt;
:For example, the &amp;quot;Classic-like&amp;quot; preset will have the following precepts:&lt;br /&gt;
&amp;lt;div style=&amp;quot;column-count:2; width:600px&amp;quot;&amp;gt;&lt;br /&gt;
* [[#Corpses|Corpses: Ugly]]&lt;br /&gt;
* [[#Insect meat|Insect meat: Despised]]&lt;br /&gt;
* [[#Marriage name|Marriage name: Usually man's]]&lt;br /&gt;
* [[#Eating nutrient paste|Eating nutrient paste: Disgusting]]&lt;br /&gt;
* [[#Physical love|Physical love: Free]]&lt;br /&gt;
* [[#Women's spouses|Women's spouses: One only]]&lt;br /&gt;
* [[#Men's spouses|Men's spouses: One only]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Development points ===&lt;br /&gt;
{{For|a guide for how to convert a non-fluid ideoligion to a fluid ideoligion via save editing|Fluid ideoligion save conversion guide}}&lt;br /&gt;
Fluid ideoligions are mostly the same as a static one, but can be changed over time through development points. When you have enough points, you can reform the ideoligion. It costs 10 points for the first reformation, and increases by +2 per reform until a max of 20 points. You cannot &amp;quot;store&amp;quot; points; once you can reform, no more points are gained.&lt;br /&gt;
&lt;br /&gt;
Development points can be obtained in the following ways:&lt;br /&gt;
* Performing [[rituals]]. Rituals will give a varying amount of points depending on if they are &amp;quot;anytime&amp;quot; rituals or &amp;quot;dated&amp;quot; rituals, how many rituals the ideoligion has and the quality of the ritual. If a ritual achieves a goal that awards development points (such as a conversion), both the points for the goal and the ritual are received in full. Anytime rituals (including funerals) give 1 point for a good outcome and 2 points for a great outcome.&lt;br /&gt;
Dated rituals grant more points the fewer rituals the ideoligion has, -as detailed below- however Funerals, Gladiator Duels, Blinding, and Scarification rituals '''''Do not''''' count for the following table.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! Terrible&lt;br /&gt;
! Boring&lt;br /&gt;
! Fun&lt;br /&gt;
! Unforgettable&lt;br /&gt;
|-&lt;br /&gt;
! 1 Ritual&lt;br /&gt;
| 2&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| 7&lt;br /&gt;
|-&lt;br /&gt;
! 2 Rituals&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
| 3&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
! 3 Rituals&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
! 4 Rituals&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
! 5+ Rituals&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Converting someone: 1 point.&lt;br /&gt;
Certain [[#Precepts|precepts]] allow an ideoligion to gain points from actions related to the precept.&lt;br /&gt;
* [[#Blindness|Blindness: Respected, Elevated or Sublime]]: Blinding someone: 1 point&lt;br /&gt;
* [[#Charity|Charity: Worthwhile, Important or Essential]]: Completing charity quests and accepting charity events&lt;br /&gt;
** [[Quests#Beggars|Helping beggars]]: 2 points&lt;br /&gt;
** [[Events#Wanderer joins|Accepting joining wanderer]]: 1 point&lt;br /&gt;
** [[Quests#Hospitality|Giving hospitality]] {{RoyaltyIcon}}: 2 points&lt;br /&gt;
** [[Quests#Shuttle Crash|Saving shuttle crash survivors]] {{RoyaltyIcon}}: 3 points&lt;br /&gt;
** [[Events#Transport pod crash|Saving a pod crash victim]]: 1 point&lt;br /&gt;
** [[Quests#Noble Wimp|Saving the noble wimp]] {{RoyaltyIcon}}: 1 point&lt;br /&gt;
** [[Quests#Threatened Joiner|Helping the threatened joiner]]: 2 points&lt;br /&gt;
* [[#Execution|Execution: Respected if guilty or Required]]: Executing prisoner: 1 point&lt;br /&gt;
* [[#Proselytizing|Proselytizing: Occasional, Sometimes or Frequent]]:&lt;br /&gt;
** Converting a new member: 1 point (in addition to the normal 1 point)&lt;br /&gt;
** Obtaining a [[Relic|relic]]: 5 points&lt;br /&gt;
** Completing the [[Quests#Pilgrims|pilgrims]] quest: 2 points&lt;br /&gt;
* [[#Raiding|Raiding: Respected or Required]]:&lt;br /&gt;
** Raiding someone: 1 point&lt;br /&gt;
** Raiding a bandit camp or work site: 2 points&lt;br /&gt;
* [[#Ranching|Ranching: Central]]: Successfully completing an [[Quests#Hospitality|Animal Hospitality quest]]{{RoyaltyIcon}}: 2 points&lt;br /&gt;
* [[#Slavery|Slavery: Honorable]]: Enslaving new prisoner: 1 point&lt;br /&gt;
* [[#Gauranlen connection|Gauranlen Connection: Strong]]: Planting gauranlen tree: 1 point&lt;br /&gt;
&lt;br /&gt;
Reformation allows you to add ''or'' remove 1 meme, ''or'' change the structure of your ideoligion. If you add a meme, you cannot remove / replace another meme or change structure. In addition, you can only add 1 [[style]] at a time. All other changes are unlimited.&lt;br /&gt;
&lt;br /&gt;
== Forming an ideoligion ==&lt;br /&gt;
An ideoligion consists of many separate aspects to customize:&lt;br /&gt;
&lt;br /&gt;
'''Primary'''&lt;br /&gt;
* '''[[#Structure|Structure]]''' - What deities (or lack thereof) that followers believe in. Examples include ''Abstract theist'', that &amp;quot;god(s) are formless and everywhere&amp;quot;, or ''Christian origin'', which is closer to the Abrahamic religions of the west. Structure helps determine the randomized names and lore of your ideoligion. This is almost entirely cosmetic, but can add a few ritual options.&lt;br /&gt;
&lt;br /&gt;
* '''[[#Memes|Memes]]''' - The basic beliefs of the ideoligion. An ideoligion with the ''Cannibal'' meme will definitely enjoy human meat. Each ideoligion can have up to 4 memes. Most memes do not add much on their own, but affect what precepts the ideoligion has and cannot have. Some memes have access to [[roles|specialists]].&lt;br /&gt;
&lt;br /&gt;
* '''[[#Precepts|Precepts]]''' - What a follower's belief systems are. Precepts directly determine how colonists will react to certain actions. An ideoligion with ''Cannibalism: Preferred'' will have followers enjoy eating human meat. An ideoligion with ''Cannibalism: Required (Ravenous)'' will want to eat human meat for every meal.&lt;br /&gt;
:Certain precepts have statistical effects beyond mood. For instance, ''Drugs: Essential'' boosts drug crop yield, synthesis speed, and sell price. These tend to be locked behind their associated meme.&lt;br /&gt;
&lt;br /&gt;
'''Secondary'''&lt;br /&gt;
* '''[[Rituals]]''' - Special occasions, from Dance Party to Animal Sacrifice to Funerals. Every time you do a ritual, you can end up with a good or bad outcome. Good outcomes will increase colonist [[mood]], and come with a special, defined reward. For example, a spectacular festival can give you a random recruit, or cause a [[gauranlen pod]] to sprout.&lt;br /&gt;
&lt;br /&gt;
:You can increase the chances of a good outcomes by following the ritual's requirements. A funeral can be done without your colonist's body, but the quality will be increased if the corpse is buried.&lt;br /&gt;
&lt;br /&gt;
* '''[[#Roles|Roles]]''' - Every ideoligion has a Leader and Moral Guide. From there, you can have up to 2 types of specialists. A Shooting Specialist will be great at ranged combat, but is unable to do many types of skilled work. Note that you can have as many specialists of a specific type as you want. For example, you can have 3 Shooting Specialists in a single colony, but cannot have a Shooting, Plants, AND Research specialist in the same ideoligion.&lt;br /&gt;
&lt;br /&gt;
* '''[[Relic]]s''' - Ideoligions can have relics. Relics can be either Legendary [[quality]] weapons or specific types of items that serve no other purpose. Relics must be found from a specific, multi-part relic hunt quest, which can take many years. Having a relic present will cause a number of benefits.&lt;br /&gt;
&lt;br /&gt;
* '''Buildings''' - Buildings used by your ideoligion: [[altar]]s, [[sacrificial flag]]s, etc. Largely used for rituals. Altars and the like will eventually be demanded by followers of your ideoligion in a temple room.&lt;br /&gt;
&lt;br /&gt;
* '''Preferences''' - Ideoligions can prefer [[apparel]], [[weapon]]s, and [[xenotype]]s {{BiotechIcon}}, as well as venerate specific [[animal]]s. Colonists will like having/being around preferred items. Whether a colonist will dislike a non-preferred item is dependent on the preference in question.&lt;br /&gt;
&lt;br /&gt;
'''Descriptive'''&lt;br /&gt;
* '''[[#Styles|Styles]]''' - How buildings made by an ideoligious builder will look. Largely cosmetic. However, it interacts with the Diversity of Thought precept. If colonists are neutral or bigoted, then they will enjoy being near styles of the same ideoligion. If colonists appreciate Diversity of Thought, they will enjoy being near styled buildings that their ideoligion could not make. Certain styles will affect more or less buildings.&lt;br /&gt;
&lt;br /&gt;
* '''[[#Cultures|Cultures]]''' - Roughly where your ideoligion comes from. Astropolitian represents those coming from space. Corunan represents [[New Tribe|tribes]] in general. Entirely cosmetic.&lt;br /&gt;
&lt;br /&gt;
* '''Lore''' - A randomly generated description of the ideoligion, based off of memes, structures, cultures, etc. Entirely cosmetic.&lt;br /&gt;
&lt;br /&gt;
* '''Icon / color''' - An ideoligion's icon is used whenever an ideology will be displayed. The color of the icon will be a preferred color for followers. Followers gain a {{+|1}} moodlet for wearing their ideology's color, or their own favorite color. All colors require [[dye]] and the same amount of dye.&lt;br /&gt;
&lt;br /&gt;
== Certainty ==&lt;br /&gt;
{{Main|Certainty}}&lt;br /&gt;
&lt;br /&gt;
'''Certainty''' is how willing a colonist is to maintain their current ideoligion. Conversion attempts reduce certainty. Once certainty hits 0%, a pawn's ideology will change.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
Choosing your structure affects which symbols the game uses for your ideoligion, and allows for the selection of some rituals that would otherwise require specific memes. It also influences some random generation options and flavor text but these can be overridden by player selection.&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Structure !! Description !! Styles !! Unlocked Rituals !! Chance to Have Precept&lt;br /&gt;
|- id=&amp;quot;Abstract theist&amp;quot;&lt;br /&gt;
! Abstract theist&amp;lt;br/&amp;gt;[[File:Abstract theist.png|64px]]&lt;br /&gt;
| The god(s) do not have physical form, but are everywhere at once. They know all, and can do anything. Their will defines the moral structure of the universe. || || ||&lt;br /&gt;
|- id=&amp;quot;Animist&amp;quot;&lt;br /&gt;
! Animist&amp;lt;br/&amp;gt;[[File:Animist.png|64px]]&lt;br /&gt;
| Spirits live in everything around us. In the plants and animals, rivers and trees, sky and stars. The moral structure of the universe springs from the necessity of respecting them. || Animalist || ||&lt;br /&gt;
|- id=&amp;quot;Archist&amp;quot;&lt;br /&gt;
! Archist&amp;lt;br/&amp;gt;[[File:Archist.png|64px]]&lt;br /&gt;
| Archotechs are the true gods. They know the moral structure of the universe, and serving them is how we will connect with it. || || ||&lt;br /&gt;
|- id=&amp;quot;Buddhist origin&amp;quot;&lt;br /&gt;
! Buddhist origin&amp;lt;br/&amp;gt;[[File:Buddhist origin.png|64px]]&lt;br /&gt;
| This ideoligion is a descendant of ancient Buddhism. It may have very different precepts than those of thousands of years ago, but its symbols are similar. || Buddhist || Smokeleaf circle || Headwrap: Relaxed&amp;lt;br/&amp;gt;Broadwrap: Relaxed&lt;br /&gt;
|- id=&amp;quot;Christian origin&amp;quot;&lt;br /&gt;
! Christian origin&amp;lt;br/&amp;gt;[[File:Christian origin.png|64px]]&lt;br /&gt;
| This is a variant of the abstract theist structure. This ideoligion is a descendant of ancient Christianity. It may have very different precepts than those of thousands of years ago, but its symbols are similar. || Christian || Christmas tree party || Headwrap: Relaxed&amp;lt;br/&amp;gt;Broadwrap: Relaxed&lt;br /&gt;
|- id=&amp;quot;Embodied theist&amp;quot;&lt;br /&gt;
! Embodied theist&amp;lt;br/&amp;gt;[[File:Embodied theist.png|64px]]&lt;br /&gt;
| The god(s) walk the planets like us, yet they are powerful and immortal as we are not. They decide the moral structure of the universe. || || ||&lt;br /&gt;
|- id=&amp;quot;Hindu origin&amp;quot;&lt;br /&gt;
! Hindu origin&amp;lt;br/&amp;gt;[[File:Hindu origin.png|64px]]&lt;br /&gt;
| This is a variant of the embodied theist structure. This ideoligion is a descendant of ancient Hinduism. It may have very different precepts than those of thousands of years ago, but its symbols are similar. || Hindu || Smokeleaf circle || Headwrap: Relaxed&amp;lt;br/&amp;gt;Broadwrap: Relaxed&lt;br /&gt;
|- id=&amp;quot;Ideological&amp;quot;&lt;br /&gt;
! Ideological&amp;lt;br/&amp;gt;[[File:Ideological.png|64px]]&lt;br /&gt;
| There are no gods. The moral structure of the universe is found in our grand narrative of social forces. || || Symbol burning ||&lt;br /&gt;
|- id=&amp;quot;Islamic origin&amp;quot;&lt;br /&gt;
! Islamic origin&amp;lt;br/&amp;gt;[[File:Islamic origin.png|64px]]&lt;br /&gt;
| This is a variant of the abstract theist structure. This ideoligion is a descendant of ancient Islam. It may have very different precepts than those of thousands of years ago, but its symbols are similar. || Islamic || || Headwrap: Relaxed&amp;lt;br/&amp;gt;Broadwrap: Relaxed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Cultures ==&lt;br /&gt;
Cultures affect names, appearances, and symbols.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Culture !! Factions Allowed !! Description&lt;br /&gt;
|- id=&amp;quot;Astropolitan&amp;quot;&lt;br /&gt;
! Astropolitan&amp;lt;br/&amp;gt;[[File:Astropolitan.png|32px]]&lt;br /&gt;
| [[New Arrivals]]&amp;lt;br/&amp;gt;[[Sanguophages (Faction)|Sanguophages]]{{BiotechIcon}}&amp;lt;br/&amp;gt;[[Traders guild]]{{OdysseyIcon}}&amp;lt;br/&amp;gt;[[Salvagers]]{{OdysseyIcon}}|| A broad collection of cultures common among frequent space travelers.&lt;br /&gt;
|- id=&amp;quot;Rustican&amp;quot;&lt;br /&gt;
! Rustican&amp;lt;br/&amp;gt;[[File:Civil outlander.png|32px]]&lt;br /&gt;
| [[Outlander]] Factions || A hardy industrial cultures common among rimworld outlanders.&lt;br /&gt;
|- id=&amp;quot;Corunan&amp;quot;&lt;br /&gt;
! Corunan&amp;lt;br/&amp;gt;[[File:GentleTribe.png|32px]]&lt;br /&gt;
| [[New Tribe]]&amp;lt;br/&amp;gt;[[Tribal]] Factions || An ancient culture common among rimworld tribes.&lt;br /&gt;
|- id=&amp;quot;Kriminul&amp;quot;&lt;br /&gt;
! Kriminul&amp;lt;br/&amp;gt;[[File:Pirate.png|32px]]&lt;br /&gt;
| [[Pirate]] Factions || A broad category describing the styles and practices of many pirate groups.&lt;br /&gt;
|- id=&amp;quot;Sophian&amp;quot;&lt;br /&gt;
! Sophian {{RoyaltyIcon}}&amp;lt;br/&amp;gt;[[File:Empire map marker.png|32px]]&lt;br /&gt;
| [[Empire]] Faction|| A techno-feudal culture centered on the planet Sophiamunda.&lt;br /&gt;
|}&lt;br /&gt;
Additionally, the [[Ancient]] factions, [[Outlander refugee group]]{{RoyaltyIcon}}, [[Beggars]]{{IdeologyIcon}}, [[Pilgrims]]{{IdeologyIcon}}, and the [[Horax cult]]{{AnomalyIcon}} do not have any culture assigned to them; therefore they may use any existing one randomly.&lt;br /&gt;
&lt;br /&gt;
== Styles ==&lt;br /&gt;
{{recode|section=1|reason=Use collapsibles to allow a non-intrusive display of the styles where the reader can tab between the styles}}&lt;br /&gt;
An ideoligion can have 0-3 associated styles. People belonging to that ideoligion will apply those styles when making specific items. Colonists will get thoughts based on the styles of the objects around them, depending on their ideoligion's [[#Diversity of thought|diversity of thought]] precept either for having surroundings match or not match their ideoligion. Neutral surroundings produce no thought. If multiple styles of an ideoligion affect the same object, left-most applies. Note that building appearance in the construction menu will be based on your primary ideoligion, but the actual building might be different if built by a pawn of a different ideoligion.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! style=width:6em | Style !! New buildables !! Affects items !! Affects objects !! Affects ritual ambience sound !! Player-accessible&lt;br /&gt;
|- id=&amp;quot;Style Hindu&amp;quot;&lt;br /&gt;
| [[File:Style Hindu.png|18px]] Hindu&lt;br /&gt;
| -&lt;br /&gt;
| [[Simple helmet#Styles|Simple helmet]], [[Flak helmet#Styles|Flak helmet]]&lt;br /&gt;
| [[Small sculpture#Styles|Small sculpture]], [[Large sculpture#Styles|Large sculpture]], [[Grand sculpture#Styles|Grand sculpture]]&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
|- id=&amp;quot;Style Christian&amp;quot;&lt;br /&gt;
| [[File:Style Christian.png|18px]] Christian&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [[Small sculpture#Styles|Small sculpture]], [[Large sculpture#Styles|Large sculpture]], [[Grand sculpture#Styles|Grand sculpture]]&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
|-  id=&amp;quot;Style Islamic&amp;quot;&lt;br /&gt;
| [[File:Style Islam.png|18px]] Islamic&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [[Small sculpture#Styles|Small sculpture]], [[Large sculpture#Styles|Large sculpture]], [[Grand sculpture#Styles|Grand sculpture]]&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
|-  id=&amp;quot;Style Buddhist&amp;quot;&lt;br /&gt;
| [[File:Style Buddhism.png|18px]] Buddhist&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [[Small sculpture#Styles|Small sculpture]], [[Large sculpture#Styles|Large sculpture]], [[Grand sculpture#Styles|Grand sculpture]]&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
|-  id=&amp;quot;Style Morbid&amp;quot;&lt;br /&gt;
| [[File:Style Morbid.png|18px]] Morbid&lt;br /&gt;
| [[Morbid carpet]], [[Morbid slab (broad)]], [[Morbid slab (medium)]], [[Morbid stone tile]] || [[Recon helmet#Styles|Recon helmet]], [[Marine helmet#Styles|Marine helmet]], [[Cataphract helmet#Styles|Cataphract helmet]]&lt;br /&gt;
| [[Small sculpture#Styles|Small sculpture]], [[Large sculpture#Styles|Large sculpture]], [[Grand sculpture#Styles|Grand sculpture]], [[Small altar#Styles|Small altar]], [[Medium altar#Styles|Medium altar]], [[Large altar#Styles|Large altar]], [[Grand altar#Styles|Grand altar]], [[Stool#Styles|Stool]], Table ([[Table (1x2)#Styles|1x2]], [[Table (2x2)#Styles|2x2]], [[Table (2x4)#Styles|2x4]], [[Table (3x3)#Styles|3x3]]), [[Standing lamp#Styles|Standing lamp]], [[Wall lamp#Styles|Wall lamp]], [[Torch lamp#Styles|Torch lamp]], [[Wall torch lamp#Styles|Wall torch lamp]], [[Column#Styles|Column]]&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
|-  id=&amp;quot;Style Totemic&amp;quot;&lt;br /&gt;
| [[File:Style Totemic.png|18px]] Totemic&lt;br /&gt;
| [[Totemic boards]], [[Totemic slab (broad)]], [[Totemic slab (medium)]], [[Totemic stone tile]]&lt;br /&gt;
| [[Recon helmet#Styles|Recon helmet]], [[Marine helmet#Styles|Marine helmet]], [[Cataphract helmet#Styles|Cataphract helmet]]&lt;br /&gt;
| [[Small sculpture#Styles|Small sculpture]], [[Large sculpture#Styles|Large sculpture]], [[Grand sculpture#Styles|Grand sculpture]], [[Small altar#Styles|Small altar]], [[Medium altar#Styles|Medium altar]], [[Large altar#Styles|Large altar]], [[Grand altar#Styles|Grand altar]], [[Stool#Styles|Stool]], [[Dining chair#Styles|Dining chair]], Table ([[Table (1x2)#Styles|1x2]], [[Table (2x2)#Styles|2x2]], [[Table (2x4)#Styles|2x4]], [[Table (3x3)#Styles|3x3]]), [[Standing lamp#Styles|Standing lamp]], [[Wall lamp#Styles|Wall lamp]], [[Torch lamp#Styles|Torch lamp]], [[Wall torch lamp#Styles|Wall torch lamp]], [[Column#Styles|Column]]&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
|-  id=&amp;quot;Style Spikecore&amp;quot;&lt;br /&gt;
| [[File:Style Spikecore.png|18px]] Spikecore&lt;br /&gt;
| [[Spikecore floor-star (broad)]], [[Spikecore floor-star (medium)]], [[Spikecore plates]], [[Spikecore stone tile]] || [[Simple helmet#Styles|Simple helmet]], [[Flak helmet#Styles|Flak helmet]], [[Flak jacket#Styles|Flak jacket]], [[Duster#Styles|Duster]], [[Jacket#Styles|Jacket]], [[Parka#Styles|Parka]]&lt;br /&gt;
| Table ([[Table (1x2)#Styles|1x2]], [[Table (2x2)#Styles|2x2]], [[Table (2x4)#Styles|2x4]], [[Table (3x3)#Styles|3x3]]), [[Standing lamp#Styles|Standing lamp]], [[Wall lamp#Styles|Wall lamp]], [[Torch lamp#Styles|Torch lamp]], [[Wall torch lamp#Styles|Wall torch lamp]], [[Column#Styles|Column]]&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
|-  id=&amp;quot;Style Rustic&amp;quot;&lt;br /&gt;
| [[File:Style Rustic.png|18px]] Rustic&lt;br /&gt;
| [[Rustic rug (broad)]], [[Rustic rug (medium)]]&lt;br /&gt;
| [[Simple helmet#Styles|Simple helmet]], [[Flak helmet#Styles|Flak helmet]]&lt;br /&gt;
| [[Column#Styles|Column]], [[Standing lamp#Styles|Standing lamp]], [[Wall lamp#Styles|Wall lamp]], [[Torch lamp#Styles|Torch lamp]], [[Wall torch lamp#Styles|Wall torch lamp]], Table ([[Table (1x2)#Styles|1x2]], [[Table (2x2)#Styles|2x2]], [[Table (2x4)#Styles|2x4]], [[Table (3x3)#Styles|3x3]])&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
|-  id=&amp;quot;Style Animalist&amp;quot;&lt;br /&gt;
| [[File:Style Animalist.png|18px]] Animalist&lt;br /&gt;
| [[Animalist slab (broad)]], [[Animalist slab (medium)]]&lt;br /&gt;
| [[Recon helmet#Styles|Recon helmet]], [[Marine helmet#Styles|Marine helmet]], [[Cataphract helmet#Styles|Cataphract helmet]], [[War mask#Styles|War mask]]&lt;br /&gt;
| [[Small sculpture#Styles|Small sculpture]], [[Large sculpture#Styles|Large sculpture]], [[Grand sculpture#Styles|Grand sculpture]]&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
|-  id=&amp;quot;Style Techist&amp;quot;&lt;br /&gt;
| [[File:Style Techist.png|18px]] Techist&lt;br /&gt;
| [[Hex carpet]], [[Hex tile]]&lt;br /&gt;
| -&lt;br /&gt;
| [[Column#Styles|Column]], [[Plant pot#Styles|Plant pot]], [[Standing lamp#Styles|Standing lamp]], [[Wall lamp#Styles|Wall lamp]], [[Shelf#Styles|Shelf]], [[Autodoor#Styles|Autodoor]], Table ([[Table (1x2)#Styles|1x2]], [[Table (2x2)#Styles|2x2]], [[Table (2x4)#Styles|2x4]], [[Table (3x3)#Styles|3x3]])&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
|-  id=&amp;quot;Style Horaxian&amp;quot;&lt;br /&gt;
| [[File:Style Horaxian.png|18px]] Horaxian{{AnomalyIcon}}&lt;br /&gt;
| -&lt;br /&gt;
| [[Axe#Styles|Axe]], [[Club#Styles|Club]], [[Gladius#Styles|Gladius]], [[Knife#Styles|Knife]], [[Mace#Styles|Mace]]&lt;br /&gt;
| -&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Style dominance ===&lt;br /&gt;
Pawns consider objects with style dominance within 27 tiles outdoors, or in the same room regardless of distance. An item is considered &amp;quot;uniform&amp;quot; if pawn's ideoligion can build it, and &amp;quot;diverse&amp;quot; otherwise, regardless of the actual style: for example, a totemic table will be considered diverse for an ideoligion with morbid and totemic styles, because the morbid style overrides totemic tables. If the total style dominance of uniform or diverse objects is at least 10 more than the other category, pawns will get an appropriate thought; the actual style of the object does not matter for stacking either: a morbid slab and a totemic slab in the same room will be uniform for an ideoligion with both styles, cancel each other out and give no thought for an ideoligion with one of those styles, and diverse for an ideoligion with neither.&lt;br /&gt;
&lt;br /&gt;
An ideoligion with no styles would still consider its own buildings (such as ideogram), but not ritual seats, to be uniform.&lt;br /&gt;
&lt;br /&gt;
Clothing, whether worn or placed on the ground, and uninstalled objects have no impact on style dominance.&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Style Dominance::+]]&lt;br /&gt;
| ?Style Dominance&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Memes ==&lt;br /&gt;
You must choose one to four memes at the beginning of your playthrough to form the foundational ideas of your ideoligion. Some have much more gameplay impact than others. Hovering over a meme will show you the information in this table.&lt;br /&gt;
&lt;br /&gt;
{| {{STDT| sortable text-valign:top}}&lt;br /&gt;
! Meme !! Description !! Impact !! Incompatible Memes !! Required Precepts !! Chance to Have Precept !! Disabled Precepts !! Unlocked Roles !! Required Rituals !! Unlocked Rituals !! New Buildables !! Unlocked Craftables !! Start with Research !! Agreeing Traits !! Conflicting Traits !! Styles&lt;br /&gt;
|- id=&amp;quot;Animal personhood&amp;quot;&lt;br /&gt;
! '''Animal personhood'''&amp;lt;br/&amp;gt;[[File:Animal personhood.png|64px]]&lt;br /&gt;
| Animals have rights as humans do. ||style=&amp;quot;text-align: center;&amp;quot; data-sort-value=3|[[File:High meme impact.png|32x32px]] High || [[#Rancher|Rancher]] || '''[[#Animal connection|Animal connection:]]''' Strong&amp;lt;br/&amp;gt;'''[[#Slaughtering animals|Slaughtering animals:]]''' Prohibited, Horrible, or Disapproved&amp;lt;br/&amp;gt;'''[[#Meat eating|Meat eating:]]''' Abhorrent, Horrible, or Disapproved&amp;lt;br/&amp;gt;{{OdysseyIcon}}'''[[#Fishing|Fishing:]]''' Prohibited or Disapproved || - || - || [[Ideoligion#Animals specialist|Animals specialist]] || - || - || - || - || - || - || - || -&lt;br /&gt;
|- id=&amp;quot;Blindsight&amp;quot;&lt;br /&gt;
! '''[[Blindsight]]'''&amp;lt;br/&amp;gt;[[File:Blindsight.png|64px]]&lt;br /&gt;
| Only those who are blind can perceive true reality. ||style=&amp;quot;text-align: center;&amp;quot; data-sort-value=3|[[File:High meme impact.png|32x32px]] High || [[#Darkness|Darkness]] || '''[[#Blind psysense|Blind psysense:]]''' Strong&amp;lt;br/&amp;gt;'''[[#Blindness|Blindness:]]''' Respected, Elevated, or Sublime || - || '''[[#Blindness|Blindness:]]''' Horrible&amp;lt;br/&amp;gt;'''[[#Lighting|Lighting:]]''' Darklight preferred&amp;lt;br/&amp;gt;'''[[#Combat in darkness|Combat in darkness:]]''' preferred || [[Ideoligion#Medical specialist|Medical specialist]] || Blinding || - || - || [[Blindfold]] || - || - || - || -&lt;br /&gt;
|- id=&amp;quot;Cannibal&amp;quot;&lt;br /&gt;
! '''Cannibal'''&amp;lt;br/&amp;gt;[[File:Cannibal.png|64px]]&lt;br /&gt;
| We must consume human flesh. ||style=&amp;quot;text-align: center;&amp;quot; data-sort-value=3|[[File:High meme impact.png|32x32px]] High || - || '''[[#Organ use|Organ use:]]''' Acceptable&amp;lt;br/&amp;gt;'''[[#Cannibalism|Cannibalism:]]''' Preferred, Required (strong), or Required (ravenous)&amp;lt;br/&amp;gt;'''[[#Execution|Execution:]]''' Don't care, Respected if guilty, or Required || - || '''[[#Execution|Execution:]]''' Always horrible or Horrible if innocent || - || - || Cannibal feast || - || - || - || [[Cannibal (Trait)|Cannibal]] || - || Morbid&lt;br /&gt;
|- id=&amp;quot;Collectivist&amp;quot;&lt;br /&gt;
! '''Collectivist'''&amp;lt;br/&amp;gt;[[File:Collectivist.png|64px]]&lt;br /&gt;
| Each person is part of a greater whole. People should work to play their part and help the group. ||style=&amp;quot;text-align: center;&amp;quot;data-sort-value=1|[[File:Low meme impact.png|32x32px]] Low || [[#Individualist|Individualist]] || '''[[#Work drive|Work drive:]]''' Tripled || Visage mask: Relaxed || '''[[#Marriage name|Marriage name:]]''' Keep names || - || - || Symbol burning || - || - || - || - || - || -&lt;br /&gt;
|- id=&amp;quot;Darkness&amp;quot;&lt;br /&gt;
! '''Darkness'''&amp;lt;br/&amp;gt;[[File:Darkness.png|64px]]&lt;br /&gt;
| Bright light burns and destroys! Darkness nourishes and creates. People ought to live in darkness. ||style=&amp;quot;text-align: center;&amp;quot; data-sort-value=3|[[File:High meme impact.png|32x32px]] High || [[#Blindsight|Blindsight]] || '''[[#Lighting|Lighting:]]''' Darklight preferred&amp;lt;br/&amp;gt;'''[[#Combat in darkness|Combat in darkness:]]''' Preferred || - || - || [[Ideoligion#Mining specialist|Mining specialist]] || - || - || - || - || - || - || - || -&lt;br /&gt;
|- id=&amp;quot;Female supremacy&amp;quot;&lt;br /&gt;
! '''Female supremacy'''&amp;lt;br/&amp;gt;[[File:Female supremacy.png|64px]]&lt;br /&gt;
| Women are the superior gender and should rule. ||style=&amp;quot;text-align: center;&amp;quot; data-sort-value=2|[[File:Medium meme impact.png|32x32px]] Medium || [[#Male supremacy|Male supremacy]] || - || Burka: Relaxed&amp;lt;br/&amp;gt;Veil: Strong || - || - || - || - || - || - || - || [[Misandrist]] || [[Misogynist]] || -&lt;br /&gt;
|- id=&amp;quot;Flesh purity&amp;quot;&lt;br /&gt;
! '''Flesh purity'''&amp;lt;br/&amp;gt;[[File:Flesh purity.png|64px]]&lt;br /&gt;
| The human body should not be debased. ||style=&amp;quot;text-align: center;&amp;quot; data-sort-value=2|[[File:Medium meme impact.png|32x32px]] Medium || [[#High life|High life]]&amp;lt;br/&amp;gt;[[#Transhumanist|Transhumanist]] || '''[[#Drug use|Drug use:]]''' Prohibited&amp;lt;br/&amp;gt;'''[[#Body modification|Body modification:]]''' Abhorrent&amp;lt;br/&amp;gt;'''[[#Scarification|Scarification:]]''' Horrible || - || '''[[#Body modification|Body modification:]]''' Approved&amp;lt;br/&amp;gt;'''[[#Physical love|Physical love:]]''' Free and approved || [[Ideoligion#Medical specialist|Medical specialist]] || - || Symbol burning || - || - || - || [[Body purist]]&amp;lt;br/&amp;gt;[[Nudist]] || [[Body modder]] || -&lt;br /&gt;
|- id=&amp;quot;Guilty&amp;quot;&lt;br /&gt;
! '''Guilty'''&amp;lt;br/&amp;gt;[[File:Guilty.png|64px]]&lt;br /&gt;
| Our people carry guilt from ages past. Others are more worthy. ||style=&amp;quot;text-align: center;&amp;quot; data-sort-value=1|[[File:Low meme impact.png|32x32px]] Low || [[#Supremacist|Supremacist]]&amp;lt;br/&amp;gt;[[#Loyalist|Loyalist]] || '''[[#Pain|Pain:]]''' Idealized&amp;lt;br/&amp;gt;'''[[#Charity|Charity:]]''' Essential, Important, or Worthwhile || - || '''[[#Apostasy|Apostasy:]]''' Abhorrent, Horrible, and Guilty&amp;lt;br/&amp;gt;'''[[#Slavery|Slavery:]]''' Honorable || - || - || Symbol burning || - || [[Torture crown]] || - || - || - || -&lt;br /&gt;
|- id=&amp;quot;High life&amp;quot;&lt;br /&gt;
! '''High life'''&amp;lt;br/&amp;gt;[[File:High life.png|64px]]&lt;br /&gt;
| Exotic states of mind are central to a good life. ||style=&amp;quot;text-align: center;&amp;quot; data-sort-value=2|[[File:Medium meme impact.png|32x32px]] Medium || [[#Flesh purity|Flesh purity]] || '''[[#Drug use|Drug use:]]''' Essential || Flophat: Relaxed || '''[[#Drug use|Drug use:]]''' Prohibited, Medical only, or Medical/social only || [[Ideoligion#Plants specialist|Plants specialist]] || Smokeleaf circle || Smokeleaf circle || [[Autobong]]&amp;lt;br/&amp;gt;[[Mindbend carpet]] || - || - || [[Chemical interest]]&amp;lt;br/&amp;gt;[[Chemical fascination]] || - || -&lt;br /&gt;
|- id=&amp;quot;Human primacy&amp;quot;&lt;br /&gt;
! '''Human primacy'''&amp;lt;br/&amp;gt;[[File:Human primacy.png|64px]]&lt;br /&gt;
| Humans are the moral center of the universe. ||style=&amp;quot;text-align: center;&amp;quot; data-sort-value=2|[[File:Medium meme impact.png|32x32px]] Medium || [[#Nature primacy|Nature primacy]] || '''[[#Bonding|Bonding:]]''' Disapproved || - || '''[[#Slaughtering animals|Slaughtering animals:]]''' Prohibited, Horrible, and Disapproved&amp;lt;br/&amp;gt;'''[[#Killing innocent animals|Killing innocent animals:]]''' Abhorrent, Horrible, and Disapproved&amp;lt;br/&amp;gt;'''[[#Mining|Mining:]]''' Prohibited, Horrible, and Disapproved&amp;lt;br/&amp;gt;'''[[#Cutting trees|Cutting trees:]]''' Prohibited, Horrible, and Disapproved || [[Ideoligion#Production specialist|Production specialist]] || - || Symbol burning || - || - || - || - || - || -&lt;br /&gt;
|- id=&amp;quot;Individualist&amp;quot;&lt;br /&gt;
! '''Individualist'''&amp;lt;br/&amp;gt;[[File:Individualist.png|64px]]&lt;br /&gt;
| Each person is a free individual with the right to their own ideas and decisions. Nobody should be made to conform. ||style=&amp;quot;text-align: center;&amp;quot; data-sort-value=1|[[File:Low meme impact.png|32x32px]] Low || [[#Collectivist|Collectivist]]&amp;lt;br/&amp;gt;[[#Supremacist|Supremacist]] || - || - || '''[[#Slavery|Slavery:]]''' Honorable || - || - || Symbol burning || - || - || - || - || - || -&lt;br /&gt;
|- id=&amp;quot;Loyalist&amp;quot;&lt;br /&gt;
! '''Loyalist'''&amp;lt;br/&amp;gt;[[File:Loyalist.png|64px]]&lt;br /&gt;
| We stand for our own before others. ||style=&amp;quot;text-align: center;&amp;quot; data-sort-value=1|[[File:Low meme impact.png|32x32px]] Low || [[#Supremacist|Supremacist]]&amp;lt;br/&amp;gt;[[#Guilty|Guilty]] || - || - || - || - || - || Symbol burning || - || - || - || - || - || -&lt;br /&gt;
|- id=&amp;quot;Male supremacy&amp;quot;&lt;br /&gt;
! '''Male supremacy'''&amp;lt;br/&amp;gt;[[File:Male supremacy.png|64px]]&lt;br /&gt;
| Men are the superior gender and should rule. ||style=&amp;quot;text-align: center;&amp;quot; data-sort-value=2|[[File:Medium meme impact.png|32x32px]] Medium || [[#Female supremacy|Female supremacy]] || - || Burka: Relaxed&amp;lt;br/&amp;gt;Veil: Strong || - || - || - || - || - || - || - || [[Misogynist]] || [[Misandrist]] || -&lt;br /&gt;
|- id=&amp;quot;Nature primacy&amp;quot;&lt;br /&gt;
! '''Nature primacy'''&amp;lt;br/&amp;gt;[[File:Nature primacy.png|64px]]&lt;br /&gt;
| Man is a stain on nature's perfection. ||style=&amp;quot;text-align: center;&amp;quot; data-sort-value=2|[[File:Medium meme impact.png|32x32px]] Medium || [[#Human primacy|Human primacy]] || - || - || - || [[Ideoligion#Plants specialist|Plants specialist]] || || - || - || - || - || - || - || Animalist&lt;br /&gt;
|- id=&amp;quot;Nudism&amp;quot;&lt;br /&gt;
! '''Nudism'''&amp;lt;br/&amp;gt;[[File:Nudism.png|64px]]&lt;br /&gt;
| Clothing binds, controls, and suffocates us. We should all hang free. ||style=&amp;quot;text-align: center;&amp;quot; data-sort-value=3|[[File:High meme impact.png|32x32px]] High || - || '''[[#Male clothing|Male clothing:]]''' Fully nude or Pants at most&amp;lt;br/&amp;gt;'''[[#Female clothing|Female clothing:]]''' Fully nude or Pants at most || - || - || - || - || Symbol burning || - || - || - || [[Nudist]] || - || -&lt;br /&gt;
|- id=&amp;quot;Pain is virtue&amp;quot;&lt;br /&gt;
! '''Pain is virtue'''&amp;lt;br/&amp;gt;[[File:Pain is virtue.png|64px]]&lt;br /&gt;
| Virtue is shown through suffering of self and others. ||style=&amp;quot;text-align: center;&amp;quot; data-sort-value=3|[[File:High meme impact.png|32x32px]] High || - || '''[[#Pain|Pain:]]''' Idealized&amp;lt;br/&amp;gt;'''[[#Comfort|Comfort:]]''' Ignored&amp;lt;br/&amp;gt;'''[[#Slab bed|Slab bed:]]''' Preferred || - || '''[[#Charity|Charity:]]''' Essential, Important, and Worthwhile&amp;lt;br/&amp;gt;'''[[#Execution|Execution:]]''' Always abhorrent and Always horrible&amp;lt;br/&amp;gt;'''[[#Scarification|Scarification:]]''' Horrible&amp;lt;br/&amp;gt;'''[[#Skullspike|Skullspike:]]''' Disapproved || - || Scarification || Symbol burning || [[Slab bed]]&amp;lt;br/&amp;gt;[[Slab double bed]] || [[Torture crown]] || - || [[Ascetic]]&amp;lt;br/&amp;gt;[[Tortured artist]]&amp;lt;br/&amp;gt;[[Masochist]] || [[Wimp]]&amp;lt;br/&amp;gt;[[Gourmand]] || Morbid&lt;br /&gt;
|- id=&amp;quot;Proselytizer&amp;quot;&lt;br /&gt;
! '''Proselytizer'''&amp;lt;br/&amp;gt;[[File:Proselytizer.png|64px]]&lt;br /&gt;
| It is our duty to spread our beliefs. ||style=&amp;quot;text-align: center;&amp;quot; data-sort-value=2|[[File:Medium meme impact.png|32x32px]] Medium || - || '''[[#Proselytizing|Proselytizing:]]''' Occasional, Sometimes, or Frequent || - || - || - || - || - || - || - || - || - || - || -&lt;br /&gt;
|- id=&amp;quot;Raider&amp;quot;&lt;br /&gt;
! '''Raider'''&amp;lt;br/&amp;gt;[[File:Raider.png|64px]]&lt;br /&gt;
| The strong should take from the weak. ||style=&amp;quot;text-align: center;&amp;quot; data-sort-value=2|[[File:Medium meme impact.png|32x32px]] Medium || - || '''[[#Raiding|Raiding:]]''' Respected or Required&amp;lt;br/&amp;gt;'''[[#Execution|Execution:]]''' Horrible if innocent, Don't care, Respected if guilty, or Required || - || '''[[#Skullspike|Skullspike:]]''' Disapproved&amp;lt;br/&amp;gt;'''[[#Slavery|Slavery:]]''' Abhorrent, Horrible, and Disapproved || [[Ideoligion#Shooting specialist|Shooting specialist]]&amp;lt;br/&amp;gt;[[Ideoligion#Melee specialist|Melee specialist]]|| - || Symbol burning || - || - || - || - || - || -&lt;br /&gt;
|- id=&amp;quot;Rancher&amp;quot;&lt;br /&gt;
! '''Rancher'''&amp;lt;br/&amp;gt;[[File:Rancher.png|64px]]&lt;br /&gt;
| Raising animals is the right way; raising plants to eat is not. ||style=&amp;quot;text-align: center;&amp;quot; data-sort-value=2|[[File:Medium meme impact.png|32x32px]] Medium || [[#Animal personhood|Animal personhood]] || '''[[#Ranching|Ranching:]]''' Central&amp;lt;br/&amp;gt;'''[[#Meat eating|Meat eating:]]''' Mildly required, Seriously required, or Strictly required || - || - || [[Ideoligion#Animals specialist|Animals specialist]] || - || Symbol burning || - || - || - || - || - || -&lt;br /&gt;
|- id=&amp;quot;Supremacist&amp;quot;&lt;br /&gt;
! '''Supremacist'''&amp;lt;br/&amp;gt;[[File:Supremacist.png|64px]]&lt;br /&gt;
| Our people should dominate all others. ||style=&amp;quot;text-align: center;&amp;quot; data-sort-value=1|[[File:Low meme impact.png|32x32px]] Low || [[#Individualist|Individualist]]&amp;lt;br/&amp;gt;[[#Loyalist|Loyalist]]&amp;lt;br/&amp;gt;[[#Guilty|Guilty]] || '''[[#Slavery|Slavery:]]''' Acceptable or Honorable&amp;lt;br/&amp;gt;'''[[#Execution|Execution:]]''' Required, Respected if guilty, or Don't care || - || '''[[#Charity|Charity:]]''' Essential, Important and Worthwhile&amp;lt;br/&amp;gt;'''[[#Skullspike|Skullspike:]]''' Disapproved || [[Ideoligion#Shooting specialist|Shooting specialist]]&amp;lt;br/&amp;gt;[[Ideoligion#Melee specialist|Melee specialist]] || - || Symbol burning || - || - || - || - || - || -&lt;br /&gt;
|- id=&amp;quot;Transhumanist&amp;quot;&lt;br /&gt;
! '''Transhumanist'''&amp;lt;br/&amp;gt;[[File:Transhumanist.png|64px]]&lt;br /&gt;
| Human progress means merging with technology. ||style=&amp;quot;text-align: center;&amp;quot; data-sort-value=2|[[File:Medium meme impact.png|32x32px]] Medium || [[#Flesh purity|Flesh purity]] || '''[[#Sleep accelerator|Sleep accelerator:]]''' Preferred&amp;lt;br/&amp;gt;'''[[#Neural supercharge|Neural supercharge:]]''' Preferred&amp;lt;br/&amp;gt;'''[[#Biosculpting|Biosculpting:]]''' Accelerated&amp;lt;br/&amp;gt;'''[[#Age reversal|Age reversal:]]''' Demanded&amp;lt;br/&amp;gt;'''[[#Eating nutrient paste|Eating nutrient paste:]]''' Don't mind&amp;lt;br/&amp;gt;'''[[#Body modification|Body modification:]]''' Approved || Slicecap: Relaxed || '''[[#Body modification|Body modification:]]''' Abhorrent or Disapproved || [[Ideoligion#Research specialist|Research specialist]] || - || - || [[Hex carpet]]&amp;lt;br/&amp;gt;[[Hex tile]]&amp;lt;br/&amp;gt;[[Neural supercharger]]&amp;lt;br/&amp;gt;[[Sleep accelerator]] || - || - || [[Body modder]] || [[Body purist]] || Techist&lt;br /&gt;
|- id=&amp;quot;Tree connection&amp;quot;&lt;br /&gt;
! '''Tree connection'''&amp;lt;br/&amp;gt;[[File:Tree connection.png|64px]]&lt;br /&gt;
| Trees are the essence of life, and we must be near them. ||style=&amp;quot;text-align: center;&amp;quot; data-sort-value=3|[[File:High meme impact.png|32x32px]] High || - || '''[[#Trees|Trees:]]''' Desired&amp;lt;br/&amp;gt;'''[[#Rough living|Rough living:]]''' Welcomed&amp;lt;br/&amp;gt;'''[[#Temperature|Temperature:]]''' Tough&amp;lt;br/&amp;gt;'''[[#Gauranlen connection|Gauranlen connection:]]''' Strong&lt;br /&gt;
|| - || - || [[Ideoligion#Plants specialist|Plants specialist]] || - || - || - || - || [[Research#Tree sowing|Tree sowing]] || - || - || -&lt;br /&gt;
|- id=&amp;quot;Tunneler&amp;quot;&lt;br /&gt;
! '''Tunneler'''&amp;lt;br/&amp;gt;[[File:Tunneler.png|64px]]&lt;br /&gt;
| Humans ought to live underground, and enjoy the succulent fruit of the depths. ||style=&amp;quot;text-align: center;&amp;quot; data-sort-value=3|[[File:High meme impact.png|32x32px]] High || - || '''[[#Fungus|Fungus:]]''' Preferred&amp;lt;br/&amp;gt;'''[[#Insect meat|Insect meat:]]''' Loved&amp;lt;br/&amp;gt;'''[[#Indoors|Indoors:]]''' Preferred&amp;lt;br/&amp;gt;'''[[#Mining yield|Mining yield:]]''' High || - || '''[[#Mining|Mining:]]''' Prohibited, Horrible, or Disapproved || [[Ideoligion#Mining specialist|Mining specialist]] || - || - || [[Fungal gravel]] || - || [[Research#Stonecutting|Stonecutting]] || [[Undergrounder]] || - || -&lt;br /&gt;
|- id=&amp;quot;Bloodfeeding&amp;quot;&lt;br /&gt;
! '''Bloodfeeding'''&amp;lt;br/&amp;gt;{{BiotechIcon}}&amp;lt;br/&amp;gt;[[File:Bloodfeeding.png|64px]]&lt;br /&gt;
| Drinking blood is sacred. Bloodfeeders should be worshipped. ||style=&amp;quot;text-align: center;&amp;quot; data-sort-value=2|[[File:Medium meme impact.png|32x32px]] Medium || - || '''[[#Bloodfeeders|Bloodfeeders:]]''' Revered&amp;lt;br/&amp;gt;'''[[#Organ use|Organ use:]]''' Acceptable&amp;lt;br/&amp;gt;'''[[#Cannibalism|Cannibalism:]]''' Acceptable or Preferred&amp;lt;br/&amp;gt;'''[[#Execution|Execution:]]''' Don't care, Respected if guilty, or Required || - || - || - || - || - || - || - || [[Research#Electricity|Electricity]]&amp;lt;br/&amp;gt;[[Research#Deathrest|Deathrest]] || - || - || Morbid&lt;br /&gt;
|- id=&amp;quot;Ritualist&amp;quot;&lt;br /&gt;
! '''Ritualist'''&amp;lt;br/&amp;gt;{{AnomalyIcon}}&amp;lt;br/&amp;gt;[[File:Ritualist.png|64px]]&lt;br /&gt;
| There is a greater energy in the universe. Through ritual we can understand it and harness its power. ||style=&amp;quot;text-align: center;&amp;quot; data-sort-value=2|[[File:Medium meme impact.png|32x32px]] Medium || - || '''[[#Psychic rituals|Psychic rituals:]]''' Exalted&amp;lt;br/&amp;gt;'''[[#Void study|Void study:]]''' Very efficient&amp;lt;br/&amp;gt;'''[[#Research|Research:]]''' Slow, Very Slow or Extremely Slow || - || - || - || - || - || - || - || - || - || - || Morbid&lt;br /&gt;
|- id=&amp;quot;Inhuman&amp;quot;&lt;br /&gt;
! '''Inhuman'''&amp;lt;br/&amp;gt;{{AnomalyIcon}}&amp;lt;br/&amp;gt;[[File:Inhuman.png|64px]]&lt;br /&gt;
| Humanity is a barrier to our connection with the machine god and its pleasurable rewards. ||style=&amp;quot;text-align: center;&amp;quot; data-sort-value=3|[[File:High meme impact.png|32x32px]] High|| - || '''[[#Inhumanizing|Inhumanizing:]]''' Required&amp;lt;br/&amp;gt;'''[[#Execution|Execution:]]''' Respected if guilty&amp;lt;br/&amp;gt;'''[[#Cannibalism|Cannibalism:]]''' Acceptable&amp;lt;br/&amp;gt;'''[[#Corpses|Corpses:]]''' Don't care&amp;lt;br/&amp;gt;'''[[#Eating nutrient paste|Eating nutrient paste:]]''' Don't mind&amp;lt;br/&amp;gt;'''[[#Skullspike|Skullspike:]]''' Desired&amp;lt;br/&amp;gt;'''[[#Slavery|Slavery:]]''' Acceptable&amp;lt;br/&amp;gt;'''[[#Physical love|Physical love:]]''' Free&amp;lt;br/&amp;gt;'''[[#Male clothing|Male clothing:]]''' No rules&amp;lt;br/&amp;gt;'''[[#Female clothing|Female clothing:]]''' No rules&amp;lt;br/&amp;gt;'''[[#Organ use|Organ use:]]''' Acceptable&amp;lt;br/&amp;gt;'''[[#Diversity of thought|Diversity of thought:]]''' Neutral, Mild bigotry, Moderate bigotry or Intense bigotry || - || - || - || - || - || - || - || - || - || - || -&lt;br /&gt;
|- id=&amp;quot;Shipborn&amp;quot;&lt;br /&gt;
! '''Shipborn'''&amp;lt;br/&amp;gt;{{OdysseyIcon}}&amp;lt;br/&amp;gt;[[File:Shipborn.png|64px]]&lt;br /&gt;
| Humans were destined to live among the stars. ||style=&amp;quot;text-align: center;&amp;quot; data-sort-value=3|[[File:Medium meme impact.png|32x32px]] Medium|| - || '''[[#Space_Habitat|Space habitat:]]''' Preferred&amp;lt;br/&amp;gt;'''[[#Indoors|Indoors:]]''' Preferred&amp;lt;br/&amp;gt;'''[[#Eating_Nutrient_Paste|Eating nutrient paste:]]''' Don't mind&amp;lt;br/&amp;gt;'''[[#Temperature|Temperature:]]''' Tough&amp;lt;br/&amp;gt; || - || - || - || - || - || - || - || - || - || [[Undergrounder|Undergrounder]] || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Other Faction Customization ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Meme !! Civil outlander !! Rough outlander !! Gentle tribe !! Fierce tribe !! Savage tribe !! Cannibal tribe{{IdeologyIcon}} !! Nudist tribe{{IdeologyIcon}} !! Pirate gang !! Pirate cannibal gang{{IdeologyIcon}} !! Shattered Empire{{RoyaltyIcon}} !! Ancient faction*** !! Outlander refugee group{{RoyaltyIcon}} !! Beggars &amp;amp; Pilgrims{{IdeologyIcon}} !! Yttakin pirates{{BiotechIcon}} !! Waster pirates{{BiotechIcon}} !! Sanguophages{{BiotechIcon}} !! Horax cult{{AnomalyIcon}}&lt;br /&gt;
|-&lt;br /&gt;
| Supremacist || {{Cross}} || '''Required''' || {{Cross}} || {{Cross}} || '''Required''' || {{Check}} || {{Check}} || '''Required''' || '''Required''' || {{Cross}} || {{Cross}} || {{Check}} || {{Check}} || {{Cross}} || '''Required''' || {{Check}} || {{Cross}}&lt;br /&gt;
|-&lt;br /&gt;
| Loyalist || {{Cross}} || {{Cross}}* || {{Check}} || {{Check}} || {{Cross}}* || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || '''Required''' || '''Required''' || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || {{Check}} || {{Cross}}&lt;br /&gt;
|-&lt;br /&gt;
| Guilty || {{Cross}} || {{Cross}}* || {{Check}} || {{Check}} || {{Cross}}* || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || {{Check}} || {{Cross}}&lt;br /&gt;
|-&lt;br /&gt;
| Individualist || {{Check}}** || {{Cross}}* || {{Check}} || {{Check}} || {{Cross}}* || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || {{Check}} || {{Cross}}&lt;br /&gt;
|-&lt;br /&gt;
| Collectivist || {{Check}}** || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || '''Required''' || {{Cross}} || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || {{Check}} || {{Cross}}&lt;br /&gt;
|-&lt;br /&gt;
| Transhumanist || {{Cross}} || {{Check}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || '''Required''' || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || {{Check}} || {{Cross}}&lt;br /&gt;
|-&lt;br /&gt;
| Flesh purity || {{Cross}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || {{Check}} || {{Check}} || {{Check}} || {{Cross}} || {{Check}} || {{Cross}}&lt;br /&gt;
|-&lt;br /&gt;
| Raider || {{Cross}} || {{Check}} || {{Cross}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || '''Required''' || '''Required''' || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || '''Required''' || '''Required''' || {{Check}} || {{Cross}}&lt;br /&gt;
|-&lt;br /&gt;
| Proselytizer || {{Cross}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || {{Check}} || {{Cross}}&lt;br /&gt;
|-&lt;br /&gt;
| High life || {{Cross}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || {{Check}} || {{Cross}}&lt;br /&gt;
|-&lt;br /&gt;
| Nature primacy || {{Cross}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || {{Check}} || {{Cross}}&lt;br /&gt;
|-&lt;br /&gt;
| Human primacy || {{Cross}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || {{Check}} || '''Required''' || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || {{Check}} || {{Cross}}&lt;br /&gt;
|-&lt;br /&gt;
| Female supremacy || {{Cross}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || {{Check}} || {{Cross}} || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || {{Check}} || {{Cross}}&lt;br /&gt;
|-&lt;br /&gt;
| Male supremacy || {{Cross}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || {{Check}} || {{Cross}} || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || {{Check}} || {{Cross}}&lt;br /&gt;
|-&lt;br /&gt;
| Animal personhood || {{Cross}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Cross}} || {{Check}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Check}} || {{Check}} || '''Required''' || {{Cross}} || {{Check}} || {{Cross}}&lt;br /&gt;
|-&lt;br /&gt;
| Rancher || {{Cross}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || {{Check}} || {{Cross}}&lt;br /&gt;
|-&lt;br /&gt;
| Pain is virtue || {{Cross}} || {{Check}} || {{Cross}} || {{Cross}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Cross}}&lt;br /&gt;
|-&lt;br /&gt;
| Darkness || {{Cross}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || {{Check}} || {{Cross}}&lt;br /&gt;
|-&lt;br /&gt;
| Tunneler || {{Cross}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || {{Check}} || {{Cross}}&lt;br /&gt;
|-&lt;br /&gt;
| Tree connection || {{Cross}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || {{Check}} || {{Cross}}&lt;br /&gt;
|-&lt;br /&gt;
| Nudism || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || '''Required''' || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Check}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}}&lt;br /&gt;
|-&lt;br /&gt;
| Blindsight || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}}&lt;br /&gt;
|-&lt;br /&gt;
| Cannibal || {{Cross}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || '''Required''' || {{Check}} || {{Cross}} || '''Required''' || {{Cross}} || {{Cross}} || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || '''Required'''  || {{Cross}}&lt;br /&gt;
|-&lt;br /&gt;
| Bloodfeeding{{BiotechIcon}} || {{Cross}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || '''Required'''  || {{Cross}}&lt;br /&gt;
|-&lt;br /&gt;
| Ritualist{{AnomalyIcon}} || {{Cross}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Check}} || {{Check}} || {{Cross}} || {{Cross}} || {{Check}}  || '''Required'''&lt;br /&gt;
|-&lt;br /&gt;
| Inhuman{{AnomalyIcon}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}} || {{Cross}}  || '''Required'''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;nowiki/&amp;gt;* Appears on faction's options but conflicts with required meme&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;nowiki/&amp;gt;** Since only two memes available, one of Individualist OR Collectivist must be chosen&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;nowiki/&amp;gt;*** Only restricts what memes can be auto-generated and loaded from saved ideoligions, can otherwise lack or possess any memes&lt;br /&gt;
&lt;br /&gt;
=== Natural goodwill with other factions ===&lt;br /&gt;
Additionally, Supremacist and Raider have {{Bad|-50}} with everyone, Loyalist {{Bad|-10}} with everyone, and Guilty {{Good|+10}} with everyone. There is a {{Good|+10}} bonus for having the same ideoligion.&lt;br /&gt;
&lt;br /&gt;
Modifiers stack, but each pair only applies once; for example Flesh purity + Cannibal vs Flesh purity + Cannibal give {{Good|+10}} for Flesh purity/Flesh purity, {{Good|+10}} for Cannibal/Cannibal, and {{Good|+10}} for Flesh purity/Cannibal.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
! !! Individualist !! Collectivist !! Transhumanist !! Flesh purity !! Proselytizer !! High life !! Nature primacy !! Human primacy !! Female supremacy !! Male supremacy !! Animal personhood !! Rancher !! Pain is virtue !! Nudism !! Cannibal&lt;br /&gt;
|-&lt;br /&gt;
! Individualist&lt;br /&gt;
| style=&amp;quot;background-color:#d5d9db; color:forestgreen;&amp;quot;|'''+10''' || style=&amp;quot;color:firebrick;|'''-10''' || || || style=&amp;quot;color:firebrick;|'''-10''' || || || || style=&amp;quot;color:firebrick;|'''-10''' || style=&amp;quot;color:firebrick;|'''-10''' || || || || || style=&amp;quot;color:firebrick;|'''-10'''&lt;br /&gt;
|-&lt;br /&gt;
! Collectivist&lt;br /&gt;
| style=&amp;quot;color:firebrick;|'''-10''' || style=&amp;quot;background-color:#d5d9db&amp;quot; |{{Good|+10}} || || || || || || || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
! Transhumanist&lt;br /&gt;
| || || style=&amp;quot;background-color:#d5d9db&amp;quot; |{{Good|+10}} || style=&amp;quot;color:firebrick;|'''-20''' || || || style=&amp;quot;color:firebrick;|'''-20''' || style=&amp;quot;color:forestgreen;|'''+10''' || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
! Flesh purity&lt;br /&gt;
| || || style=&amp;quot;color:firebrick;|'''-20''' || style=&amp;quot;background-color:#d5d9db&amp;quot; |{{Good|+10}} || || style=&amp;quot;color:firebrick;|'''-30''' || || style=&amp;quot;color:forestgreen;|'''+10''' || || || || || || || style=&amp;quot;color:forestgreen;|'''+10'''&lt;br /&gt;
|-&lt;br /&gt;
! Proselytizer&lt;br /&gt;
| style=&amp;quot;color:firebrick;|'''-10''' || || || ||style=&amp;quot;background-color:#d5d9db&amp;quot; | || || || || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
! High life&lt;br /&gt;
| || || || style=&amp;quot;color:firebrick;|'''-30''' || || style=&amp;quot;background-color:#d5d9db&amp;quot; |{{Good|+10}} || || || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
! Nature primacy&lt;br /&gt;
| || || style=&amp;quot;color:firebrick;|'''-20''' || || || || style=&amp;quot;background-color:#d5d9db&amp;quot; |{{Good|+10}} || style=&amp;quot;color:firebrick;|'''-30''' || || || style=&amp;quot;color:forestgreen;|'''+10''' || style=&amp;quot;color:firebrick;|'''-30''' || || ||&lt;br /&gt;
|-&lt;br /&gt;
! Human primacy&lt;br /&gt;
| || || style=&amp;quot;color:forestgreen;|'''+10''' || style=&amp;quot;color:forestgreen;|'''+10''' || || || style=&amp;quot;color:firebrick;|'''-30''' || style=&amp;quot;background-color:#d5d9db&amp;quot; |{{Good|+10}} || || || style=&amp;quot;color:firebrick;|'''-10''' || || || ||&lt;br /&gt;
|-&lt;br /&gt;
! Female supremacy&lt;br /&gt;
| style=&amp;quot;color:firebrick;|'''-10''' || || || || || || || || style=&amp;quot;background-color:#d5d9db&amp;quot; |{{Good|+10}} || style=&amp;quot;color:firebrick;|'''-30''' || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
! Male supremacy&lt;br /&gt;
| style=&amp;quot;color:firebrick;|'''-10''' || || || || || || || || style=&amp;quot;color:firebrick;|'''-30''' || style=&amp;quot;background-color:#d5d9db&amp;quot; |{{Good|+10}} || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
! Animal personhood&lt;br /&gt;
| || || || || || || style=&amp;quot;color:forestgreen;|'''+10''' || style=&amp;quot;color:firebrick;|'''-10''' || || || style=&amp;quot;background-color:#d5d9db&amp;quot; |{{Good|+10}} || style=&amp;quot;color:firebrick;|'''-10''' || || ||&lt;br /&gt;
|-&lt;br /&gt;
! Rancher&lt;br /&gt;
| || || || || || || style=&amp;quot;color:firebrick;|'''-30''' || || || || style=&amp;quot;color:firebrick;|'''-10''' ||style=&amp;quot;background-color:#d5d9db&amp;quot; | || || ||&lt;br /&gt;
|-&lt;br /&gt;
! Pain is virtue&lt;br /&gt;
| || || || || || || || || || || || || style=&amp;quot;background-color:#d5d9db&amp;quot; |{{Good|+10}} || || style=&amp;quot;color:forestgreen;|'''+10'''&lt;br /&gt;
|-&lt;br /&gt;
! Nudism&lt;br /&gt;
| || || || || || || || || || || || || || style=&amp;quot;background-color:#d5d9db&amp;quot; |{{Good|+10}} ||&lt;br /&gt;
|-&lt;br /&gt;
! Cannibal&lt;br /&gt;
| style=&amp;quot;color:firebrick;|'''-10''' || || || style=&amp;quot;color:forestgreen;|'''+10''' || || || || || || || || || style=&amp;quot;color:forestgreen;|'''+10''' || || style=&amp;quot;background-color:#d5d9db&amp;quot; |{{Good|+10}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Precepts ==&lt;br /&gt;
{{Recode|reason=Convert mood descriptions to [[Template: Thought]]. {{Error|DO NOT}} convert without adequate detail to fully utilize the template, including max stack count, duration etc.}}&lt;br /&gt;
Associated precepts have a chance to appear if a meme is present, but can still be removed if not required.&lt;br /&gt;
&lt;br /&gt;
Some precepts are available to all ideologies, some require at least one of the enabling memes, and some may be unavailable if certain memes are present.&lt;br /&gt;
&lt;br /&gt;
=== Present in every ideoligion ===&lt;br /&gt;
There are 19 issues (precept categories) that are present in every ideoligion and may not be removed. However, their level may be changed. They include &amp;quot;basic&amp;quot; precepts from the base game, used in &amp;quot;Play Classic&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Issue !! Precept !! Description !! Requirement !! Associated !! Effects&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Blindness&amp;quot;&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot;| Blindness&amp;lt;br/&amp;gt;[[File:Blindness.png|64px]]&lt;br /&gt;
| Horrible || Blinding people for ideoligious reasons is horrible. || Not [[#Blindsight|Blindsight]] || || Colonists gain Mood: Someone got blinded: -2 unless they have the Psychopath or Bloodlust traits&lt;br /&gt;
|-&lt;br /&gt;
| Respected || To be blind is a moral thing worthy of respect. || [[#Blindsight|Blindsight]] || [[#Blindsight|Blindsight]] || Colonists gain Moods: Blind (+5), Vision Blocked (+2), or Was Blinded (+3). They also gain a +10 Opinion bonus towards blind pawns, or a -2 Opinion malus to sighted pawns.&lt;br /&gt;
|-&lt;br /&gt;
| Elevated || The blind stand pure above the sighted. || [[#Blindsight|Blindsight]] || [[#Blindsight|Blindsight]] || Moods as Respected, but Blind increases to +10 and Was Blinded to +5. Half-Blind (+1) and Not Blind (-3) are added. Opinion bonus towards blind pawns increases to +35 and malus towards sighted pawns increases to -10. Opinion bonus towards half-blind pawns is added (+10).&lt;br /&gt;
|-&lt;br /&gt;
| Sublime || Only the blind can be truly noble, for the sighted find their minds clouded by physical vision. || [[#Blindsight|Blindsight]] || [[#Blindsight|Blindsight]] || Moods as Elevated, but Blind increases to +15, Was Blinded to +6. Half-Blind drops to -1, and Not Blind to -6. Opinion bonus towards blind pawns increases to +50 and malus towards sighted pawns increases to -30.&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Cannibalism&amp;quot;&lt;br /&gt;
! rowspan=&amp;quot;7&amp;quot; | Cannibalism&amp;lt;br/&amp;gt;[[File:Cannibalism.png|64px]]&lt;br /&gt;
| Abhorrent || Eating human flesh is a deeply abhorrent and disgusting act. || || || {{Thought|value=-20|stack=1|label=ate human meat|desc=I had to eat human meat. This is an offense against everything I believe.|duration=1}}&amp;lt;br/&amp;gt;-12 mood for butchering a human&amp;lt;br/&amp;gt;-5 mood for a human butchered in the colony&amp;lt;br/&amp;gt;-20 opinion for butchering a human&amp;lt;br/&amp;gt;-10 opinion for eating human meat&amp;lt;br/&amp;gt;Wearing [[stuffable]] [[apparel]] made of [[human leather]]:&lt;br /&gt;
* 1 item: {{Thought|desc=Wearing human leather is disturbing. Who could do this?|label=human leather &amp;lt;APPAREL NAME&amp;gt;|value=-2|stack=1}} &lt;br /&gt;
* 2 item: {{Thought|desc=I'm dressed like an insane person.|label=human leather &amp;lt;APPAREL NAME&amp;gt; (+1)|value=-4|stack=1}} &lt;br /&gt;
* 3 item: {{Thought|desc=I think there may be a face on my clothes. Oh, no... my clothes *are* a face.|label=human leather &amp;lt;APPAREL NAME&amp;gt; (+2)|value=-6|stack=1}} &lt;br /&gt;
* 4+ item: {{Thought|desc=I look like a freak from a horror show, and I feel like I'm in a horror show.|label=human leather &amp;lt;APPAREL NAME&amp;gt; etc|value=-8|stack=1}} &lt;br /&gt;
Disabled by: [[Psychopath]], [[Bloodlust]], and [[Cannibal (Trait)|Cannibal]] traits and the [[Inhumanized]] hediff.&lt;br /&gt;
|-&lt;br /&gt;
| Horrible || Eating human flesh is a horrible thing to do. || || || {{Thought|value=-12|stack=1|label=ate human meat|desc=I had to eat human meat. This was a horrible thing.|duration=1}}&amp;lt;br/&amp;gt;-6 mood for butchering a human&amp;lt;br/&amp;gt;-3 mood for a human butchered in the colony&amp;lt;br/&amp;gt;-10 opinion for butchering a human&amp;lt;br/&amp;gt;-5 opinion for eating human meat&amp;lt;br/&amp;gt;Wearing [[stuffable]] [[apparel]] made of [[human leather]]:&lt;br /&gt;
* 1 item: {{Thought|desc=Wearing human leather is wrong.|label=human leather &amp;lt;APPAREL NAME&amp;gt;|value=-2|stack=1}} &lt;br /&gt;
* 2 item: {{Thought|desc=I feel really uncomfortable with all this human leather apparel.|label=human leather &amp;lt;APPAREL NAME&amp;gt; (+1)|value=-3|stack=1}} &lt;br /&gt;
* 3 item: {{Thought|desc=Why am I wearing so much human leather? This is horrible!|label=human leather &amp;lt;APPAREL NAME&amp;gt; (+2)|value=-5|stack=1}} &lt;br /&gt;
* 4+ item: {{Thought|desc=I look like a freak, this is horrifying!|label=human leather &amp;lt;APPAREL NAME&amp;gt; etc|value=-6|stack=1}} &lt;br /&gt;
Disabled by: [[Psychopath]], [[Bloodlust]], and [[Cannibal (Trait)|Cannibal]] traits and the [[Inhumanized]] hediff.&lt;br /&gt;
|-&lt;br /&gt;
| Disapproved || Eating human flesh is an ugly thing to do. || || [[#Pain is virtue|Pain is virtue]] || {{Thought|value=-5|stack=1|label=ate human meat|desc=I had to eat human meat. I believe such actions are wrong.|duration=1}}&amp;lt;br/&amp;gt;-3 mood for butchering a human&amp;lt;br/&amp;gt;-1 mood for a human butchered in the colony&amp;lt;br/&amp;gt;-5 opinion for butchering a human&amp;lt;br/&amp;gt;-3 opinion for eating human meat&amp;lt;br/&amp;gt;Wearing [[stuffable]] [[apparel]] made of [[human leather]]:&lt;br /&gt;
* 1 item: {{Thought|desc=I should not be wearing human leather apparel.|label=human leather &amp;lt;APPAREL NAME&amp;gt;|value=-1|stack=1}} &lt;br /&gt;
* 2 item: {{Thought|desc=I'm dressed in human skin. I do not like this.|label=human leather &amp;lt;APPAREL NAME&amp;gt; (+1)|value=-2|stack=1}} &lt;br /&gt;
* 3 item: {{Thought|desc=Why am I wearing so much human leather apparel? We should have something else to wear for me...|label=human leather &amp;lt;APPAREL NAME&amp;gt; (+2)|value=-3|stack=1}} &lt;br /&gt;
* 4+ item: {{Thought|desc=I should really wear non-human leather apparel. I look like a crazy person.|label=human leather &amp;lt;APPAREL NAME&amp;gt; etc|value=-4|stack=1}} &lt;br /&gt;
Disabled by: [[Psychopath]], [[Bloodlust]], and [[Cannibal (Trait)|Cannibal]] traits and the [[Inhumanized]] hediff.&lt;br /&gt;
|-&lt;br /&gt;
| Acceptable || Human meat is just meat, like any other. || || [[#Pain is virtue|Pain is virtue]] ||'''Mood:'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;Nullifies {{Thought|desc=I saw a dead body laying on the ground. It was disturbing.|label=observed corpse|value=-4|stack=3|multi=0.5|duration=0.5}}&amp;lt;br/&amp;gt;Nullifies the following penalties for wearing [[stuffable]] [[apparel]] made of [[human leather]]:&lt;br /&gt;
* 1 item: {{Thought|desc=Wearing human leather is disturbing. Who could do this?|label=human leather &amp;lt;APPAREL NAME&amp;gt;|value=-2|stack=1}} &lt;br /&gt;
* 2 item: {{Thought|desc=I'm dressed like an insane person.|label=human leather &amp;lt;APPAREL NAME&amp;gt; (+1)|value=-4|stack=1}} &lt;br /&gt;
* 3 item: {{Thought|desc=I think there may be a face on my clothes. Oh, no, my clothes *are* a face.|label=human leather &amp;lt;APPAREL NAME&amp;gt; (+2)|value=-6|stack=1}} &lt;br /&gt;
* 4+ item: {{Thought|desc=I look like a freak from a horror show, and I feel like I'm in a horror show.|label=human leather &amp;lt;APPAREL NAME&amp;gt; etc|value=-8|stack=1}} &lt;br /&gt;
|-&lt;br /&gt;
| Preferred || To consume human meat is a noble and necessary part of life. || || [[#Cannibal|Cannibal]] || '''Mood:'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;Nullifies {{Thought|desc=I saw a dead body laying on the ground. It was disturbing.|label=observed corpse|value=-4|stack=3|multi=0.5|duration=0.5}}&amp;lt;br/&amp;gt;{{Thought|value=+2|stack=1|label=ate human meat|desc=I ate human meat. It makes me feel noble and strong.|duration=1}}&amp;lt;br/&amp;gt;-2 mood for not eating human meat for 8 days&amp;lt;br/&amp;gt;Wearing [[stuffable]] [[apparel]] made of [[human leather]]:&lt;br /&gt;
* 1 item: {{Thought|desc=I feel good wearing human leather apparel.|label=human leather &amp;lt;APPAREL NAME&amp;gt;|value=+1|stack=1}} &lt;br /&gt;
* 2 item: {{Thought|desc=I enjoy wearing the skin of others.|label=human leather &amp;lt;APPAREL NAME&amp;gt; (+1)|value=+2|stack=1}} &lt;br /&gt;
* 3 item: {{Thought|desc=I wear the faces of my enemies. This makes me happy.|label=human leather &amp;lt;APPAREL NAME&amp;gt; (+2)|value=+3|stack=1}} &lt;br /&gt;
* 4+ item: {{Thought|desc=I look like a real cannibal. Who could doubt me?|label=human leather &amp;lt;APPAREL NAME&amp;gt; etc|value=+4|stack=1}} &lt;br /&gt;
Disabled by: [[Psychopath]] and [[Bloodlust]] traits.&lt;br /&gt;
|-&lt;br /&gt;
| Required (strong) || Consuming human flesh is important. It should be in every meal. || [[#Cannibal|Cannibal]] || [[#Cannibal|Cannibal]] || '''Mood:'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;Nullifies {{Thought|desc=I saw a dead body laying on the ground. It was disturbing.|label=observed corpse|value=-4|stack=3|multi=0.5|duration=0.5}}&amp;lt;br/&amp;gt;-2 mood for eating food without human meat&amp;lt;br/&amp;gt;-3 opinion for eating food without human meat&amp;lt;br/&amp;gt;{{Thought|value=+4|stack=1|label=ate human meat|desc=I ate human meat, as every real human should.|duration=1}}&amp;lt;br/&amp;gt;-4 mood for not eating human meat for 8 days&amp;lt;br/&amp;gt;Wearing [[stuffable]] [[apparel]] made of [[human leather]]:&lt;br /&gt;
* 1 item: {{Thought|desc=I enjoy wearing the faces of others.|label=human leather &amp;lt;APPAREL NAME&amp;gt;|value=+2|stack=1}} &lt;br /&gt;
* 2 item: {{Thought|desc=This will scare them. All will know my power.|label=human leather &amp;lt;APPAREL NAME&amp;gt; (+1)|value=+3|stack=1}} &lt;br /&gt;
* 3 item: {{Thought|desc=The faces on my clothes aren't smiling, but they make *me* happy.|label=human leather &amp;lt;APPAREL NAME&amp;gt; (+2)|value=+5|stack=1}} &lt;br /&gt;
* 4+ item: {{Thought|desc=The flesh! The flesh signals my triumph!|label=human leather &amp;lt;APPAREL NAME&amp;gt; etc|value=+6|stack=1}} &lt;br /&gt;
Disabled by: [[Psychopath]] and [[Bloodlust]] traits.&lt;br /&gt;
|-&lt;br /&gt;
| Required (ravenous) || Man-flesh is morality. To eat a meal without it is unthinkable. || [[#Cannibal|Cannibal]] || [[#Cannibal|Cannibal]] || '''Mood:'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;Nullifies {{Thought|desc=I saw a dead body laying on the ground. It was disturbing.|label=observed corpse|value=-4|stack=3|multi=0.5|duration=0.5}}&amp;lt;br/&amp;gt;-4 mood for eating food without human meat&amp;lt;br/&amp;gt;-5 opinion for eating food without human meat&amp;lt;br/&amp;gt;{{Thought|value=+6|stack=1|label=ate human meat|desc=I ate human meat! The world is right, and I am as I should be.|duration=1}}&amp;lt;br/&amp;gt;-8 mood for not eating human meat for 8 days&amp;lt;br/&amp;gt;Wearing [[stuffable]] [[apparel]] made of [[human leather]]:&lt;br /&gt;
* 1 item: {{Thought|desc=I enjoy wearing the suffering of others.|label=human leather &amp;lt;APPAREL NAME&amp;gt;|value=+2|stack=1}} &lt;br /&gt;
* 2 item: {{Thought|desc=This will scare them. All will know my power.|label=human leather &amp;lt;APPAREL NAME&amp;gt; (+1)|value=+4|stack=1}} &lt;br /&gt;
* 3 item: {{Thought|desc=The faces on my clothes aren't smiling, but they make *me* happy.|label=human leather &amp;lt;APPAREL NAME&amp;gt; (+2)|value=+6|stack=1}} &lt;br /&gt;
* 4+ item: {{Thought|desc=The flesh! The flesh signals my triumph!|label=human leather &amp;lt;APPAREL NAME&amp;gt; etc|value=+8|stack=1}} &lt;br /&gt;
Disabled by: [[Psychopath]] and [[Bloodlust]] traits.&lt;br /&gt;
|- id=&amp;quot;Corpses&amp;quot;&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Corpses&amp;lt;br/&amp;gt;[[File:Precept corpses.png|64px]]&lt;br /&gt;
| Ugly || The sight of a dead person is horrible. || || || '''Mood:'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;Experiences default {{Thought|desc=I saw a dead body laying on the ground. It was disturbing.|label=observed corpse|value=-4|stack=3|multi=0.5|duration=0.5}} upon seeing a [[human]] [[corpse]]. Note that this thought is nullified by the [[Bloodlust]], [[Psychopath]], and [[Cannibal (Trait)|Cannibal]] traits, as well as pro-[[#Cannibalism|Cannibalism]] precepts.&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;Experiences default {{Thought|desc=I saw a rotting corpse laying on the ground. It was disturbing.|label=observed rotting corpse|value=-6|stack=5|multi=0.5|duration=0.5}}&lt;br /&gt;
|-&lt;br /&gt;
| Don't care || The sight of a dead person is nothing to be concerned about. || [[#Pain is virtue|Pain is virtue]]&amp;lt;br/&amp;gt;[[#Cannibal|Cannibal]]&amp;lt;br/&amp;gt;[[#Supremacist|Supremacist]]&amp;lt;br/&amp;gt;[[#Raider|Raider]] || [[#Pain is virtue|Pain is virtue]]&amp;lt;br/&amp;gt;[[#Cannibal|Cannibal]]&amp;lt;br/&amp;gt;[[#Raider|Raider]] || '''Mood:'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;Nullifies {{Thought|desc=I saw a dead body laying on the ground. It was disturbing.|label=observed corpse|value=-4|stack=3|multi=0.5|duration=0.5}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;Nullifies {{Thought|desc=I saw a rotting corpse laying on the ground. It was disturbing.|label=observed rotting corpse|value=-6|stack=5|multi=0.5|duration=0.5}}&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Diversity of thought&amp;quot;&lt;br /&gt;
! rowspan=&amp;quot;7&amp;quot; | Diversity of thought&amp;lt;br/&amp;gt;[[File:IdeoDiversity.png|64px]]&lt;br /&gt;
| Intense bigotry || Other beliefs are evil deceptions ruining the world. It's totally unacceptable to let them exist in the community. || || [[#Loyalist|Loyalist]]&amp;lt;br/&amp;gt;[[#Proselytizer|Proselytizer]] || -3, -6, or -9 mood for having other ideologies in the colony&amp;lt;br/&amp;gt;+3 for having all colonists of the same ideology&amp;lt;br/&amp;gt;-25 opinion for different ideology&amp;lt;br/&amp;gt;-5 mood for having a leader of a different ideoligion&amp;lt;br/&amp;gt;-4 mood for having another ideoligion's altar in the same room as own ideoligion's&amp;lt;br/&amp;gt;+5 mood for matching style surroundings&amp;lt;br/&amp;gt;-4 mood for mismatching style surroundings&amp;lt;br/&amp;gt;-6 mood for participating in another ideoligion's ritual&lt;br /&gt;
|-&lt;br /&gt;
| Moderate bigotry || Other beliefs are immoral delusions which do real harm. It's bad to let them exist in the community. || || [[#Loyalist|Loyalist]]&amp;lt;br/&amp;gt;[[#Proselytizer|Proselytizer]] || -2, -4, or -6 mood for having other ideologies in the colony&amp;lt;br/&amp;gt;+2 for having all colonists of the same ideology&amp;lt;br/&amp;gt;-15 opinion for different ideology&amp;lt;br/&amp;gt;-4 mood for having a leader of a different ideoligion&amp;lt;br/&amp;gt;-2 mood for having another ideoligion's altar in the same room as own ideoligion's&amp;lt;br/&amp;gt;+4 mood for matching style surroundings&amp;lt;br/&amp;gt;-3 mood for mismatching style surroundings&amp;lt;br/&amp;gt;-4 mood for participating in another ideoligion's ritual&lt;br /&gt;
|-&lt;br /&gt;
| Mild bigotry || Other beliefs are clearly folly. It's not good to let them exist in the community. || || [[#Loyalist|Loyalist]]&amp;lt;br/&amp;gt;[[#Proselytizer|Proselytizer]] || -1, -2, or -3 mood for having other ideologies in the colony&amp;lt;br/&amp;gt;+1 for having all colonists of the same ideology&amp;lt;br/&amp;gt;-5 opinion for different ideology&amp;lt;br/&amp;gt;-3 mood for having a leader of a different ideoligion&amp;lt;br/&amp;gt;-1 mood for having another ideoligion's altar in the same room as own ideoligion's&amp;lt;br/&amp;gt;+3 mood for matching style surroundings&amp;lt;br/&amp;gt;-2 mood for mismatching style surroundings&amp;lt;br/&amp;gt;-3 mood for participating in another ideoligion's ritual&lt;br /&gt;
|-&lt;br /&gt;
| Neutral || Other beliefs are neither approved or disapproved. || || || -2 mood for having a leader of a different ideoligion&amp;lt;br/&amp;gt;+2 mood for matching style surroundings&amp;lt;br/&amp;gt;0 mood for mismatching style surroundings&lt;br /&gt;
|-&lt;br /&gt;
| Appreciated || Other beliefs are worth understanding. It's good to live with others who think differently. || || [[#Individualist|Individualist]] || +1, +2, or +3 mood for having other ideologies in the colony&amp;lt;br/&amp;gt;0 mood for matching style surroundings&amp;lt;br/&amp;gt;+2 mood for mismatching style surroundings&lt;br /&gt;
|-&lt;br /&gt;
| Highly appreciated || Other beliefs hold unique knowledge. It's great to live with others who think differently. || [[#Individualist|Individualist]] || [[#Individualist|Individualist]] || +2, +4, or +6 mood for having other ideologies in the colony&amp;lt;br/&amp;gt;0 mood for matching style surroundings&amp;lt;br/&amp;gt;+3 mood for mismatching style surroundings&lt;br /&gt;
|-&lt;br /&gt;
| Exalted || Working through disagreement is the height of morality. It's very moral to live with others who think differently. || [[#Individualist|Individualist]] || [[#Individualist|Individualist]] || +3, +6, or +9 mood for having other ideologies in the colony&amp;lt;br/&amp;gt;0 mood for matching style surroundings&amp;lt;br/&amp;gt;+4 mood for mismatching style surroundings&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Eating nutrient paste&amp;quot;&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Eating Nutrient Paste&amp;lt;br/&amp;gt;[[File:EatingNutrientPaste.png|64px]]&lt;br /&gt;
| Disgusting || Nutrient paste is disgusting. || || || '''Mood:'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;Experiences default {{Thought|desc=I had to eat a disgusting, tasteless meal. I know it keeps you alive, but nobody wants to swallow that glop.|label=ate nutrient paste meal|value=-4|stack=1|duration=1}} Note that this thought is nullified by the [[ascetic]] trait.&lt;br /&gt;
|-&lt;br /&gt;
| Don't mind || There's nothing wrong with a meal of efficient, healthy nutrient paste. || [[#Transhumanist|Transhumanist]]&amp;lt;br/&amp;gt;[[#Inhuman|Inhuman]] || [[#Transhumanist|Transhumanist]] || '''Mood:'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;Prevents {{Thought|desc=I had to eat a disgusting, tasteless meal. I know it keeps you alive, but nobody wants to swallow that glop.|label=ate nutrient paste meal|value=-4|stack=1|}}&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Execution&amp;quot;&lt;br /&gt;
! rowspan=6 | Execution&amp;lt;br/&amp;gt;[[File:Execution.png|64px]]&lt;br /&gt;
| Always abhorrent || Executing a prisoner is an abhorrent evil under any circumstances. || Not [[#Pain is virtue|pain is virtue]] || [[#Individualist|Individualist]] || Pawns will not execute prisoners&amp;lt;br/&amp;gt;-20 mood for 6 days for killing a prisoner&amp;lt;br/&amp;gt;-3/-4/-6/-7/-7 mood for 6 days for guilty execution/euthanasia/execution/organ harvest/ripscanning kill on a colonist&amp;lt;br/&amp;gt;-3/-4/-6/-7/-7 mood for 6 days for guilty execution/euthanasia/execution/organ harvest/ripscanning kill on a prisoner or guest&amp;lt;br/&amp;gt;-7 mood for 6 days for non-execution prisoner death&amp;lt;br/&amp;gt;-25 opinion for executing a prisoner&amp;lt;br/&amp;gt;-25 opinion for killing a prisoner{{Check Tag|Moods need verification}}&lt;br /&gt;
|-&lt;br /&gt;
| Always horrible || Executing a prisoner is a horrible thing under any circumstances. || Not [[#Pain is virtue|pain is virtue]]&amp;lt;br/&amp;gt;Not [[#Cannibal|cannibal]] || [[#Individualist|Individualist]] || -15 mood for 6 days for killing or executing a prisoner&amp;lt;br/&amp;gt;-2/-3/-5/-6 mood for 6 days for guilty execution/euthanasia/execution/organ harvest kill on a colonist&amp;lt;br/&amp;gt;-2/-3/-5/-6 mood for 6 days for guilty execution/euthanasia/execution/organ harvest kill on a prisoner or guest&amp;lt;br/&amp;gt;-5 mood for 6 days for non-execution guilty prisoner death&amp;lt;br/&amp;gt;-15 opinion for executing a prisoner&amp;lt;br/&amp;gt;-15 opinion for killing a prisoner{{Check Tag|Moods need verification}}&lt;br /&gt;
|-&lt;br /&gt;
| Horrible if innocent || Executing an innocent prisoner is a horrible thing. If the prisoner is guilty, it's acceptable. || Not [[#Cannibal|cannibal]] || || -15 mood for 6 days for killing or executing an innocent prisoner&amp;lt;br/&amp;gt;-2/-3/-5/-6 mood for 6 days for guilty execution/euthanasia/execution/organ harvest kill on a colonist&amp;lt;br/&amp;gt;-2/-3/-5/-6 mood for 6 days for guilty execution/euthanasia/execution/organ harvest kill on a prisoner or guest&amp;lt;br/&amp;gt;-5 mood for 6 days for non-execution guilty prisoner death&amp;lt;br/&amp;gt;-30 opinion for executing an innocent prisoner&amp;lt;br/&amp;gt;-15 opinion for killing an innocent prisoner{{Check Tag|Moods need verification}}&lt;br /&gt;
|-&lt;br /&gt;
| Don't care || Executing prisoners is acceptable, whether they are guilty or innocent. || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Respected if guilty || Executing prisoners is acceptable. If the prisoner is guilty, it is cause for great happiness. || || [[#Pain is virtue|Pain is virtue]]&amp;lt;br/&amp;gt;[[#Collectivist|Collectivist]] || +10 mood for 6 days for executing a guilty prisoner&amp;lt;br/&amp;gt;+3 mood for 6 days for a guilty prisoner executed&amp;lt;br/&amp;gt;+20 opinion for executing a guilty prisoner&lt;br /&gt;
|-&lt;br /&gt;
| Required || Prisoners must be executed on a regular basis. When they are, it is a happy occasion. || || [[#Supremacist|Supremacist]]&amp;lt;br/&amp;gt;[[#Pain is virtue|Pain is virtue]] || +10 mood for 6 days for executing a prisoner&amp;lt;br/&amp;gt;+10 mood for killing a prisoner&amp;lt;br/&amp;gt;+3 mood for 2 days for prisoner or guest executed&amp;lt;br/&amp;gt;-3 mood for no executions for 30 days&amp;lt;br/&amp;gt;+15 opinion for executing a prisoner&amp;lt;br/&amp;gt;+15 opinion for killing a prisoner&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Fungus&amp;quot;&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Fungus&amp;lt;br/&amp;gt;[[File:Fungus.png|64px]]&lt;br /&gt;
| Despised || That dark-grown fungus food is just disgusting || Not [[#Tunneler|Tunneler]] || || Ate [[raw fungus|fungus]] raw: -6&amp;lt;br/&amp;gt;Ate fungus cooked: -3&lt;br /&gt;
|-&lt;br /&gt;
| Preferred || Fungus is the right crop to eat. Crops of the light are poisoned by the air and sun. || [[#Tunneler|Tunneler]] || [[#Tunneler|Tunneler]] || Ate [[raw fungus|fungus]]: +3&amp;lt;br/&amp;gt;Ate cooked fungus: +3&amp;lt;br/&amp;gt;Ate non-fungus plant raw: -5&amp;lt;br/&amp;gt;Ate non-fungus plant cooked: -3&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Insect meat&amp;quot;&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Insect Meat&amp;lt;br/&amp;gt;[[File:InsectMeat.png|64px]]&lt;br /&gt;
| Despised || Insect meat is disgusting to even look at, much less eat. Slimy! || || || -6 mood for eating insect meat&amp;lt;br/&amp;gt;-3 mood for eating cooked insect meat&lt;br /&gt;
|-&lt;br /&gt;
| Loved || There is nothing more divine than the succulent, slimy flesh of an insect || || [[#Tunneler|Tunneler]] || Gives a +6 moodlet when pawns eat meals with insect meat as an ingredient, duration 1 day.&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Marriage name&amp;quot;&lt;br /&gt;
! rowspan=&amp;quot;6&amp;quot; | Marriage Name&amp;lt;br/&amp;gt;[[File:MarriageName.png|64px]]&lt;br /&gt;
| Always Man's || Couples must share the man's name. || || [[#Male Supremacy|Male supremacy]] || Couples always take man's name&lt;br /&gt;
|-&lt;br /&gt;
| Usually Man's || Most couples share the man's name || || || As random, but 95% to not consider taking woman's name and 75% to not consider keeping names&lt;br /&gt;
|-&lt;br /&gt;
| Random || Couples randomly choose whether to share a name, and which name to share. || || || Couples randomly select between taking man's, woman's, or keeping names&lt;br /&gt;
|-&lt;br /&gt;
| Keep Names || Both partners keep their names upon marriage. || Not [[#Collectivist|Collectivist]] || || Couples always keep their names&lt;br /&gt;
|-&lt;br /&gt;
| Usually Woman's || Most couples share the woman's name || || || As random, but 95% to not consider taking man's name and 75% to not consider keeping names&lt;br /&gt;
|-&lt;br /&gt;
| Always Woman's || Couples must share the woman's name. || || [[#Female supremacy|Female supremacy]] || Couples always take woman's name&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Female clothing&amp;quot;&lt;br /&gt;
! rowspan=7 | Female Clothing&amp;lt;br/&amp;gt;[[File:Nudity Female.png|64px]]&lt;br /&gt;
| Fully nude || Women must be entirely nude at all times. Utility items like shields belts or jump packs are acceptable. || || [[#Male supremacy|Male supremacy]]&amp;lt;br/&amp;gt;[[#Nudism|Nudism]] || -4 mood when wearing any clothing and for 0.5 days after removing it&amp;lt;br/&amp;gt;-5 opinion for wearing clothes&lt;br /&gt;
|-&lt;br /&gt;
| Pants at most || Women should cover their groin, but may not cover anything else. Utility items like shields belts or jump packs are acceptable. || || [[#Nudism|Nudism]] || -4 mood when wearing any clothing except pants and for 0.5 days after removing it&amp;lt;br/&amp;gt;-4 mood for not covering groin&amp;lt;br/&amp;gt;-5 opinion for wearing clothes other than pants&amp;lt;br/&amp;gt;-10 opinion for uncovered groin&lt;br /&gt;
|-&lt;br /&gt;
| No rules || A woman may display or cover any part of her body. || || [[#Individualist|Individualist]] ||&lt;br /&gt;
|-&lt;br /&gt;
| Pants || Women must cover their groin. The rest of the body may be covered, or not. || || || -4 mood for not covering groin&amp;lt;br/&amp;gt;-10 opinion for uncovered groin&lt;br /&gt;
|-&lt;br /&gt;
| Pants and shirt || Women must cover their groin and chest. The rest of the body may be covered, or not. || || || -4 mood for not covering groin or chest&amp;lt;br/&amp;gt;-10 opinion for uncovered groin or chest&lt;br /&gt;
|-&lt;br /&gt;
| Pants, shirt, and hat || Women must cover their entire body and hair. The face may be covered, or not. || || [[#Male supremacy|Male supremacy]] || -4 mood for not covering groin, chest, or hair&amp;lt;br/&amp;gt;-10 opinion for uncovered groin, chest, or hair&lt;br /&gt;
|-&lt;br /&gt;
| Fully covered || Women must cover their entire body, including their hair and face. || || [[#Male supremacy|Male supremacy]] || -4 mood for not covering groin, chest, hair, or face&amp;lt;br/&amp;gt;-10 opinion for uncovered groin, chest, hair, or face&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Male clothing&amp;quot;&lt;br /&gt;
! rowspan=7 | Male Clothing&amp;lt;br/&amp;gt;[[File:Nudity Male.png|64px]]&lt;br /&gt;
| Fully nude || Men must be entirely nude at all times. Utility items like shields belts or jump packs are acceptable. || || [[#Female supremacy|Female supremacy]]&amp;lt;br/&amp;gt;[[#Nudism|Nudism]] || -4 mood when wearing any clothing and for 0.5 days after removing it&amp;lt;br/&amp;gt;-5 opinion for wearing clothes&lt;br /&gt;
|-&lt;br /&gt;
| Pants at most || Men should cover their groin, but may not cover anything else. Utility items like shields belts or jump packs are acceptable. || || [[#Nudism|Nudism]] || -4 mood when wearing any clothing except pants and for 0.5 days after removing it&amp;lt;br/&amp;gt;-4 mood for not covering groin&amp;lt;br/&amp;gt;-5 opinion for wearing clothes other than pants&amp;lt;br/&amp;gt;-10 opinion for uncovered groin&lt;br /&gt;
|-&lt;br /&gt;
| No rules || A man may display or cover any part of his body. || || [[#Individualist|Individualist]] ||&lt;br /&gt;
|-&lt;br /&gt;
| Pants || Men must cover their groin. The rest of the body may be covered, or not. || || || -4 mood for not covering groin&amp;lt;br/&amp;gt;-10 opinion for uncovered groin&lt;br /&gt;
|-&lt;br /&gt;
| Pants and shirt || Men must cover their groin and chest. The rest of the body may be covered, or not. || || || -4 mood for not covering groin or chest&amp;lt;br/&amp;gt;-10 opinion for uncovered groin or chest&lt;br /&gt;
|-&lt;br /&gt;
| Pants, shirt, and hat || Men must cover their entire body and hair. The face may be covered, or not. || || [[#Female supremacy|Female supremacy]] || -4 mood for not covering groin, chest, or hair&amp;lt;br/&amp;gt;-10 opinion for uncovered groin, chest, or hair&lt;br /&gt;
|-&lt;br /&gt;
| Fully covered || Men must cover their entire body, including their hair and face. || || [[#Female supremacy|Female supremacy]] || -4 mood for not covering groin, chest, hair, or face&amp;lt;br/&amp;gt;-10 opinion for uncovered groin, chest, hair, or face&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Organ use&amp;quot;&lt;br /&gt;
! rowspan=4 | Organ use&amp;lt;br/&amp;gt;[[File:OrganUse.png|64px]]&lt;br /&gt;
| Totally abhorrent || Any harvesting, trading, or installing natural organs is an abhorrent evil. || || Flesh purity || -30 mood for harvesting someone's organ&amp;lt;br/&amp;gt;-10 mood for organ harvested in the colony&amp;lt;br/&amp;gt;-30 mood for trading an organ&amp;lt;br/&amp;gt;-5 mood for organ traded in the colony&amp;lt;br/&amp;gt;-30 mood for installing an organ&amp;lt;br/&amp;gt;-4 mood for organ installed in the colony&amp;lt;br/&amp;gt;-30 opinion for harvesting an organ&amp;lt;br/&amp;gt;-30 opinion for trading an organ&amp;lt;br/&amp;gt;-15 opinion for installing an organ&lt;br /&gt;
|-&lt;br /&gt;
| No harvest or sell || Harvesting organs is a horrible thing. Selling any natural organ is pretty bad too. However, it's okay to buy and install them. || || Flesh purity || -15 mood for harvesting someone's organ&amp;lt;br/&amp;gt;-5 mood for organ harvested in the colony&amp;lt;br/&amp;gt;-8 mood for selling an organ&amp;lt;br/&amp;gt;-2 mood for organ sold in the colony&amp;lt;br/&amp;gt;-20 opinion for harvesting an organ&amp;lt;br/&amp;gt;-10 opinion for selling an organ&lt;br /&gt;
|-&lt;br /&gt;
| No harvest || Harvesting organs is a horrible thing. However, it's okay to buy, install, or sell them. || || Cannibal&amp;lt;br/&amp;gt;Raider&amp;lt;br/&amp;gt;Collectivist || -15 mood for harvesting someone's organ&amp;lt;br/&amp;gt;-5 mood for organ harvested in the colony&amp;lt;br/&amp;gt;-20 opinion for harvesting an organ&lt;br /&gt;
|-&lt;br /&gt;
| Acceptable || It's okay to harvest, buy, install, or sell organs. || || Cannibal&amp;lt;br/&amp;gt;Raider&amp;lt;br/&amp;gt;Collectivist ||&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Physical love&amp;quot;&lt;br /&gt;
! rowspan=&amp;quot;7&amp;quot; | Physical Love&amp;lt;br/&amp;gt;[[File:PhysicalLove.png|64px]]&lt;br /&gt;
| Free || Physical intimacy is a natural part of life, with any partner, married or not. || || Individualist&lt;br /&gt;
|-&lt;br /&gt;
| Prohibited || The physical act of lust is always vile, disgusting, and wrong. || || [[#Flesh purity|Flesh purity]]&amp;lt;br/&amp;gt;[[#Pain is virtue|Pain is virtue]] || Pawns will not share beds&amp;lt;br/&amp;gt;-30 mood for 1 day for lovin'&amp;lt;br/&amp;gt;-20 opinion for lovin'&lt;br /&gt;
|-&lt;br /&gt;
| Horrible || The physical act of lust is vile, though within marriage it is necessary. || || [[#Flesh purity|Flesh purity]]&amp;lt;br/&amp;gt;[[#Pain is virtue|Pain is virtue]] || Pawns will not share beds with non-spouses&amp;lt;br/&amp;gt;-30 mood for 1 day for lovin' with non-spouse&amp;lt;br/&amp;gt;-20 opinion for lovin' with non-spouse&amp;lt;br/&amp;gt;-5 mood for 1 day for lovin' with spouse&amp;lt;br/&amp;gt;-5 opinion for lovin' with spouse&lt;br /&gt;
|-&lt;br /&gt;
| Spouse only (strict) || To make love with another outside of marriage is deeply immoral. || || || Pawns will not share beds with non-spouses&amp;lt;br/&amp;gt;-30 mood for 1 day for lovin' with non-spouse&amp;lt;br/&amp;gt;-20 opinion for lovin' with non-spouse&lt;br /&gt;
|-&lt;br /&gt;
| Spouse only (moderate) || To make love with another outside of marriage is wrong. || || || Pawns will not share beds with non-spouses&amp;lt;br/&amp;gt;-15 mood for 1 day for lovin' with non-spouse&amp;lt;br/&amp;gt;-10 opinion for lovin' with non-spouse&lt;br /&gt;
|-&lt;br /&gt;
| Spouse only (mild) || Though it's understandable to make love with another outside of marriage, it's not a good thing. || || || Pawns will not share beds with non-spouses&amp;lt;br/&amp;gt;-5 mood for 1 day for lovin' with non-spouse&amp;lt;br/&amp;gt;-5 opinion for lovin' with non-spouse&lt;br /&gt;
|-&lt;br /&gt;
| Free and approved || The physical act of love is a noble thing, no matter who does it with whom. || Not [[#Flesh purity|flesh purity]] || [[#Individualist|Individualist]] || +5 opinion for loving'&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Research&amp;quot;&lt;br /&gt;
! rowspan=&amp;quot;7&amp;quot;| Research&amp;lt;br/&amp;gt;[[File:Research.png|64px]]&lt;br /&gt;
| Not allowed || To research technology is an immoral act. It is not to be done. || || || '''Prohibition:'''&amp;lt;br/&amp;gt;Pawns are unwilling to research.&lt;br /&gt;
|-&lt;br /&gt;
| Extremely slow || Research isn't a worthwhile activity at all. Why try hard at it? || || || '''Stats:'''&amp;lt;br/&amp;gt;[[Research Speed]]: {{Bad|x0.25}}&lt;br /&gt;
|-&lt;br /&gt;
| Very slow || Research work is unworthy of serious respect. Better not to be seen trying hard at it. || || || '''Stats:'''&amp;lt;br/&amp;gt;[[Research Speed]]: {{Bad|x0.50}}&lt;br /&gt;
|-&lt;br /&gt;
| Slow || Research work just isn't particularly meaningful. Why try hard at it? || || || '''Stats:'''&amp;lt;br/&amp;gt;[[Research Speed]]: {{Bad|x0.75}}&lt;br /&gt;
|-&lt;br /&gt;
| Normal || Research is a worthwhile form of work that the community needs. || || || '''Stats:'''&amp;lt;br/&amp;gt;[[Research Speed]]: '''×1.00'''&lt;br /&gt;
|-&lt;br /&gt;
| Fast || Research is an especially virtuous activity. || || || '''Stats:'''&amp;lt;br/&amp;gt;[[Research Speed]]: {{Good|x1.25}}&lt;br /&gt;
|-&lt;br /&gt;
| Very fast || Research is among the most meaningful acts a person can perform. || || || '''Stats:'''&amp;lt;br/&amp;gt;[[Research Speed]]: {{Good|x1.50}}&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Scarification&amp;quot;&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot;| Scarification&amp;lt;br/&amp;gt;[[File:Scarification.png|64px]]&lt;br /&gt;
| Extreme || Every person ought to bear the ritual scars - all over. || [[#Pain is virtue|Pain is virtue]] || || +6 mood for getting scarified&amp;lt;br/&amp;gt;+3 mood for having 5 scars&amp;lt;br/&amp;gt;-3 mood for having fewer than 5 scars&amp;lt;br/&amp;gt;+10 opinion for having 5 scars&amp;lt;br/&amp;gt;-5 opinion for having 1-4 scars&amp;lt;br/&amp;gt;-10 opinion for having no scars&lt;br /&gt;
|-&lt;br /&gt;
| Heavy || Every person ought to bear the ritual scars - many of them. || [[#Pain is virtue|Pain is virtue]] || || +5 mood for getting scarified&amp;lt;br/&amp;gt;+2 mood for having 3 scars&amp;lt;br/&amp;gt;-2 mood for having fewer than 3 scars&amp;lt;br/&amp;gt;+5 opinion for having 3 scars&amp;lt;br/&amp;gt;-3 opinion for having 1-2 scars&amp;lt;br/&amp;gt;-5 opinion for having no scars&lt;br /&gt;
|-&lt;br /&gt;
| Minor || Every person ought to bear a ritual scar. || [[#Pain is virtue|Pain is virtue]] || || +3 mood for getting scarified&amp;lt;br/&amp;gt;+1 mood for having a scar&amp;lt;br/&amp;gt;-1 mood for having no scars&amp;lt;br/&amp;gt;+3 opinion for having a scar&amp;lt;br/&amp;gt;-3 opinion for having no scars&lt;br /&gt;
|-&lt;br /&gt;
| Horrible || Scarifying people for ideoligious reasons is horrible. || Not [[#Pain is virtue|Pain is virtue]] || || -2 mood for scarification ceremony in the colony&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Skullspike&amp;quot;&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Skullspike&amp;lt;br/&amp;gt;[[File:Precept skullspike.png|64px]]&lt;br /&gt;
| Desired || A skull on a spike symbolizes our superiority. || || [[#Pain is virtue|Pain is virtue]]&amp;lt;br/&amp;gt;[[#Supremacist|Supremacist]]&amp;lt;br/&amp;gt;[[#Raider|Raider]] || Adds a mood increase of {{+|1}} for 1-3 [[Skullspike|skullspikes]], {{+|2}} for 4-8 skullspikes, and {{+|3}} for 9+ skullspikes. Mood effects negated by the [[Masochist]] trait.&lt;br /&gt;
|-&lt;br /&gt;
| Disapproved || Putting skulls on spikes is a barbaric practice. || Not [[#Pain is virtue|Pain is virtue]]&amp;lt;br/&amp;gt;Not [[#Supremacist|Supremacist]]&amp;lt;br/&amp;gt;Not [[#Raider|Raider]] || || Adds a mood malus of {{--|1}} for 1-3 [[Skullspike|skullspikes]], {{--|2}} for 4-8 skullspikes, and {{--|3}} for 9+ skullspikes. Mood effects negated by the [[Masochist]] trait.&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Slavery&amp;quot;&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | Slavery&amp;lt;br/&amp;gt;[[File:Slavery.png|64px]]&lt;br /&gt;
| Abhorrent || Owning or trading human beings is deeply evil. || Not [[#Raider|raider]] || [[#Guilty|Guilty]]&amp;lt;br/&amp;gt;[[#Individualist|Individualist]] || '''Prohibitions:'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;Pawns will not sell pawns into [[slavery]]&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;Pawns will not enslave [[prisoners]]&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;'''Mood:'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=We sold someone into slavery. It was an abhorrent, barbaric act.|label=slave sold|value=-10|stack=5|multi=0.75|duration=6}} (Colony wide). Does not apply to quest lodgers.&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=We're keeping slaves. It's barbaric.|label=slaves in colony|value=-3}}, per slave. Does not apply to quest lodgers.&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;'''Opinion:'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{--|20}} for selling a pawn into slavery&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{--|20}} opinion for enslaving a pawn&lt;br /&gt;
|-&lt;br /&gt;
| Horrible || Owning or trading human beings is a horrible thing. || Not [[#Raider|raider]] || [[#Guilty|Guilty]]&amp;lt;br/&amp;gt;[[#Individualist|Individualist]] || '''Mood:'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=We're keeping slaves. It's wrong.|label=slaves in colony|value=-2}}, per [[slave]]. Does not apply to quest lodgers.&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=I sold a person into slavery. I'm not sure I can forgive myself.|label=sold slave|value=-10|stack=1|duration=6}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=I forced someone into slavery. How can I justify that?|label=enslaved prisoner|value=-10|stack=1|duration=6}} (Only if they weren't previously enslaved)&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=We sold someone into slavery. What a horrible thing to do.|label=slave sold|value=-3|stack=5|multi=0.75|duration=6}} (Colony wide). Does not apply to quest lodgers.&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=We enslaved someone. What a horrible thing to do to another human.|label=prisoner enslaved|value=-3|stack=5|multi=0.75|duration=6}} (Colony wide). Does not apply to quest lodgers.&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;'''Opinion:'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{--|10}} for selling a pawn into slavery&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{--|10}} opinion for enslaving a pawn&lt;br /&gt;
|-&lt;br /&gt;
| Disapproved || Slavery is part of life, though it is extremely distasteful. || Not [[#Raider|raider]] || [[#Guilty|Guilty]]&amp;lt;br/&amp;gt;[[#Individualist|Individualist]] || '''Mood:'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=We're keeping slaves. Even if it's necessary, it's distasteful and I wish we wouldn't.|label=slaves in colony|value=-1}}, per [[slave]]. Does not apply to quest lodgers.&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=I sold a person into slavery. I hope nothing terrible happens to them.|label=sold slave|value=-5|stack=1|duration=6}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=I enslaved a person. It's hard to justify such actions.|label=enslaved prisoner|value=-5|stack=1|duration=6}} (Only if they weren't previously enslaved)&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=We sold a person into slavery. We shouldn't have done that.|label=slave sold|value=-2|stack=5|multi=0.75|duration=6}} (Colony wide). Does not apply to quest lodgers.&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=We enslaved someone. We shouldn't have done that.|label=prisoner enslaved|value=-2|stack=5|multi=0.75|duration=6}} (Colony wide). Does not apply to quest lodgers.&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;'''Opinion:'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{--|5}} for selling a pawn into slavery&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{--|5}} opinion for enslaving a pawn&lt;br /&gt;
|-&lt;br /&gt;
| Acceptable || Slavery is a normal, unremarkable part of life. || || || ''No mood or opinion effects for enslaving, buying, or selling slaves.''&amp;lt;br/&amp;gt;Faction will accept slaves when being traded with.&lt;br /&gt;
|-&lt;br /&gt;
| Honorable || One who owns and trades slaves should be honored and respected. || Not [[#Guilty|guilty]]&amp;lt;br/&amp;gt;Not [[#Individualist|individualist]] || [[#Supremacist|Supremacist]]&amp;lt;br/&amp;gt;[[#Collectivist|Collectivist]]&amp;lt;br/&amp;gt;[[#Pain is virtue|Pain is virtue]] || '''Mood:'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=We've got slaves. It means we're on the right path.|label=slaves in colony|value=+1}}, per [[slave]]&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=Without slaves, nobody will respect us.|label=no slaves in colony|value=-2|stack=1}}, if Low [[expectations]] or higher&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=I sold someone into slavery. It'll make people notice my stature.|label=sold slave|value=+4|stack=1|duration=6}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=I took someone into slavery. With no choice, they had to submit to me.|label=enslaved prisoner|value=+4|stack=1|duration=6}} (Only if they weren't previously enslaved)&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=We sold someone into slavery! A great display of our honor and power.|label=slave sold|value=+2|stack=5|multi=0.75|duration=6}} (Colony wide)&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=We enslaved someone. Now they know our honor and power!|label=prisoner enslaved|value=+2|stack=5|multi=0.75|duration=6}} (Colony wide)&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;'''Opinion:'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{+|10}} for selling a pawn into slavery&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{+|10}} opinion for enslaving a pawn&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;Faction will accept slaves when being traded with.&lt;br /&gt;
|- id=&amp;quot;Women's spouses&amp;quot;&lt;br /&gt;
! rowspan=5 | Women's spouses&amp;lt;br/&amp;gt;[[File:SpouseCountFemale.png|64px]]&lt;br /&gt;
| One only || Women may have one spouse only. || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Two or fewer || Women may have up to two spouses. || || [[#Female Supremacy|Female supremacy]] ||&lt;br /&gt;
|-&lt;br /&gt;
| Three or fewer || Women may have up to three spouses. || || [[#Female Supremacy|Female supremacy]] ||&lt;br /&gt;
|-&lt;br /&gt;
| Four or fewer || Women may have up to four spouses. || || [[#Female Supremacy|Female supremacy]] ||&lt;br /&gt;
|-&lt;br /&gt;
| Unlimited || Women may have as many spouses as they like. || || [[#Female Supremacy|Female supremacy]] ||&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Men's spouses&amp;quot;&lt;br /&gt;
! rowspan=5 | Men's spouses&amp;lt;br/&amp;gt;[[File:SpouseCountMale.png|64px]]&lt;br /&gt;
| One only || Men may have one spouse only. || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Two or fewer || Men may have up to two spouses. || || [[#Male Supremacy|Male supremacy]] ||&lt;br /&gt;
|-&lt;br /&gt;
| Three or fewer || Men may have up to three spouses. || || [[#Male Supremacy|Male supremacy]] ||&lt;br /&gt;
|-&lt;br /&gt;
| Four or fewer || Men may have up to four spouses. || || [[#Male Supremacy|Male supremacy]] ||&lt;br /&gt;
|-&lt;br /&gt;
| Unlimited || Men may have as many spouses as they like. || || [[#Male Supremacy|Male supremacy]] ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Optional ===&lt;br /&gt;
These precepts can be added through memes or by player choice.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Issue !! Precept !! Description !! Requirement !! Associated !! Effects&lt;br /&gt;
|- id=&amp;quot;Slaughtering animals&amp;quot;&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot;| Slaughtering animals&amp;lt;br/&amp;gt;[[File:AnimalSlaughter.png|64px]]&lt;br /&gt;
| Prohibited || Slaughtering animals is absolutely prohibited. || || [[#Animal personhood|Animal personhood]]&amp;lt;br/&amp;gt;[[#Nature Primacy|Nature primacy]] || '''Prohibitions:'''&amp;lt;br/&amp;gt;Slaughter animal&amp;lt;br/&amp;gt;'''Mood:'''&lt;br /&gt;
* {{Thought|desc=Someone slaughtered an animal! A tragic loss of a unique life.|label=animal slaughtered|value=-4|duration=6|stacks=5|multi=0.75}}&lt;br /&gt;
'''Opinions:'''&amp;lt;br/&amp;gt;Slaughtered animal: {{Bad|-10}}&lt;br /&gt;
|-&lt;br /&gt;
| Horrible || To slaughter an animal is a horrible thing. || || [[#Animal personhood|Animal personhood]]&amp;lt;br/&amp;gt;[[#Nature Primacy|Nature primacy]] || '''Mood:'''&lt;br /&gt;
* {{Thought|desc=I had to slaughter an animal! It was horrible to snuff out a mind like that.|label=slaughtered animal|value=-15|duration=6|stacks=1}}&lt;br /&gt;
* {{Thought|desc=Someone slaughtered an animal! What a horrible thing, to snuff out a mind like that.|label=animal slaughtered|value=-2|duration=6|stacks=5|multi=0.75}}&lt;br /&gt;
'''Opinions:'''&amp;lt;br/&amp;gt;Slaughtered animal: {{Bad|-5}}&lt;br /&gt;
|-&lt;br /&gt;
| Disapproved || To slaughter an animal is an ugly thing. || || [[#Animal personhood|Animal personhood]]&amp;lt;br/&amp;gt;[[#Nature Primacy|Nature primacy]] || '''Mood:'''&lt;br /&gt;
* {{Thought|desc=I had to slaughter an animal. It was an ugly thing to do.|label=slaughtered animal|value=-5|duration=6|stacks=1}}&lt;br /&gt;
* {{Thought|desc=Someone slaughtered an animal. It's a sad thing.|label=animal slaughtered|value=-1|duration=6|stacks=5|multi=0.75}}&lt;br /&gt;
'''Opinions:'''&amp;lt;br/&amp;gt;Slaughtered animal: {{Bad|-3}}&lt;br /&gt;
|- id=&amp;quot;Apostasy&amp;quot;&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot;| Apostasy&amp;lt;br/&amp;gt;[[File:Apostasy.png|64px]]&lt;br /&gt;
| Abhorrent || To leave our ideoligion after having known it is the depth of immorality. || Not [[#Guilty|Guilty]] || [[#Loyalist|Loyalist]]&amp;lt;br/&amp;gt;[[#Proselytizer|Proselytizer]] || '''Opinions:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
*Changed ideoligion: {{Bad|-30}}&amp;lt;br/&amp;gt;&lt;br /&gt;
*Apostate: {{Bad|-10}}&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Stats:'''&lt;br /&gt;
* [[Global Certainty Loss Factor]]: {{Good|×40%}}&lt;br /&gt;
|-&lt;br /&gt;
| Horrible || To leave our ideoligion after having known it indicates deep moral flaws. || Not [[#Guilty|Guilty]] || [[#Loyalist|Loyalist]]&amp;lt;br/&amp;gt;[[#Proselytizer|Proselytizer]] || '''Opinions:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
*Changed ideoligion: {{bad|-15}}&amp;lt;br/&amp;gt;&lt;br /&gt;
*Apostate: {{Bad|-5}}&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Stats:'''&lt;br /&gt;
* [[Global Certainty Loss Factor]]: {{Good|×60%}}&lt;br /&gt;
|-&lt;br /&gt;
| Disapproved || To leave our ideoligion after having known it indicates character flaws. || Not [[#Guilty|Guilty]] || [[#Loyalist|Loyalist]]&amp;lt;br/&amp;gt;[[#Proselytizer|Proselytizer]] || '''Opinions:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
*Changed ideoligion: {{Bad|-8}}&amp;lt;br/&amp;gt;&lt;br /&gt;
*Apostate: {{Bad|-3}}&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Stats:'''&lt;br /&gt;
* [[Global Certainty Loss Factor]]: {{Good|×80%}}&lt;br /&gt;
|- id=&amp;quot;Autonomous weapons&amp;quot;&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot;| Autonomous weapons&amp;lt;br/&amp;gt;[[File:AutonomousWeapons.png|64px]]&lt;br /&gt;
| Prohibited || Allowing a machine to decide to kill is an absolutely inhuman thing to do. || || [[#Nature primacy|Nature primacy]] || Cannot build Turrets&amp;lt;br/&amp;gt;Colonists gain Mood: {{Thought|desc=We use automated weapons. It's absolutely abhorrent to give life-and-death decisions to a machine.|label=automated weapons|value=-12|stack=1}}&lt;br /&gt;
|-&lt;br /&gt;
| Horrible || Allowing a machine to decide to kill is a terrible thing. || || [[#Nature primacy|Nature primacy]] || Colonists gain Mood: {{Thought|desc=We use automated weapons. It's horrible to give life-and-death decisions to a machine.|label=automated weapons|value=-8|stack=1}}&lt;br /&gt;
|-&lt;br /&gt;
| Disapproved || Allowing a machine to decide to kill is an ugly thing. || || [[#Nature primacy|Nature primacy]] || Colonists gain Mood: {{Thought|desc=We use automated weapons. It's really ugly to give life-and-death decision to a machine.|label=automated weapons|value=-4|stack=1}}&lt;br /&gt;
|- id=&amp;quot;Body modification&amp;quot;&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot;| Body modification&amp;lt;br/&amp;gt;[[File:BodyModifications.png|64px]]&lt;br /&gt;
| Abhorrent || To modify the natural human body is a flagrant violation of clear moral laws. || Not [[#Transhumanist|Transhumanist]] || [[#Flesh purity|Flesh purity]] || '''Mood''':&lt;br /&gt;
* {{Thought|desc=I had to install an artificial body enhancement. This was deeply offensive to my beliefs.|label=installed enhancement|value=-30|duration=6}}&lt;br /&gt;
* {{Thought|desc=I have an artificial body enhancement. It's an abhorrent offense against everything I believe!|label=artificial enhancement|value=-18|duration=6}}&lt;br /&gt;
'''Opinion:''' {{Bad|-10}} against anyone that installed a prosthetic or artificial part, {{Bad|-5}} against anyone with a prosthetic or artificial part.&amp;lt;br/&amp;gt;&lt;br /&gt;
These do not apply if the pawn is not a Body Modder. Xenogenes trigger this mood penalty if they are not inheritable.&lt;br /&gt;
|-&lt;br /&gt;
| Disapproved || To modify the natural human body is an ugly, dirty act. || Not [[#Transhumanist|Transhumanist]] || [[#Flesh purity|Flesh purity]] || '''Mood''':&lt;br /&gt;
* {{Thought|desc=I had to install an artificial body enhancement. This was clearly against my beliefs.|label=installed enhancement|value=-5|duration=6}}&lt;br /&gt;
* {{Thought|desc=I have an artificial body enhancement. I don't believe such things are acceptable.|label=artificial enhancement|value=-4|duration=6}}&lt;br /&gt;
'''Opinion:''' {{Bad|-5}} against anyone that installed a prosthetic or artificial part, {{Bad|-3}} against anyone with a prosthetic or artificial part.&amp;lt;br/&amp;gt;&lt;br /&gt;
These do not apply if the pawn is not a Body Modder. Xenogenes trigger this mood penalty if they are not inheritable.&lt;br /&gt;
|-&lt;br /&gt;
| Approved || Humans should strive to reach our full potential by improving our flawed natural bodies. || Not [[#Flesh purity|Flesh purity]] || [[#Transhumanist|Transhumanist]] || '''Mood:'''&lt;br /&gt;
* {{Thought|desc=I don't have any artificial body enhancements. It's against my beliefs to be so unenhanced.|label=no artificial enhancement|value=-3|stack=1}} at or above moderate expectations, nullified by Body purist.&lt;br /&gt;
* {{Thought|desc=This artificial enhancement matches my belief.|label=transhumanist modded|value=1|stack=1}} for 1 artificial part.&lt;br /&gt;
* {{Thought|desc=The more artificial enhancements I get, the stronger my expression of my beliefs.|label=transhumanist connected|value=1|stack=1}} for 2 artificial part.&lt;br /&gt;
* {{Thought|desc=My connection to my belief is increased by my third artificial enhancement. But I could use more.|label=transhumanist enhanced|value=2|stack=1}} for 3 artificial part.&lt;br /&gt;
* {{Thought|desc=Only two more artificial enhancements are required to fully synchronize with my beliefs.|label=transhumanist synchronized|value=2|stack=1}} for 4 artificial part.&lt;br /&gt;
* {{Thought|desc=Five artificial enhancements! I'm beginning to feel perfect integration with my beliefs.|label=transhumanist integrated|value=3|stack=1}} for 5 artificial part.&lt;br /&gt;
* {{Thought|desc=It's as though I've left the weak flesh behind.|label=transhumanist transformed|value=3|stack=1}} for 5+ artificial part.&lt;br /&gt;
All bonus disabled for Body Modder.&amp;lt;br/&amp;gt;&lt;br /&gt;
{{Bad|-3}} opinion for zero artificial parts if expectations ≥ Moderate (disabled for Body Purist) {{Check Tag|Xenogenes?|Xenogens count as artificial for body modder/purist traits, do they also count for ideo?}}&lt;br /&gt;
|- id=&amp;quot;Charity&amp;quot;&lt;br /&gt;
! rowspan=3| Charity&amp;lt;br/&amp;gt;[[File:Charity.png|64px]]&lt;br /&gt;
| Essential || We must always be charitable to those in need. To refuse one would be an inhuman act, no matter the circumstances. || Not [[#Supremacist|supremacist]]&amp;lt;br/&amp;gt;Not [[#Pain is virtue|pain is virtue]] || [[#Guilty|Guilty]] || -8 mood for refusing to help on a charity quest&amp;lt;ref group=&amp;quot;Optional precepts&amp;quot; name=&amp;quot;Charity quest&amp;quot;&amp;gt;Charity quest is one marked as such in the quest log, and includes: beggars, relic pilgrims, joining wanderer, crashing shuttle, pod crash refugee, refugees, chased noble, and joining wanderer in danger&amp;lt;/ref&amp;gt;&amp;lt;br/&amp;gt;-12 mood for attacking beggars or pilgrims&amp;lt;br/&amp;gt;+4 mood for helping on a charity quest&amp;lt;ref group=&amp;quot;Optional precepts&amp;quot; name=&amp;quot;Charity quest&amp;quot;/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Important || It's important to be charitable to those in need. Refusing to help is a terrible act. || Not [[#Supremacist|supremacist]]&amp;lt;br/&amp;gt;Not [[#Pain is virtue|pain is virtue]] || [[#Guilty|Guilty]] || -4 mood for refusing to help on a charity quest&amp;lt;ref group=&amp;quot;Optional precepts&amp;quot; name=&amp;quot;Charity quest&amp;quot;/&amp;gt;&amp;lt;br/&amp;gt;-8 mood for attacking beggars or pilgrims&amp;lt;br/&amp;gt;+2 mood for helping on a charity quest&amp;lt;ref group=&amp;quot;Optional precepts&amp;quot; name=&amp;quot;Charity quest&amp;quot;/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Worthwhile || Helping those in need is a good thing. It makes the community stronger. || Not [[#Supremacist|supremacist]]&amp;lt;br/&amp;gt;Not [[#Pain is virtue|pain is virtue]] || [[#Guilty|Guilty]] || -2 mood for refusing to help on a charity quest&amp;lt;ref group=&amp;quot;Optional precepts&amp;quot; name=&amp;quot;Charity quest&amp;quot;/&amp;gt;&amp;lt;br/&amp;gt;-6 mood for attacking beggars or pilgrims&amp;lt;br/&amp;gt;+1 mood for helping on a charity quest&amp;lt;ref group=&amp;quot;Optional precepts&amp;quot; name=&amp;quot;Charity quest&amp;quot;/&amp;gt;&lt;br /&gt;
|- id=&amp;quot;Drug use&amp;quot;&lt;br /&gt;
! rowspan=4| Drug use&amp;lt;br/&amp;gt;[[File:DrugUse.png|64px]]&lt;br /&gt;
| Prohibited || The body should absolutely not be poisoned by chemicals. The only exception is the use of medicine in direct medical care. || Not [[#High life|High life]] || [[#Flesh purity|Flesh purity]]&amp;lt;br/&amp;gt;[[#Collectivist|Collectivist]] || Pawns are unwilling to take or administer drugs&amp;lt;br/&amp;gt;&lt;br /&gt;
* {{Thought|desc=I used a drug. Such chemicals in the body are a horrible offense against my beliefs.|label=used drug|value=-4|duration=3}}&lt;br /&gt;
* {{Thought|desc=I administered a drug. It was a horrible offense against my beliefs.|label=administered drug|value=-15|duration=3}}&amp;lt;ref group=&amp;quot;Optional precepts&amp;quot; name=&amp;quot;Drug use&amp;quot;&amp;gt;As pawns with this precept are unwilling to administer drugs, this won't appear on normal gameplay.&amp;lt;/ref&amp;gt;&lt;br /&gt;
{{Bad|-3}} opinion for consuming or administering a drug, for 5 days.&amp;lt;br/&amp;gt;&lt;br /&gt;
None of the above applies to pawns with [[Traits#Chemical fascination|Chemical fascination]] or [[Traits#Chemical interest|Chemical interest]]&lt;br /&gt;
|-&lt;br /&gt;
| Medical only || Poisoning the body for recreational purposes is a deeply immoral act. || Not [[#High life|High life]] || [[#Collectivist|Collectivist]] || Pawns are unwilling to take or administer recreational drugs.&amp;lt;br/&amp;gt;&lt;br /&gt;
* {{Thought|desc=I used a recreational drug. It was an offense against my beliefs.|label=used recreational drug|value=-15|duration=3}}&lt;br /&gt;
* {{Thought|desc=I administered a recreational drug. It was a horrible offense against my beliefs.|label=administered recreational drug|value=-15|duration=3}}&lt;br /&gt;
{{Bad|-5}} opinion for consuming or administering a recreational drug, for 5 days.&amp;lt;br/&amp;gt;&lt;br /&gt;
None of the above applies to pawns with [[Traits#Chemical fascination|Chemical fascination]] or [[Traits#Chemical interest|Chemical interest]]&lt;br /&gt;
|-&lt;br /&gt;
| Medical or social only || A drink with a smoke is fine, especially with friends, but poisoning the body with powerful chemicals is wrong. || Not [[#High life|High life]] || [[#Collectivist|Collectivist]] || Pawns are unwilling to take or administer hard drugs.&lt;br /&gt;
* {{Thought|desc=I used a hard drug - not medical or even social. It was a horrible offense against my beliefs.|label=used hard drug|value=-15|duration=3}}&lt;br /&gt;
* {{Thought|desc=I administered a hard drug - not medical or even social. It was a horrible offense against my beliefs.|label=used hard drug|value=-15|duration=3}}&lt;br /&gt;
{{Bad|-8}} opinion for consuming or administering a hard drug, for 5 days.&amp;lt;br/&amp;gt;&lt;br /&gt;
None of the above applies to pawns with [[Traits#Chemical fascination|Chemical fascination]] or [[Traits#Chemical interest|Chemical interest]]&lt;br /&gt;
|-&lt;br /&gt;
| Essential || Exotic states of mind are central to a good life. || [[#High life|High life]] || [[#High life|High life]]&lt;br /&gt;
| '''Stats:'''&lt;br /&gt;
* [[Drug Crop Harvest Yield]]: {{Good|×150%}}&lt;br /&gt;
* [[Drug Synthesis Speed]]: {{Good|×150%}}&lt;br /&gt;
* [[Drug Sell Price Improvement]]: {{+|10%}}&lt;br /&gt;
'''Moods''' (excludes [[Teetotaler]]s):&lt;br /&gt;
* {{Thought|desc=The right path goes through altered consciousness, and I am walking it.|label=high life|value=3|duration=0.75|stack=1}}&lt;br /&gt;
* {{Thought|desc=This is a hidden state.|label=high life|value=0|duration=0.25|stack=1}}. An invisible state.&lt;br /&gt;
* {{Thought|desc=I should be altering my consciousness. It's not right to be sober so long.|label=high life missing|value=-1|duration=1|stack=1}}&lt;br /&gt;
* {{Thought|desc=I should be altering my consciousness. It's not right to be sober so long.|label=high life missing|value=-10|duration=9|stack=1}}&lt;br /&gt;
The moods above are scaled linearly based on the time since last non-medical drug ingested. First a {{Good|+3}} mood that last 0.75 days, decaying to 0 over the course the following 0.25 days. At 2 days since last consumption, first mood penalty applies. This penalty will increase by {{Bad|-1}} each day without further consumption, reaching the maximum of {{Bad|-10}} at 11 days.&amp;lt;!--&lt;br /&gt;
The relevant functions are PostIngested(Pawn) in CompDruf, CompTick() in CompRitualHediffGiverInRoom and Thought_Situational_Precept_HighLife.--&amp;gt;&lt;br /&gt;
|- id=&amp;quot;Combat in darkness&amp;quot;&lt;br /&gt;
! Combat in darkness&amp;lt;br/&amp;gt;[[File:DarknessCombat.png|64px]]&lt;br /&gt;
| Preferred || We fight better in the dark. || Not [[#Blindsight|blindsight]] || [[#Darkness|Darkness]]&lt;br /&gt;
| '''Stats:'''&lt;br /&gt;
* [[Shooting Accuracy]]:&lt;br /&gt;
** [[Shooting Accuracy Outdoors Dark|Outdoors Dark]] and [[Shooting Accuracy Indoors Dark|Indoors Dark]]: {{+|25%}}&lt;br /&gt;
** [[Shooting Accuracy Outdoors Lit|Outdoors Lit]] and [[Shooting Accuracy Indoors Lit|Indoors Lit]]: {{--|20%}}&lt;br /&gt;
* [[Melee Dodge Chance]]:&lt;br /&gt;
** [[Melee Dodge Chance Outdoors Night|Outdoors Night]] and [[Melee Dodge Chance Indoors Dark|Indoors Dark]]: {{+|10%}}&lt;br /&gt;
** [[Melee Dodge Chance Outdoors Day|Outdoors Day]] and [[Melee Dodge Chance Indoors Lit|Indoors Lit]]: {{--|10%}}&lt;br /&gt;
* [[Melee Hit Chance]]:&lt;br /&gt;
** [[Melee Hit Chance Outdoors Dark|Outdoors Dark]] and [[Melee Hit Chance Indoors Dark|Indoors Dark]]: {{+|10%}}&lt;br /&gt;
** [[Melee Hit Chance Outdoors Lit|Outdoors Lit]] and [[Melee Hit Chance Indoors Lit|Indoors Lit]]: {{--|10%}}&lt;br /&gt;
|- id=&amp;quot;Cutting trees&amp;quot;&lt;br /&gt;
! rowspan=3 | Cutting trees&amp;lt;br/&amp;gt;[[File:Precept tree cutting.png|64px]]&lt;br /&gt;
| Prohibited || To violate the forest by cutting down a tree is a deeply abhorrent act and should never be done. || Not [[#Human primacy|Human primacy]] || [[#Nature primacy|Nature primacy]] || Disables logging camps.&amp;lt;br/&amp;gt;Pawns will not cut trees&amp;lt;br/&amp;gt;{{Thought|desc=We cut down a tree. Such things violations of nature should never be done.|label=tree felled|value=-4|stack=5|multi=0.75|duration=3}} for cutting a tree&amp;lt;br/&amp;gt;{{Thought|desc=We extracted a tree from the ground and then let it die. Such things violations of nature should never be done.|label=extracted tree died|value=-4|stack=5|multi=0.75|duration=3}} for an uprooted tree dying&amp;lt;br/&amp;gt;{{--|10}} opinion for cutting a tree&lt;br /&gt;
|-&lt;br /&gt;
| Horrible || To cut down a tree is a horrible act. || Not [[#Human primacy|Human primacy]] || [[#Nature primacy|Nature primacy]] || Disables logging camps.&amp;lt;br/&amp;gt;{{Thought|desc=I had to cut down a tree. It was wrong to scar nature this way.|label=tree felled|value=-10|stack=1|duration=3}} for cutting a tree&amp;lt;br/&amp;gt;{{Thought|desc=We cut down a tree. It's wrong to scar nature this way.|label=tree felled|value=-2|stack=5|multi=0.75|duration=3}} for a tree cut&amp;lt;br/&amp;gt;{{Thought|desc=We extracted a tree from the ground and let it die. It's wrong to scar nature this way.|label=extracted tree died|value=-2|stack=5|multi=0.75|duration=3}} for an uprooted tree dying&amp;lt;br/&amp;gt;{{--|5}} opinion for cutting a tree&lt;br /&gt;
|-&lt;br /&gt;
| Disapproved || To cut down a tree is a distasteful thing to do. || Not [[#Human primacy|Human primacy]] || [[#Nature primacy|Nature primacy]] || Disables logging camps.&amp;lt;br/&amp;gt;{{Thought|desc=I had to cut down a tree. It was wrong to scar nature this way.|label=tree felled|value=-5|stack=1|duration=3}} for cutting a tree&amp;lt;br/&amp;gt;{{Thought|desc=We cut down a tree. It wasn't good to harm nature this way.|label=tree felled|value=-1|stack=5|duration=3}} for a tree cut&amp;lt;br/&amp;gt;{{Thought|desc=We extracted a tree from the ground and let it die. It wasn't good to harm nature this way.|label=extracted tree died|value=-1|stack=5|multi=0.75|duration=3}} for an uprooted tree dying&amp;lt;br/&amp;gt;{{--|3}} opinion for cutting a tree&lt;br /&gt;
|- id=&amp;quot;Killing innocent animals&amp;quot;&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | Killing innocent animals&amp;lt;br/&amp;gt;[[File:KillingInnocentAnimals.png|64px]]&lt;br /&gt;
| Abhorrent || To kill an innocent animal is a horrifically inhuman act. Innocent animals are those who are not attacking, or who were only driven to attack by human provocation.&amp;lt;ref group=&amp;quot;Optional precepts&amp;quot; name=&amp;quot;Innocent animal&amp;quot;&amp;gt;An animal is deemed innocent if: It isn't under a mental state, or the mental state was caused by damage (ex: Manhunter, PanicFlee) or psycast (ex: Berserk, Neuroquake psycast). The above excludes animals belonging to hostile factions, animals hunting humans (or animals belonging to a human faction), and animals with scaria.&amp;lt;/ref&amp;gt; || Not [[#Human primacy|human primacy]] || [[#Nature primacy|Nature primacy]]&amp;lt;br/&amp;gt;[[#Animal personhood|Animal personhood]] || Disables hunting camps&amp;lt;br/&amp;gt;Pawns will not attack innocent animals&amp;lt;br/&amp;gt;{{Thought|desc=An innocent, adorable animal was killed! That's murder!|label=innocent animal killed|value=-4|stack=5|mult=0.75|duration=6}} if innocent animal is killed&amp;lt;br/&amp;gt;{{--|15}} opinion for killing innocent animal&lt;br /&gt;
|-&lt;br /&gt;
| Horrible || To kill an innocent animal is a horrible act. Innocent animals are those who are not attacking, or who were only driven to attack by human provocation. || Not [[#Human primacy|human primacy]] || [[#Nature primacy|Nature primacy]]&amp;lt;br/&amp;gt;[[#Animal personhood|Animal personhood]] || Disables hunting camps&amp;lt;br/&amp;gt;{{Thought|desc=I had to kill an innocent animal. It was almost like being forced to murder.|label=killed innocent {0}|value=-15|duration=6}} for killing an innocent animal&amp;lt;br/&amp;gt;{{Thought|desc=An innocent animal was killed. What a terrible, heartless act against another being.|label=innocent animal killed|value=-2|stack=5|mult=0.75|duration=6}} if innocent animal is killed&amp;lt;br/&amp;gt;{{--|10}} opinion for killing innocent animal&lt;br /&gt;
|-&lt;br /&gt;
| Disapproved || To kill an innocent animal is an ugly act. Innocent animals are those who are not attacking, or who were only driven to attack by human provocation. || Not [[#Human primacy|human primacy]] || [[#Nature primacy|Nature primacy]]&amp;lt;br/&amp;gt;[[#Animal personhood|Animal personhood]] || Disables hunting camps&amp;lt;br/&amp;gt;{{Thought|desc=I had to kill an innocent animal. It was not something I approve of.|label=killed innocent {0}|value=-5|duration=6}} for killing an innocent animal&amp;lt;br/&amp;gt;{{Thought|desc=An innocent animal was killed. I do not approve of this.|label=innocent animal killed|value=-1|stack=5|mult=0.75|duration=6}} if innocent animal is killed&amp;lt;br/&amp;gt;{{--|5}} opinion for killing innocent animal&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Lighting&amp;quot;&lt;br /&gt;
! Lighting&amp;lt;br/&amp;gt;[[File:Lighting.png|64px]]&lt;br /&gt;
| Darklight preferred || Normal lights are too bright. Darklights are better. || Not [[#Blindsight|blindsight]] || [[#Darkness|Darkness]] || {{Thought|desc=This dim light is perfect. I feel focused and energized.|label=darklight|value=+4|stack=1}} with [[Darklight]]&amp;lt;br/&amp;gt;{{Thought|desc=This indoor light is too bright. I would prefer something dimmer.|label=indoor light|value=-4|stack=1}} in dim light (30% - 89% [[light]]){{Check Tag|Verify|Verify bounds match normal definition}}&amp;lt;br/&amp;gt;{{Thought|desc=I cannot stand this terrible light. My senses are overwhelmed!|label=blinding light|value=-8|stack=1}} in bright light. (90% - 100% [[light]]){{Check Tag|Verify|Verify bounds match normal definition}}&amp;lt;br/&amp;gt;No modifier for Darkness. (0% - 29% [[light]]){{Check Tag|Verify|Verify bounds match normal definition}}&amp;lt;br/&amp;gt;Surgery penalty without Darklight.&amp;lt;br/&amp;gt;Disables low-[[light]] [[move speed]] penalties&amp;lt;br/&amp;gt;Disables low-[[light]] [[global work speed]] penalties&lt;br /&gt;
|- id=&amp;quot;Meat eating&amp;quot;&lt;br /&gt;
! rowspan=6 | Meat eating&amp;lt;br/&amp;gt;[[File:MeatEating.png|64px]]&lt;br /&gt;
| Abhorrent || Eating meat of any kind is deeply evil. || Not [[#Human primacy|human primacy]] || [[#Animal personhood|Animal personhood]]&amp;lt;br/&amp;gt;[[#Flesh purity|Flesh purity]] || Disables hunting camps&amp;lt;br/&amp;gt;{{Thought|desc=I had to eat meat. It was an abhorrent violation of everything I believe.|label=ate meat|value=-24|duration=1|stack=1}} for eating meat&amp;lt;br/&amp;gt;{{--|15}} opinion for eating meat&lt;br /&gt;
|-&lt;br /&gt;
| Horrible || Eating meat of any kind is a horrible act. || Not [[#Human primacy|human primacy]] || [[#Animal personhood|Animal personhood]]&amp;lt;br/&amp;gt;[[#Flesh purity|Flesh purity]] || Disables hunting camps&amp;lt;br/&amp;gt;{{Thought|desc=I had to eat meat. It was a horrible violation of my beliefs.|label=ate meat|value=-12|duration=1|stack=1}} for eating meat&amp;lt;br/&amp;gt;{{--|10}} opinion for eating meat&lt;br /&gt;
|-&lt;br /&gt;
| Disapproved || Eating meat of any kind should be avoided. || Not [[#Human primacy|human primacy]] || [[#Animal personhood|Animal personhood]]&amp;lt;br/&amp;gt;[[#Flesh purity|Flesh purity]] || Disables hunting camps&amp;lt;br/&amp;gt;{{Thought|desc=I had to eat meat. It's not something I approve of.|label=ate meat|value=-4|duration=1|stack=1}} for eating meat&amp;lt;br/&amp;gt;{{--|5}} opinion for eating meat&lt;br /&gt;
|-&lt;br /&gt;
| Mildly required || Every meal ought to have meat. || Not [[#Human primacy|human primacy]] || [[#Animal personhood|Animal personhood]] (but conflicts)&amp;lt;br/&amp;gt;[[#Flesh purity|Flesh purity]] || Disables farming camps&amp;lt;br/&amp;gt;{{Thought|desc=I ate a meal without any meat. It was an unacceptable deviation from the proper carnivore diet. Some eggs, milk, or processed food without vegetables or would have also been okay.|label=ate vegetarian|value=-4|duration=1|stack=1}} for eating food without meat&amp;lt;br/&amp;gt;{{--|5}} opinion for eating food without meat&lt;br /&gt;
|-&lt;br /&gt;
| Seriously required || Every meal must have meat. Eggs, milk, and processed food are okay as well. || Not [[#Human primacy|human primacy]] || [[#Animal personhood|Animal personhood]] (but conflicts)&amp;lt;br/&amp;gt;[[#Flesh purity|Flesh purity]] || Disables farming camps&amp;lt;br/&amp;gt;{{Thought|desc=I ate a meal without any meat. It was an horrible violation of the proper carnivore diet. Some eggs, milk, or processed food without vegetables would have also been okay.|label=ate vegetarian|value=-10|duration=1|stack=1}} for eating food without meat&amp;lt;br/&amp;gt;{{--|10}} opinion for eating food without meat&lt;br /&gt;
|-&lt;br /&gt;
| Strictly required || If a meal doesn't have meat, the person who eats it must be morally deficient. Eggs, milk, and processed foods are fine. || Not [[#Human primacy|human primacy]] || [[#Animal personhood|Animal personhood]] (but conflicts)&amp;lt;br/&amp;gt;[[#Flesh purity|Flesh purity]] || Disables farming camps&amp;lt;br/&amp;gt;{{Thought|desc=I ate a meal without any meat. It was an abhorrent violation of the proper carnivore diet. Some eggs, milk, or processed food without vegetables would have also been okay.|label=ate vegetarian|value=-16|duration=1|stack=1}} for eating food without meat&amp;lt;br/&amp;gt;{{--|15}} opinion for eating food without meat&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Mining&amp;quot;&lt;br /&gt;
! rowspan=3 | Mining&amp;lt;br/&amp;gt;[[File:Mining.png|64px]]&lt;br /&gt;
| Prohibited || Raping the natural earth with mining tools is a horrifically evil act. || Not [[#Human primacy|human primacy]]&amp;lt;br/&amp;gt;Not [[#Tunneler|tunneler]] || [[#Nature primacy|Nature primacy]] || Disables mining camps&amp;lt;br/&amp;gt;Pawns will not mine&amp;lt;br/&amp;gt;&lt;br /&gt;
* {{Thought|desc=We mined a hole in the pure earth. What a terrible offense against nature.|label=mined|value=-4|duration=2|stacks=5|multi=0.75}}&lt;br /&gt;
* {{Thought|desc=I destroyed a natural wall. What a terrible offense against nature.|label=destroyed natural wall|value=-40|duration=2|stacks=1}}&lt;br /&gt;
{{Bad|-15}} opinion for mining a block, for 4 days.&lt;br /&gt;
|-&lt;br /&gt;
| Horrible || Violating the natural earth with mining tools is a horrible act. || Not [[#Human primacy|human primacy]]&amp;lt;br/&amp;gt;Not [[#Tunneler|tunneler]] || [[#Nature primacy|Nature primacy]] || Disables mining camps&amp;lt;br/&amp;gt;&lt;br /&gt;
* {{Thought|desc=I had to mine a hole. It was an offense against the earth.|label=mined|value=-20|duration=2|stacks=1}}&lt;br /&gt;
* {{Thought|desc=Someone mined a hole in the pure earth. It was a horrible violation of nature.|label=mined|value=-2|duration=2|stacks=5|multi=0.75}}&lt;br /&gt;
* {{Thought|desc=I destroyed a natural wall. It was a horrible violation of nature.|label=destroyed natural wall|value=-20|duration=2|stacks=1}}&lt;br /&gt;
{{Bad|-10}} opinion for mining a block, for 2 days.&lt;br /&gt;
|-&lt;br /&gt;
| Disapproved || Mining into the natural earth is an ugly act. || Not [[#Human primacy|human primacy]]&amp;lt;br/&amp;gt;Not [[#Tunneler|tunneler]] || [[#Nature primacy|Nature primacy]] || Disables mining camps&amp;lt;br/&amp;gt;&lt;br /&gt;
* {{Thought|desc=I had to mine a hole. I disapprove of harming the earth this way.|label=mined|value=-3|duration=2|stacks=1}}&lt;br /&gt;
* {{Thought|desc=Someone mined a hole in the pure earth. It's wrong to scar the world this way.|label=mined|value=-1|duration=2|stacks=5|multi=0.75}}&lt;br /&gt;
* {{Thought|desc=I destroyed a natural wall. It's wrong to scar the world this way.|label=destroyed natural wall|value=-3|duration=2|stacks=1}}&lt;br /&gt;
{{Bad|-5}} opinion for mining a block, for 2 days.&lt;br /&gt;
|- id=&amp;quot;Raiding&amp;quot;&lt;br /&gt;
! rowspan=2 | Raiding&amp;lt;br/&amp;gt;[[File:Raiding.png|64px]]&lt;br /&gt;
| Respected || We don't work like common laborers, we take from the weak as the strong should. Failing to do so is a mark of shame. || || || '''Mood:'''&amp;lt;br/&amp;gt;{{+|3}} mood for 5 days for participating in a raid&amp;lt;br/&amp;gt;{{+|6}} mood for a raid less than 25 days ago&amp;lt;br/&amp;gt;{{--|6}} mood for a raid more than 25 days ago&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Stats:'''&lt;br /&gt;
* [[Global Work Speed]] {{--|8%}}&lt;br /&gt;
|-&lt;br /&gt;
| Required || We don't work like common laborers, we take from the weak as the strong should. Failing to do so is a tremendous shame. || || || '''Mood:'''&amp;lt;br/&amp;gt;{{+|6}} mood for 5 days for participating in a raid&amp;lt;br/&amp;gt;{{+|12}} mood for a raid less than 25 days ago&amp;lt;br/&amp;gt;{{--|12}} mood for a raid more than 25 days ago&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Stats:'''&lt;br /&gt;
* [[Global Work Speed]] {{--|16%}}&lt;br /&gt;
|- id=&amp;quot;Trees&amp;quot;&lt;br /&gt;
! Trees&amp;lt;br/&amp;gt;[[File:Trees.png|64px]]&lt;br /&gt;
| Desired || It's essential to live surrounded by beautiful trees. || || [[#Tree connection|Tree connection]] || Gives a thought, scaling from -5 to +9 for having (or not having) many trees on the map&amp;lt;br/&amp;gt;Gives a thought, scaling from 0 to -20 for the number of trees chopped in the last quadrum&lt;br /&gt;
|- id=&amp;quot;Biosculpting&amp;quot;&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Biosculpting&amp;lt;br/&amp;gt;[[File:Precept biosculpting.png|64px]]&lt;br /&gt;
| Despised || Biosculpter pods violate the purity human flesh and should never be used. || Not [[#Transhumanist|Transhumanist]] || || '''Mood:'''&amp;lt;br/&amp;gt;{{Thought|desc=My body was despoiled by the use of a biosculpter pod.|label=used biosculpter pod|value=-8|stack=1|duration=12}} after using [[biosculpter pod]].&lt;br /&gt;
|-&lt;br /&gt;
| Accelerated || All biosculpting cycles take half the usual time. || [[#Transhumanist|Transhumanist]] || [[#Transhumanist|Transhumanist]] || All biosculpting cycles take half the usual time.&lt;br /&gt;
|- id=&amp;quot;Growth vats&amp;quot;&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot;| Growth vats{{BiotechIcon}}&amp;lt;br/&amp;gt;[[File:GrowthVats.png|64px]]&lt;br /&gt;
| Prohibited || Growth vats rob children of their childhood. || || || '''Prohibitions:'''&amp;lt;br/&amp;gt;Build [[growth vat]]&amp;lt;br/&amp;gt;'''Mood:'''&lt;br /&gt;
* {{Thought|desc=I hate the thought of that awful growth vat being in our colony.|label=growth vat|value=-3|stack=1}}&amp;lt;br/&amp;gt;&lt;br /&gt;
* {{Thought|desc=I can't stand the thought of my child floating in that awful machine.|label=my child is in a growth vat|value=-3|stack=3}}. Nullifying trait: [[Psychopath]]&amp;lt;br/&amp;gt;&lt;br /&gt;
* {{Thought|desc=I'm happy to see my kids be kids. Their childhood is too precious to be wasted in a vat.|label=Child not in growth vat|value=1|stack=1}}&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Essential || We have the technology for safer childbirth and faster childhoods. Believers will develop faster in growth vats but will be unhappy if their children are not in a vat. || || [[#Transhumanist|Transhumanist]] || '''Mood:'''&lt;br /&gt;
* {{Thought|desc=Childbirth is a terrifying thought. We should have vats to safely grow our children.|label=natural pregnancy|value=-5|stack=1}}.  Minimum [[expectations]]: Moderate&lt;br /&gt;
* {{Thought|desc=I don't feel safe with my child running around. They should be growing safely in a vat.|label=Child not in growth vat|value=-2|stack=3}}.  Minimum [[expectations]]: Moderate&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Stats:'''&lt;br /&gt;
* {{BiotechIcon}} [[Growth Vat Occupant Speed]]: {{Good|×130%}}&amp;lt;br/&amp;gt;(only to pawns with the ideoligion; [[embryo]]s / [[babies]] are not boosted)&lt;br /&gt;
|- id=&amp;quot;Bloodfeeders&amp;quot;&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot;| Bloodfeeders{{BiotechIcon}}&amp;lt;br/&amp;gt;[[File:Bloodfeeders.png|64px]]&lt;br /&gt;
| Revered || Bloodfeeders should be worshipped. Believers will be happy if there is a bloodfeeder in the colony and will not mind being fed upon. || || || '''Mood:'''&lt;br /&gt;
* {{Thought|desc=The bloodfeeders stand above us, yet one has died here. We will surely be punished for this.|label=bloodfeeder died|value=-2|stack=3|duration=10}} (Colony wide) when a bloodfeeder dies.{{Check Tag|Any faction?|Does the bloodfeeder have to be of the player faction? Any allied faction? Any faction at all including enemies?}}.&lt;br /&gt;
* {{Thought|desc=Let them worship me. Feeding upon them places them below me, as animals are below humans.|label=revered bloodfeeder|value=+4|stack=1}} for being a bloodfeeder.&lt;br /&gt;
* {{Thought|desc=Without a bloodfeeder master, our colony feels incomplete and pointless. We should make a bloodfeeder our leader.|label=no bloodfeeders|value=-2|stack=1}} (Colony wide) for having no bloodfeeders in the colony.&lt;br /&gt;
* {{Thought|desc=Without a bloodfeeder master, our colony feels incomplete and pointless. We should make a bloodfeeder our leader.|label=no bloodfeeder master|value=-1|stack=1}} (Colony wide) for having bloodfeeders in the colony, but not as the [[#Leaders|leader]].&lt;br /&gt;
* {{Thought|desc=The bloodfeeder's presence is a great honor. May they live forever.|label=bloodfeeder master|value=+2|stack=1}} (Colony wide) for having A bloodfeeder as the [[#Leaders|leader]].&lt;br /&gt;
Nullifies {{Thought|desc=I was violated by a bloodfeeder like some kind of livestock.|label=fed on by &amp;lt;NAME&amp;gt;|value=-5|stack=1|duration=5}}{{Check Tag|Stacking?|Check if it stacks, change stack var as appropriate}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;'''Opinions:'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{+|20}} for being a Bloodfeeder&lt;br /&gt;
|-&lt;br /&gt;
| Reviled || Anyone who drinks blood to survive is a monster. || || || '''Mood:'''&lt;br /&gt;
* {{Thought|desc=The only good bloodfeeder is a dead one.|label=bloodfeeder died|value=+5|stack=3|duration=10}} (Colony wide) when a bloodfeeder dies.&lt;br /&gt;
* {{Thought|desc=I am what I hate. I must rid myself of this curse.|label=bloodfeeder self hatred|value=-12|stack=1}} for being a bloodfeeder.&lt;br /&gt;
* {{Thought|desc=One of them walks among us. We should expel the bloodfeeder from our home.|label=bloodfeeder among us|value=-8|stack=1}} (Colony wide) for having a bloodfeeder in the colony.&lt;br /&gt;
'''Opinions:'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{--|40}} for being a Bloodfeeder&lt;br /&gt;
|- id=&amp;quot;Child labor&amp;quot;&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot;| Child labor{{BiotechIcon}}&amp;lt;br/&amp;gt;[[File:ChildLabor.png|64px]]&lt;br /&gt;
| Encouraged || Children build character through work. It's important for everyone to contribute.|| || [[#Collectivist|Collectivist]] || '''Mood:'''&lt;br /&gt;
* {{Thought|desc=Why are we letting children waste their youth on games?|label=children assigned recreation|value=-3|stack=1}}. Adults only.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Stats:'''&lt;br /&gt;
* [[Global Work Speed]]: {{+|20%}} ([[Children]] only)&lt;br /&gt;
|-&lt;br /&gt;
| Disapproved || Childhood is sacred. We should let kids be kids. || || [[#Individualist|Individualist]] || '''Mood:'''&lt;br /&gt;
* {{Thought|desc=It's upsetting to see children forced to work. They only get one childhood.|label=children assigned work|value=-3|stack=1}}. Adults only. Note: This refers to the Schedule tab. Children can have jobs assigned in their Work tab without mood penalty.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Stats:'''&lt;br /&gt;
* [[Learning Rate Factor]]: {{+|20%}} ([[Children]] only)&lt;br /&gt;
|- id=&amp;quot;Mechanoid labor&amp;quot;&lt;br /&gt;
! Mechanoid labor{{BiotechIcon}}&amp;lt;br/&amp;gt;[[File:MechanoidLabor.png|64px]]&lt;br /&gt;
| Enhanced || Why should we work when we have machines? || ||&lt;br /&gt;
| '''Stats:'''&lt;br /&gt;
* [[Global Work Speed]]: {{--|8%}}&lt;br /&gt;
* {{BiotechIcon}} [[Mech Work Speed Offset]]: {{+|20%}}&lt;br /&gt;
|- id=&amp;quot;Psychic rituals&amp;quot;&lt;br /&gt;
! rowspan=3| Psychic rituals{{AnomalyIcon}}&amp;lt;br/&amp;gt;[[File:PsychicRituals.png|64px]]&lt;br /&gt;
| Abhorrent || Psychic rituals are utterly evil. || || || &amp;lt;!--&lt;br /&gt;
--&amp;gt;'''Prohibitions:'''&amp;lt;br/&amp;gt;Participate in psychic ritual&amp;lt;br/&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;'''Mood:'''&amp;lt;br/&amp;gt;Psychic ritual performed: {{--|4}}&amp;lt;br/&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;Involved in psychic ritual: {{--|12}}&amp;lt;br/&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;'''Opinions:'''&amp;lt;br/&amp;gt;Involved in psychic ritual: {{--|20}}&lt;br /&gt;
|-&lt;br /&gt;
| Disapproved || Psychic rituals should be avoided when possible. || || ||| &amp;lt;!--&lt;br /&gt;
--&amp;gt;'''Mood:'''&amp;lt;br/&amp;gt;{{Thought|desc=We shouldn't be using such dark powers. It's just not right.|label=Psychic ritual performed|value=-2|stack=1}}&amp;lt;br/&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{Thought|desc=That ritual was wrong. I should not have been there.|label=Involved in psychic ritual|value=-6|stack=1}}&amp;lt;br/&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;'''Opinions:'''&amp;lt;br/&amp;gt;Involved in psychic ritual: {{--|10}}&amp;lt;br/&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;'''Stats:'''&lt;br /&gt;
* [[Psychic Ritual Quality Offset]]: {{--|10%}}&lt;br /&gt;
|-&lt;br /&gt;
| Exalted || Connecting with psychic flows brings us closer to truth. || || [[#Ritualist|Ritualist]] || '''Mood:'''&amp;lt;br/&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{Thought|desc=It was an amazing experience to truly connect with something greater than myself.|label=Involved in psychic ritual|value=+3|stack=1}}.&amp;lt;br/&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{Thought|desc=Failing to use these rituals shows everyone how misguided we are.|label=No psychic ritual for 6 days (Min expectations: High)|value=-3|stack=1}}.&amp;lt;br/&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;'''Opinions:'''&amp;lt;br/&amp;gt;Involved in psychic ritual: {{+|10}}&amp;lt;br/&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;'''Stats:'''&lt;br /&gt;
* [[Psychic Ritual Quality Offset]]: {{+|10%}}&lt;br /&gt;
|- id=&amp;quot;Void study&amp;quot;&lt;br /&gt;
! rowspan=4| Void study{{AnomalyIcon}}&amp;lt;br/&amp;gt;[[File:VoidStudy.png|64px]]&lt;br /&gt;
| Very inefficient || All this void nonsense is superstition. Let's focus on reality. || ||&lt;br /&gt;
| '''Stats:'''&lt;br /&gt;
* [[Study Efficiency]]: {{Bad|×50%}}&lt;br /&gt;
|-&lt;br /&gt;
| Inefficient || Trying to understand the unknowable is pointless. We should focus more on meaningful activities. || ||&lt;br /&gt;
| '''Stats:'''&lt;br /&gt;
* [[Study Efficiency]]: {{Bad|×75%}}&lt;br /&gt;
|-&lt;br /&gt;
| Efficient || The void is a true mystery that deserves to be studied. || ||&lt;br /&gt;
| '''Stats:'''&lt;br /&gt;
* [[Study Efficiency]]: {{Good|×125%}}&lt;br /&gt;
|-&lt;br /&gt;
| Very efficient || The void is the ultimate truth. || || [[#Ritualist|Ritualist]]&lt;br /&gt;
| '''Stats:'''&lt;br /&gt;
* [[Study Efficiency]]: {{Good|×150%}}&lt;br /&gt;
|-&lt;br /&gt;
|- id=&amp;quot;Inhumanizing&amp;quot;&lt;br /&gt;
! Inhumanizing{{AnomalyIcon}}&amp;lt;br/&amp;gt;[[File:Inhumanizing.png|64px]]&lt;br /&gt;
| Required || Human morality and feeling are a distraction. We must leave humanity behind. &amp;lt;br/&amp;gt; Mental breaks will cause followers to become [[inhumanized]]. || || [[#Inhuman|Inhuman]] || '''Mood:'''&lt;br /&gt;
*{{Thought|desc=I'm ashamed of my humanity. I want to embrace the void but I fear it.|label=Human shame|value=-8|stack=1}} if not inhumanized.&lt;br /&gt;
'''Mental breaks:'''&lt;br /&gt;
* [[Mental_break#Humanity_break|Humanity break]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Fishing&amp;quot;&lt;br /&gt;
! rowspan=3 | Fishing{{OdysseyIcon}}&amp;lt;br/&amp;gt;[[File:Fishing.png|64px]]&lt;br /&gt;
| Prohibited || Fishing is immoral. We should never do it. || || [[#Animal Personhood|Animal Personhood]] || '''Prohibitions:''':&lt;br /&gt;
*[[Fishing]]&lt;br /&gt;
'''Mood''':&lt;br /&gt;
*{{Thought|desc=Someone is killing fish! Our slippery brothers and sisters are dying.|label=Someone slaughtered fish|value=-4|stack=1|duration=6}}.&lt;br /&gt;
{{--|10}} opinion for slaughtering fish&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Disapproved || Fishing is gruesome. We should avoid it. || || [[#Animal Personhood|Animal Personhood]] || '''Mood''':&lt;br /&gt;
*{{Thought|desc=I had to kill fish. It was an ugly thing to do.|label=Slaughtered fish|value=-4|stack=1|duration=6}}.&lt;br /&gt;
*{{Thought|desc=Someone is killing fish! We should protect these beautiful creatures.|label=Someone slaughtered fish|value=-2|stack=1|duration=6}}.&lt;br /&gt;
'''Stats''':&lt;br /&gt;
*[[Fishing speed]]: {{--|25%}}&lt;br /&gt;
*[[Fishing yield]]: {{--|10%}}&lt;br /&gt;
{{--|5}} opinion for slaughtering fish&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Sacred || Fishing is part of the right path. || || || '''Mood''':&lt;br /&gt;
*{{Thought|desc=I wish we were somewhere we could fish.|label=Not enough fish|value=-4|stack=1}}.&lt;br /&gt;
*{{Thought|desc=Fishing puts me on the right path - at least for a little while.|label=Fished recently|value=+2|stack=1|duration=1}}.&lt;br /&gt;
'''Stats''':&lt;br /&gt;
*[[Fishing yield]]: {{Good|+10%}}&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;references group=&amp;quot;Optional precepts&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Meme-specific ===&lt;br /&gt;
These issues and their precepts can only be added by having a specific meme, and cannot be removed as long as the meme is present.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Issue !! Precept !! Description !! Meme !! Effects&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Age reversal&amp;quot;&lt;br /&gt;
! Age reversal&amp;lt;br/&amp;gt;[[File:AgeReversal.png|64px]]&lt;br /&gt;
| Demanded || Why get old? One must have a once-yearly age reversal treatment in the biosculpter pod. || [[#Transhumanist|Transhumanist]] || '''Mood:'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=I'm getting old. I should get an age reversal in a biosculpter pod.|label=harmful aging|value=-4|stack=1}}, if a pawn with at least high expectations and a biological age of 25 didn't have age reversal in the last year.&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=My youth is draining away. I should get an age reversal in a biosculpter pod.|label=terrible aging|value=-7|stack=1}}, if a pawn with at least high expectations and a biological age of 25 didn't have age reversal in the last year and 15 days.&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=I am trapped in a decaying prison of flesh! I need to get an age reversal in a biosculpter pod.|label=horrific aging|value=-10|stack=1}}, if a pawn with at least high expectations and a biological age of 25 didn't have age reversal in the last year and 30 days.&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=Aging and death have no hold on me. I am forever, as an enhanced human ought to be.|label=received age reversal|value=+3|stack=1|duration=4}} after age reversal.&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;'''Notes:'''&lt;br /&gt;
*Initial colonists, newly generated pawns (due to events, quests, raids, etc.), as well as pawns after changing map due to Archonexus quest have a 20 to 40 day grace period before they start demanding age reversal (it will replace their age reversal demanded date, even if it would come after that period).&lt;br /&gt;
*Whenever a pawn's faction or ideology change they'll get a 15-20 day grace period before they start demanding age reversal (unless their next age reversal demanded date will come after that period).&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Animal connection&amp;quot;&lt;br /&gt;
! Animal connection&amp;lt;br/&amp;gt;[[File:Precept animal connection.png|64px]]&lt;br /&gt;
| Strong || We have a strong connection to our animal friends || [[#Animal personhood|Animal personhood]] ||&lt;br /&gt;
* 2x [[Tame Animal Chance]]&lt;br /&gt;
* 2x [[Bond Chance Factor]]&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Blind psysense&amp;quot;&lt;br /&gt;
! Blind psysense&amp;lt;br/&amp;gt;[[File:BlindPsysense.png|64px]]&lt;br /&gt;
| Strong|| Our blind have special ways of connecting with the psychic aether || [[#Blindsight|Blindsight]] || '''Stats:'''&amp;lt;br/&amp;gt;[[Psychic Sensitivity]]: {{+|30%}} for [[Sight|blind]] pawns.&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Bonding&amp;quot;&lt;br /&gt;
! Bonding&amp;lt;br/&amp;gt;[[File:Bonding.png|64px]]&lt;br /&gt;
| Disapproved || To emotionally bond with a lower being is a shameful act || [[#Human primacy|Human primacy]] || Disables [[Animals#Bonding|animal bonding]] event for pawns with ideology. Does '''not''' disable pre-existing bonds or disable their [[thoughts]].&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Comfort&amp;quot;&lt;br /&gt;
! Comfort&amp;lt;br/&amp;gt;[[File:Comfort.png|64px]]&lt;br /&gt;
| Ignored || We should pay no attention to comfort || [[#Pain is virtue|Pain Is Virtue]] || Disables [[comfort]] need, and comfort-related thoughts, both positive and negative&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Eclipse&amp;quot;&lt;br /&gt;
! Eclipse&amp;lt;br/&amp;gt;[[File:Precept Eclipse.png|64px]]&lt;br /&gt;
| Beautiful || Eclipses are a beautiful respite from the blinding sunlight. || [[#Darkness|Darkness]]&amp;lt;br/&amp;gt;''unless'' [[#Blindsight|blindsight]] || {{+|5}} mood for seeing an [[eclipse]]&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Gauranlen connection&amp;quot;&lt;br /&gt;
! Gauranlen connection&amp;lt;br/&amp;gt;[[File:GauranlenConnection.png|64px]]&lt;br /&gt;
| Strong || We have a special connection with the Gauranlen trees. The trees refocus production easily under our influence, and we are not satisfied unless we have that connection. || [[#Tree connection|Tree connection]] || '''Mood:'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=I am happily connected to a Gauranlen tree.|label=Gauranlen connection|value=+3|stack=1}} when connected to [[Gauranlen tree]].&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=Without a connection to a Gauranlen tree, I feel disconnected from nature.|label=want Gauranlen connection|value=-0|stack=1}}, at Very Low [[expectations]].&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=Without a connection to a Gauranlen tree, I feel disconnected from nature.|label=want Gauranlen connection|value=-1|stack=1}}, at Low [[expectations]].&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=Without a connection to a Gauranlen tree, I feel disconnected from nature.|label=want Gauranlen connection|value=-2|stack=1}}, at Moderate [[expectations]].&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=Without a connection to a Gauranlen tree, I feel disconnected from nature.|label=want Gauranlen connection|value=-4|stack=1}}, at High [[expectations]].&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=Without a connection to a Gauranlen tree, I feel disconnected from nature.|label=want Gauranlen connection|value=-6|stack=1}}, at Sky High [[expectations]].&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;'''Stats:'''&amp;lt;br/&amp;gt;[[Pruning speed]]: {{+|25%}}&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Mining yield&amp;quot;&lt;br /&gt;
! Mining yield&amp;lt;br/&amp;gt;[[File:MiningYield.png|64px]]&lt;br /&gt;
| High || Mining is so important that we do it with great focus and respect, and we get more resources because of that. || [[#Tunneler|Tunneler]] || '''Stats:'''&amp;lt;br/&amp;gt;[[Mining yield]]: {{+|10%}}&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Neural supercharge&amp;quot;&lt;br /&gt;
! Neural supercharge&amp;lt;br/&amp;gt;[[File:NeuralSupercharger.png|64px]]&lt;br /&gt;
| Preferred || Having a neural supercharge is the new standard. Without it, you're obsolete. || [[#Transhumanist|Transhumanist]] || '''Mood:'''&amp;lt;br/&amp;gt;{{Thought|desc=Without a neural supercharge, I'm running below my true capacity. It's depressing.|label=want neural supercharge|value=-6|stack=1}} whenever 2+{{Check Tag|Verify time|Is it two days?}} days have passed since [[Neural supercharger|neural supercharging]], assuming Moderate [[expectations]] or higher.&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Pain&amp;quot;&lt;br /&gt;
! Pain&amp;lt;br/&amp;gt;[[File:Pain.png|64px]]&lt;br /&gt;
| Idealized || To experience nerve-singing pain is a mark of morality. || [[#Pain is virtue|Pain is virtue]]&amp;lt;br/&amp;gt;[[#Guilty|Guilty]] || '''Mood:'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=The pain grounds me. I appreciate it|label=minor pain|value=+3|stack=1}}, [[pain]] between 1% and 14% inclusive. Replaces default {{--|5}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=The pain cleanses me. I like it.|label=serious pain|value=+5|stack=1}}, [[pain]] between 15% and 39% inclusive. Replaces default {{--|10}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=The pain purifies me. I need it!|label=intense pain|value=+7|stack=1}}, [[pain]] between 40% and 79% inclusive. Replaces default {{--|15}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=The pain makes me sublime! I wish to become it!|label=mind-shattering pain|value=+9|stack=1}}, [[pain]] of 80%+. Replaces default {{--|20}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;'''Note:''' These thoughts are replaced by the [[Masochist]] specific thoughts for pawns with that trait, and with the default values for [[Wimp]]s.&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Proselytizing&amp;quot;&lt;br /&gt;
! rowspan=3 | Proselytizing&amp;lt;br/&amp;gt;[[File:Proselytizing.png|64px]]&lt;br /&gt;
| Occasional || Those who know the truth should try to bring it to others, when it seems appropriate. || [[#Proselytizer|Proselytizer]] || '''Stats:'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;Social chat [[conversion]] attempt frequency: '''×300'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;'''Development points:'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{+|1}} each pawn converted to the ideoligion.{{Check Tag|Verify|Based on code, needs to be tested and confirmed in game}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{+|5}} for a successful [[relic]] hunt.{{Check Tag|Final Quest only?|Is this only given when the relic is actually acquired?}}{{Check Tag|Verify|Based on code, needs to be tested and confirmed in game}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{+|2}} for each successful Reliquary Pilgrims quest.{{Check Tag|Verify|Based on code, needs to be tested and confirmed in game}}&lt;br /&gt;
|-&lt;br /&gt;
| Sometimes || Those who know the truth should bring it to others at every opportunity. || [[#Proselytizer|Proselytizer]] || '''Stats:'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;Social chat [[conversion]] attempt frequency: '''×500'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;'''Development points:'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{+|1}} each pawn converted to the ideoligion.{{Check Tag|Verify|Based on code, needs to be tested and confirmed in game}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{+|5}} for a successful [[relic]] hunt.{{Check Tag|Final Quest only?|Is this only given when the relic is actually acquired?}}{{Check Tag|Verify|Based on code, needs to be tested and confirmed in game}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{+|2}} for each successful Reliquary Pilgrims quest.{{Check Tag|Verify|Based on code, needs to be tested and confirmed in game}}&lt;br /&gt;
|-&lt;br /&gt;
| Frequent || Those who know the truth have a duty to always spread it and drive out other beliefs. || [[#Proselytizer|Proselytizer]] || '''Stats:'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;Social chat [[conversion]] attempt frequency: '''×700'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;'''Development points:'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{+|1}} each pawn converted to the ideoligion.{{Check Tag|Verify|Based on code, needs to be tested and confirmed in game}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{+|5}} for a successful [[relic]] hunt.{{Check Tag|Final Quest only?|Is this only given when the relic is actually acquired?}}{{Check Tag|Verify|Based on code, needs to be tested and confirmed in game}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{+|2}} for each successful Reliquary Pilgrims quest.{{Check Tag|Verify|Based on code, needs to be tested and confirmed in game}}&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Ranching&amp;quot;&lt;br /&gt;
! Ranching&amp;lt;br/&amp;gt;[[File:Ranching.png|64px]]&lt;br /&gt;
| Central || We must raise and consume many large animals, and we must not eat plants. || [[#Rancher|Rancher]] || '''Stats:'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;[[Plant Work Speed]]: {{Bad|x70%}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;[[Tame Animal Chance]]: {{Good|x120%}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;[[Animal Gather Yield]]: {{Good|x120%}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;[[Butchery Efficiency]]: {{Good|x120%}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;[[Animals Learning Factor]]: {{Good|x200%}}.&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;[[Animal Products Price Improvement]]: {{+|10%}}.{{Check Tag|Mechanics?|How does this apply in the order of operations}} Affects [[meat]], [[leather]] and [[wool]] of all types, including [[Human]]. [[Eggs]], [[milk]], [[insect jelly]], and live [[animals]] are not affected.&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;'''Mood:'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{--|3}}/{{--|2}}/{{--|1}}/{{+|1}}/{{+|2}}/{{+|3}} [[mood]] based on total animal body size per colonist,{{Check Tag|What ratios?|What ratio is each cut off?}}{{Check Tag|Colonist only?|Wb slaves, prisoners, quest guests etc? What about colonists without this precept?}} if Low [[expectations]] or higher. Does not apply to quest lodgers.&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{Thought|desc=I sowed a human food plant. It was wrong - humans should eat animals, and animals should eat nature-made plants.|label=sowed human food plant|value=-4|duration=2}} if Low [[expectations]] or higher.{{Check Tag|Which plants?}}{{Check Tag|Sow only?|Can you harvest plants without issue?}} Does not apply to quest lodgers.&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;'''Development points:'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;br/&amp;gt;{{+|2}} for each successful [[Quests#Hospitality|Animal hospitality]] quest.{{RoyaltyIcon}}&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Rough living&amp;quot;&lt;br /&gt;
! Rough living&amp;lt;br/&amp;gt;[[File:RoughLiving.png|64px]]&lt;br /&gt;
| Welcomed || We don't need to separate ourselves from the roughness of nature. || [[#Tree connection|Tree connection]]&amp;lt;br/&amp;gt;[[#Pain is virtue|Pain Is Virtue]] || Nullifies:&lt;br /&gt;
*{{Thought|desc=I had to eat a meal off the ground. Can't we get a table around here?|label=Ate without table|value=-3|stack=1|duration=1}}&lt;br /&gt;
*{{Thought|desc=I had to sleep outdoors without any protection from the elements.|label=slept outside|value=-4|stack=1|duration=1}}&lt;br /&gt;
*{{Thought|desc=I had to sleep on the ground like an animal.|label=slept on ground|value=-4|stack=1|duration=1}}&lt;br /&gt;
*{{Thought|desc=I'm soaking wet.|label=soaking wet|value=-3|stack=1|duration=0.1}}&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Slab bed&amp;quot;&lt;br /&gt;
! Slab bed&amp;lt;br/&amp;gt;[[File:Precept Slab Bed.png|64px]]&lt;br /&gt;
| Preferred || The right way to sleep is on a slab bed. || [[#Pain is virtue|Pain is virtue]] || Makes colonists prefer slab beds, and gives a +2 thought when they sleep in slab beds.&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Sleep accelerator&amp;quot;&lt;br /&gt;
! Sleep accelerator&amp;lt;br/&amp;gt;[[File:Precept sleep accelerator.png|64px]]&lt;br /&gt;
| Preferred || One should always use a sleep accelerator. Slow-sleeping is just foolishly wasting your potential. || [[#Transhumanist|Transhumanist]] || +3 mood for 1 day when using [[sleep accelerator]]&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Indoors&amp;quot;&lt;br /&gt;
! Indoors&amp;lt;br/&amp;gt;[[File:SmallSpaces.png|64px]]&lt;br /&gt;
| Preferred || We were meant to live indoors. There's nothing bothersome about being in tight quarters. || [[#Tunneler|Tunneler]] [[#Shipborn|Shipborn]]{{OdysseyIcon}} || &lt;br /&gt;
*Adds needs: [[Needs#Indoors|Indoors]]&lt;br /&gt;
*Removes needs: [[Needs#Outdoors|Outdoors]]&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Temperature&amp;quot;&lt;br /&gt;
! Temperature&amp;lt;br/&amp;gt;[[File:Precept temperature.png|64px]]&lt;br /&gt;
| Tough || Extreme temperatures don't bother us as much. || [[#Tree connection|Tree connection]]&amp;lt;br/&amp;gt;[[#Pain is virtue|Pain is virtue]]&amp;lt;br/&amp;gt;[[#Shipborn|Shipborn]]{{OdysseyIcon}} || Nullifies:&lt;br /&gt;
*{{Thought|desc=I had to sleep in the cold. We really need some heaters.|label=slept in the cold|value=-4|stack=1|duration=1}}&lt;br /&gt;
*{{Thought|desc=I had to sleep in unbearable heat. Can't we have air conditioning?|label=slept in the heat|value=-4|stack=1|duration=1}}&lt;br /&gt;
'''Note''': It doesn't appear to affect comfortable temperatures or the related [[hypothermia]]/[[heatstroke]] tolerances. It is only referenced for the above moodlets&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Work drive&amp;quot;&lt;br /&gt;
! Work drive&amp;lt;br/&amp;gt;[[File:Precept work drive.png|64px]]&lt;br /&gt;
| Tripled ||The duration of the leader's work drive ability is tripled. || [[#Collectivist|Collectivist]] || 3x Work Drive Duration (from 3 days to 9 days)&lt;br /&gt;
&lt;br /&gt;
|- id=&amp;quot;Space habitat&amp;quot;&lt;br /&gt;
! Space Habitat{{OdysseyIcon}}&amp;lt;br/&amp;gt;[[File:Precept space habitat.png|64px]]&lt;br /&gt;
| Preferred || Planetary living is for lower animals. We should live in orbit or among the stars. || [[#Shipborn|Shipborn]] || '''Mood''':&lt;br /&gt;
*{{Thought|desc=I'll never feel at home here in the dirt. We should be in space.|label=Planetary habitat|value=-2|stack=1}}&lt;br /&gt;
*{{Thought|desc=It feels good to be where I belong. I can't stand being down there in the dirt.|label=Space habitat|value=4|stack=1}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
{{Main|Roles}}&lt;br /&gt;
Roles are positions available to pawns that grant them both special benefits and drawbacks. Every ideoligion has at least two roles: [[Leader]] and [[Moral guide]]. There can be only 1 '''leader''' globally, and 1 '''moral guide''' per ideoligion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:inline-table; padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{| {{STDT| sortable text-valign:top}}&lt;br /&gt;
!Name !! colspan=5 | Abilities&lt;br /&gt;
|- id=&amp;quot;Leader&amp;quot;&lt;br /&gt;
! [[Leader]]&amp;lt;br/&amp;gt;[[File: Leader.png|link=Leader]]&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | [[Combat command]]&amp;lt;br/&amp;gt;[[File:CombatCommand.png|link=Combat command|64px]]&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | [[Work drive]]&amp;lt;br/&amp;gt;[[File:WorkDrive.png|link=Work drive|64px]]&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | [[Leader speech]]&amp;lt;br/&amp;gt;[[File:LeaderSpeech.png|link=Leader speech|64px]]&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | [[Trial]]&amp;lt;br/&amp;gt;[[File:Trial.png|link=Trial|64px]]&lt;br /&gt;
|-&lt;br /&gt;
|- id=&amp;quot;Moral guide&amp;quot;&lt;br /&gt;
! [[Moral guide]]&amp;lt;br/&amp;gt;[[File: MoralGuide.png|link=Moral guide]]&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | [[Roles#Convert|Convert]]&amp;lt;br/&amp;gt;[[File:Convert.png|link=Roles#Convert|64px]]&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | [[Counsel]]&amp;lt;br/&amp;gt;[[File:Counsel.png|link=Counsel|64px]]&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | [[Reassure]]&amp;lt;br/&amp;gt;[[File:Reassure.png|link=Reassure|64px]]&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | [[Conversion ritual]]&amp;lt;br/&amp;gt;[[File:ConversionRitual.png|link=Conversion ritual|64px]]&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | [[Preach health]]&amp;lt;br/&amp;gt;[[File:PreachHealth.png|link=Preach health|64px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionally, each ideoligion grants up to 2 types of [[specialist]]s; a role that grants large bonuses and abilities related to a specific field in exchange of inability of doing one or more types of work. This limitation only applies to the type of specialization, not the total number of specialists.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:inline-table; padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{| {{STDT| sortable text-valign:top}}&lt;br /&gt;
!Name !! Required Memes !! Disabled Work Types !! Abilities&lt;br /&gt;
|- id=&amp;quot;Shooting specialist&amp;quot;&lt;br /&gt;
! [[Shooting specialist]]&amp;lt;br/&amp;gt;[[File: SpecialistShooting.png|link=Shooting specialist]]&lt;br /&gt;
|&lt;br /&gt;
* [[Ideoligion#Raider|Raider]]&lt;br /&gt;
* [[Ideoligion#Supremacist|Supremacist]]&lt;br /&gt;
|&lt;br /&gt;
* Crafting&lt;br /&gt;
* Cooking&lt;br /&gt;
* Plantwork&lt;br /&gt;
* Mining&lt;br /&gt;
* Constructing&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; |[[Marksman command]]&amp;lt;br/&amp;gt;[[File:MarksmanCommand.png|link=Marksman command|64px]]&lt;br /&gt;
|- id=&amp;quot;Animals specialist&amp;quot;&lt;br /&gt;
! [[Animals specialist]]&amp;lt;br/&amp;gt;[[File: SpecialistAnimals.png|link=Animals specialist]]&lt;br /&gt;
|&lt;br /&gt;
* [[Ideoligion#Animal personhood|Animal personhood]]&lt;br /&gt;
* [[Ideoligion#Rancher|Rancher]]&lt;br /&gt;
|&lt;br /&gt;
* Crafting&lt;br /&gt;
* Cooking&lt;br /&gt;
* Plantwork&lt;br /&gt;
* Mining&lt;br /&gt;
* Constructing&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; |[[Animal calm]]&amp;lt;br/&amp;gt;[[File:AnimalCalm.png|link=Animal calm|64px]]&lt;br /&gt;
|- id=&amp;quot;Medical specialist&amp;quot;&lt;br /&gt;
! Medical Specialist&amp;lt;br/&amp;gt;[[File: SpecialistMedical.png|link=Medical specialist]]&lt;br /&gt;
|&lt;br /&gt;
* [[Ideoligion#Flesh purity|Flesh purity]]&lt;br /&gt;
* [[Ideoligion#Blindsight|Blindsight]]&lt;br /&gt;
|&lt;br /&gt;
* Violent&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; |[[Immunity drive]]&amp;lt;br/&amp;gt;[[File:ImmunityDrive.png|link=Immunity drive|64px]]&lt;br /&gt;
|- id=&amp;quot;Melee specialist&amp;quot;&lt;br /&gt;
! Melee Specialist&amp;lt;br/&amp;gt;[[File: SpecialistMelee.png|link=Melee specialist]]&lt;br /&gt;
|&lt;br /&gt;
* [[Ideoligion#Raider|Raider]]&lt;br /&gt;
* [[Ideoligion#Supremacist|Supremacist]]&lt;br /&gt;
|&lt;br /&gt;
* Crafting&lt;br /&gt;
* Cooking&lt;br /&gt;
* Plantwork&lt;br /&gt;
* Mining&lt;br /&gt;
* Constructing&lt;br /&gt;
* Hunting&lt;br /&gt;
* Shooting&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; |[[Berserk trance]]&amp;lt;br/&amp;gt;[[File:BerserkTrance.png|link=Berserk trance|64px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:inline-table; padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{| {{STDT| sortable text-valign:top}}&lt;br /&gt;
!Name !! Required Memes !! Disabled Work Types !! Abilities&lt;br /&gt;
|- id=&amp;quot;Mining specialist&amp;quot;&lt;br /&gt;
! [[Mining specialist]]&amp;lt;br/&amp;gt;[[File: SpecialistMining.png|link=Mining specialist]]&lt;br /&gt;
|&lt;br /&gt;
* [[Ideoligion#Darkness|Darkness]]&lt;br /&gt;
* [[Ideoligion#Tunneler|Tunneler]]&lt;br /&gt;
|&lt;br /&gt;
* Animals&lt;br /&gt;
* Crafting&lt;br /&gt;
* Cooking&lt;br /&gt;
* Plantwork&lt;br /&gt;
* Constructing&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; |[[Mining command]]&amp;lt;br/&amp;gt;[[File:MiningCommand.png|link=Mining command|64px]]&lt;br /&gt;
|- id=&amp;quot;Plants specialist&amp;quot;&lt;br /&gt;
! [[Plants specialist]]&amp;lt;br/&amp;gt;[[File: SpecialistPlants.png|link=Plants specialist]]&lt;br /&gt;
|&lt;br /&gt;
* [[Ideoligion#High life|High life]]&lt;br /&gt;
* [[Ideoligion#Nature primacy|Nature primacy]]&lt;br /&gt;
* [[Ideoligion#Tree connection|Tree connection]]&lt;br /&gt;
|&lt;br /&gt;
* Animals&lt;br /&gt;
* Crafting&lt;br /&gt;
* Cooking&lt;br /&gt;
* Constructing&lt;br /&gt;
* Mining&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; |[[Farming command]]&amp;lt;br/&amp;gt;[[File:FarmingCommand.png|link=Farming command|64px]]&lt;br /&gt;
|- id=&amp;quot;Production specialist&amp;quot;&lt;br /&gt;
! [[Production specialist]]&amp;lt;br/&amp;gt;[[File: SpecialistProduction.png|link=Production specialist]]&lt;br /&gt;
|&lt;br /&gt;
* [[Ideoligion#Human primacy|Human primacy]]&lt;br /&gt;
|&lt;br /&gt;
* Dumb labor&lt;br /&gt;
* Animals&lt;br /&gt;
* Cooking&lt;br /&gt;
* Plantwork&lt;br /&gt;
* Mining&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; |[[Production command]]&amp;lt;br/&amp;gt;[[File:ProductionCommand.png|link=Production command|64px]]&lt;br /&gt;
|- id=&amp;quot;Research specialist&amp;quot;&lt;br /&gt;
! [[Research specialist]]&amp;lt;br/&amp;gt;[[File: SpecialistResearch.png|link=Research specialist]]&lt;br /&gt;
|&lt;br /&gt;
* [[Ideoligion#Transhumanist|Transhumanist]]&lt;br /&gt;
|&lt;br /&gt;
* Dumb labor&lt;br /&gt;
* Animals&lt;br /&gt;
* Cooking&lt;br /&gt;
* Plantwork&lt;br /&gt;
* Mining&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; |[[Research command]]&amp;lt;br/&amp;gt;[[File:ResearchCommand.png|link=Research command|64px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rituals ==&lt;br /&gt;
{{Main|Rituals}}&lt;br /&gt;
&lt;br /&gt;
{{Ritual table}}&lt;br /&gt;
&lt;br /&gt;
== Relics ==&lt;br /&gt;
{{Main|Relic}}&lt;br /&gt;
Relics are objects revered by your ideoligion that require a series of quests in order to be obtained. These are always of legendary quality, when applicable. Relics grant various boni, both when found and when present in rituals, some of which require being placed in a [[Reliquary]]. A relic being lost causes a malus of {{Thought|desc=The relic has been lost! A travesty!|label=relic lost|value=-5|stack=5|duration=30}} while a relic being destroyed causes a malus of {{Thought|desc=The relic was destroyed! A travesty!|label=relic destroyed|value=-5|stack=5|duration=30}}.&lt;br /&gt;
&lt;br /&gt;
When placed in a Reliquary, pilgrims of your ideoligion will visit your colony to pay reverence to the relic.&lt;br /&gt;
&lt;br /&gt;
== Buildings ==&lt;br /&gt;
Ideoligions can add special buildings that are required for either rituals or as statues of that ideologion.&lt;br /&gt;
&lt;br /&gt;
=== Ritual seat ===&lt;br /&gt;
Ideologions can have a maximum of 1 type of ritual seat.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! [[File:Kneel_pillow.png|32px]]&lt;br /&gt;
| [[Kneel_pillow|Kneel pillow]] &lt;br /&gt;
|-&lt;br /&gt;
! [[File:Kneel_sheet.png|32px]]&lt;br /&gt;
| [[Kneel_sheet|Kneel sheet]]&lt;br /&gt;
|-&lt;br /&gt;
! [[File:Pew.png|32px]]&lt;br /&gt;
| [[Pew]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Building ===&lt;br /&gt;
Ideologions can have a maximum of 5 types of ideologion-related buildings.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Image !! Name !! Type !! Minimum expectations !! Room requirements !! Note&lt;br /&gt;
|-&lt;br /&gt;
! [[File:Ideogram_morbid_b.png|32px]]&lt;br /&gt;
| [[Ideogram]] || Altar / Ideogram || Moderate || All floored&amp;lt;br&amp;gt;No beds allowed&amp;lt;br&amp;gt;No work facilities allowed ||! rowspan=&amp;quot;5&amp;quot; | You can only have one Altar / Ideogram at the same time.&lt;br /&gt;
|-&lt;br /&gt;
! [[File:Small_altar.png|32px]]&lt;br /&gt;
| [[Small_altar|Small altar]] || Altar / Ideogram || Moderate || Room impressiveness 60&amp;lt;br&amp;gt;All floored&amp;lt;br&amp;gt;No beds allowed&amp;lt;br&amp;gt;No work facilities allowed&lt;br /&gt;
|-&lt;br /&gt;
! [[File:Medium_altar.png|32px]]&lt;br /&gt;
| [[Medium_altar|Medium altar]] || Altar / Ideogram || Moderate || Room impressiveness 60&amp;lt;br&amp;gt;No beds allowed&amp;lt;br&amp;gt;No work facilities allowed&lt;br /&gt;
|-&lt;br /&gt;
! [[File:Large_altar.png|32px]]&lt;br /&gt;
| [[Large_altar|Large altar]] || Altar / Ideogram || Moderate || Room area: 25 tiles&amp;lt;br&amp;gt;No beds allowed&amp;lt;br&amp;gt;No work facilities allowed&lt;br /&gt;
|-&lt;br /&gt;
! [[File:Grand_altar.png|32px]]&lt;br /&gt;
| [[Grand_altar|Grand altar]] || Altar / Ideogram || Moderate || All floored&amp;lt;br&amp;gt;Room area: 25 tiles&amp;lt;br&amp;gt;No beds allowed&amp;lt;br&amp;gt;No work facilities allowed&lt;br /&gt;
|-&lt;br /&gt;
! [[File:Christmas_tree.png|32px]]&lt;br /&gt;
| [[Christmas_tree|Christmas tree]] || Christmas tree || N/A || N/A || N/A&lt;br /&gt;
|-&lt;br /&gt;
! [[File:Sacrificial_flag.png|32px]]&lt;br /&gt;
| [[Sacrificial_flag|Sacrificial flag]] || Sacrificial flag || Moderate || All floored&amp;lt;br&amp;gt;No beds allowed&amp;lt;br&amp;gt;No work facilities allowed || N/A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | Ideologions can add statue-like buildings that are required when there are 3 or more pawns of the ideoligion in your faction and their expectations reach moderate or higher. These buildings can be placed in the same room. Placing the buildings in a room which doesn't meet the requirements will give a &amp;quot;[building name] disrespected&amp;quot; negative moodlet to all pawns of the ideologion.&lt;br /&gt;
|-&lt;br /&gt;
! [[File:Sculpture_small_totemic_a.png|32px]]&lt;br /&gt;
| [[Small_sculpture|Small sculpture]] || Statue || High || Room impressiveness 60&amp;lt;br&amp;gt;Column x4&amp;lt;br&amp;gt;No beds allowed&amp;lt;br&amp;gt;No work facilities allowed || Small sculpture as a named ideologion building is a variation of the regular small sculpture.&amp;lt;br&amp;gt;Its [[Small_sculpture#Styles|appearance]] depends on the Origin or the Style that the ideologion has.&lt;br /&gt;
|-&lt;br /&gt;
! [[File:Sculpture_large_totemic_a.png|32px]]&lt;br /&gt;
| [[Large_sculpture|Large sculpture]] || Statue  || High || All floored&amp;lt;br&amp;gt;No beds allowed&amp;lt;br&amp;gt;No work facilities allowed || Large sculpture as a named ideologion building is a variation of the regular large sculpture.&amp;lt;br&amp;gt;Its [[Large_sculpture#Styles|appearance]] depends on the Origin or the Style that the ideologion has.&lt;br /&gt;
|-&lt;br /&gt;
! [[File:Sculpture_grand_totemic_a.png|32px]]&lt;br /&gt;
| [[Grand_sculpture|Grand sculpture]] || Statue  || Moderate || Room area: 25 tiles&amp;lt;br&amp;gt;All floored&amp;lt;br&amp;gt;No beds allowed&amp;lt;br&amp;gt;No work facilities allowed || Grand sculpture as a named ideologion building is a variation of the regular grand sculpture.&amp;lt;br&amp;gt;Its [[Grand_sculpture#Styles|appearance]] depends on the Origin or the Style that the ideologion has.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Weapon preferences ==&lt;br /&gt;
Ideoligion can have one or several pairs of noble and despised weapons types. Weapon pairs can't be combined if they overlap.&lt;br /&gt;
&lt;br /&gt;
Wielding a noble weapon grants +3 mood while wielding a despised one grants -5.&lt;br /&gt;
&lt;br /&gt;
Killing any pawn{{Check Tag|Verify}} with a noble weapon grants +3 mood for 1 day{{Check Tag|Thought Template|Convert to thought template}} while using a despised one to attack anything - including objects - grants -5 for 2 days.{{Check Tag|Thought Template|Convert to thought template}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Pair !! First group !! Second group&lt;br /&gt;
|-&lt;br /&gt;
| Melee / Ranged || All melee weapons, including beer and wood || All ranged weapons, including grenades&lt;br /&gt;
|-&lt;br /&gt;
| Melee piercer / Melee blunt || [[Thrumbo horn]], [[Elephant tusk]], [[Breach axe]], [[Gladius]], [[Longsword]], [[Knife]], [[Ikwa]], [[Spear]], [[Persona monosword]], [[Monosword]], [[Plasmasword]], [[Persona plasmasword]] || [[Beer]], [[Wood]], [[Mace]], [[Club]], [[Persona zeushammer]], [[Axe]], [[Warhammer]], [[Zeushammer]], [[Eltex staff]]&lt;br /&gt;
|-&lt;br /&gt;
| Long shots / Short shots || [[Bolt-action rifle]], [[Sniper rifle]] || [[Machine pistol]], [[Pump shotgun]], [[Chain shotgun]], [[Heavy SMG]]&lt;br /&gt;
|-&lt;br /&gt;
| Ranged heavy / Ranged light || [[Incendiary launcher]], [[Smoke launcher]], [[EMP launcher]], [[Heavy SMG]], [[LMG]], [[Sniper rifle]], [[Minigun]], [[Triple rocket launcher]], [[Greatbow]], [[Charge lance]] || [[Revolver]], [[Autopistol]], [[Machine pistol]], [[Short bow]], [[Recurve bow]], [[Charge rifle]]&lt;br /&gt;
|-&lt;br /&gt;
| Neolithic / Ultratech || [[Wood]], [[Club]], [[Knife]], [[Ikwa]], [[Spear]], [[Short bow]], [[Pila]], [[Recurve bow]], [[Greatbow]] || [[Persona monosword]], [[Persona zeushammer]], [[Persona plasmasword]], [[Monosword]], [[Zeushammer]], [[Plasmasword]], [[Eltex staff]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Apparel preferences ==&lt;br /&gt;
{{Stub|section=1|reason=Missing several details inc but not limited to how it spawns on pawns}}&lt;br /&gt;
&lt;br /&gt;
=== Apparel type combinations ===&lt;br /&gt;
Some kinds of [[apparel]] can be set as desired apparel.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Apparel type !! Name&lt;br /&gt;
|-&lt;br /&gt;
| [[Apparel#Headgear|Headgear]] || [[Authority_cap|Authority cap]], [[Beret]], [[Bowler_hat|Bowler hat]], [[Broadwrap]], [[Ceremonial_hood|Ceremonial hood]], [[Cowboy_hat|Cowboy hat]], [[Face_mask|Face mask]], [[Flophat]], [[Headwrap]], [[Hood]], [[Ritual_mask|Ritual mask]], [[Shadecone]], [[Slicecap]], [[Tailcap]], [[Torture_crown|Torture crown]], [[Tribal_headdress|Tribal headdress]], [[Tuque]], [[Veil]], [[Visage_mask|Visage mask]], [[War_mask|War mask]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Apparel#Eyes|Eyes]] || [[Blindfold]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Apparel#Skin|Skin]] || [[Button-down_shirt|Button-down shirt]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Apparel#Outer|Outer]] || [[Burka]], [[Robe]]&lt;br /&gt;
|}&lt;br /&gt;
The player can set any of these pieces to be desired for men, women, or both, and can choose between a relaxed and strong desire. Multiple kinds (a maximum of 8 {{Check Tag|Verify?|Verify what's the limit?}}) of apparel can be chosen. You can select both a relaxed and a strong desire for the same gender / apparel type combination, for example, a female relaxed headgear and a female strong headgear. Note that selecting the same apparel type and preference twice will result in a conflict, for example, if you select a female: strong cowboy hat and an everyone: strong hood. To maximize the number of available desired apparel:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Apparel type !! Gender / Preference combination&lt;br /&gt;
|-&lt;br /&gt;
| [[Apparel#Headgear|Headgear]] || Female: relaxed&amp;lt;br&amp;gt;Female: strong&amp;lt;br&amp;gt;Male: relaxed&amp;lt;br&amp;gt;Male: strong&lt;br /&gt;
|-&lt;br /&gt;
| [[Apparel#Eyes|Eyes]] || [[Blindfold]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Apparel#Skin|Skin]] || [[Button-down_shirt|Button-down shirt]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Apparel#Outer|Outer]] || Everyone: relaxed&amp;lt;br&amp;gt;Everyone: strong&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Mood effects ===&lt;br /&gt;
&lt;br /&gt;
Wearing a desired apparel or a certain color has mood effect on the pawn.&lt;br /&gt;
&lt;br /&gt;
==== Desired apparel ====&lt;br /&gt;
&lt;br /&gt;
Pawns that are wearing all of their desired apparel will gain a small mood bonus of {{+|1}} for a relaxed desire, and {{+|2}} for a strong desire. There is no difference in the mood bonus for having multiple pieces of desired apparel in the ideology, the bonus is only for wearing all of their desired apparel. Unlike role-specific apparel, there is no mood penalty for not wearing desired apparel.&lt;br /&gt;
&lt;br /&gt;
==== Color mood effect ====&lt;br /&gt;
&lt;br /&gt;
Ideoligions have an ideoligion color. Pawns gain a gain a {{+|1}} mood buff if more than 60% of a colonist's apparel is their favorite color or the color of their ideoligion. If their favorite color and their ideoligion's color are the same, they will gain both mood buffs for a total of {{+|2}}. For a full list of valid apparel color options, see the [[Dye]] page.&lt;br /&gt;
&lt;br /&gt;
The color of the ideoligion can be set at generation, while a pawn's favorite color is determined when the pawn is generated.{{Check Tag|Children?|Confirm when children gain a favorite color}} Apparel can be dyed at the [[styling station]] for one [[dye]] per piece of apparel. Note that unlike with preferred apparel, outside of the [[Man in Black]] event, pawns will not necessarily spawn wearing color that matches their ideoligion or preferred colors.&lt;br /&gt;
&lt;br /&gt;
=== Spawning ===&lt;br /&gt;
&lt;br /&gt;
Pawns that have an ideologion with desired apparel may spawn wearing it. The criteria for this are not fully understood, but pawnkinds that do not spawn with apparel that occupies the coverage and layer of the item preferred by the ideoligion appear to always spawn with the item. If the pawnkind does have conflicting apparel that may, or is required to, spawn, then a portion of those pawnkinds will spawn with the apparel. This can lead to knock-on effects, such as some Empire [[Empire#Cataphract|Cataphracts]] {{RoyaltyIcon}} spawning with hats in place of their [[cataphract helmet|helmets]] {{RoyaltyIcon}} making them weaker in combat. Note that this also applies to colonist spawns, including at game start. In any case, it is unknown if this is limited by the apparel value limits imposed on some pawnkinds.&lt;br /&gt;
&lt;br /&gt;
== Xenotype preferences ==&lt;br /&gt;
{{Biotech|section=1}}&lt;br /&gt;
{{Stub|section=1|reason= Needs proper write up. Test if specific to Sanguophage or the implanter gene. Also [[Template: Thought]]}}&lt;br /&gt;
Believers consider this xenotype to hold a higher moral or spiritual status than others. They will be happy if their colony has only preferred xenotypes. However, having any preferred xenotypes means that all other xenotypes are considered disliked and believers will be unhappy living alongside them.&lt;br /&gt;
&lt;br /&gt;
Up to three [[Xenotypes]] can be selected as preferred xenotypes, including baseliner and a custom xenotype. If at least one is selected then a positive mood will be generated if every colonist is a preferred type, but a negative scaling mood if even one colonist is not a preferred type.&lt;br /&gt;
&lt;br /&gt;
Believers will not accept becoming a non-preferred xenotype via reimplant ability or [[xenogerm]]s. If [[Sanguophage]] is not a preferred type and at least one other preferred type is set, colonists will refuse Sanguophage xenogerm implantation and quests that award Sanguophage xenogerm will fail to give the reward.{{Check Tag|Fail?|Will not offer that as a reward? Will generate as a reward but not give it? Will not generate the quest? Will not generate the option that would be to receive the xenogerm? Will replace it with something else?}}&lt;br /&gt;
&lt;br /&gt;
Opinion:&lt;br /&gt;
* Preferred xenotype: {{+|10}}&lt;br /&gt;
* Disliked xenotype: {{--|30}}&lt;br /&gt;
&lt;br /&gt;
Mood:&lt;br /&gt;
* All preferred xenotype: {{+|2}}&lt;br /&gt;
* Some disliked xenotypes: {{--|2}}&lt;br /&gt;
* Many disliked xenotypes: {{--|3}}&lt;br /&gt;
* Tons of disliked xenotypes: {{--|4}}&lt;br /&gt;
* I am disliked xenotype&amp;lt;: {{--|6}}&lt;br /&gt;
&lt;br /&gt;
== Venerated animals ==&lt;br /&gt;
{{Stub|section=1|reason=General stub. Also: Check body size requirements. Add Table of options with bodysize and hunger/body size}}&lt;br /&gt;
{{Quote|This animal is considered by believers to hold a special spiritual or moral status, which means it must be venerated and may never be harmed.|Description}}&lt;br /&gt;
An ideoligion can have up to 18 venerated [[animal]]s.&lt;br /&gt;
&lt;br /&gt;
Colonists will not hunt or attack venerated animals with ranged weapons (but will attack them in melee), unless the animal is in manhunter mood. They will not slaughter tame venerated animals.&lt;br /&gt;
&lt;br /&gt;
Colonists will butcher venerated animals without any issue, but will refuse to eat their [[meat]] or any meal made with it (including meals stacked together), even when starving. They can be manually ordered to eat such food, but will get -8 mood for 5 days. If a colonist that venerates an animal is unconscious, other colonists (of any ideoligion) will not feed them such food, and '''cannot''' be manually ordered to do so. Colonists take no issue using [[leather]], [[wool]], [[milk]], or [[eggs]] of the venerated animal.&lt;br /&gt;
&lt;br /&gt;
Colonists will get -5 mood for 5 days if a tame venerated animal dies for any reason. Releasing tame animals is fine.&lt;br /&gt;
&lt;br /&gt;
Colonists will get a positive thought for the amount of tame venerated animals in the colony, depending on their total body size divided by the total number of colonists: &amp;lt;!-- +1 is bugged and will not appear, --&amp;gt;+2 for 1 or more, +3 for 2 or more, +4 for 4 or more, and +5 for 6 or more. In case of multiple venerated animals, all their body sizes are added together, producing a single thought. All colonists are counted for this, but only those of an appropriate ideoligion will get the thought.&lt;br /&gt;
&lt;br /&gt;
Despite being tameable, [[Insectoids]] cannot be selected as a venerated animal.&lt;br /&gt;
&lt;br /&gt;
Venerated animals are twice as easy to tame.&lt;br /&gt;
&lt;br /&gt;
== Hair and tattoos ==&lt;br /&gt;
An ideoligion has associated hairstyles, beards, and tattoos. Specific hairstyles and tattoos may be allowed for men, women, or either. Some of those may be more or less common.&lt;br /&gt;
&lt;br /&gt;
Newly spawned pawns of an ideoligion will always have matching appearance.&lt;br /&gt;
&lt;br /&gt;
If pawn's hairstyle, beard, or tattoo do not match what their ideoligion allows (usually as a result of a conversion), they will try to use [[styling station]] on their free time to automatically change their looks, and will have a -??{{Check Tag|Value?}} mood penalty until they do so. They can also be sent to adjust their appearance manually.&lt;br /&gt;
&lt;br /&gt;
== Version history ==&lt;br /&gt;
* [[Ideology DLC]] Release - Added.&lt;br /&gt;
* [[Version/1.3.3067|1.3.3067]] - Fixed gender supremacy memes having opposite agreeing traits e.g. Female Supremacy inexplicably being agreed with by Misogynist traited pawns.&lt;br /&gt;
** Fix: Essential roles can be removed.&lt;br /&gt;
* [[Version/1.3.3069|1.3.3069]] -&lt;br /&gt;
** Adjust trees-related thoughts. Negatives for killing trees are reduced. Positives for seeing trees are amplified.&lt;br /&gt;
** Chance of resentment on failed conversion attempt reduced from 36% to 20%. Chance of fight reduced from 4% to 2%.&lt;br /&gt;
** If a pawn has sight under 50%, he should gain a psychic sensitivity bonus of up to 50%.&lt;br /&gt;
* [[Version/1.3.3069b|1.3.3069b]] - Added a feature that lets you save and load ideoligions within the ideoligion customization screen.&lt;br /&gt;
* [[Version/1.3.3074|1.3.3074]] - Desired apparel now uses the same faction restrictions as role apparel does. Tribal-Only: War mask, Tribal Headdress. Non-tribal only: Slicecap, Beret. Removed visage mask restriction to non-tribal only. Integrate art for rough living issue and set it to medium importance. Ensure Tunneler meme always has the MiningYield_High precept.&lt;br /&gt;
** Fix 5234: Pawns can build turrets when prohibited by precepts.&lt;br /&gt;
* [[Version/1.3.3076|1.3.3076]] - Tree connection pawns have a 25% boost to [[Pruning Speed]]. Added temperature tough issue and precept.&lt;br /&gt;
** Fix: High life meme ideos generate with a warning about conflicting apparel.&lt;br /&gt;
* [[Version/1.3.3080|1.3.3080]] - Fixed Immunity Drive. Was previously targeting wrong stat and inoperative. Add a new ideoligion setup interface which allows playing like classic RimWorld, using presets, or fully customizing. Change harmful aging thought minimum age from 20 to 25. Added temperature precept icon.&lt;br /&gt;
* [[Version/1.3.3087|1.3.3087]] - Fix: Nutrient paste does not produce ate meat or ate non meat thoughts.&lt;br /&gt;
* [[Version/1.3.3101|1.3.3101]] - Fluid ideoligion system added. Reduce production specialist crafting speed buffs from +70% to +50%. Increase impact of 'lost role' thought from {{--|5}} to {{--|15}}. Pawns now recover from [[#Melee specialist|berserk trance]] on being downed.&lt;br /&gt;
** Fix: There are some duplicate ideoligion icons.&lt;br /&gt;
** Fix: Tree lovers don't care about harvesting / chopping down cocoa trees. Individualist meme description changed from ''A community's role is to serve each individual.'' changed to ''Each person is a free individual with the right to their own ideas and decisions. Nobody should be made to conform.'' Collectivist meme description changed from ''A person's role is to serve the community.'' changed to ''Each person is part of a greater whole. People should work to play their part and help the group.''&lt;br /&gt;
* [[Version/1.3.3117|1.3.3117]] - &lt;br /&gt;
** Fix: Sunlamp does not trigger blinding light for Darkness pawns.&lt;br /&gt;
** Improved viability of multi-ideo colonies. Pawns of pawns of any ideo can now spectate any ritual, even if it's not of their own ideo.&lt;br /&gt;
** Gaining, changing, or removing a role now requires a simple ritual.&lt;br /&gt;
** Added a precept related to Darkness meme that gives believers a positive thought during an eclipse.&lt;br /&gt;
* [[Version/1.3.3159|1.3.3159]] - Precept name length is now limited.&lt;br /&gt;
* [[Version/1.3.3200|1.3.3200]] - Pawns can now install pre-built furniture even if it is incompatible with their ideoligion.&lt;br /&gt;
** Fix: Special characters on named precepts can break UI.&lt;br /&gt;
* [[Version/1.3.3287|1.3.3287]] - A thin faint box is now drawn around ideoligion preset selectables, precept and meme boxes for aesthetic reasons. Reworked eclipse precept artwork. Remove the 'no recent animal slaughter' negative thought from the rancher meme, along with all associated code and content. This particular thought was too limiting for players and not worth having. Previously inflicted a {{--|3}} mood.&lt;br /&gt;
** Fix: Classic mode ideoligions don't start with some classic precepts.&lt;br /&gt;
** Fix: Ideoligion info available on ritual begin dialog in classic mode. Meme &amp;quot;Flesh Purity&amp;quot; no longer forces the anti-biosculpting precept.&lt;br /&gt;
* [[Version/1.3.3326|1.3.3326]] - Display incompatible issue and precept names instead of just precept names in reformation confirmation dialog.&lt;br /&gt;
** Fix: Reforming a fluid ideo lists some precepts as &amp;quot;incompatible&amp;quot; when they actually aren’t.&lt;br /&gt;
** Fix: Ability gizmos are still available for roles that have been removed via reformation.&lt;br /&gt;
* [[Version/1.3.3387|1.3.3387]] - Fix: Not all precepts are added to memes during fluid ideoligion development. &amp;quot;No slaves in colony&amp;quot; thought does not apply at &amp;quot;Very low&amp;quot; expectations or below.&lt;br /&gt;
* [[Version/1.4.3523|1.4.3523]] - &lt;br /&gt;
**Fix: Berserker trance makes pawn guilty even though they cannot attack allies.&lt;br /&gt;
** Fix: High Life harvest yield for Drug Use: Essential precept doesn't work. Randomizing precepts no longer brings up a confirmation dialog if the user has not edited precepts.&lt;br /&gt;
* [[Version/1.4.3555|1.4.3555]] - [[Biotech DLC]] cross integration. Added mechanoid labor, child labor, growth vats, and bloodfeeders precepts. Added bloodfeeding meme. Added a new category of precept: Preferred xenotypes.&lt;br /&gt;
** Fix: Pilgrims coming to venerate a relic cause charity believers to get unhappy regardless of outcome. Yttakin factions no longer get desired apparel precepts, because they’re uncomfortable in all clothes.&lt;br /&gt;
* [[Version/1.4.3557|1.4.3557]] - Assign a fallback ideo{{Check Tag|Detail Needed}} to non-baby colonists during load that don't have an ideo set.&lt;br /&gt;
** Fix: &amp;quot;Child not in growth vat&amp;quot; thought appears for dead children.&lt;br /&gt;
** Fix: Banishing colonists doesn't recalculate faction ideoligions.&lt;br /&gt;
* [[Version/1.4.3563|1.4.3563]] - Fix: Animals specialist role mentions boosting animal-related abilities of nearby allies, which is false. &amp;quot;''A special ideoligious status focusing on animals to the exclusion of all else. This specialized role gives increased taming and training efficiency, and the ability to boost the animals-related abilities of nearby allies. Holders of this role will refuse to perform some non-animals-related tasks.''&amp;quot; -&amp;gt; ''&amp;quot;A special ideoligious status focusing on animals to the exclusion of all else. This specialized role gives increased taming and training efficiency. Holders of this role will refuse to perform some non-animals-related tasks.&amp;quot;''&lt;br /&gt;
* [[Version/1.4.3613|1.4.3613]] - Fix: Randomize symbols doesn't update member noun in ideology's description.&lt;br /&gt;
** Fix: Pawn auto-uses age reversal after changing from Transhumanist to Non-Transhumanist ideoligion.&lt;br /&gt;
* [[Version/1.6.4543|1.6.4543]] - Allowed the trader's guild faction to generate more variety in their ideoligion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Precept Eclipse OLD.png|Eclipse Precept icon prior to 1.3.3287&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Game mechanics]]&lt;/div&gt;</summary>
		<author><name>Halicade</name></author>
	</entry>
	<entry>
		<id>https://rimworldwiki.com/index.php?title=Modding_Tutorials/Biomes&amp;diff=174434</id>
		<title>Modding Tutorials/Biomes</title>
		<link rel="alternate" type="text/html" href="https://rimworldwiki.com/index.php?title=Modding_Tutorials/Biomes&amp;diff=174434"/>
		<updated>2026-01-27T19:47:41Z</updated>

		<summary type="html">&lt;p&gt;Halicade: Fishing correction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Biomes}}&lt;br /&gt;
&lt;br /&gt;
{{BackToTutorials}}&lt;br /&gt;
&lt;br /&gt;
{{:Modding_Tutorials/Under_Review}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is a basic overview of biomes and their creation. As well as different places that a biome is taken into consideration.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;BiomeDef&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Biomes are defined in XML using &amp;lt;code&amp;gt;BiomeDef&amp;lt;/code&amp;gt; [[Modding_Tutorials/Defs|Defs]]. As with all Defs, looking at the vanilla examples is a great way to get a feel for how the system is used.&lt;br /&gt;
In order to generate a biome on the world map, biomes also require a &amp;lt;code&amp;gt;workerClass&amp;lt;/code&amp;gt; defined in code. See [[Modding_Tutorials/Setting_up_a_solution|Setting up a solution]] to get started.&lt;br /&gt;
&lt;br /&gt;
=== Fields ===&lt;br /&gt;
&lt;br /&gt;
The following are valid fields in &amp;lt;code&amp;gt;BiomeDef&amp;lt;/code&amp;gt;. Not all fields are necessary, look at vanilla BiomeDefs for examples.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;TutorialTableWrapper&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;TutorialCodeTable&amp;quot;&lt;br /&gt;
! XML Example !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;workerClass&amp;gt;MyCustomBiome.BiomeWorker_CustomForest&amp;lt;/workerClass&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A reference to code that defines where your biome will spawn on the world map. In Rimworld, these start with &amp;lt;code&amp;gt;BiomeWorker&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;implemented&amp;gt;true&amp;lt;/true&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if the biome gets generated from &amp;lt;code&amp;gt;WorldGenStep_Terrain&amp;lt;/code&amp;gt;. Defaults to true. Likely this is used for debugging/development purposes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;generatesNaturally&amp;gt;true&amp;lt;/generatesNaturally&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if the biome gets generated from &amp;lt;code&amp;gt;WorldGenStep_Terrain&amp;lt;/code&amp;gt;. Requires &amp;lt;code&amp;gt;implemented&amp;lt;/code&amp;gt; to be true. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;canBuildBase&amp;gt;true&amp;lt;/canBuildBase&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if a player or npc faction can be generated here. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;settlementSelectionWeight&amp;gt;0.75&amp;lt;/settlementSelectionWeight&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
How likely a settlement can spawn on the selected tile. This is a value from 0-1. Defaults to 1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowRoads&amp;gt;true&amp;lt;/allowRoads&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Whether roads can appear on this biome. Note that unless both this and &amp;lt;code&amp;gt;allowRivers&amp;lt;/code&amp;gt; are false, roads will still display visually. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowRivers&amp;gt;true&amp;lt;/allowRivers&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Whether rivers can appear on this biome. Note that unless both this and &amp;lt;code&amp;gt;allowRoads&amp;lt;/code&amp;gt; are false, rivers will still display visually. Defaults to true. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animalDensity&amp;gt;3.5&amp;lt;/animalDensity&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
How much animals will spawn on your biome. Higher numbers lead to an increase in animals.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;plantDensity&amp;gt;0.7&amp;lt;/plantDensity&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
How many plants will spawn on your biome. Higher numbers lead to an increase in plants.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowFarmingCamps&amp;gt;true&amp;lt;/allowFarmingCamps&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Ideology]] {{IdeologyIcon}} Only) Allow farming camps to spawn. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;campSelectionWeight&amp;gt;0.65&amp;lt;campSelectionWeight&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Ideology]] {{IdeologyIcon}} Only) How likely a camp can spawn on the selected tile. This is a value from 0-1. Defaults to 1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pollutionOffset&amp;gt;0.2&amp;lt;pollutionOffset&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Biotech]] {{BiotechIcon}} Only) This will be the biomes initial pollution. This can be increased during the world creation screen.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;impassable&amp;gt;false&amp;lt;/impassable&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Whether the biome can be passed via caravan.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;hasVirtualPlants&amp;gt;true&amp;lt;/hasVirtualPlants&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if animals are allowed to graze on this tile while caravanning. Defauilts to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;forageability&amp;gt;0.75&amp;lt;forageability&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A multiplier of nutrition [[Caravan#Foraging|foraged]] per day. Requires a &amp;lt;code&amp;gt;foragedFood&amp;lt;/code&amp;gt; defined. This is also used for animals that can forage[[Odyssey]] {{OdysseyIcon}}.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;foragedFood&amp;gt;RawBerries&amp;lt;/foragedFood&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Food that will be retrieved.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildPlantsCareAboutLocalFertility&amp;gt;false&amp;lt;/wildPlantsCareAboutLocalFertility&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If this is false and the tile you are in is not a mixed biome, total plant population is based on the whole map rather than a 20 cell radius. Defauilts to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildPlantsAreCavePlants&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Cave plants will count towards the total amount of plants on the tile. Defaults to false.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildPlantRegrowDays&amp;gt;13&amp;lt;/wildPlantRegrowDays&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A wild plant has a chance to regrow after a set number of days. Defaults to 25.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;movementDifficulty&amp;gt;1.25&amp;lt;/movementDifficulty&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The base movement difficulty for a caravan to travel across the tile. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;baseWeatherCommonalities&amp;gt;&lt;br /&gt;
  &amp;lt;Clear&amp;gt;18&amp;lt;/Clear&amp;gt;&lt;br /&gt;
  &amp;lt;Fog&amp;gt;1&amp;lt;/Fog&amp;gt;&lt;br /&gt;
  &amp;lt;Rain&amp;gt;2&amp;lt;/Rain&amp;gt;&lt;br /&gt;
  &amp;lt;DryThunderstorm&amp;gt;1&amp;lt;/DryThunderstorm&amp;gt;&lt;br /&gt;
  &amp;lt;RainyThunderstorm&amp;gt;1&amp;lt;/RainyThunderstorm&amp;gt;&lt;br /&gt;
  &amp;lt;FoggyRain&amp;gt;1&amp;lt;/FoggyRain&amp;gt;&lt;br /&gt;
  &amp;lt;SnowGentle&amp;gt;4&amp;lt;/SnowGentle&amp;gt;&lt;br /&gt;
  &amp;lt;SnowHard&amp;gt;4&amp;lt;/SnowHard&amp;gt;&lt;br /&gt;
  &amp;lt;GrayPall MayRequire=&amp;quot;Ludeon.RimWorld.Anomaly&amp;quot;&amp;gt;1&amp;lt;/GrayPall&amp;gt;&lt;br /&gt;
  &amp;lt;Overcast MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;2&amp;lt;/Overcast&amp;gt;&lt;br /&gt;
&amp;lt;/baseWeatherCommonalities&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
What weather events can occur and how often they can occur. Note that multiple other variables are taken into effect with weather&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;terrainsByFertility&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;terrain&amp;gt;Soil&amp;lt;/terrain&amp;gt;&lt;br /&gt;
    &amp;lt;min&amp;gt;-999&amp;lt;/min&amp;gt;&lt;br /&gt;
    &amp;lt;max&amp;gt;0.87&amp;lt;/max&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;terrain&amp;gt;SoilRich&amp;lt;/terrain&amp;gt;&lt;br /&gt;
    &amp;lt;min&amp;gt;0.87&amp;lt;/min&amp;gt;&lt;br /&gt;
    &amp;lt;max&amp;gt;999&amp;lt;/max&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/terrainsByFertility&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The terrain that will appear based on fertility values generated by the genSteps &amp;lt;code&amp;gt;ElevationFertility&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;MutatorPostElevationFertility&amp;lt;/code&amp;gt;. Will default to regular soil if a value is omitted.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;terrainPatchMakers&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;perlinFrequency&amp;gt;0.04&amp;lt;/perlinFrequency&amp;gt;&lt;br /&gt;
    &amp;lt;thresholds&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&lt;br /&gt;
        &amp;lt;terrain&amp;gt;MarshyTerrain&amp;lt;/terrain&amp;gt;&lt;br /&gt;
        &amp;lt;min&amp;gt;0.7&amp;lt;/min&amp;gt;&lt;br /&gt;
        &amp;lt;max&amp;gt;999&amp;lt;/max&amp;gt;&lt;br /&gt;
      &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/thresholds&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/terrainPatchMakers&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Terrain generated through perlin noise. This can be used for patches of highly fertile soil, marshes, ponds, or other variable land. For a visual representation, you can use the [[Development_mode|Dev mode]] command &amp;lt;code&amp;gt;Map noise visualizer&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;soundsAmbient&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Ambient_NightInsects_Standard&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/soundsAmbient&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Sounds that will play when zoomed in on the map.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildPlants&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_TallGrass&amp;gt;3.2&amp;lt;/Plant_TallGrass&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Chokevine&amp;gt;0.8&amp;lt;/Plant_Chokevine&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Bush&amp;gt;0.2&amp;lt;/Plant_Bush&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Witchwood MayRequire=&amp;quot;Ludeon.RimWorld.Biotech&amp;quot;&amp;gt;1.0&amp;lt;/Plant_Witchwood&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Reeds MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Plant_Reeds&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_LilyPad MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.2&amp;lt;/Plant_LilyPad&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Bulrush MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.2&amp;lt;/Plant_Bulrush&amp;gt;&lt;br /&gt;
  &amp;lt;MCP_MyCustomPlant MayRequire=&amp;quot;username.CustomPlantMod&amp;quot;&amp;gt;0.3&amp;lt;/MCP_MyCustomPlant&amp;gt;&lt;br /&gt;
&amp;lt;/wildPlants&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
What plants can spawn in the wild for this biome. Based on weight. These can also be included on an plants properties. Duplicates are not allowed between the two. Plants that appear due to pollution appear in this list as well.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildAnimals&amp;gt;&lt;br /&gt;
  &amp;lt;Donkey&amp;gt;0.34&amp;lt;/Donkey&amp;gt;&lt;br /&gt;
  &amp;lt;GuineaPig&amp;gt;0.48&amp;lt;/GuineaPig&amp;gt;&lt;br /&gt;
  &amp;lt;Yak&amp;gt;0.05&amp;lt;/Yak&amp;gt;&lt;br /&gt;
  &amp;lt;Bison&amp;gt;0.06&amp;lt;/Bison&amp;gt;&lt;br /&gt;
  &amp;lt;Crow MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.6&amp;lt;/Crow&amp;gt;&lt;br /&gt;
  &amp;lt;Bluebird MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.6&amp;lt;/Bluebird&amp;gt;&lt;br /&gt;
  &amp;lt;Quail MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.6&amp;lt;/Quail&amp;gt;&lt;br /&gt;
  &amp;lt;MCA_MyCustomAnimal MayRequire=&amp;quot;username.CustomAnimalMod&amp;quot;&amp;gt;0.3&amp;lt;/MCP_MyCustomanimal&amp;gt;&lt;br /&gt;
&amp;lt;/wildAnimals&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
What animals can spawn in the biome based on weight. These can also be included on an animals race properties. Duplicates are not allowed between the two.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pollutionWildAnimals&amp;gt;&lt;br /&gt;
  &amp;lt;Toxalope MayRequire=&amp;quot;Ludeon.RimWorld.Biotech&amp;quot;&amp;gt;0.3&amp;lt;/Toxalope&amp;gt;&lt;br /&gt;
  &amp;lt;WasteRat MayRequire=&amp;quot;Ludeon.RimWorld.Biotech&amp;quot;&amp;gt;0.4&amp;lt;/WasteRat&amp;gt;&lt;br /&gt;
  &amp;lt;Rat&amp;gt;1&amp;lt;/Rat&amp;gt;&lt;br /&gt;
  &amp;lt;Raccoon&amp;gt;0.5&amp;lt;/Raccoon&amp;gt;&lt;br /&gt;
&amp;lt;/pollutionWildAnimals&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Biotech]] {{BiotechIcon}} Only) Animals defined in this field will only spawn if there is pollution on the map. The chance of these animals spawning is based on a curve with a 10% chance at 25% pollution, 90% chance at 75% pollution and 100% at 100% pollution&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;coastalWildAnimals&amp;gt;&lt;br /&gt;
  &amp;lt;SeaLion MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.1&amp;lt;/SeaLion&amp;gt;&lt;br /&gt;
  &amp;lt;Seal MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.1&amp;lt;/Seal&amp;gt;&lt;br /&gt;
&amp;lt;/coastalWildAnimals&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) Animals defined here will spawn if the tile has the &amp;lt;code&amp;gt;Coast&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;. A coast requires a tile neighboring an ocean tile.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;diseaseMtbDays&amp;gt;50&amp;lt;/diseaseMtbDays&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The mean time between a disease incident occurring. Possible diseases are chosen from &amp;lt;code&amp;gt;diseases&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;diseases&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;diseaseInc&amp;gt;Disease_Flu&amp;lt;/diseaseInc&amp;gt;&lt;br /&gt;
    &amp;lt;commonality&amp;gt;120&amp;lt;/commonality&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;diseaseInc&amp;gt;Disease_Plague&amp;lt;/diseaseInc&amp;gt;&lt;br /&gt;
    &amp;lt;commonality&amp;gt;80&amp;lt;/commonality&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/diseases&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Possible diseases that can occur. One will be chosen at random by weight&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowedPackAnimals&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Muffalo&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Alpaca&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/allowedPackAnimals&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Pack animals that can appear from caravan traders.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;hasBedrock&amp;gt;true&amp;lt;/hasBedrock&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If a tile can be [[Deep_drill|deep drilled]] for materials. Defaults to true. Also prevents the [[Ground-penetrating_scanner|Ground-penetrating scanner]] from working on this tile.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;isExtremeBiome&amp;gt;true&amp;lt;/isExtremeBiome&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Prevents spawning of Special trees. Defaults to false.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;isWaterBiome&amp;gt;false&amp;lt;/isWaterBiome&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Unused field that is located on Ocean and Lake biomes.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowPollution&amp;gt;true&amp;lt;/allowPollution&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Pollution can appear on the world maps tile. Defaults to true. Note that this tile can still be polluted while on the map tile or by sending a drop-pod of wastepacks to the area.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildAnimalsCanWanderInto&amp;gt;true&amp;lt;/wildAnimalsCanWanderInto&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If false, animals will not appear when using the draw animals [[Anomaly]] Ritual. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;noAmbientWind&amp;gt;false&amp;lt;/noAmbientWind&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If false, When the camera is zoomed out, you will hear wind effects.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;inVacuum&amp;gt;false&amp;lt;/inVacuum&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) Tiles from this map will have no oxygen. [[Wind_turbine|Wind turbines]] will be unable to function.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;disableSkyLighting&amp;gt;false&amp;lt;/disableSkyLighting&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Enables Sky Lighting. This is from weather events as well as day/night time.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;disableShadows&amp;gt;false&amp;lt;/disableShadows&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Shadows from buildings and structures will not be displayed.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;canExitMap&amp;gt;true&amp;lt;/canExitMap&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if pawns are able to leave the map through caravan or other means. Defaults to True.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;onlyAllowWhitelistedArrivalModes&amp;gt;false&amp;lt;/onlyAllowWhitelistedArrivalModes&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Only allow arrival modes for pawns as specified in their &amp;lt;code&amp;gt;PawnsArrivalModeDef&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;isBackgroundBiome&amp;gt;false&amp;lt;/isBackgroundBiome&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Rotates coastal landmarks in the correct orientation when needed. Used for Ocean and Lake biomes.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildAnimalScariaChance&amp;gt;0.3&amp;lt;/wildAnimalScariaChance&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The chance that a wild animal spawned will have scaria. Defaults to 0.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;geyserCountFactor&amp;gt;0.75&amp;lt;/geyserCountFactor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Multiplies the amount of Steam Geysers that can appear on the map. Defaults to 1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;constantOutdoorTemperature&amp;gt;10&amp;lt;/constantOutdoorTemperature&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A set temperature for a map. Measured in Celsius.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;coastalBeachTerrain&amp;gt;Mud&amp;lt;/coastalBeachTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating beach. Defaults to sand.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;lakeBeachTerrain&amp;gt;Ice&amp;lt;/lakeBeachTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating a lake or beach. Defaults to sand.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;riverbankTerrain&amp;gt;Marsh&amp;lt;/riverbankTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used for the sides of a river. Requires a &amp;lt;code&amp;gt;riverbankSizeRange&amp;lt;/code&amp;gt; defined. Defaults to RiverBank.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;riverbankSizeRange&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Size of a riverbank that can appear alongside a river.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mudTerrain&amp;gt;MossyTerrain&amp;lt;/mudTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) Defines what terrain should be used when generating a Wetlands Tile mutator. Defaults to Mud.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;noGravel&amp;gt;false&amp;lt;/noGravel&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If Gravel (Stony soil) should be generated. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gravelTerrain&amp;gt;Ice&amp;lt;/gravelTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain to use when generating gravel. Defaults to Stony Soil. Requires &amp;lt;code&amp;gt;noGravel&amp;lt;/code&amp;gt; to be false.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;waterShallowTerrain&amp;gt;SoilRich&amp;lt;waterShallowTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain to use when generating shallow water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to shallow water.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;waterDeepTerrain&amp;gt;WaterOceanDeep&amp;lt;/waterDeepTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain to use when generating deep water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to deep water.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;oceanShallowTerrain&amp;gt;MossyTerrain&amp;lt;/oceanShallowTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating shallow ocean water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to shallow ocean Water&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;oceanDeepTerrain&amp;gt;Mud&amp;lt;/oceanDeepTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating Deep ocean water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to deep ocean water&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;waterMovingShallowTerrain&amp;gt;Mud&amp;lt;/waterMovingShallowTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating shallow moving water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to shallow moving water&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;waterMovingChestDeepTerrain&amp;gt;Sand&amp;lt;/waterMovingChestDeepTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating deep moving water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to chest-deep moving water&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;biomeMapConditions&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;SolarFlare&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;biomeMapConditions&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A list of permanent &amp;lt;code&amp;gt;GameConditionDef&amp;lt;/code&amp;gt; that can occur on the map.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extraGenSteps&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;MNCS_CheeseChunks&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;MNCS_MoonHives&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;MNCS_FixPlayerStartSpot&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/extraGenSteps&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Extra &amp;lt;code&amp;gt;GenStepDef&amp;lt;/code&amp;gt; that can occur on this biomes maps.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;preventGenSteps&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;RockChunks&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;CaveHives&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/preventGenSteps&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
These &amp;lt;code&amp;gt;GenStepDef&amp;lt;/code&amp;gt; will not occur on this biomes maps.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extraRockTypes&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;SolidIce&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/extraRockTypes&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Provided that the rock is defined as &amp;lt;code&amp;gt;biomeSpecific&amp;lt;/code&amp;gt;, these rocks will be able to appear on the selected biome naturally&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;forceRockTypes&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Sandstone&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/forceRockTypes&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Only rocks defined in this field will appear. This is a 100% rate meaning no variation on the biome.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;maxFishPopulation&amp;gt;500&amp;lt;/maxFishPopulation&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) The maximum amount of fish a body of water is able to have. Defaults to 0.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fishTypes&amp;gt;&lt;br /&gt;
  &amp;lt;freshwater_Common&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Bass MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Bass&amp;gt;&lt;br /&gt;
  &amp;lt;/freshwater_Common&amp;gt;&lt;br /&gt;
  &amp;lt;freshwater_Uncommon&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Catfish MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Catfish&amp;gt;&lt;br /&gt;
  &amp;lt;/freshwater_Uncommon&amp;gt;&lt;br /&gt;
  &amp;lt;saltwater_Common&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Bluefish MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Bluefish&amp;gt;&lt;br /&gt;
  &amp;lt;/saltwater_Common&amp;gt;&lt;br /&gt;
  &amp;lt;saltwater_Uncommon&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Marlin MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Marlin&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Flounder MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Flounder&amp;gt;&lt;br /&gt;
  &amp;lt;/saltwater_Uncommon&amp;gt;&lt;br /&gt;
  &amp;lt;rareCatchesSetMaker &lt;br /&gt;
  MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;RareFishingCatches_Temperate&amp;lt;/rareCatchesSetMaker&amp;gt;&lt;br /&gt;
&amp;lt;/fishTypes&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) Fish that can appear in bodies of water. If multiple fish are in a list, one is randomly chosen. If a category is not present, no fish from that category will appear. Despite there being a &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; to indicate chance, this field is not utilized.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;layerWhitelist&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;MP_MyCustomPlanetLayer&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/layerWhitelist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
&amp;lt;code&amp;gt;PlanetLayerDef&amp;lt;/code&amp;gt; this biome is allowed to occur in. If this is set it will only appear on the specified layers&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;layerBlacklist&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Surface&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/layerBlacklist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
&amp;lt;code&amp;gt;PlanetLayerDef&amp;lt;/code&amp;gt; this biome is not allowed to occur in. If this is set it will not appear in on the specified layers&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;settleWarning&amp;gt;This biome is very dangerous.&amp;lt;/settleWarning&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A warning that can appear when trying to settle on a tile of that biome.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fogOfWarColor&amp;gt;(249,145,104)&amp;lt;/fogOfWarColor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The color of Fog of war. Fogged/undiscovered locations on your map. Default is null and this field is not necessary to fill in. Normal fog of war color is (77, 69, 66).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;orbitalDebris&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
TODO&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;texture&amp;gt;World/Biomes/MNCS_SurfaceSwiss&amp;lt;/texture&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The texture that will be displayed on the world map. Vanilla uses a 512x512 texture.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Determining Biome ==&lt;br /&gt;
&lt;br /&gt;
Biome calculation is done during world generations &amp;lt;code&amp;gt;WorldGenStep_Terrain&amp;lt;/code&amp;gt;. Each tile is calculated individually. After verifying the biome can be placed via the BiomeDefs &amp;lt;code&amp;gt;generatesNaturally&amp;lt;/code&amp;gt;, and the BiomeWorkers &amp;lt;code&amp;gt;CanPlaceOnLayer&amp;lt;/code&amp;gt;, it's score is calculated from the individual biome workers &amp;lt;code&amp;gt;GetScore&amp;lt;/code&amp;gt;. The biome with the highest score will be placed on that specific tile.&lt;br /&gt;
&lt;br /&gt;
=== Biome Generation ===&lt;br /&gt;
&lt;br /&gt;
There is no right or wrong way to create the score for biomes. If you look at biome workers, many of them will use different formula or logic to appear on the map. Here is an example used from the mod [https://github.com/Halicade/GuldenBiome/blob/master/Source/BiomeWorker.cs| Gulden Biome (Continued)].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cs&amp;quot;&amp;gt;&lt;br /&gt;
// We are subclassing the temperate forest biome worker&lt;br /&gt;
public class BiomeWorker_GuldenForest : BiomeWorker_TemperateForest&lt;br /&gt;
{&lt;br /&gt;
  public override float GetScore(BiomeDef biome, Tile tile, PlanetTile planetTile) {&lt;br /&gt;
    // We don't want to completely overwrite the parent biome. &lt;br /&gt;
    // That's why we only want tiles with an elevation between 500 and 800.&lt;br /&gt;
    if (tile.elevation is &amp;lt;= 500 or &amp;gt;= 800) {&lt;br /&gt;
        return 0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // Get what the score is of the parent biome, temperate forest&lt;br /&gt;
    float score = base.GetScore(biome, tile, planetTile);&lt;br /&gt;
    // If that score is 0 or less we don't want this biome there.&lt;br /&gt;
    if (score &amp;lt;= 0) {&lt;br /&gt;
        return 0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // We add 1.5 so that it is higher than the temperate forest.&lt;br /&gt;
    // We don't want this number too large, otherwise it will overwrite other biomes.&lt;br /&gt;
    return score + 1.5f;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== About Terrain modifiers ==&lt;br /&gt;
&lt;br /&gt;
There are many terrain modifiers like &amp;lt;code&amp;gt;lakeBeachTerrain&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;gravelTerrain&amp;lt;/code&amp;gt;. These are used by MapGenUtility to get the appropriate terrain at a specific cell. These can change depending on if you have a [[Landmarks#Mixed_biome|mixed biome]]{{OdysseyIcon}} or a &amp;lt;code&amp;gt;tileMutatorDef&amp;lt;/code&amp;gt; that overrides a terrain such as &amp;lt;code&amp;gt;overrideLakeBeachTerrain&amp;lt;/code&amp;gt;. Note that not every terrain modifier has an equivalent override. Some specific terrain may be hardcoded.&lt;br /&gt;
&lt;br /&gt;
== Places That Use Biomes ==&lt;br /&gt;
&lt;br /&gt;
In addition to the fields required for biomes, some feilds require knowledge of the biome to trigger specific events or occurences. In these cases a [[Modding_Tutorials/PatchOperations|patch operation]] will be necessary&lt;br /&gt;
&lt;br /&gt;
=== Animals and plants ===&lt;br /&gt;
&lt;br /&gt;
Animals and plants can also set where they spawn in their raceProperties and plantProperties respectively. Duplicates are not allowed between the biome and properties list. Either method is acceptable for appearance rates. However, if you are creating a biome, it might be more sensible to place the appearances in the &amp;lt;code&amp;gt;BiomeDef&amp;lt;/code&amp;gt;. Additionally, you are not able to set their pollution appearance rate or coastal appearance rate through their properties field either.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;IncidentDef&amp;lt;/code&amp;gt;s ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Ambush&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ManhunterAmbush&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;CaravanMeeting&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;CaravanDemand&amp;lt;/code&amp;gt; requires a biome listed in their &amp;lt;code&amp;gt;mtbDaysByBiome&amp;lt;/code&amp;gt; to be considered a valid map to have their incidents occur.&lt;br /&gt;
Some incidents have &amp;lt;code&amp;gt;sallowedBiomes&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;disallowedBiomes&amp;lt;/code&amp;gt;. [[Events#Beavers!|Alphabeavers]] for example can only appear in the Tundra or Arid Shrubland.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;FeatureDef&amp;lt;/code&amp;gt;s ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;FeatureDef&amp;lt;/code&amp;gt;s generate names that can appear alongside landforms on the world map. These are things like &amp;quot;Barra Sea&amp;quot;, &amp;quot;Bat Cheek Flats&amp;quot;, and &amp;quot;Gorar Desert&amp;quot;. Some &amp;lt;code&amp;gt;FeatureDef&amp;lt;/code&amp;gt;s have &amp;lt;code&amp;gt;rootBiome&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;acceptableBiome&amp;lt;/code&amp;gt;. For example, the &amp;lt;code&amp;gt;Desert&amp;lt;/code&amp;gt; FeatureDef has &amp;lt;code&amp;gt;Desert&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ExtremeDesert&amp;lt;/code&amp;gt; as &amp;lt;code&amp;gt;rootBiomes&amp;lt;/code&amp;gt; meaning at least one of these are required for an area to be given this name. &amp;lt;code&amp;gt;acceptableBiomes&amp;lt;/code&amp;gt; are adjacent biomes that can also fulfill the qualifications for the Desert Feature. This is purely for visual and does not have impact on gameplay.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s ===&lt;br /&gt;
Most &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s in Odyssey will not be active on a biome unless they are patched into the TileMutatorDefs &amp;lt;code&amp;gt;biomeWhitelist&amp;lt;/code&amp;gt;. You can also restrict certain biomes using the &amp;lt;code&amp;gt;biomeBlacklist&amp;lt;/code&amp;gt;. [[Modding_Tutorials/Mod_Folder_Structure#LoadFolders.xml_.28Optional.29|LoadFolders]] is recommended here.&lt;br /&gt;
&lt;br /&gt;
[[Category:Modding tutorials]]&lt;/div&gt;</summary>
		<author><name>Halicade</name></author>
	</entry>
	<entry>
		<id>https://rimworldwiki.com/index.php?title=Modding_Tutorials/Biomes&amp;diff=174367</id>
		<title>Modding Tutorials/Biomes</title>
		<link rel="alternate" type="text/html" href="https://rimworldwiki.com/index.php?title=Modding_Tutorials/Biomes&amp;diff=174367"/>
		<updated>2026-01-25T17:01:01Z</updated>

		<summary type="html">&lt;p&gt;Halicade: corrections, better wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Biomes}}&lt;br /&gt;
&lt;br /&gt;
{{BackToTutorials}}&lt;br /&gt;
&lt;br /&gt;
{{:Modding_Tutorials/Under_Review}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is a basic overview of biomes and their creation. As well as different places that a biome is taken into consideration.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;BiomeDef&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Biomes are defined in XML using &amp;lt;code&amp;gt;BiomeDef&amp;lt;/code&amp;gt; [[Modding_Tutorials/Defs|Defs]]. As with all Defs, looking at the vanilla examples is a great way to get a feel for how the system is used.&lt;br /&gt;
In order to generate a biome on the world map, biomes also require a &amp;lt;code&amp;gt;workerClass&amp;lt;/code&amp;gt; defined in code. See [[Modding_Tutorials/Setting_up_a_solution|Setting up a solution]] to get started.&lt;br /&gt;
&lt;br /&gt;
=== Fields ===&lt;br /&gt;
&lt;br /&gt;
The following are valid fields in &amp;lt;code&amp;gt;BiomeDef&amp;lt;/code&amp;gt;. Not all fields are necessary, look at vanilla BiomeDefs for examples.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;TutorialTableWrapper&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;TutorialCodeTable&amp;quot;&lt;br /&gt;
! XML Example !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;workerClass&amp;gt;MyCustomBiome.BiomeWorker_CustomForest&amp;lt;/workerClass&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A reference to code that defines where your biome will spawn on the world map. In Rimworld, these start with &amp;lt;code&amp;gt;BiomeWorker&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;implemented&amp;gt;true&amp;lt;/true&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if the biome gets generated from &amp;lt;code&amp;gt;WorldGenStep_Terrain&amp;lt;/code&amp;gt;. Defaults to true. Likely this is used for debugging/development purposes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;generatesNaturally&amp;gt;true&amp;lt;/generatesNaturally&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if the biome gets generated from &amp;lt;code&amp;gt;WorldGenStep_Terrain&amp;lt;/code&amp;gt;. Requires &amp;lt;code&amp;gt;implemented&amp;lt;/code&amp;gt; to be true. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;canBuildBase&amp;gt;true&amp;lt;/canBuildBase&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if a player or npc faction can be generated here. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;settlementSelectionWeight&amp;gt;0.75&amp;lt;/settlementSelectionWeight&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
How likely a settlement can spawn on the selected tile. This is a value from 0-1. Defaults to 1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowRoads&amp;gt;true&amp;lt;/allowRoads&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Whether roads can appear on this biome. Note that unless both this and &amp;lt;code&amp;gt;allowRivers&amp;lt;/code&amp;gt; are false, roads will still display visually. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowRivers&amp;gt;true&amp;lt;/allowRivers&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Whether rivers can appear on this biome. Note that unless both this and &amp;lt;code&amp;gt;allowRoads&amp;lt;/code&amp;gt; are false, rivers will still display visually. Defaults to true. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animalDensity&amp;gt;3.5&amp;lt;/animalDensity&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
How much animals will spawn on your biome. Higher numbers lead to an increase in animals.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;plantDensity&amp;gt;0.7&amp;lt;/plantDensity&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
How many plants will spawn on your biome. Higher numbers lead to an increase in plants.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowFarmingCamps&amp;gt;true&amp;lt;/allowFarmingCamps&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Ideology]] {{IdeologyIcon}} Only) Allow farming camps to spawn. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;campSelectionWeight&amp;gt;0.65&amp;lt;campSelectionWeight&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Ideology]] {{IdeologyIcon}} Only) How likely a camp can spawn on the selected tile. This is a value from 0-1. Defaults to 1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pollutionOffset&amp;gt;0.2&amp;lt;pollutionOffset&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Biotech]] {{BiotechIcon}} Only) This will be the biomes initial pollution. This can be increased during the world creation screen.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;impassable&amp;gt;false&amp;lt;/impassable&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Whether the biome can be passed via caravan.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;hasVirtualPlants&amp;gt;true&amp;lt;/hasVirtualPlants&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if animals are allowed to graze on this tile while caravanning. Defauilts to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;forageability&amp;gt;0.75&amp;lt;forageability&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A multiplier of nutrition [[Caravan#Foraging|foraged]] per day. Requires a &amp;lt;code&amp;gt;foragedFood&amp;lt;/code&amp;gt; defined. This is also used for animals that can forage[[Odyssey]] {{OdysseyIcon}}.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;foragedFood&amp;gt;RawBerries&amp;lt;/foragedFood&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Food that will be retrieved.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildPlantsCareAboutLocalFertility&amp;gt;false&amp;lt;/wildPlantsCareAboutLocalFertility&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If this is false and the tile you are in is not a mixed biome, total plant population is based on the whole map rather than a 20 cell radius. Defauilts to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildPlantsAreCavePlants&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Cave plants will count towards the total amount of plants on the tile. Defaults to false.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildPlantRegrowDays&amp;gt;13&amp;lt;/wildPlantRegrowDays&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A wild plant has a chance to regrow after a set number of days. Defaults to 25.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;movementDifficulty&amp;gt;1.25&amp;lt;/movementDifficulty&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The base movement difficulty for a caravan to travel across the tile. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;baseWeatherCommonalities&amp;gt;&lt;br /&gt;
  &amp;lt;Clear&amp;gt;18&amp;lt;/Clear&amp;gt;&lt;br /&gt;
  &amp;lt;Fog&amp;gt;1&amp;lt;/Fog&amp;gt;&lt;br /&gt;
  &amp;lt;Rain&amp;gt;2&amp;lt;/Rain&amp;gt;&lt;br /&gt;
  &amp;lt;DryThunderstorm&amp;gt;1&amp;lt;/DryThunderstorm&amp;gt;&lt;br /&gt;
  &amp;lt;RainyThunderstorm&amp;gt;1&amp;lt;/RainyThunderstorm&amp;gt;&lt;br /&gt;
  &amp;lt;FoggyRain&amp;gt;1&amp;lt;/FoggyRain&amp;gt;&lt;br /&gt;
  &amp;lt;SnowGentle&amp;gt;4&amp;lt;/SnowGentle&amp;gt;&lt;br /&gt;
  &amp;lt;SnowHard&amp;gt;4&amp;lt;/SnowHard&amp;gt;&lt;br /&gt;
  &amp;lt;GrayPall MayRequire=&amp;quot;Ludeon.RimWorld.Anomaly&amp;quot;&amp;gt;1&amp;lt;/GrayPall&amp;gt;&lt;br /&gt;
  &amp;lt;Overcast MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;2&amp;lt;/Overcast&amp;gt;&lt;br /&gt;
&amp;lt;/baseWeatherCommonalities&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
What weather events can occur and how often they can occur. Note that multiple other variables are taken into effect with weather&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;terrainsByFertility&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;terrain&amp;gt;Soil&amp;lt;/terrain&amp;gt;&lt;br /&gt;
    &amp;lt;min&amp;gt;-999&amp;lt;/min&amp;gt;&lt;br /&gt;
    &amp;lt;max&amp;gt;0.87&amp;lt;/max&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;terrain&amp;gt;SoilRich&amp;lt;/terrain&amp;gt;&lt;br /&gt;
    &amp;lt;min&amp;gt;0.87&amp;lt;/min&amp;gt;&lt;br /&gt;
    &amp;lt;max&amp;gt;999&amp;lt;/max&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/terrainsByFertility&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The terrain that will appear based on fertility values generated by the genSteps &amp;lt;code&amp;gt;ElevationFertility&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;MutatorPostElevationFertility&amp;lt;/code&amp;gt;. Will default to regular soil if a value is omitted.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;terrainPatchMakers&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;perlinFrequency&amp;gt;0.04&amp;lt;/perlinFrequency&amp;gt;&lt;br /&gt;
    &amp;lt;thresholds&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&lt;br /&gt;
        &amp;lt;terrain&amp;gt;MarshyTerrain&amp;lt;/terrain&amp;gt;&lt;br /&gt;
        &amp;lt;min&amp;gt;0.7&amp;lt;/min&amp;gt;&lt;br /&gt;
        &amp;lt;max&amp;gt;999&amp;lt;/max&amp;gt;&lt;br /&gt;
      &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/thresholds&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/terrainPatchMakers&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Terrain generated through perlin noise. This can be used for patches of highly fertile soil, marshes, ponds, or other variable land. For a visual representation, you can use the [[Development_mode|Dev mode]] command &amp;lt;code&amp;gt;Map noise visualizer&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;soundsAmbient&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Ambient_NightInsects_Standard&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/soundsAmbient&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Sounds that will play when zoomed in on the map.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildPlants&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_TallGrass&amp;gt;3.2&amp;lt;/Plant_TallGrass&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Chokevine&amp;gt;0.8&amp;lt;/Plant_Chokevine&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Bush&amp;gt;0.2&amp;lt;/Plant_Bush&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Witchwood MayRequire=&amp;quot;Ludeon.RimWorld.Biotech&amp;quot;&amp;gt;1.0&amp;lt;/Plant_Witchwood&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Reeds MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Plant_Reeds&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_LilyPad MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.2&amp;lt;/Plant_LilyPad&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Bulrush MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.2&amp;lt;/Plant_Bulrush&amp;gt;&lt;br /&gt;
  &amp;lt;MCP_MyCustomPlant MayRequire=&amp;quot;username.CustomPlantMod&amp;quot;&amp;gt;0.3&amp;lt;/MCP_MyCustomPlant&amp;gt;&lt;br /&gt;
&amp;lt;/wildPlants&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
What plants can spawn in the wild for this biome. Based on weight. These can also be included on an plants properties. Duplicates are not allowed between the two. Plants that appear due to pollution appear in this list as well.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildAnimals&amp;gt;&lt;br /&gt;
  &amp;lt;Donkey&amp;gt;0.34&amp;lt;/Donkey&amp;gt;&lt;br /&gt;
  &amp;lt;GuineaPig&amp;gt;0.48&amp;lt;/GuineaPig&amp;gt;&lt;br /&gt;
  &amp;lt;Yak&amp;gt;0.05&amp;lt;/Yak&amp;gt;&lt;br /&gt;
  &amp;lt;Bison&amp;gt;0.06&amp;lt;/Bison&amp;gt;&lt;br /&gt;
  &amp;lt;Crow MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.6&amp;lt;/Crow&amp;gt;&lt;br /&gt;
  &amp;lt;Bluebird MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.6&amp;lt;/Bluebird&amp;gt;&lt;br /&gt;
  &amp;lt;Quail MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.6&amp;lt;/Quail&amp;gt;&lt;br /&gt;
  &amp;lt;MCA_MyCustomAnimal MayRequire=&amp;quot;username.CustomAnimalMod&amp;quot;&amp;gt;0.3&amp;lt;/MCP_MyCustomanimal&amp;gt;&lt;br /&gt;
&amp;lt;/wildAnimals&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
What animals can spawn in the biome based on weight. These can also be included on an animals race properties. Duplicates are not allowed between the two.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pollutionWildAnimals&amp;gt;&lt;br /&gt;
  &amp;lt;Toxalope MayRequire=&amp;quot;Ludeon.RimWorld.Biotech&amp;quot;&amp;gt;0.3&amp;lt;/Toxalope&amp;gt;&lt;br /&gt;
  &amp;lt;WasteRat MayRequire=&amp;quot;Ludeon.RimWorld.Biotech&amp;quot;&amp;gt;0.4&amp;lt;/WasteRat&amp;gt;&lt;br /&gt;
  &amp;lt;Rat&amp;gt;1&amp;lt;/Rat&amp;gt;&lt;br /&gt;
  &amp;lt;Raccoon&amp;gt;0.5&amp;lt;/Raccoon&amp;gt;&lt;br /&gt;
&amp;lt;/pollutionWildAnimals&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Biotech]] {{BiotechIcon}} Only) Animals defined in this field will only spawn if there is pollution on the map. The chance of these animals spawning is based on a curve with a 10% chance at 25% pollution, 90% chance at 75% pollution and 100% at 100% pollution&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;coastalWildAnimals&amp;gt;&lt;br /&gt;
  &amp;lt;SeaLion MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.1&amp;lt;/SeaLion&amp;gt;&lt;br /&gt;
  &amp;lt;Seal MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.1&amp;lt;/Seal&amp;gt;&lt;br /&gt;
&amp;lt;/coastalWildAnimals&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) Animals defined here will spawn if the tile has the &amp;lt;code&amp;gt;Coast&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;. A coast requires a tile neighboring an ocean tile.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;diseaseMtbDays&amp;gt;50&amp;lt;/diseaseMtbDays&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The mean time between a disease incident occurring. Possible diseases are chosen from &amp;lt;code&amp;gt;diseases&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;diseases&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;diseaseInc&amp;gt;Disease_Flu&amp;lt;/diseaseInc&amp;gt;&lt;br /&gt;
    &amp;lt;commonality&amp;gt;120&amp;lt;/commonality&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;diseaseInc&amp;gt;Disease_Plague&amp;lt;/diseaseInc&amp;gt;&lt;br /&gt;
    &amp;lt;commonality&amp;gt;80&amp;lt;/commonality&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/diseases&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Possible diseases that can occur. One will be chosen at random by weight&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowedPackAnimals&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Muffalo&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Alpaca&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/allowedPackAnimals&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Pack animals that can appear from caravan traders.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;hasBedrock&amp;gt;true&amp;lt;/hasBedrock&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If a tile can be [[Deep_drill|deep drilled]] for materials. Defaults to true. Also prevents the [[Ground-penetrating_scanner|Ground-penetrating scanner]] from working on this tile.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;isExtremeBiome&amp;gt;true&amp;lt;/isExtremeBiome&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Prevents spawning of Special trees. Defaults to false.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;isWaterBiome&amp;gt;false&amp;lt;/isWaterBiome&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Unused field that is located on Ocean and Lake biomes.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowPollution&amp;gt;true&amp;lt;/allowPollution&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Pollution can appear on the world maps tile. Defaults to true. Note that this tile can still be polluted while on the map tile or by sending a drop-pod of wastepacks to the area.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildAnimalsCanWanderInto&amp;gt;true&amp;lt;/wildAnimalsCanWanderInto&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If false, animals will not appear when using the draw animals [[Anomaly]] Ritual. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;noAmbientWind&amp;gt;false&amp;lt;/noAmbientWind&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If false, When the camera is zoomed out, you will hear wind effects.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;inVacuum&amp;gt;false&amp;lt;/inVacuum&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) Tiles from this map will have no oxygen. [[Wind_turbine|Wind turbines]] will be unable to function.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;disableSkyLighting&amp;gt;false&amp;lt;/disableSkyLighting&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Enables Sky Lighting. This is from weather events as well as day/night time.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;disableShadows&amp;gt;false&amp;lt;/disableShadows&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Shadows from buildings and structures will not be displayed.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;canExitMap&amp;gt;true&amp;lt;/canExitMap&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if pawns are able to leave the map through caravan or other means. Defaults to True.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;onlyAllowWhitelistedArrivalModes&amp;gt;false&amp;lt;/onlyAllowWhitelistedArrivalModes&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Only allow arrival modes for pawns as specified in their &amp;lt;code&amp;gt;PawnsArrivalModeDef&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;isBackgroundBiome&amp;gt;false&amp;lt;/isBackgroundBiome&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Rotates coastal landmarks in the correct orientation when needed. Used for Ocean and Lake biomes.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildAnimalScariaChance&amp;gt;0.3&amp;lt;/wildAnimalScariaChance&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The chance that a wild animal spawned will have scaria. Defaults to 0.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;geyserCountFactor&amp;gt;0.75&amp;lt;/geyserCountFactor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Multiplies the amount of Steam Geysers that can appear on the map. Defaults to 1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;constantOutdoorTemperature&amp;gt;10&amp;lt;/constantOutdoorTemperature&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A set temperature for a map. Measured in Celsius.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;coastalBeachTerrain&amp;gt;Mud&amp;lt;/coastalBeachTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating beach. Defaults to sand.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;lakeBeachTerrain&amp;gt;Ice&amp;lt;/lakeBeachTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating a lake or beach. Defaults to sand.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;riverbankTerrain&amp;gt;Marsh&amp;lt;/riverbankTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used for the sides of a river. Requires a &amp;lt;code&amp;gt;riverbankSizeRange&amp;lt;/code&amp;gt; defined. Defaults to RiverBank.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;riverbankSizeRange&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Size of a riverbank that can appear alongside a river.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mudTerrain&amp;gt;MossyTerrain&amp;lt;/mudTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) Defines what terrain should be used when generating a Wetlands Tile mutator. Defaults to Mud.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;noGravel&amp;gt;false&amp;lt;/noGravel&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If Gravel (Stony soil) should be generated. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gravelTerrain&amp;gt;Ice&amp;lt;/gravelTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain to use when generating gravel. Defaults to Stony Soil. Requires &amp;lt;code&amp;gt;noGravel&amp;lt;/code&amp;gt; to be false.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;waterShallowTerrain&amp;gt;SoilRich&amp;lt;waterShallowTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain to use when generating shallow water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to shallow water.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;waterDeepTerrain&amp;gt;WaterOceanDeep&amp;lt;/waterDeepTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain to use when generating deep water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to deep water.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;oceanShallowTerrain&amp;gt;MossyTerrain&amp;lt;/oceanShallowTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating shallow ocean water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to shallow ocean Water&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;oceanDeepTerrain&amp;gt;Mud&amp;lt;/oceanDeepTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating Deep ocean water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to deep ocean water&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;waterMovingShallowTerrain&amp;gt;Mud&amp;lt;/waterMovingShallowTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating shallow moving water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to shallow moving water&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;waterMovingChestDeepTerrain&amp;gt;Sand&amp;lt;/waterMovingChestDeepTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating deep moving water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to chest-deep moving water&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;biomeMapConditions&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;SolarFlare&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;biomeMapConditions&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A list of permanent &amp;lt;code&amp;gt;GameConditionDef&amp;lt;/code&amp;gt; that can occur on the map.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extraGenSteps&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;MNCS_CheeseChunks&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;MNCS_MoonHives&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;MNCS_FixPlayerStartSpot&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/extraGenSteps&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Extra &amp;lt;code&amp;gt;GenStepDef&amp;lt;/code&amp;gt; that can occur on this biomes maps.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;preventGenSteps&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;RockChunks&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;CaveHives&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/preventGenSteps&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
These &amp;lt;code&amp;gt;GenStepDef&amp;lt;/code&amp;gt; will not occur on this biomes maps.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extraRockTypes&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;SolidIce&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/extraRockTypes&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Provided that the rock is defined as &amp;lt;code&amp;gt;biomeSpecific&amp;lt;/code&amp;gt;, these rocks will be able to appear on the selected biome naturally&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;forceRockTypes&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Sandstone&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/forceRockTypes&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Only rocks defined in this field will appear. This is a 100% rate meaning no variation on the biome.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;maxFishPopulation&amp;gt;500&amp;lt;/maxFishPopulation&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) The maximum amount of fish a body of water is able to have. Defaults to 0.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fishTypes&amp;gt;&lt;br /&gt;
  &amp;lt;freshwater_Common&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Bass MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Bass&amp;gt;&lt;br /&gt;
  &amp;lt;/freshwater_Common&amp;gt;&lt;br /&gt;
  &amp;lt;freshwater_Uncommon&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Catfish MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Catfish&amp;gt;&lt;br /&gt;
  &amp;lt;/freshwater_Uncommon&amp;gt;&lt;br /&gt;
  &amp;lt;saltwater_Common&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Bluefish MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Bluefish&amp;gt;&lt;br /&gt;
  &amp;lt;/saltwater_Common&amp;gt;&lt;br /&gt;
  &amp;lt;saltwater_Uncommon&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Marlin MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Marlin&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Flounder MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Flounder&amp;gt;&lt;br /&gt;
  &amp;lt;/saltwater_Uncommon&amp;gt;&lt;br /&gt;
  &amp;lt;rareCatchesSetMaker &lt;br /&gt;
  MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;RareFishingCatches_Temperate&amp;lt;/rareCatchesSetMaker&amp;gt;&lt;br /&gt;
&amp;lt;/fishTypes&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) Fish that can appear in bodies of water. If multiple fish are in a list, one is randomly chosen. If a category is not present, no fish from that category will appear.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;layerWhitelist&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;MP_MyCustomPlanetLayer&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/layerWhitelist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
&amp;lt;code&amp;gt;PlanetLayerDef&amp;lt;/code&amp;gt; this biome is allowed to occur in. If this is set it will only appear on the specified layers&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;layerBlacklist&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Surface&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/layerBlacklist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
&amp;lt;code&amp;gt;PlanetLayerDef&amp;lt;/code&amp;gt; this biome is not allowed to occur in. If this is set it will not appear in on the specified layers&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;settleWarning&amp;gt;This biome is very dangerous.&amp;lt;/settleWarning&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A warning that can appear when trying to settle on a tile of that biome.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fogOfWarColor&amp;gt;(249,145,104)&amp;lt;/fogOfWarColor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The color of Fog of war. Fogged/undiscovered locations on your map. Default is null and this field is not necessary to fill in. Normal fog of war color is (77, 69, 66).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;orbitalDebris&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
TODO&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;texture&amp;gt;World/Biomes/MNCS_SurfaceSwiss&amp;lt;/texture&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The texture that will be displayed on the world map. Vanilla uses a 512x512 texture.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Determining Biome ==&lt;br /&gt;
&lt;br /&gt;
Biome calculation is done during world generations &amp;lt;code&amp;gt;WorldGenStep_Terrain&amp;lt;/code&amp;gt;. Each tile is calculated individually. After verifying the biome can be placed via the BiomeDefs &amp;lt;code&amp;gt;generatesNaturally&amp;lt;/code&amp;gt;, and the BiomeWorkers &amp;lt;code&amp;gt;CanPlaceOnLayer&amp;lt;/code&amp;gt;, it's score is calculated from the individual biome workers &amp;lt;code&amp;gt;GetScore&amp;lt;/code&amp;gt;. The biome with the highest score will be placed on that specific tile.&lt;br /&gt;
&lt;br /&gt;
=== Biome Generation ===&lt;br /&gt;
&lt;br /&gt;
There is no right or wrong way to create the score for biomes. If you look at biome workers, many of them will use different formula or logic to appear on the map. Here is an example used from the mod [https://github.com/Halicade/GuldenBiome/blob/master/Source/BiomeWorker.cs| Gulden Biome (Continued)].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cs&amp;quot;&amp;gt;&lt;br /&gt;
// We are subclassing the temperate forest biome worker&lt;br /&gt;
public class BiomeWorker_GuldenForest : BiomeWorker_TemperateForest&lt;br /&gt;
{&lt;br /&gt;
  public override float GetScore(BiomeDef biome, Tile tile, PlanetTile planetTile) {&lt;br /&gt;
    // We don't want to completely overwrite the parent biome. &lt;br /&gt;
    // That's why we only want tiles with an elevation between 500 and 800.&lt;br /&gt;
    if (tile.elevation is &amp;lt;= 500 or &amp;gt;= 800) {&lt;br /&gt;
        return 0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // Get what the score is of the parent biome, temperate forest&lt;br /&gt;
    float score = base.GetScore(biome, tile, planetTile);&lt;br /&gt;
    // If that score is 0 or less we don't want this biome there.&lt;br /&gt;
    if (score &amp;lt;= 0) {&lt;br /&gt;
        return 0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // We add 1.5 so that it is higher than the temperate forest.&lt;br /&gt;
    // We don't want this number too large, otherwise it will overwrite other biomes.&lt;br /&gt;
    return score + 1.5f;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== About Terrain modifiers ==&lt;br /&gt;
&lt;br /&gt;
There are many terrain modifiers like &amp;lt;code&amp;gt;lakeBeachTerrain&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;gravelTerrain&amp;lt;/code&amp;gt;. These are used by MapGenUtility to get the appropriate terrain at a specific cell. These can change depending on if you have a [[Landmarks#Mixed_biome|mixed biome]]{{OdysseyIcon}} or a &amp;lt;code&amp;gt;tileMutatorDef&amp;lt;/code&amp;gt; that overrides a terrain such as &amp;lt;code&amp;gt;overrideLakeBeachTerrain&amp;lt;/code&amp;gt;. Note that not every terrain modifier has an equivalent override. Some specific terrain may be hardcoded.&lt;br /&gt;
&lt;br /&gt;
== Places That Use Biomes ==&lt;br /&gt;
&lt;br /&gt;
In addition to the fields required for biomes, some feilds require knowledge of the biome to trigger specific events or occurences. In these cases a [[Modding_Tutorials/PatchOperations|patch operation]] will be necessary&lt;br /&gt;
&lt;br /&gt;
=== Animals and plants ===&lt;br /&gt;
&lt;br /&gt;
Animals and plants can also set where they spawn in their raceProperties and plantProperties respectively. Duplicates are not allowed between the biome and properties list. Either method is acceptable for appearance rates. However, if you are creating a biome, it might be more sensible to place the appearances in the &amp;lt;code&amp;gt;BiomeDef&amp;lt;/code&amp;gt;. Additionally, you are not able to set their pollution appearance rate or coastal appearance rate through their properties field either.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;IncidentDef&amp;lt;/code&amp;gt;s ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Ambush&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ManhunterAmbush&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;CaravanMeeting&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;CaravanDemand&amp;lt;/code&amp;gt; requires a biome listed in their &amp;lt;code&amp;gt;mtbDaysByBiome&amp;lt;/code&amp;gt; to be considered a valid map to have their incidents occur.&lt;br /&gt;
Some incidents have &amp;lt;code&amp;gt;sallowedBiomes&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;disallowedBiomes&amp;lt;/code&amp;gt;. [[Events#Beavers!|Alphabeavers]] for example can only appear in the Tundra or Arid Shrubland.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;FeatureDef&amp;lt;/code&amp;gt;s ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;FeatureDef&amp;lt;/code&amp;gt;s generate names that can appear alongside landforms on the world map. These are things like &amp;quot;Barra Sea&amp;quot;, &amp;quot;Bat Cheek Flats&amp;quot;, and &amp;quot;Gorar Desert&amp;quot;. Some &amp;lt;code&amp;gt;FeatureDef&amp;lt;/code&amp;gt;s have &amp;lt;code&amp;gt;rootBiome&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;acceptableBiome&amp;lt;/code&amp;gt;. For example, the &amp;lt;code&amp;gt;Desert&amp;lt;/code&amp;gt; FeatureDef has &amp;lt;code&amp;gt;Desert&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ExtremeDesert&amp;lt;/code&amp;gt; as &amp;lt;code&amp;gt;rootBiomes&amp;lt;/code&amp;gt; meaning at least one of these are required for an area to be given this name. &amp;lt;code&amp;gt;acceptableBiomes&amp;lt;/code&amp;gt; are adjacent biomes that can also fulfill the qualifications for the Desert Feature. This is purely for visual and does not have impact on gameplay.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s ===&lt;br /&gt;
Most &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s in Odyssey will not be active on a biome unless they are patched into the TileMutatorDefs &amp;lt;code&amp;gt;biomeWhitelist&amp;lt;/code&amp;gt;. You can also restrict certain biomes using the &amp;lt;code&amp;gt;biomeBlacklist&amp;lt;/code&amp;gt;. [[Modding_Tutorials/Mod_Folder_Structure#LoadFolders.xml_.28Optional.29|LoadFolders]] is recommended here.&lt;br /&gt;
&lt;br /&gt;
[[Category:Modding tutorials]]&lt;/div&gt;</summary>
		<author><name>Halicade</name></author>
	</entry>
	<entry>
		<id>https://rimworldwiki.com/index.php?title=Modding_Tutorials/Biomes&amp;diff=174034</id>
		<title>Modding Tutorials/Biomes</title>
		<link rel="alternate" type="text/html" href="https://rimworldwiki.com/index.php?title=Modding_Tutorials/Biomes&amp;diff=174034"/>
		<updated>2026-01-12T02:59:17Z</updated>

		<summary type="html">&lt;p&gt;Halicade: A couple additions. Filled in some todos.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Biomes}}&lt;br /&gt;
&lt;br /&gt;
{{BackToTutorials}}&lt;br /&gt;
&lt;br /&gt;
{{:Modding_Tutorials/Under_Review}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is a basic overview of biomes and their creation. As well as different places that a biome is taken into consideration.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;BiomeDef&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Biomes are defined in XML using &amp;lt;code&amp;gt;BiomeDef&amp;lt;/code&amp;gt; [[Modding_Tutorials/Defs|Defs]]. As with all Defs, looking at the vanilla examples is a great way to get a feel for how the system is used.&lt;br /&gt;
In order to generate a biome on the world map, biomes also require a &amp;lt;code&amp;gt;workerClass&amp;lt;/code&amp;gt; defined in code. See [[Modding_Tutorials/Setting_up_a_solution|Setting up a solution]] to get started.&lt;br /&gt;
&lt;br /&gt;
=== Fields ===&lt;br /&gt;
&lt;br /&gt;
The following are valid fields in &amp;lt;code&amp;gt;BiomeDef&amp;lt;/code&amp;gt;. Not all fields are necessary, look at vanilla BiomeDefs for examples.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;TutorialTableWrapper&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;TutorialCodeTable&amp;quot;&lt;br /&gt;
! XML Example !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;workerClass&amp;gt;MyCustomBiome.BiomeWorker_CustomForest&amp;lt;/workerClass&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A reference to code that defines where your biome will spawn on the world map. In Rimworld, these start with &amp;lt;code&amp;gt;BiomeWorker&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;implemented&amp;gt;true&amp;lt;/true&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if the biome gets generated from &amp;lt;code&amp;gt;WorldGenStep_Terrain&amp;lt;/code&amp;gt;. Defaults to true. Likely this is used for debugging/development purposes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;generatesNaturally&amp;gt;true&amp;lt;/generatesNaturally&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if the biome gets generated from &amp;lt;code&amp;gt;WorldGenStep_Terrain&amp;lt;/code&amp;gt;. Requires &amp;lt;code&amp;gt;implemented&amp;lt;/code&amp;gt; to be true. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;canBuildBase&amp;gt;true&amp;lt;/canBuildBase&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if a player or npc faction can be generated here. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;settlementSelectionWeight&amp;gt;0.75&amp;lt;/settlementSelectionWeight&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
How likely a settlement can spawn on the selected tile. This is a value from 0-1. Defaults to 1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowRoads&amp;gt;true&amp;lt;/allowRoads&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Whether roads can appear on this biome. Note that unless both this and &amp;lt;code&amp;gt;allowRivers&amp;lt;/code&amp;gt; are false, roads will still display visually. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowRivers&amp;gt;true&amp;lt;/allowRivers&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Whether rivers can appear on this biome. Note that unless both this and &amp;lt;code&amp;gt;allowRoads&amp;lt;/code&amp;gt; are false, rivers will still display visually. Defaults to true. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animalDensity&amp;gt;3.5&amp;lt;/animalDensity&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
How much animals will spawn on your biome. Higher numbers lead to an increase in animals.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;plantDensity&amp;gt;0.7&amp;lt;/plantDensity&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
How many plants will spawn on your biome. Higher numbers lead to an increase in plants.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowFarmingCamps&amp;gt;true&amp;lt;/allowFarmingCamps&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Ideology]] {{IdeologyIcon}} Only) Allow farming camps to spawn. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;campSelectionWeight&amp;gt;0.65&amp;lt;campSelectionWeight&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Ideology]] {{IdeologyIcon}} Only) How likely a camp can spawn on the selected tile. This is a value from 0-1. Defaults to 1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pollutionOffset&amp;gt;0.2&amp;lt;pollutionOffset&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Biotech]] {{BiotechIcon}} Only) This will be the biomes initial pollution. This can be increased during the world creation screen.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;impassable&amp;gt;false&amp;lt;/impassable&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Whether the biome can be passed via caravan.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;hasVirtualPlants&amp;gt;true&amp;lt;/hasVirtualPlants&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if animals are allowed to graze on this tile while caravanning. Defauilts to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;forageability&amp;gt;0.75&amp;lt;forageability&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A multiplier of nutrition [[Caravan#Foraging|foraged]] per day. Requires a &amp;lt;code&amp;gt;foragedFood&amp;lt;/code&amp;gt; defined. This is also used for animals that can forage[[Odyssey]] {{OdysseyIcon}}.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;foragedFood&amp;gt;RawBerries&amp;lt;/foragedFood&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Food that will be retrieved.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildPlantsCareAboutLocalFertility&amp;gt;false&amp;lt;/wildPlantsCareAboutLocalFertility&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If this is false and the tile you are in is not a mixed biome, total plant population is based on the whole map rather than a 20 cell radius. Defauilts to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildPlantsAreCavePlants&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Cave plants will count towards the total amount of plants on the tile. Defaults to false.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildPlantRegrowDays&amp;gt;13&amp;lt;/wildPlantRegrowDays&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A wild plant has a chance to regrow after a set number of days. Defaults to 25.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;movementDifficulty&amp;gt;1.25&amp;lt;/movementDifficulty&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The base movement difficulty for a caravan to travel across the tile. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;baseWeatherCommonalities&amp;gt;&lt;br /&gt;
  &amp;lt;Clear&amp;gt;18&amp;lt;/Clear&amp;gt;&lt;br /&gt;
  &amp;lt;Fog&amp;gt;1&amp;lt;/Fog&amp;gt;&lt;br /&gt;
  &amp;lt;Rain&amp;gt;2&amp;lt;/Rain&amp;gt;&lt;br /&gt;
  &amp;lt;DryThunderstorm&amp;gt;1&amp;lt;/DryThunderstorm&amp;gt;&lt;br /&gt;
  &amp;lt;RainyThunderstorm&amp;gt;1&amp;lt;/RainyThunderstorm&amp;gt;&lt;br /&gt;
  &amp;lt;FoggyRain&amp;gt;1&amp;lt;/FoggyRain&amp;gt;&lt;br /&gt;
  &amp;lt;SnowGentle&amp;gt;4&amp;lt;/SnowGentle&amp;gt;&lt;br /&gt;
  &amp;lt;SnowHard&amp;gt;4&amp;lt;/SnowHard&amp;gt;&lt;br /&gt;
  &amp;lt;GrayPall MayRequire=&amp;quot;Ludeon.RimWorld.Anomaly&amp;quot;&amp;gt;1&amp;lt;/GrayPall&amp;gt;&lt;br /&gt;
  &amp;lt;Overcast MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;2&amp;lt;/Overcast&amp;gt;&lt;br /&gt;
&amp;lt;/baseWeatherCommonalities&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
What weather events can occur and how often they can occur. Note that multiple other variables are taken into effect with weather&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;terrainsByFertility&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;terrain&amp;gt;Soil&amp;lt;/terrain&amp;gt;&lt;br /&gt;
    &amp;lt;min&amp;gt;-999&amp;lt;/min&amp;gt;&lt;br /&gt;
    &amp;lt;max&amp;gt;0.87&amp;lt;/max&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;terrain&amp;gt;SoilRich&amp;lt;/terrain&amp;gt;&lt;br /&gt;
    &amp;lt;min&amp;gt;0.87&amp;lt;/min&amp;gt;&lt;br /&gt;
    &amp;lt;max&amp;gt;999&amp;lt;/max&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/terrainsByFertility&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The terrain that will appear based on fertility values generated by the genSteps &amp;lt;code&amp;gt;ElevationFertility&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;MutatorPostElevationFertility&amp;lt;/code&amp;gt;. Will default to regular soil if a value is omitted.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;terrainPatchMakers&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;perlinFrequency&amp;gt;0.04&amp;lt;/perlinFrequency&amp;gt;&lt;br /&gt;
    &amp;lt;thresholds&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&lt;br /&gt;
        &amp;lt;terrain&amp;gt;MarshyTerrain&amp;lt;/terrain&amp;gt;&lt;br /&gt;
        &amp;lt;min&amp;gt;0.7&amp;lt;/min&amp;gt;&lt;br /&gt;
        &amp;lt;max&amp;gt;999&amp;lt;/max&amp;gt;&lt;br /&gt;
      &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/thresholds&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/terrainPatchMakers&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Terrain generated through perlin noise. This can be used for patches of highly fertile soil, marshes, ponds, or other variable land. For a visual representation, you can use the [[Development_mode|Dev mode]] command &amp;lt;code&amp;gt;Map noise visualizer&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;soundsAmbient&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Ambient_NightInsects_Standard&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/soundsAmbient&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Sounds that will play when zoomed in on the map.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildPlants&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_TallGrass&amp;gt;3.2&amp;lt;/Plant_TallGrass&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Chokevine&amp;gt;0.8&amp;lt;/Plant_Chokevine&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Bush&amp;gt;0.2&amp;lt;/Plant_Bush&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Witchwood MayRequire=&amp;quot;Ludeon.RimWorld.Biotech&amp;quot;&amp;gt;1.0&amp;lt;/Plant_Witchwood&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Reeds MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Plant_Reeds&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_LilyPad MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.2&amp;lt;/Plant_LilyPad&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Bulrush MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.2&amp;lt;/Plant_Bulrush&amp;gt;&lt;br /&gt;
&amp;lt;/wildPlants&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
What plants can spawn in the wild for this biome. Based on weight. These can also be included on a wild plants properties. Duplicates are not allowed between the two.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildAnimals&amp;gt;&lt;br /&gt;
  &amp;lt;Donkey&amp;gt;0.34&amp;lt;/Donkey&amp;gt;&lt;br /&gt;
  &amp;lt;GuineaPig&amp;gt;0.48&amp;lt;/GuineaPig&amp;gt;&lt;br /&gt;
  &amp;lt;Yak&amp;gt;0.05&amp;lt;/Yak&amp;gt;&lt;br /&gt;
  &amp;lt;Bison&amp;gt;0.06&amp;lt;/Bison&amp;gt;&lt;br /&gt;
  &amp;lt;Crow MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.6&amp;lt;/Crow&amp;gt;&lt;br /&gt;
  &amp;lt;Bluebird MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.6&amp;lt;/Bluebird&amp;gt;&lt;br /&gt;
  &amp;lt;Quail MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.6&amp;lt;/Quail&amp;gt;&lt;br /&gt;
&amp;lt;/wildAnimals&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
What animals can spawn in the biome based on weight. These can also be included on a wild animals race properties. Duplicates are not allowed between the two.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pollutionWildAnimals&amp;gt;&lt;br /&gt;
  &amp;lt;Toxalope MayRequire=&amp;quot;Ludeon.RimWorld.Biotech&amp;quot;&amp;gt;0.3&amp;lt;/Toxalope&amp;gt;&lt;br /&gt;
  &amp;lt;WasteRat MayRequire=&amp;quot;Ludeon.RimWorld.Biotech&amp;quot;&amp;gt;0.4&amp;lt;/WasteRat&amp;gt;&lt;br /&gt;
  &amp;lt;Rat&amp;gt;1&amp;lt;/Rat&amp;gt;&lt;br /&gt;
  &amp;lt;Raccoon&amp;gt;0.5&amp;lt;/Raccoon&amp;gt;&lt;br /&gt;
&amp;lt;/pollutionWildAnimals&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Biotech]] {{BiotechIcon}} Only) Animals defined in this field will only spawn if there is pollution on the map. The chance of these animals spawning is based on a curve with a 10% chance at 25% pollution, 90% chance at 75% pollution and 100% at 100% pollution&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;coastalWildAnimals&amp;gt;&lt;br /&gt;
  &amp;lt;SeaLion MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.1&amp;lt;/SeaLion&amp;gt;&lt;br /&gt;
  &amp;lt;Seal MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.1&amp;lt;/Seal&amp;gt;&lt;br /&gt;
&amp;lt;/coastalWildAnimals&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) Animals defined here will spawn if the tile has the &amp;lt;code&amp;gt;Coast&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;. A coast requires a tile neighboring an ocean tile.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;diseaseMtbDays&amp;gt;50&amp;lt;/diseaseMtbDays&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The mean time between a disease incident occurring. Possible diseases are chosen from &amp;lt;code&amp;gt;diseases&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;diseases&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;diseaseInc&amp;gt;Disease_Flu&amp;lt;/diseaseInc&amp;gt;&lt;br /&gt;
    &amp;lt;commonality&amp;gt;120&amp;lt;/commonality&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;diseaseInc&amp;gt;Disease_Plague&amp;lt;/diseaseInc&amp;gt;&lt;br /&gt;
    &amp;lt;commonality&amp;gt;80&amp;lt;/commonality&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/diseases&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Possible diseases that can occur. One will be chosen at random by weight&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowedPackAnimals&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Muffalo&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Alpaca&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/allowedPackAnimals&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Pack animals that can appear from caravan traders.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;hasBedrock&amp;gt;true&amp;lt;/hasBedrock&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If a tile can be [[Deep_drill|deep drilled]] for materials. Defaults to true. Also prevents the [[Ground-penetrating_scanner|Ground-penetrating scanner]] from working on this tile.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;isExtremeBiome&amp;gt;true&amp;lt;/isExtremeBiome&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Prevents spawning of Special trees. Defaults to false.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;isWaterBiome&amp;gt;false&amp;lt;/isWaterBiome&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Unused field that is located on Ocean and Lake biomes.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowPollution&amp;gt;true&amp;lt;/allowPollution&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Pollution can appear on the world maps tile. Defaults to true. Note that this tile can still be polluted while on the map tile or by sending a drop-pod of wastepacks to the area.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildAnimalsCanWanderInto&amp;gt;true&amp;lt;/wildAnimalsCanWanderInto&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If false, animals will not appear when using the draw animals [[Anomaly]] Ritual. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;noAmbientWind&amp;gt;false&amp;lt;/noAmbientWind&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If false, When the camera is zoomed out, you will hear wind effects.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;inVacuum&amp;gt;false&amp;lt;/inVacuum&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) Tiles from this map will have no oxygen. [[Wind_turbine|Wind turbines]] will be unable to function.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;disableSkyLighting&amp;gt;false&amp;lt;/disableSkyLighting&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Enables Sky Lighting. This is from weather events as well as day/night time.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;disableShadows&amp;gt;false&amp;lt;/disableShadows&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Shadows from buildings and structures will not be displayed.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;canExitMap&amp;gt;true&amp;lt;/canExitMap&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if pawns are able to leave the map through caravan or other means. Defaults to True.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;onlyAllowWhitelistedArrivalModes&amp;gt;false&amp;lt;/onlyAllowWhitelistedArrivalModes&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Only allow arrival modes for pawns as specified in their &amp;lt;code&amp;gt;PawnsArrivalModeDef&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;isBackgroundBiome&amp;gt;false&amp;lt;/isBackgroundBiome&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Rotates coastal landmarks in the correct orientation when needed. Used for Ocean and Lake biomes.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildAnimalScariaChance&amp;gt;0.3&amp;lt;/wildAnimalScariaChance&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The chance that a wild animal spawned will have scaria. Defaults to 0.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;geyserCountFactor&amp;gt;0.75&amp;lt;/geyserCountFactor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Multiplies the amount of Steam Geysers that can appear on the map. Defaults to 1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;constantOutdoorTemperature&amp;gt;10&amp;lt;/constantOutdoorTemperature&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A set temperature for a map. Measured in Celsius.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;coastalBeachTerrain&amp;gt;Mud&amp;lt;/coastalBeachTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating beach. Defaults to sand.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;lakeBeachTerrain&amp;gt;Ice&amp;lt;/lakeBeachTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating a lake or beach. Defaults to sand.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;riverbankTerrain&amp;gt;Marsh&amp;lt;/riverbankTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used for the sides of a river. Requires a &amp;lt;code&amp;gt;riverbankSizeRange&amp;lt;/code&amp;gt; defined. Defaults to RiverBank.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;riverbankSizeRange&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Size of a riverbank that can appear alongside a river.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mudTerrain&amp;gt;MossyTerrain&amp;lt;/mudTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) Defines what terrain should be used when generating a Wetlands Tile mutator. Defaults to Mud.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;noGravel&amp;gt;false&amp;lt;/noGravel&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If Gravel (Stony soil) should be generated. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gravelTerrain&amp;gt;Ice&amp;lt;/gravelTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain to use when generating gravel. Defaults to Stony Soil. Requires &amp;lt;code&amp;gt;noGravel&amp;lt;/code&amp;gt; to be false.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;waterShallowTerrain&amp;gt;SoilRich&amp;lt;waterShallowTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain to use when generating shallow water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to shallow water.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;waterDeepTerrain&amp;gt;WaterOceanDeep&amp;lt;/waterDeepTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain to use when generating deep water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to deep water.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;oceanShallowTerrain&amp;gt;MossyTerrain&amp;lt;/oceanShallowTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating shallow ocean water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to shallow ocean Water&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;oceanDeepTerrain&amp;gt;Mud&amp;lt;/oceanDeepTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating Deep ocean water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to deep ocean water&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;waterMovingShallowTerrain&amp;gt;Mud&amp;lt;/waterMovingShallowTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating shallow moving water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to shallow moving water&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;waterMovingChestDeepTerrain&amp;gt;Sand&amp;lt;/waterMovingChestDeepTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating deep moving water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to chest-deep moving water&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;biomeMapConditions&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;SolarFlare&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;biomeMapConditions&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A list of permanent &amp;lt;code&amp;gt;GameConditionDef&amp;lt;/code&amp;gt; that can occur on the map.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extraGenSteps&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;MNCS_CheeseChunks&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;MNCS_MoonHives&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;MNCS_FixPlayerStartSpot&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/extraGenSteps&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Extra &amp;lt;code&amp;gt;GenStepDef&amp;lt;/code&amp;gt; that can occur on this biomes maps.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;preventGenSteps&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;RockChunks&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;CaveHives&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/preventGenSteps&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
These &amp;lt;code&amp;gt;GenStepDef&amp;lt;/code&amp;gt; will not occur on this biomes maps.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extraRockTypes&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;SolidIce&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/extraRockTypes&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Provided that the rock is defined as &amp;lt;code&amp;gt;biomeSpecific&amp;lt;/code&amp;gt;, these rocks will be able to appear on the selected biome naturally&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;forceRockTypes&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Sandstone&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/forceRockTypes&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Only rocks defined in this field will appear. This is a 100% rate meaning no variation on the biome.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;maxFishPopulation&amp;gt;500&amp;lt;/maxFishPopulation&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) The maximum amount of fish a body of water is able to have. Defaults to 0.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fishTypes&amp;gt;&lt;br /&gt;
  &amp;lt;freshwater_Common&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Bass MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Bass&amp;gt;&lt;br /&gt;
  &amp;lt;/freshwater_Common&amp;gt;&lt;br /&gt;
  &amp;lt;freshwater_Uncommon&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Catfish MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Catfish&amp;gt;&lt;br /&gt;
  &amp;lt;/freshwater_Uncommon&amp;gt;&lt;br /&gt;
  &amp;lt;saltwater_Common&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Bluefish MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Bluefish&amp;gt;&lt;br /&gt;
  &amp;lt;/saltwater_Common&amp;gt;&lt;br /&gt;
  &amp;lt;saltwater_Uncommon&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Marlin MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Marlin&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Flounder MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Flounder&amp;gt;&lt;br /&gt;
  &amp;lt;/saltwater_Uncommon&amp;gt;&lt;br /&gt;
  &amp;lt;rareCatchesSetMaker &lt;br /&gt;
  MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;RareFishingCatches_Temperate&amp;lt;/rareCatchesSetMaker&amp;gt;&lt;br /&gt;
&amp;lt;/fishTypes&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) Fish that can appear in bodies of water. If multiple fish are in a list, one is randomly chosen.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;layerWhitelist&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;MP_MyCustomPlanetLayer&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/layerWhitelist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
&amp;lt;code&amp;gt;PlanetLayerDef&amp;lt;/code&amp;gt; this biome is allowed to occur in. If this is set it will only appear on the specified layers&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;layerBlacklist&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Surface&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/layerBlacklist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
&amp;lt;code&amp;gt;PlanetLayerDef&amp;lt;/code&amp;gt; this biome is not allowed to occur in. If this is set it will not appear in on the specified layers&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;settleWarning&amp;gt;This biome is very dangerous.&amp;lt;/settleWarning&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A warning that can appear when trying to settle on a tile of that biome.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fogOfWarColor&amp;gt;(249,145,104)&amp;lt;/fogOfWarColor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The color of Fog of war. Fogged/undiscovered locations on your map. Default is null and this field is not necessary to fill in. Normal fog of war color is (77, 69, 66).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;orbitalDebris&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
TODO&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;texture&amp;gt;World/Biomes/MNCS_SurfaceSwiss&amp;lt;/texture&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The texture that will be displayed on the world map. Vanilla uses a 512x512 texture.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Determining Biome ==&lt;br /&gt;
&lt;br /&gt;
Biome calculation is done during world generations &amp;lt;code&amp;gt;WorldGenStep_Terrain&amp;lt;/code&amp;gt;. Each tile is calculated individually. After verifying the biome can be placed via the BiomeDefs &amp;lt;code&amp;gt;generatesNaturally&amp;lt;/code&amp;gt;, and the BiomeWorkers &amp;lt;code&amp;gt;CanPlaceOnLayer&amp;lt;/code&amp;gt;, it's score is calculated from the individual biome workers &amp;lt;code&amp;gt;GetScore&amp;lt;/code&amp;gt;. The biome with the highest score will be placed on that specific tile.&lt;br /&gt;
&lt;br /&gt;
=== Biome Generation ===&lt;br /&gt;
&lt;br /&gt;
There is no right or wrong way to create the score for biomes. If you look at biome workers, many of them will use different formula or logic to appear on the map. Here is an example used from the mod [https://github.com/Halicade/GuldenBiome/blob/master/Source/BiomeWorker.cs| Gulden Biome (Continued)].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cs&amp;quot;&amp;gt;&lt;br /&gt;
// We are subclassing the temperate forest biome worker&lt;br /&gt;
public class BiomeWorker_GuldenForest : BiomeWorker_TemperateForest&lt;br /&gt;
{&lt;br /&gt;
  public override float GetScore(BiomeDef biome, Tile tile, PlanetTile planetTile) {&lt;br /&gt;
    // We don't want to completely overwrite the parent biome. &lt;br /&gt;
    // That's why we only want tiles with an elevation between 500 and 800.&lt;br /&gt;
    if (tile.elevation is &amp;lt;= 500 or &amp;gt;= 800) {&lt;br /&gt;
        return 0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // Get what the score is of the parent biome, temperate forest&lt;br /&gt;
    float score = base.GetScore(biome, tile, planetTile);&lt;br /&gt;
    // If that score is 0 or less we don't want this biome there.&lt;br /&gt;
    if (score &amp;lt;= 0) {&lt;br /&gt;
        return 0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // We add 1.5 so that it is higher than the temperate forest.&lt;br /&gt;
    // We don't want this number too large, otherwise it will overwrite other biomes.&lt;br /&gt;
    return score + 1.5f;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Places That Use Biomes ==&lt;br /&gt;
&lt;br /&gt;
In addition to the fields required for biomes, some feilds require knowledge of the biome to trigger specific events or occurences. In these cases a [[Modding_Tutorials/PatchOperations|patch operation]] will be necessary&lt;br /&gt;
&lt;br /&gt;
=== Animals and plants ===&lt;br /&gt;
&lt;br /&gt;
Animals and plants can also set where they spawn in their raceProperties and plantProperties respectively. Duplicates are not allowed between the biome and properties list. You are not able to set Their pollution appearance rate or coastal appearance rate through their properties either. Either method is acceptable for appearance rates. However, if you are creating a biome, it might be more sensible to place the appearances in the &amp;lt;code&amp;gt;BiomeDef&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;IncidentDef&amp;lt;/code&amp;gt;s ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Ambush&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ManhunterAmbush&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;CaravanMeeting&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;CaravanDemand&amp;lt;/code&amp;gt; requires a biome listed in their &amp;lt;code&amp;gt;mtbDaysByBiome&amp;lt;/code&amp;gt; to be considered a valid map to have their incidents occur.&lt;br /&gt;
Some incidents have &amp;lt;code&amp;gt;sallowedBiomes&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;disallowedBiomes&amp;lt;/code&amp;gt;. [[Events#Beavers!|Alphabeavers]] for example can only appear in the Tundra or Arid Shrubland.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;FeatureDef&amp;lt;/code&amp;gt;s ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;FeatureDef&amp;lt;/code&amp;gt;s generate names that can appear alongside landforms on the world map. These are things like &amp;quot;Barra Sea&amp;quot;, &amp;quot;Bat Cheek Flats&amp;quot;, and &amp;quot;Gorar Desert&amp;quot;. Some &amp;lt;code&amp;gt;FeatureDef&amp;lt;/code&amp;gt;s have &amp;lt;code&amp;gt;rootBiome&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;acceptableBiome&amp;lt;/code&amp;gt;. For example, the &amp;lt;code&amp;gt;Desert&amp;lt;/code&amp;gt; FeatureDef has &amp;lt;code&amp;gt;Desert&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ExtremeDesert&amp;lt;/code&amp;gt; as &amp;lt;code&amp;gt;rootBiomes&amp;lt;/code&amp;gt; meaning at least one of these are required for an area to be given this name. &amp;lt;code&amp;gt;acceptableBiomes&amp;lt;/code&amp;gt; are adjacent biomes that can also fulfill the qualifications for the Desert Feature. This is purely for visual and does not have impact on gameplay.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s ===&lt;br /&gt;
Most &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s, as well as [[Landmarks| landmarks]] in Odyssey will not be active on a biome unless they are patched into the TileMutatorDefs &amp;lt;code&amp;gt;biomeWhitelist&amp;lt;/code&amp;gt;. You can also restrict certain biomes using the &amp;lt;code&amp;gt;biomeBlacklist&amp;lt;/code&amp;gt;. [[Modding_Tutorials/Mod_Folder_Structure#LoadFolders.xml_.28Optional.29|LoadFolders]] is recommended here.&lt;br /&gt;
&lt;br /&gt;
[[Category:Modding tutorials]]&lt;/div&gt;</summary>
		<author><name>Halicade</name></author>
	</entry>
	<entry>
		<id>https://rimworldwiki.com/index.php?title=Modding_Tutorials/Biomes&amp;diff=174000</id>
		<title>Modding Tutorials/Biomes</title>
		<link rel="alternate" type="text/html" href="https://rimworldwiki.com/index.php?title=Modding_Tutorials/Biomes&amp;diff=174000"/>
		<updated>2026-01-11T00:50:56Z</updated>

		<summary type="html">&lt;p&gt;Halicade: Initial upload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Biomes}}&lt;br /&gt;
&lt;br /&gt;
{{BackToTutorials}}&lt;br /&gt;
&lt;br /&gt;
{{:Modding_Tutorials/Under_Review}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is a basic overview of biomes and their creation. As well as &lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;BiomeDef&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Biomes are defined in XML using &amp;lt;code&amp;gt;BiomeDef&amp;lt;/code&amp;gt; [[Modding_Tutorials/Defs|Defs]]. As with all Defs, looking at the vanilla examples is a great way to get a feel for how the system is used.&lt;br /&gt;
In order to generate a biome on the world map, biomes also require a workerClass defined in code. See [[Modding_Tutorials/Setting_up_a_solution|Setting up a solution]] to get started.&lt;br /&gt;
&lt;br /&gt;
=== Fields ===&lt;br /&gt;
&lt;br /&gt;
The following are valid fields in &amp;lt;code&amp;gt;BiomeDef&amp;lt;/code&amp;gt;. Not all fields are necessary, look at vanilla BiomeDefs for examples.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;TutorialTableWrapper&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;TutorialCodeTable&amp;quot;&lt;br /&gt;
! XML Example !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;workerClass&amp;gt;MyCustomBiome.BiomeWorker_CustomForest&amp;lt;/workerClass&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A reference to code that defines where your biome will spawn on the world map. In Rimworld, these start with &amp;lt;code&amp;gt;BiomeWorker&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;implemented&amp;gt;true&amp;lt;/true&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if the biome gets generated from &amp;lt;code&amp;gt;WorldGenStep_Terrain&amp;lt;/code&amp;gt;. Defaults to true. Likely this is used for debugging/development purposes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;generatesNaturally&amp;gt;true&amp;lt;/generatesNaturally&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if the biome gets generated from &amp;lt;code&amp;gt;WorldGenStep_Terrain&amp;lt;/code&amp;gt;. Requires &amp;lt;code&amp;gt;implemented&amp;lt;/code&amp;gt; to be true. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;canBuildBase&amp;gt;true&amp;lt;/canBuildBase&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if a player or npc faction can be generated here. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;settlementSelectionWeight&amp;gt;0.75&amp;lt;/settlementSelectionWeight&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
How likely a settlement can spawn on the selected tile. This is a value from 0-1. Defaults to 1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowRoads&amp;gt;true&amp;lt;/allowRoads&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Whether roads can spawn on this biome. Note that unless both this and &amp;lt;code&amp;gt;allowRivers&amp;lt;/code&amp;gt; are false, roads will still display visually. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowRivers&amp;gt;true&amp;lt;/allowRivers&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Whether rivers can spawn on this biome. Note that unless both this and &amp;lt;code&amp;gt;allowRoads&amp;lt;/code&amp;gt; are false, rivers will still display visually. Defaults to true. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;animalDensity&amp;gt;3.5&amp;lt;/animalDensity&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
How much animals will spawn on your biome. Higher numbers lead to an increase in animals.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;plantDensity&amp;gt;0.7&amp;lt;/plantDensity&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
How many plants will spawn on your biome. Higher numbers lead to an increase in plants.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowFarmingCamps&amp;gt;true&amp;lt;/allowFarmingCamps&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Ideology]] {{IdeologyIcon}} Only) Allow farming camps to spawn. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;campSelectionWeight&amp;gt;0.65&amp;lt;campSelectionWeight&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Ideology]] {{IdeologyIcon}} Only) How likely a camp can spawn on the selected tile. This is a value from 0-1. Defaults to 1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pollutionOffset&amp;gt;0.2&amp;lt;pollutionOffset&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Biotech]] {{BiotechIcon}} Only) This will be the biomes initial pollution. This can be increased during the world creation screen.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;impassable&amp;gt;false&amp;lt;/impassable&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Whether the biome can be passed via caravan.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;hasVirtualPlants&amp;gt;true&amp;lt;/hasVirtualPlants&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if animals are allowed to graze on this tile while caravanning. Defauilts to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;forageability&amp;gt;0.75&amp;lt;forageability&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A multiplier of nutrition [[Caravan#Foraging|foraged]] per day. Requires a &amp;lt;code&amp;gt;foragedFood&amp;lt;/code&amp;gt; defined. This is also used for animals that can forage[[Odyssey]] {{OdysseyIcon}}.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;foragedFood&amp;gt;RawBerries&amp;lt;/foragedFood&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Food that will be retrieved.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildPlantsCareAboutLocalFertility&amp;gt;false&amp;lt;/wildPlantsCareAboutLocalFertility&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
TODO&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildPlantsAreCavePlants&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
TODO&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildPlantRegrowDays&amp;gt;13&amp;lt;/wildPlantRegrowDays&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A wild plant has a chance to regrow after a set number of days. Defaults to 25.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;movementDifficulty&amp;gt;1.25&amp;lt;/movementDifficulty&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The base movement difficulty for a caravan to travel across the tile. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;baseWeatherCommonalities&amp;gt;&lt;br /&gt;
  &amp;lt;Clear&amp;gt;18&amp;lt;/Clear&amp;gt;&lt;br /&gt;
  &amp;lt;Fog&amp;gt;1&amp;lt;/Fog&amp;gt;&lt;br /&gt;
  &amp;lt;Rain&amp;gt;2&amp;lt;/Rain&amp;gt;&lt;br /&gt;
  &amp;lt;DryThunderstorm&amp;gt;1&amp;lt;/DryThunderstorm&amp;gt;&lt;br /&gt;
  &amp;lt;RainyThunderstorm&amp;gt;1&amp;lt;/RainyThunderstorm&amp;gt;&lt;br /&gt;
  &amp;lt;FoggyRain&amp;gt;1&amp;lt;/FoggyRain&amp;gt;&lt;br /&gt;
  &amp;lt;SnowGentle&amp;gt;4&amp;lt;/SnowGentle&amp;gt;&lt;br /&gt;
  &amp;lt;SnowHard&amp;gt;4&amp;lt;/SnowHard&amp;gt;&lt;br /&gt;
  &amp;lt;GrayPall MayRequire=&amp;quot;Ludeon.RimWorld.Anomaly&amp;quot;&amp;gt;1&amp;lt;/GrayPall&amp;gt;&lt;br /&gt;
  &amp;lt;Overcast MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;2&amp;lt;/Overcast&amp;gt;&lt;br /&gt;
&amp;lt;/baseWeatherCommonalities&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
What weather events can occur and how often they can occur. Note that multiple other variables are taken into effect with weather&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;terrainsByFertility&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;terrain&amp;gt;Soil&amp;lt;/terrain&amp;gt;&lt;br /&gt;
    &amp;lt;min&amp;gt;-999&amp;lt;/min&amp;gt;&lt;br /&gt;
    &amp;lt;max&amp;gt;0.87&amp;lt;/max&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;terrain&amp;gt;SoilRich&amp;lt;/terrain&amp;gt;&lt;br /&gt;
    &amp;lt;min&amp;gt;0.87&amp;lt;/min&amp;gt;&lt;br /&gt;
    &amp;lt;max&amp;gt;999&amp;lt;/max&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/terrainsByFertility&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The terrain that will appear based on fertility values generated by the genSteps &amp;lt;code&amp;gt;ElevationFertility&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;MutatorPostElevationFertility&amp;lt;/code&amp;gt;. Will default to regular soil if a value is omitted.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;terrainPatchMakers&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;perlinFrequency&amp;gt;0.04&amp;lt;/perlinFrequency&amp;gt;&lt;br /&gt;
    &amp;lt;thresholds&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&lt;br /&gt;
        &amp;lt;terrain&amp;gt;MarshyTerrain&amp;lt;/terrain&amp;gt;&lt;br /&gt;
        &amp;lt;min&amp;gt;0.7&amp;lt;/min&amp;gt;&lt;br /&gt;
        &amp;lt;max&amp;gt;999&amp;lt;/max&amp;gt;&lt;br /&gt;
      &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/thresholds&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/terrainPatchMakers&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Terrain generated through perlin noise. This can be used for patches of highly fertile soil, marshes, ponds, or other variable land. For a visual representation, you can use the [[Development_mode|Dev mode]] command &amp;lt;code&amp;gt;Map noise visualizer&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;soundsAmbient&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Ambient_NightInsects_Standard&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/soundsAmbient&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Sounds that will play when zoomed in on the map.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildPlants&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_TallGrass&amp;gt;3.2&amp;lt;/Plant_TallGrass&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Chokevine&amp;gt;0.8&amp;lt;/Plant_Chokevine&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Bush&amp;gt;0.2&amp;lt;/Plant_Bush&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Witchwood MayRequire=&amp;quot;Ludeon.RimWorld.Biotech&amp;quot;&amp;gt;1.0&amp;lt;/Plant_Witchwood&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Reeds MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Plant_Reeds&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_LilyPad MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.2&amp;lt;/Plant_LilyPad&amp;gt;&lt;br /&gt;
  &amp;lt;Plant_Bulrush MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.2&amp;lt;/Plant_Bulrush&amp;gt;&lt;br /&gt;
&amp;lt;/wildPlants&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
What plants can spawn in the wild for this biome. Based on weight. These can also be included on a wild plants properties. Duplicates are not allowed between the two.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildAnimals&amp;gt;&lt;br /&gt;
  &amp;lt;Donkey&amp;gt;0.34&amp;lt;/Donkey&amp;gt;&lt;br /&gt;
  &amp;lt;GuineaPig&amp;gt;0.48&amp;lt;/GuineaPig&amp;gt;&lt;br /&gt;
  &amp;lt;Yak&amp;gt;0.05&amp;lt;/Yak&amp;gt;&lt;br /&gt;
  &amp;lt;Bison&amp;gt;0.06&amp;lt;/Bison&amp;gt;&lt;br /&gt;
  &amp;lt;Crow MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.6&amp;lt;/Crow&amp;gt;&lt;br /&gt;
  &amp;lt;Bluebird MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.6&amp;lt;/Bluebird&amp;gt;&lt;br /&gt;
  &amp;lt;Quail MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.6&amp;lt;/Quail&amp;gt;&lt;br /&gt;
&amp;lt;/wildAnimals&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
What animals can spawn in the biome based on weight. These can also be included on a wild animals race properties. Duplicates are not allowed between the two.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pollutionWildAnimals&amp;gt;&lt;br /&gt;
  &amp;lt;Toxalope MayRequire=&amp;quot;Ludeon.RimWorld.Biotech&amp;quot;&amp;gt;0.3&amp;lt;/Toxalope&amp;gt;&lt;br /&gt;
  &amp;lt;WasteRat MayRequire=&amp;quot;Ludeon.RimWorld.Biotech&amp;quot;&amp;gt;0.4&amp;lt;/WasteRat&amp;gt;&lt;br /&gt;
  &amp;lt;Rat&amp;gt;1&amp;lt;/Rat&amp;gt;&lt;br /&gt;
  &amp;lt;Raccoon&amp;gt;0.5&amp;lt;/Raccoon&amp;gt;&lt;br /&gt;
&amp;lt;/pollutionWildAnimals&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Biotech]] {{BiotechIcon}} Only) Animals defined in this field will only spawn if there is pollution on the map. The chance of these animals spawning is based on a curve with a 10% chance at 25% pollution, 90% chance at 75% pollution and 100% at 100% pollution&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;coastalWildAnimals&amp;gt;&lt;br /&gt;
  &amp;lt;SeaLion MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.1&amp;lt;/SeaLion&amp;gt;&lt;br /&gt;
  &amp;lt;Seal MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;0.1&amp;lt;/Seal&amp;gt;&lt;br /&gt;
&amp;lt;/coastalWildAnimals&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) Animals defined here will spawn if the tile has the &amp;lt;code&amp;gt;Coast&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;. A coast requires a tile neighboring an ocean tile.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;diseaseMtbDays&amp;gt;50&amp;lt;/diseaseMtbDays&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The mean time between a disease incident occurring. Possible diseases are chosen from &amp;lt;code&amp;gt;diseases&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;diseases&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;diseaseInc&amp;gt;Disease_Flu&amp;lt;/diseaseInc&amp;gt;&lt;br /&gt;
    &amp;lt;commonality&amp;gt;120&amp;lt;/commonality&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;diseaseInc&amp;gt;Disease_Plague&amp;lt;/diseaseInc&amp;gt;&lt;br /&gt;
    &amp;lt;commonality&amp;gt;80&amp;lt;/commonality&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/diseases&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Possible diseases that can occur. One will be chosen at random by weight&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowedPackAnimals&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Muffalo&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Alpaca&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/allowedPackAnimals&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Pack animals that can appear from caravan traders.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;hasBedrock&amp;gt;true&amp;lt;/hasBedrock&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If a tile can be [[Deep_drill|deep drilled]] for materials. Defaults to true. Also prevents the [[Ground-penetrating_scanner|Ground-penetrating scanner]] from working on this tile.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;isExtremeBiome&amp;gt;true&amp;lt;/isExtremeBiome&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Prevents spawning of Special trees. Defaults to false.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;isWaterBiome&amp;gt;false&amp;lt;/isWaterBiome&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Unused.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;allowPollution&amp;gt;true&amp;lt;/allowPollution&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Pollution can appear on the world map tile. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildAnimalsCanWanderInto&amp;gt;true&amp;lt;/wildAnimalsCanWanderInto&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If false, animalswill not appear when using the draw animals [[Anomaly]] Ritual. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;noAmbientWind&amp;gt;false&amp;lt;/noAmbientWind&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
When the camera is zoomed out, you will hear wind effects.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;inVacuum&amp;gt;false&amp;lt;/inVacuum&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) Tiles from this map will have no oxygen. [[Wind_turbine|Wind turbines]] will be unable to function.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;disableSkyLighting&amp;gt;false&amp;lt;/disableSkyLighting&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Enables Sky Lighting. This is from weather events as well as day/night time.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;disableShadows&amp;gt;false&amp;lt;/disableShadows&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Shadows from buildings and structures will not be displayed.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;canExitMap&amp;gt;true&amp;lt;/canExitMap&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Determines if pawns are able to leave the map through caravan or other means. Defaults to True.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;onlyAllowWhitelistedArrivalModes&amp;gt;false&amp;lt;/onlyAllowWhitelistedArrivalModes&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Only allow arrival modes for pawns as specified in their &amp;lt;code&amp;gt;PawnsArrivalModeDef&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;isBackgroundBiome&amp;gt;false&amp;lt;/isBackgroundBiome&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Rotates coastal landmarks in the correct orientation when needed. Used for Ocean and Lake biomes.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wildAnimalScariaChance&amp;gt;0.3&amp;lt;/wildAnimalScariaChance&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The chance that a wild animal spawned will have scaria. Defaults to 0.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;geyserCountFactor&amp;gt;0.75&amp;lt;/geyserCountFactor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Multiplies the amount of Steam Geysers that can appear on the map. Defaults to 1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;constantOutdoorTemperature&amp;gt;10&amp;lt;/constantOutdoorTemperature&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A set temperature for a map. Measured in Celsius.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;coastalBeachTerrain&amp;gt;Mud&amp;lt;/coastalBeachTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating beach. Defaults to sand.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;lakeBeachTerrain&amp;gt;Ice&amp;lt;/lakeBeachTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating a lake or beach. Defaults to sand.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;riverbankTerrain&amp;gt;Marsh&amp;lt;/riverbankTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used for the sides of a river. Requires a &amp;lt;code&amp;gt;riverbankSizeRange&amp;lt;/code&amp;gt; defined. Defaults to RiverBank.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;riverbankSizeRange&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Size of a riverbank that can appear alongside a river.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mudTerrain&amp;gt;MossyTerrain&amp;lt;/mudTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) Defines what terrain should be used when generating a Wetlands Tile mutator. Defaults to Mud.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;noGravel&amp;gt;false&amp;lt;/noGravel&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
If Gravel (Stony soil) should be generated. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gravelTerrain&amp;gt;Ice&amp;lt;/gravelTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain to use when generating gravel. Defaults to Stony Soil. Requires &amp;lt;code&amp;gt;noGravel&amp;lt;/code&amp;gt; to be false.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;waterShallowTerrain&amp;gt;SoilRich&amp;lt;waterShallowTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain to use when generating shallow water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to shallow water.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;waterDeepTerrain&amp;gt;WaterOceanDeep&amp;lt;/waterDeepTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain to use when generating deep water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to deep water.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;oceanShallowTerrain&amp;gt;MossyTerrain&amp;lt;/oceanShallowTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating shallow ocean water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to shallow ocean Water&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;oceanDeepTerrain&amp;gt;Mud&amp;lt;/oceanDeepTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating Deep ocean water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to deep ocean water&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;waterMovingShallowTerrain&amp;gt;Mud&amp;lt;/waterMovingShallowTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating shallow moving water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to shallow moving water&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;waterMovingChestDeepTerrain&amp;gt;Sand&amp;lt;/waterMovingChestDeepTerrain&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Defines what terrain should be used when generating deep moving water for &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s. Defaults to chest-deep moving water&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;biomeMapConditions&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;SolarFlare&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;biomeMapConditions&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A list of permanent &amp;lt;code&amp;gt;GameConditionDef&amp;lt;/code&amp;gt; that can occur on the map.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extraGenSteps&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;MNCS_CheeseChunks&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;MNCS_MoonHives&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;MNCS_FixPlayerStartSpot&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/extraGenSteps&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Extra &amp;lt;code&amp;gt;GenStepDef&amp;lt;/code&amp;gt; that can occur on this biomes maps.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;preventGenSteps&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;RockChunks&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;CaveHives&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/preventGenSteps&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
These &amp;lt;code&amp;gt;GenStepDef&amp;lt;/code&amp;gt; will not occur on this biomes maps.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extraRockTypes&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;SolidIce&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/extraRockTypes&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Provided that the rock is defined as &amp;lt;code&amp;gt;biomeSpecific&amp;lt;/code&amp;gt;, these rocks will be able to appear on the selected biome naturally&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;forceRockTypes&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Sandstone&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/forceRockTypes&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Only rocks defined in this field will appear. This is a 100% rate meaning no variation on the biome.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;maxFishPopulation&amp;gt;500&amp;lt;/maxFishPopulation&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) The maximum amount of fish a body of water is able to have. Defaults to 0.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fishTypes&amp;gt;&lt;br /&gt;
  &amp;lt;freshwater_Common&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Bass MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Bass&amp;gt;&lt;br /&gt;
  &amp;lt;/freshwater_Common&amp;gt;&lt;br /&gt;
  &amp;lt;freshwater_Uncommon&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Catfish MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Catfish&amp;gt;&lt;br /&gt;
  &amp;lt;/freshwater_Uncommon&amp;gt;&lt;br /&gt;
  &amp;lt;saltwater_Common&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Bluefish MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Bluefish&amp;gt;&lt;br /&gt;
  &amp;lt;/saltwater_Common&amp;gt;&lt;br /&gt;
  &amp;lt;saltwater_Uncommon&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Marlin MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Marlin&amp;gt;&lt;br /&gt;
    &amp;lt;Fish_Flounder MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;1&amp;lt;/Fish_Flounder&amp;gt;&lt;br /&gt;
  &amp;lt;/saltwater_Uncommon&amp;gt;&lt;br /&gt;
  &amp;lt;rareCatchesSetMaker &lt;br /&gt;
  MayRequire=&amp;quot;Ludeon.RimWorld.Odyssey&amp;quot;&amp;gt;RareFishingCatches_Temperate&amp;lt;/rareCatchesSetMaker&amp;gt;&lt;br /&gt;
&amp;lt;/fishTypes&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
([[Odyssey]] {{OdysseyIcon}} Only) Fish that can appear in bodies of water. If multiple fish are in a list, one is randomly chosen.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;layerWhitelist&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;MP_MyCustomPlanetLayer&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/layerWhitelist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
&amp;lt;code&amp;gt;PlanetLayerDef&amp;lt;/code&amp;gt; this biome is allowed to occur in. If this is set it will only appear on the specified layers&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;layerBlacklist&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Surface&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/layerBlacklist&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
&amp;lt;code&amp;gt;PlanetLayerDef&amp;lt;/code&amp;gt; this biome is not allowed to occur in. If this is set it will not appear in on the specified layers&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;settleWarning&amp;gt;This biome is very dangerous.&amp;lt;/settleWarning&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A warning that can appear when trying to settle on a tile of that biome.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fogOfWarColor&amp;gt;(249,145,104)&amp;lt;/fogOfWarColor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The color of Fog of war. Fogged/undiscovered locations on your map. Default is null and this field is not necessary to fill in. Normal fog of war color is (77, 69, 66).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;orbitalDebris&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
TODO&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;texture&amp;gt;World/Biomes/MNCS_SurfaceSwiss&amp;lt;/texture&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The texture that will be displayed on the world map. Vanilla uses a 512x512 texture.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Determining Biome ==&lt;br /&gt;
&lt;br /&gt;
Biome calculation is done during world generations &amp;lt;code&amp;gt;WorldGenStep_Terrain&amp;lt;/code&amp;gt;. Each tile is calculated individually. After verifying the biome can be placed via &amp;lt;code&amp;gt;generatesNaturally&amp;lt;/code&amp;gt;, it's score is calculated from the biome workers &amp;lt;code&amp;gt;GetScore&amp;lt;/code&amp;gt;. The biome with the highest score will be placed on that specific tile.&lt;br /&gt;
&lt;br /&gt;
== Places That Use Biomes ==&lt;br /&gt;
&lt;br /&gt;
In addition to the fields required for biomes, some feilds require knowledge of the biome to trigger specific events or occurences. In these cases a [[Modding_Tutorials/PatchOperations|patch operation]] will be necessary&lt;br /&gt;
&lt;br /&gt;
=== Animals and plants ===&lt;br /&gt;
&lt;br /&gt;
Animals and plants can also set where they spawn in their raceProperties and plantProperties respectively. Duplicates are not allowed between the biome and properties list. You are not able to set Their pollution appearance rate or coastal appearance rate through their properties either. Either method is acceptable for appearance rates. However, if you are creating a biome, it might be more sensible to place the appearances in the &amp;lt;code&amp;gt;BiomeDef&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;IncidentDef&amp;lt;/code&amp;gt;s ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Ambush&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ManhunterAmbush&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;CaravanMeeting&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;CaravanDemand&amp;lt;/code&amp;gt; requires a biome listed in their &amp;lt;code&amp;gt;mtbDaysByBiome&amp;lt;/code&amp;gt; to be considered a valid map to have their incidents occur.&lt;br /&gt;
Some incidents have &amp;lt;code&amp;gt;sallowedBiomes&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;disallowedBiomes&amp;lt;/code&amp;gt;. [[Events#Beavers!|Alphabeavers]] for example can only appear in the Tundra or Arid Shrubland.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;FeatureDef&amp;lt;/code&amp;gt;s ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;FeatureDef&amp;lt;/code&amp;gt;s generate names that can appear alongside landforms on the world map. These are things like &amp;quot;Barra Sea&amp;quot;, &amp;quot;Bat Cheek Flats&amp;quot;, and &amp;quot;Gorar Desert&amp;quot;. Some &amp;lt;code&amp;gt;FeatureDef&amp;lt;/code&amp;gt;s have &amp;lt;code&amp;gt;rootBiome&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;acceptableBiome&amp;lt;/code&amp;gt;. For example, the &amp;lt;code&amp;gt;Desert&amp;lt;/code&amp;gt; FeatureDef has &amp;lt;code&amp;gt;Desert&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ExtremeDesert&amp;lt;/code&amp;gt; as &amp;lt;code&amp;gt;rootBiomes&amp;lt;/code&amp;gt; meaning at least one of these are required for an area to be given this name. &amp;lt;code&amp;gt;acceptableBiomes&amp;lt;/code&amp;gt; are adjacent biomes that can also fulfill the qualifications for the Desert Feature. This is purely for visual and does not have impact&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s ===&lt;br /&gt;
Most &amp;lt;code&amp;gt;TileMutatorDef&amp;lt;/code&amp;gt;s, as well as [[Landmarks| landmarks]] in Odyssey will not be active on a biome unless they are patched into the TileMutatorDefs &amp;lt;code&amp;gt;biomeWhitelist&amp;lt;/code&amp;gt;. You can also restrict certain biomes using the &amp;lt;code&amp;gt;biomeBlacklist&amp;lt;/code&amp;gt;. [[Modding_Tutorials/Mod_Folder_Structure#LoadFolders.xml_.28Optional.29|LoadFolders]] is recommended here.&lt;/div&gt;</summary>
		<author><name>Halicade</name></author>
	</entry>
	<entry>
		<id>https://rimworldwiki.com/index.php?title=Modding_Tutorials/Testing_mods&amp;diff=172887</id>
		<title>Modding Tutorials/Testing mods</title>
		<link rel="alternate" type="text/html" href="https://rimworldwiki.com/index.php?title=Modding_Tutorials/Testing_mods&amp;diff=172887"/>
		<updated>2025-12-07T13:18:32Z</updated>

		<summary type="html">&lt;p&gt;Halicade: Updated publisher plus link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Testing Mods}}&lt;br /&gt;
{{BackToTutorials}}&lt;br /&gt;
&lt;br /&gt;
{{:Modding_Tutorials/Under_Review}} &lt;br /&gt;
&lt;br /&gt;
This page contains tips and tricks for debugging and testing mod content.&lt;br /&gt;
&lt;br /&gt;
=Development Mode=&lt;br /&gt;
&lt;br /&gt;
''Main Article: [[Development mode]]&lt;br /&gt;
&lt;br /&gt;
Usually referred to as just &amp;quot;dev mode&amp;quot;, enabling this option gives you a large number of tools to help test both the vanilla game as well as mod content.&lt;br /&gt;
&lt;br /&gt;
To enable dev mode:&lt;br /&gt;
&lt;br /&gt;
# Start RimWorld&lt;br /&gt;
# Go to Options in the Main Menu&lt;br /&gt;
# Under Gameplay, check the &amp;quot;Development Mode&amp;quot; box&lt;br /&gt;
&lt;br /&gt;
Development mode will remain on until explicitly turned off, even if you close and reopen the game.&lt;br /&gt;
&lt;br /&gt;
=Debugging=&lt;br /&gt;
&lt;br /&gt;
RimWorld runs on Unity, which uses a modified fork of the Mono runtime. As of RimWorld 1.6 (Odyssey), the current versions are:&lt;br /&gt;
&lt;br /&gt;
* Unity 2022.3.35 (https://unity.com/releases/editor/whats-new/2022.3.35f1)&lt;br /&gt;
* Mono (https://github.com/Unity-Technologies/mono/tree/unity-2022.3-mbe)&lt;br /&gt;
&lt;br /&gt;
If you are using [[Modding_Tutorials/Recommended_software|Rider]], the easiest way to set up debugging for custom assemblies is to use Gareth's RimWorld plugin: https://plugins.jetbrains.com/plugin/21583-rimworld-development-environment&lt;br /&gt;
&lt;br /&gt;
If you are not using Rider or do not want to use the plugin, there are instructions for setting up Doorstop manually here: https://github.com/pardeike/Rimworld-Doorstop&lt;br /&gt;
&lt;br /&gt;
=Tips=&lt;br /&gt;
&lt;br /&gt;
The following are specific tips for testing various types of mod content:&lt;br /&gt;
&lt;br /&gt;
==Weapons and Apparel==&lt;br /&gt;
&lt;br /&gt;
You can spawn weapons and apparel by using the &amp;quot;Spawn weapon&amp;quot; and &amp;quot;Spawn apparel&amp;quot; dev mode debug commands, respectively.&lt;br /&gt;
&lt;br /&gt;
There are also debug output commands for showing the chance of spawning any given weapon or apparel piece, to help diagnose whether your tags are correctly configured.&lt;br /&gt;
&lt;br /&gt;
==Pawns==&lt;br /&gt;
&lt;br /&gt;
You can test custom pawns by using the &amp;quot;Spawn pawn&amp;quot; dev mode command. This will list out all PawnKindDefs in the game.&lt;br /&gt;
&lt;br /&gt;
==Incidents==&lt;br /&gt;
&lt;br /&gt;
You can use the Incident dev mode commands to test various incidents, including raids.&lt;br /&gt;
&lt;br /&gt;
==Jobs==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Toggle job logging&amp;quot; and &amp;quot;Draw pawn debug&amp;quot; can be helpful for diagnosing pawn AI.&lt;br /&gt;
&lt;br /&gt;
==Lords==&lt;br /&gt;
&lt;br /&gt;
Lords are group AI controllers used by everything from trade caravans to raiding parties.&lt;br /&gt;
&lt;br /&gt;
* View settings -&amp;gt; Draw Duties (for seeing what each pawn does)&lt;br /&gt;
* View settings -&amp;gt; Draw Lords (for seeing what the Lord does)&lt;br /&gt;
* View settings -&amp;gt; Log Lord Toil Transitions (for reading what transitions happen)&lt;br /&gt;
&lt;br /&gt;
=Quicktest=&lt;br /&gt;
&lt;br /&gt;
When dev mode is enabled, there will be a Quicktest option on the Main Menu that instantly loads into a Crashlanded map with all default options.&lt;br /&gt;
&lt;br /&gt;
You can also have the game load instantly into a Quicktest map on load by using the &amp;lt;code&amp;gt;-quicktest&amp;lt;/code&amp;gt; command line argument:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
C:/Path/To/Game/RimWorld.exe -quicktest&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Mac:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
/Users/Username/Library/Application\ Support/Steam/SteamApps/common/RimWorld/RimWorldMac.app/Contents/MacOS/RimWorldMac -quicktest&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can make a shortcut to the game with this command line argument.&lt;br /&gt;
&lt;br /&gt;
Alternatively, if you have a save file named &amp;lt;code&amp;gt;autostart.rws&amp;lt;/code&amp;gt;, then game will load that on start.&lt;br /&gt;
&lt;br /&gt;
=Save Data=&lt;br /&gt;
&lt;br /&gt;
You can override the save data folder using the &amp;lt;code&amp;gt;-savedatafolder&amp;lt;/code&amp;gt; command line argument. This is useful if you want to install the game on a USB drive so you can plug and play it from anywhere:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
C:/Path/To/Game/RimWorld.exe -savedatafolder=C:/Path/To/The/Folder&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use relative file paths:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
-savedatafolder=SaveData&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Be sure the game is running with permission to modify the folder; it may not work properly if you run the game under default permissions on its own install folder.&lt;br /&gt;
&lt;br /&gt;
You can combine the -savedatafolder with the -quicktest argument for a clean modding environment.&lt;br /&gt;
&lt;br /&gt;
=Mod Tools=&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/NightmareCorporation/PublisherPlusMultiVersionFork PublisherPlus] ([https://steamcommunity.com/sharedfiles/filedetails/?id=3183156228 Steam Workshop]) Originally created by Jaxe, forked by NightmareCorporation - gives you more options when uploading a mod to Steam Workshop, including excluding files or folders from the upload.&lt;br /&gt;
&lt;br /&gt;
[[Category:Modding tutorials]]&lt;/div&gt;</summary>
		<author><name>Halicade</name></author>
	</entry>
	<entry>
		<id>https://rimworldwiki.com/index.php?title=Modding_Tutorials/Plague_Gun&amp;diff=167328</id>
		<title>Modding Tutorials/Plague Gun</title>
		<link rel="alternate" type="text/html" href="https://rimworldwiki.com/index.php?title=Modding_Tutorials/Plague_Gun&amp;diff=167328"/>
		<updated>2025-08-12T01:15:36Z</updated>

		<summary type="html">&lt;p&gt;Halicade: /* Required Items */  Removing outdated/older recommendations&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a tutorial for taking an item [[mod]] from conception all the way to completion, touching on most systems involved in RimWorld modding and explaining each step.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
In this tutorial we will be using most of the tools available to a Rimworld [[Modding|modder]] to create a custom weapon, known as the Plague Gun.&lt;br /&gt;
&lt;br /&gt;
This weapon will, when its shots hit a living target, have a chance to apply the [[Plague]] hediff (&amp;quot;health difference&amp;quot;) to that target.&lt;br /&gt;
&lt;br /&gt;
To do this, we will create XML ThingDefs for the gun and projectile, create a C# assembly which determines what happens when the projectile hits a target, and link that behavior back to the XML.&lt;br /&gt;
&lt;br /&gt;
This tutorial will assume a basic familiarity with XML and C# syntax. It should be simple enough to follow if you're only a beginner. &lt;br /&gt;
&lt;br /&gt;
If you have no XML or C# experience, there are good tutorials for XML [https://www.w3schools.com/xml/ here] and C# [https://www.learncs.org/ here].&lt;br /&gt;
&lt;br /&gt;
=== The Completed Mod ===&lt;br /&gt;
For a working example, check out [https://github.com/dninemfive/PlagueGun this GitHub repo].&lt;br /&gt;
&lt;br /&gt;
== Required Items ==&lt;br /&gt;
&lt;br /&gt;
Make sure to have the following installed, at least one per row:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [https://code.visualstudio.com/ VSCode] || A text editor that allows you to edit XML files and use &amp;quot;Find in Files&amp;quot; for referencing.&lt;br /&gt;
|-&lt;br /&gt;
| [https://visualstudio.microsoft.com/vs/community/ Visual Studio Community] || Use this or any other C# compiler to turn scripts into .dll files that RimWorld can use.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/icsharpcode/ILSpy/releases ILSpy]|| This is for referencing the game's decompiled C# scripts.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For more detailed recommendations, see [[Modding Tutorials/Recommended software|here]].&lt;br /&gt;
&lt;br /&gt;
== XML Stage ==&lt;br /&gt;
&lt;br /&gt;
In this stage we will set up the mod and create XML files which add our things to the database.&lt;br /&gt;
&lt;br /&gt;
# Locate your RimWorld folder.&lt;br /&gt;
#* On Steam, you can find it by right-clicking the game in your games list &amp;gt; Properties &amp;gt; Local Files &amp;gt; Browse Local Files...&lt;br /&gt;
#** By default, it will be located at &amp;lt;code&amp;gt;C:\Program Files (x86)\Steam\steamapps\common\RimWorld&amp;lt;/code&amp;gt; if you bought it through Steam on Windows.&lt;br /&gt;
#* If you bought the DRM-free version, it will be located wherever you unzipped it.&lt;br /&gt;
#* On GOG, you can find it by right-clicking the game in your games list &amp;gt; Manage Installation &amp;gt; Show Folder&lt;br /&gt;
#** By default it will be located at &amp;lt;code&amp;gt;C:\Program Files (x86)\GOG Galaxy\Games\RimWorld&amp;lt;/code&amp;gt; if you bought it through GOG on Windows.&lt;br /&gt;
# Create a &amp;lt;code&amp;gt;Mods&amp;lt;/code&amp;gt; folder (if it doesn't already exist).&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;nowiki /&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;small&amp;gt;RimWorld&amp;gt;Mods&amp;gt;PlagueGun&amp;lt;/small&amp;gt;&lt;br /&gt;
#* Go into the Mods folder.&lt;br /&gt;
#* Make a new folder with our mod's title: '''PlagueGun'''&lt;br /&gt;
# Inside '''PlagueGun''', make an '''About''' folder.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;nowiki /&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;small&amp;gt;RimWorld&amp;gt;Mods&amp;gt;PlagueGun&amp;gt;About&amp;lt;/small&amp;gt;&lt;br /&gt;
# Inside the '''About''' folder, make a new text file and rename it About.xml.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;nowiki /&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;small&amp;gt;RimWorld&amp;gt;Mods&amp;gt;PlagueGun&amp;gt;About&amp;gt;About.xml&amp;lt;/small&amp;gt;&lt;br /&gt;
#* You will need a good text editor to make a proper XML file -- see [[#Required Items|required items]]. I always make a .txt file first and change it to .xml. If you can't rename your file's type, make sure you have filetypes visible in your operating system's file view settings.&lt;br /&gt;
#* [[About.xml]] is the file that shows your mod in the mod list inside the RimWorld game. It is also used when creating a Workshop upload for Steam.&lt;br /&gt;
#* At the top of an XML file, always include this for RimWorld. It basically just gives the game some info about how to read the file. &amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;lt;/source&amp;gt; ''Note: the'' version '' tag should always be &amp;quot;1.0&amp;quot;. It has no relation with the current RimWorld version.''&lt;br /&gt;
#* Then add the MetaData tags for the Workshop and in-game Mod list.&amp;lt;source lang =&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;ModMetaData&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;Test Mod - Plague Gun&amp;lt;/name&amp;gt; &amp;lt;!-- The name of your mod in the mod list --&amp;gt;&lt;br /&gt;
  &amp;lt;author&amp;gt;YourNameHere&amp;lt;/author&amp;gt;&lt;br /&gt;
  &amp;lt;packageId&amp;gt;YourNameHere.PlagueGun&amp;lt;/packageId&amp;gt; &amp;lt;!-- a unique identifier for your mod. Must contain only a-z and periods, no spaces. --&amp;gt;&lt;br /&gt;
  &amp;lt;supportedVersions&amp;gt; &amp;lt;!-- the version(s) your mod supports --&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/supportedVersions&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;This mod adds a plague gun, a weapon that has a chance to give your enemies the plague.\n\nFor version 1.1.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/ModMetaData&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
#* Save the file.&lt;br /&gt;
# Add a Preview.png or Preview.jpeg to your '''About''' folder.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;nowiki /&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;small&amp;gt;RimWorld&amp;gt;Mods&amp;gt;PlagueGun&amp;gt;About&amp;gt;Preview.png&amp;lt;/small&amp;gt;&lt;br /&gt;
#* This lets users see what your mod looks like in the RimWorld mod list or on the Steam Workshop.&lt;br /&gt;
#* The conventional dimensions to fit the preview image on Steam are 640x360. The image must be smaller than 1mb. &lt;br /&gt;
#* Example: [[File:Preview.png]]&lt;br /&gt;
# Make a '''Defs''' folder in your Mod's directory.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;nowiki /&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;small&amp;gt;RimWorld&amp;gt;Mods&amp;gt;PlagueGun&amp;gt;Defs&amp;lt;/small&amp;gt;&lt;br /&gt;
#* RimWorld will read your XML files in any subdirectory of '''Defs'''. You can name your directories however you like under that folder. Defs&amp;gt;StrangeNewAlienGuns&amp;gt;MyGuns.xml will work. For the purposes of this tutorial, however, we will use the RimWorld standard structure.&lt;br /&gt;
#* What are Defs? Main article: [[Modding Tutorials/XML Defs|Defs]]&lt;br /&gt;
#** RimWorld uses things called Defs (short for &amp;quot;definitions&amp;quot;) like blueprints for in-game objects. Instead of using hidden C# code, RimWorld will look up an XML Def and copy it to the game world. This makes things easier for us, the modders. Everything from characters, animals, floors, damages, buildings, and even diseases in RimWorld use Defs. We're going to make Defs for our Plague Gun and Plague Bullet.&lt;br /&gt;
# Make a new '''ThingDefs''' folder in your '''Defs''' folder.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;nowiki /&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;small&amp;gt;RimWorld&amp;gt;Mods&amp;gt;PlagueGun&amp;gt;Defs&amp;gt;ThingDefs&amp;lt;/small&amp;gt;&lt;br /&gt;
# Make a new text file in your '''ThingDefs''' folder, and change it to RangedWeapon_PlagueGun.xml.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;nowiki /&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;small&amp;gt;RimWorld&amp;gt;Mods&amp;gt;PlagueGun&amp;gt;Defs&amp;gt;ThingDefs&amp;gt;RangedWeapon_PlagueGun.xml&amp;lt;/small&amp;gt;&lt;br /&gt;
#* This file will contain the blueprints (ThingDefs) for our new gun and bullets.&lt;br /&gt;
#* Next we will fill out our XML file by copying an existing revolver's ThingDef and a revolver bullet ThingDef.&lt;br /&gt;
#* In RimWorld, it is often best to use the XML attribute &amp;lt;code&amp;gt;ParentName=&amp;quot;BaseBullet&amp;quot;&amp;lt;/code&amp;gt; when making a bullet, because it will copy XML code from a pre-existing BaseBullet ThingDef, which can save us time and key taps. Main article: [[Modding Tutorials/XML file structure#Inheritance|Inheritance]]&lt;br /&gt;
# First, add our favourite line to the top.&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
# Add the &amp;lt;code&amp;gt;&amp;lt;Defs&amp;gt;&amp;lt;/code&amp;gt; opening and closing tags to the XML to hold our new code.&amp;lt;source lang = &amp;quot;xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Defs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/Defs&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
# Use your text editor. Use its &amp;quot;Find in Files&amp;quot; function to reference and copy Bullet_Revolver to your XML file.&lt;br /&gt;
#* Find in Files is one of my most-used functions. In Notepad++, if you press CTRL+SHIFT+F, you can go to the Find in Files screen. From there, you can enter a phrase to search for, and then you can enter the file path to search through. This makes it wildly easier to search for examples in RimWorld's Core. RimWorld holds copies of all of its weapons, items, buildings, etc. inside the Mods/Core directory.&lt;br /&gt;
#* So, start by using Find in Files... and find this: &amp;lt;code&amp;gt;defName&amp;gt;Bullet_Revolver&amp;lt;/code&amp;gt;&lt;br /&gt;
#* When you find Bullet_Revolver, copy from its beginning &amp;lt;code&amp;gt;&amp;lt;ThingDef&amp;gt;&amp;lt;/code&amp;gt; all the way until its closing &amp;lt;code&amp;gt;&amp;lt;/ThingDef&amp;gt;&amp;lt;/code&amp;gt; tag into your XML File.&lt;br /&gt;
# Use your text editor's &amp;quot;Find in Files&amp;quot; function to reference and copy Gun_Revolver to your XML file.&lt;br /&gt;
#* Typically, Gun_Revolver is right below Bullet_Revolver in XML, so hopefully this will be easy to find and copy.&lt;br /&gt;
#* Again, copy the ThingDef block to your new XML file.&lt;br /&gt;
# Change the defName, labels, and other stats of Bullet_Revolver and Revolver in your XML file to make them unique.&lt;br /&gt;
#* '''A word on defNames:''' &amp;lt;code&amp;gt;defName&amp;lt;/code&amp;gt;s are how the game references defs anywhere they're used in XML, since they're unique. When telling your plague gun to fire plague bullets, for instance, set its &amp;lt;code&amp;gt;defaultProjectile&amp;lt;/code&amp;gt; to your projectile's defName, like so:&amp;lt;source lang =&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;defaultProjectile&amp;gt;TST_Bullet_PlagueGun&amp;lt;/defaultProjectile&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
#* '''TIP:''' Use prefixes to avoid conflicting with other mods. RimWorld will overwrite any def with &amp;lt;code&amp;gt;&amp;lt;defName&amp;gt;Tobacco&amp;lt;/defName&amp;gt;&amp;lt;/code&amp;gt;, for instance, if it finds another with the same defName. If two modders use different prefixes, however, e.g. &amp;lt;code&amp;gt;&amp;lt;defName&amp;gt;VGP_Tobacco&amp;lt;/defName&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;defName&amp;gt;ROM_Tobacco&amp;lt;/defName&amp;gt;&amp;lt;/code&amp;gt;, no conflict will occur, and both mods can co-exist. This tutorial uses TST_ for its example prefix. Main article: [[Modding_Tutorials/Compatibility|Compatibility]]&lt;br /&gt;
#* By contrast, labels, descriptions, and other non-defName tags can generally be non-unique without a risk of conflicts, except perhaps confusion for the end user.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''If all you were interested in is making a gun mod, you are done.'''&amp;lt;/big&amp;gt; You'll of course want to edit values like the damage it does, and [[Modding_Tutorials/Testing_mods|test your mod]]. You'll also want to change the &amp;lt;code&amp;gt;texturePath&amp;lt;/code&amp;gt; to your unique art, and whatever else.&lt;br /&gt;
&lt;br /&gt;
=== Completed Example ===&lt;br /&gt;
&lt;br /&gt;
''Note'': The example is up-to-date for [[Version|1.3]] and will likely be outdated in the future. The above steps should always be relevant.&lt;br /&gt;
&amp;lt;source lang =&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;Defs&amp;gt;&lt;br /&gt;
  &amp;lt;ThingDef ParentName=&amp;quot;BaseBullet&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;defName&amp;gt;TST_Bullet_PlagueGun&amp;lt;/defName&amp;gt;&lt;br /&gt;
    &amp;lt;label&amp;gt;plague bullet&amp;lt;/label&amp;gt;&lt;br /&gt;
    &amp;lt;graphicData&amp;gt;&lt;br /&gt;
      &amp;lt;texPath&amp;gt;Things/Projectile/Bullet_Small&amp;lt;/texPath&amp;gt;&lt;br /&gt;
      &amp;lt;graphicClass&amp;gt;Graphic_Single&amp;lt;/graphicClass&amp;gt;&lt;br /&gt;
    &amp;lt;/graphicData&amp;gt;&lt;br /&gt;
    &amp;lt;projectile&amp;gt;&lt;br /&gt;
      &amp;lt;damageDef&amp;gt;Bullet&amp;lt;/damageDef&amp;gt;&lt;br /&gt;
      &amp;lt;damageAmountBase&amp;gt;12&amp;lt;/damageAmountBase&amp;gt;&lt;br /&gt;
      &amp;lt;stoppingPower&amp;gt;1&amp;lt;/stoppingPower&amp;gt;&lt;br /&gt;
      &amp;lt;speed&amp;gt;55&amp;lt;/speed&amp;gt;&lt;br /&gt;
    &amp;lt;/projectile&amp;gt;&lt;br /&gt;
  &amp;lt;/ThingDef&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;ThingDef ParentName=&amp;quot;BaseHumanMakeableGun&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;defName&amp;gt;TST_Gun_PlagueGun&amp;lt;/defName&amp;gt;&lt;br /&gt;
    &amp;lt;label&amp;gt;plague gun&amp;lt;/label&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;A curious weapon notable for its horrible health effects.&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;graphicData&amp;gt;&lt;br /&gt;
      &amp;lt;texPath&amp;gt;Things/Item/Equipment/WeaponRanged/Revolver&amp;lt;/texPath&amp;gt;&lt;br /&gt;
      &amp;lt;graphicClass&amp;gt;Graphic_Single&amp;lt;/graphicClass&amp;gt;&lt;br /&gt;
    &amp;lt;/graphicData&amp;gt;&lt;br /&gt;
    &amp;lt;uiIconScale&amp;gt;1.4&amp;lt;/uiIconScale&amp;gt;&lt;br /&gt;
    &amp;lt;soundInteract&amp;gt;Interact_Revolver&amp;lt;/soundInteract&amp;gt;&lt;br /&gt;
    &amp;lt;thingSetMakerTags&amp;gt;&amp;lt;li&amp;gt;RewardStandardQualitySuper&amp;lt;/li&amp;gt;&amp;lt;/thingSetMakerTags&amp;gt;&lt;br /&gt;
    &amp;lt;statBases&amp;gt;&lt;br /&gt;
      &amp;lt;WorkToMake&amp;gt;4000&amp;lt;/WorkToMake&amp;gt;&lt;br /&gt;
      &amp;lt;Mass&amp;gt;1.4&amp;lt;/Mass&amp;gt;&lt;br /&gt;
      &amp;lt;AccuracyTouch&amp;gt;0.80&amp;lt;/AccuracyTouch&amp;gt;&lt;br /&gt;
      &amp;lt;AccuracyShort&amp;gt;0.75&amp;lt;/AccuracyShort&amp;gt;&lt;br /&gt;
      &amp;lt;AccuracyMedium&amp;gt;0.45&amp;lt;/AccuracyMedium&amp;gt;&lt;br /&gt;
      &amp;lt;AccuracyLong&amp;gt;0.35&amp;lt;/AccuracyLong&amp;gt;&lt;br /&gt;
      &amp;lt;RangedWeapon_Cooldown&amp;gt;1.6&amp;lt;/RangedWeapon_Cooldown&amp;gt;&lt;br /&gt;
    &amp;lt;/statBases&amp;gt;&lt;br /&gt;
    &amp;lt;weaponTags&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;SimpleGun&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Revolver&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/weaponTags&amp;gt;&lt;br /&gt;
    &amp;lt;weaponClasses&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;RangedLight&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/weaponClasses&amp;gt;&lt;br /&gt;
    &amp;lt;costList&amp;gt;&lt;br /&gt;
      &amp;lt;Steel&amp;gt;30&amp;lt;/Steel&amp;gt;&lt;br /&gt;
      &amp;lt;ComponentIndustrial&amp;gt;2&amp;lt;/ComponentIndustrial&amp;gt;&lt;br /&gt;
    &amp;lt;/costList&amp;gt;&lt;br /&gt;
    &amp;lt;recipeMaker&amp;gt;&lt;br /&gt;
      &amp;lt;skillRequirements&amp;gt;&lt;br /&gt;
        &amp;lt;Crafting&amp;gt;3&amp;lt;/Crafting&amp;gt;&lt;br /&gt;
      &amp;lt;/skillRequirements&amp;gt;&lt;br /&gt;
    &amp;lt;/recipeMaker&amp;gt;&lt;br /&gt;
    &amp;lt;verbs&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&lt;br /&gt;
        &amp;lt;verbClass&amp;gt;Verb_Shoot&amp;lt;/verbClass&amp;gt;&lt;br /&gt;
        &amp;lt;hasStandardCommand&amp;gt;true&amp;lt;/hasStandardCommand&amp;gt;&lt;br /&gt;
        &amp;lt;defaultProjectile&amp;gt;TST_Bullet_PlagueGun&amp;lt;/defaultProjectile&amp;gt;&lt;br /&gt;
        &amp;lt;warmupTime&amp;gt;0.3&amp;lt;/warmupTime&amp;gt;&lt;br /&gt;
        &amp;lt;range&amp;gt;25.9&amp;lt;/range&amp;gt;&lt;br /&gt;
        &amp;lt;soundCast&amp;gt;Shot_Revolver&amp;lt;/soundCast&amp;gt;&lt;br /&gt;
        &amp;lt;soundCastTail&amp;gt;GunTail_Light&amp;lt;/soundCastTail&amp;gt;&lt;br /&gt;
        &amp;lt;muzzleFlashScale&amp;gt;9&amp;lt;/muzzleFlashScale&amp;gt;&lt;br /&gt;
      &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/verbs&amp;gt;&lt;br /&gt;
    &amp;lt;tools&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&lt;br /&gt;
        &amp;lt;label&amp;gt;grip&amp;lt;/label&amp;gt;&lt;br /&gt;
        &amp;lt;capacities&amp;gt;&lt;br /&gt;
          &amp;lt;li&amp;gt;Blunt&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/capacities&amp;gt;&lt;br /&gt;
        &amp;lt;power&amp;gt;9&amp;lt;/power&amp;gt;&lt;br /&gt;
        &amp;lt;cooldownTime&amp;gt;2&amp;lt;/cooldownTime&amp;gt;&lt;br /&gt;
      &amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&lt;br /&gt;
        &amp;lt;label&amp;gt;barrel&amp;lt;/label&amp;gt;&lt;br /&gt;
        &amp;lt;capacities&amp;gt;&lt;br /&gt;
          &amp;lt;li&amp;gt;Blunt&amp;lt;/li&amp;gt;&lt;br /&gt;
          &amp;lt;li&amp;gt;Poke&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/capacities&amp;gt;&lt;br /&gt;
        &amp;lt;power&amp;gt;9&amp;lt;/power&amp;gt;&lt;br /&gt;
        &amp;lt;cooldownTime&amp;gt;2&amp;lt;/cooldownTime&amp;gt;&lt;br /&gt;
      &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/tools&amp;gt;&lt;br /&gt;
  &amp;lt;/ThingDef&amp;gt;&lt;br /&gt;
&amp;lt;/Defs&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C# Workspace Setup ==&lt;br /&gt;
{{Main|Modding Tutorials/Setting up a solution}}&lt;br /&gt;
&lt;br /&gt;
Next, we will set up a workspace to write C# code, which is a little bit more involved than just using a text editor.&lt;br /&gt;
&lt;br /&gt;
# Open your compiler of choice for C#.&lt;br /&gt;
#* This tutorial will assume you're using Visual Studio Community Edition, a free Windows-based compiler for C# code.&lt;br /&gt;
# Make a new Visual C# Class Library .NET Framework project. Name it PlagueGun. Make its directory RimWorld&amp;gt;Mods&amp;gt;PlagueGun&amp;gt;Source&lt;br /&gt;
#* File → New → Project → Class Library (.NET Framework).&lt;br /&gt;
#* Don't get this confused with &amp;quot;Class Library (.NET Standard)&amp;quot; or &amp;quot;Class Library (.NET Core)&amp;quot;!&lt;br /&gt;
# Go into the project properties. &lt;br /&gt;
#* Project → PlagueGun Properties.&lt;br /&gt;
# In that window, change the Target Framework version to .NET Framework 4.7.2&lt;br /&gt;
#* Forgetting to do this will cause lots of errors.&lt;br /&gt;
#* Select Yes when it asks you if you're sure to change the framework.&lt;br /&gt;
# While still in Properties, go to the '''Build''' tab.&lt;br /&gt;
# Change the output path to be RimWorld\Mods\PlagueGun\Assemblies&lt;br /&gt;
#* All .dll files will go into this directory when we &amp;quot;build&amp;quot; our code library.&lt;br /&gt;
# In that same window, click the Advanced... button.&lt;br /&gt;
# Change Debugging Information to none.&lt;br /&gt;
#* This prevents a simple error that occurs when RimWorld doesn't know what to do with the debug .pdb files.&lt;br /&gt;
# In Solution Explorer. Go into Properties and edit AssemblyInfo.cs. Change the name of your assembly and assembly file version number as you like.&lt;br /&gt;
#* This doesn't have to all be the same as your namespace, but it doesn't hurt to be consistent.&lt;br /&gt;
# In the main option bar at the top of the visual studio (File, Edit, View...), click Project, and click Add Reference.&lt;br /&gt;
# Click Browse at the bottom right corner of the window and go to RimWorld\RimWorldWin64_Data\Managed&lt;br /&gt;
# Add references to Assembly-CSharp.dll, UnityEngine.dll, and UnityEngine.CoreModule.dll.&lt;br /&gt;
#* In 1.1 the Unity DLLs were split up and are no longer all contained in the same module.&lt;br /&gt;
#* For our purposes we only need UnityEngine.CoreModule.dll, as it contains some code we will use later.&lt;br /&gt;
#* In general, it's also a good idea to add UnityEngine.dll, which allows Visual Studio to tell you which modules you're missing if you get related errors.&lt;br /&gt;
# In the Solution Explorer (typically on the right side of the application), look at the references drop down list.&lt;br /&gt;
# Select Assembly-CSharp. Check the Properties section (usually under Solution Explorer). Make sure the properties section has Copy Local set to FALSE.&lt;br /&gt;
# Do this (Copy Local to FALSE) for UnityEngine and UnityEngine.CoreModule as well.&lt;br /&gt;
#* By doing this, we prevent the project from causing one million hash conflicts by copying the entire game's code twice!&lt;br /&gt;
&lt;br /&gt;
Now the workspace setup is complete and we can add C# code to RimWorld.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Exact folder names might differ between installs. The naming scheme differs slightly between the DRM-free and Steam version of the mod.&lt;br /&gt;
&lt;br /&gt;
== C# Coding ==&lt;br /&gt;
&lt;br /&gt;
Now let's start writing the code we'll need to add custom behavior to our projectiles.&lt;br /&gt;
&lt;br /&gt;
=== Getting Started ===&lt;br /&gt;
# Open Class1.cs in the sidebar, usually on the right in Visual Studio.&lt;br /&gt;
# Right-click and rename the .cs file to your liking.&lt;br /&gt;
# Add these lines to the top this file (and every .cs file you make from now on for modding RimWorld).&amp;lt;source lang =&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
using RimWorld;&lt;br /&gt;
using Verse;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
#* These tell the code you're working with RimWorld. Without these, our code will not be able to understand references to RimWorld code.&lt;br /&gt;
# Add a namespace line. By default, this is your project name. Take note - you will need this to connect to XML later.&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
namespace TST_PlagueGun&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
#* '''Note:''' ''Using a prefix on the namespace is not required, but it's good for consistency and in the rare case they may overlap - such as when multiple people follow the same tutorial to learn how to mod.''&lt;br /&gt;
&lt;br /&gt;
=== Connecting XML and C#, Part 1 ===&lt;br /&gt;
{{Main|Modding Tutorials/DefModExtension}}&lt;br /&gt;
&lt;br /&gt;
# First, let's add a way to read XML data into your assembly.&lt;br /&gt;
# Rename public class Class1 to ModExtension_PlagueBullet and make it inherit DefModExtension. As a reminder, inheritance looks like this:&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public class ModExtension_PlagueBullet : DefModExtension&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
#* '''Note:''' Renaming things in an IDE like Visual Studio is best done by pressing F2 or right-clicking the item/name. Doing it like that will change all occurrences of that thing, so everything that references your namespace or Class1 will now use the new name.&lt;br /&gt;
# Add the following fields in ModExtension_PlagueBullet:&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public float addHediffChance = 0.05f;&lt;br /&gt;
public HediffDef hediffToAdd;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
#* Here, we're giving the field addHediffChance a default value, which means it doesn't need to be set explicitly in XML.&lt;br /&gt;
#* '''Note:''' Standard modding practice is to give fields exposed to XML camelCase names, for consistency with vanilla XML.&lt;br /&gt;
# Now let's add the XML which connects to this ModExtension. In your TST_Bullet_PlagueGun def, add the following lines: &amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;modExtensions&amp;gt;&lt;br /&gt;
    &amp;lt;li Class=&amp;quot;TST_PlagueGun.ModExtension_PlagueBullet&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;addHediffChance&amp;gt;0.05&amp;lt;/addHediffChance&amp;gt;&lt;br /&gt;
        &amp;lt;hediffToAdd&amp;gt;Plague&amp;lt;/hediffToAdd&amp;gt;&lt;br /&gt;
    &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/modExtensions&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
#* '''Note:''' Note the XML tags match the names of the fields in the C# class. This allows the XML to provide data to the program.  When the mod is loaded, the XML will be read, and used to fill in the corresponding fields.&lt;br /&gt;
#* Additionally, take care to note you can set the value of addHediffChance to any valid floating point number and it will be reflected in-game. The value given in C# is only the default value if unset.&lt;br /&gt;
&lt;br /&gt;
=== Writing the Projectile === &lt;br /&gt;
# Let's make the actual projectile. For this tutorial, we're going to make a new projectile that checks for impact and adds a Hediff (health differential - poison, toxins, implants, anything).&lt;br /&gt;
# First, create a new .cs file by right-clicking the PlagueGun part of the Solution Explorer and selecting Add &amp;gt; New Item.&lt;br /&gt;
#* '''Note:''' in C#, you can have multiple class definitions in a single file. We're just making a new file for organizational purposes.&lt;br /&gt;
# Make your new class inherit the Bullet class (a child of the Projectile class), so the game will treat your new projectile like a bullet and not throw (fun) errors. &amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public class Projectile_PlagueBullet : Bullet&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
# First, let's connect our new projectile to the relevant ModExtension: &amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public ModExtension_PlagueBullet Props =&amp;gt; def.GetModExtension&amp;lt;ModExtension_PlagueBullet&amp;gt;();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
#* This line is a Property, basically a method which doesn't take any arguments, and can generally speaking be treated as a variable. See [https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/properties this article] for more details.&lt;br /&gt;
# Now, let's start the actual core code of this mod. Let's begin by overriding the Impact method on the base Bullet class, like so: &amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
protected override void Impact(Thing hitThing, bool blockedByShield = false)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
#* The &amp;lt;code&amp;gt;override&amp;lt;/code&amp;gt; keyword tells the compiler that we're replacing the functionality of the &amp;lt;code&amp;gt;Impact&amp;lt;/code&amp;gt; method from the &amp;lt;code&amp;gt;Bullet&amp;lt;/code&amp;gt; class we're inheriting from.&lt;br /&gt;
# First, let's call the base version of this method so we don't need to rewrite all the logic about damaging a pawn - we only care about adding the hediff ''after'' damage occurs. &amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
base.Impact(hitThing, blockedByShield);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
# Next, we check to make sure the ModExtension was properly loaded, that we hit something, and that what we hit was a [[Pawns|Pawn]].&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
if (Props != null &amp;amp;&amp;amp; hitThing != null &amp;amp;&amp;amp; hitThing is Pawn hitPawn)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
#* '''Note:''' Null checking is a very important skill, especially for Rimworld modding. If you ever get a &amp;lt;code&amp;gt;NullReferenceException&amp;lt;/code&amp;gt;, check to make sure you're correctly handling null values.&lt;br /&gt;
#* Also, note that we initialize a &amp;lt;code&amp;gt;Pawn&amp;lt;/code&amp;gt; version of the &amp;lt;code&amp;gt;hitThing&amp;lt;/code&amp;gt; while checking its type; we'll use this later. This statement ''also'' null-checks this new variable, in case you were wondering.&lt;br /&gt;
# Now that we know we hit a pawn, we generate a random number to see whether to apply the hediff.&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
float rand = Rand.Value;&lt;br /&gt;
if (rand &amp;lt;= Props.addHediffChance)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
#* &amp;lt;code&amp;gt;Rand&amp;lt;/code&amp;gt; is the base game's randomness generation class. &amp;lt;code&amp;gt;Value&amp;lt;/code&amp;gt; grabs the next random number between 0 and 1 and updates the class.&lt;br /&gt;
# If a hediff is applied, we want to alert the player, so we create a message in the top-left of the screen.&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
Messages.Message(&amp;quot;TST_PlagueBullet_SuccessMessage&amp;quot;.Translate(&lt;br /&gt;
	this.launcher.Label, hitPawn.Label&lt;br /&gt;
), MessageTypeDefOf.NeutralEvent);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
# Before adding the hediff, we need to check if the pawn already has it, so we get the hediff from the pawn, if it exists.&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
Hediff plagueOnPawn = hitPawn.health?.hediffSet?.GetFirstHediffOfDef(Props.hediffToAdd);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
#* '''Note:''' The &amp;lt;code&amp;gt;?.&amp;lt;/code&amp;gt; is called the [https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/member-access-operators#null-conditional-operators--and- null conditional operator]. It's basically an in-line null check; if the hit pawn's health tracker (&amp;lt;code&amp;gt;health&amp;lt;/code&amp;gt;) or hediff set (&amp;lt;code&amp;gt;hediffSet&amp;lt;/code&amp;gt;) are null it sets &amp;lt;code&amp;gt;plagueOnPawn&amp;lt;/code&amp;gt; to null instead of throwing an error.&lt;br /&gt;
# Now we finally add the hediff. If the pawn already has the plague we just increase its severity; otherwise, we create and add a new hediff with a random severity.&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
float randomSeverity = Rand.Range(0.15f, 0.30f);&lt;br /&gt;
if (plagueOnPawn != null)&lt;br /&gt;
{&lt;br /&gt;
	plagueOnPawn.Severity += randomSeverity;&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
	Hediff hediff = HediffMaker.MakeHediff(Props.hediffToAdd, hitPawn);&lt;br /&gt;
	hediff.Severity = randomSeverity;&lt;br /&gt;
	hitPawn.health.AddHediff(hediff);&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Whew. ====&lt;br /&gt;
Let's take a break and recap for a second. If you've followed the projectile section so far, this is the code you should have in your new .cs file:&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
using Verse;&lt;br /&gt;
using RimWorld;&lt;br /&gt;
&lt;br /&gt;
namespace TST_PlagueGun&lt;br /&gt;
{&lt;br /&gt;
    public class Projectile_PlagueBullet : Bullet&lt;br /&gt;
    {&lt;br /&gt;
        public ModExtension_PlagueBullet Props =&amp;gt; base.def.GetModExtension&amp;lt;ModExtension_PlagueBullet&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
        protected override void Impact(Thing hitThing, bool blockedByShield = false)&lt;br /&gt;
        {&lt;br /&gt;
            base.Impact(hitThing, blockedByShield);&lt;br /&gt;
            if (Props != null &amp;amp;&amp;amp; hitThing != null &amp;amp;&amp;amp; hitThing is Pawn hitPawn)&lt;br /&gt;
            {&lt;br /&gt;
                float rand = Rand.Value;&lt;br /&gt;
                if (rand &amp;lt;= Props.addHediffChance)&lt;br /&gt;
                {&lt;br /&gt;
                    Messages.Message(&amp;quot;TST_PlagueBullet_SuccessMessage&amp;quot;.Translate(&lt;br /&gt;
                        this.launcher.Label, hitPawn.Label&lt;br /&gt;
                    ), MessageTypeDefOf.NeutralEvent);&lt;br /&gt;
                    Hediff plagueOnPawn = hitPawn.health?.hediffSet?.GetFirstHediffOfDef(Props.hediffToAdd);&lt;br /&gt;
                    float randomSeverity = Rand.Range(0.15f, 0.30f);&lt;br /&gt;
                    if (plagueOnPawn != null)&lt;br /&gt;
                    {&lt;br /&gt;
                        plagueOnPawn.Severity += randomSeverity;&lt;br /&gt;
                    }&lt;br /&gt;
                    else&lt;br /&gt;
                    {&lt;br /&gt;
                        Hediff hediff = HediffMaker.MakeHediff(Props.hediffToAdd, hitPawn);&lt;br /&gt;
                        hediff.Severity = randomSeverity;&lt;br /&gt;
                        hitPawn.health.AddHediff(hediff);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Don't worry, we're almost finished. In fact, if you compile right now the gun ''will'' work - there just won't be any feedback if the shooter misses. This might be desirable, but let's add some feedback anyway.&lt;br /&gt;
&lt;br /&gt;
Well, that's a little bit of a lie. You'd also need to add the &amp;lt;code&amp;gt;&amp;lt;thingClass&amp;gt;&amp;lt;/code&amp;gt; node to the XML, given below.&lt;br /&gt;
&lt;br /&gt;
We want to add an &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt; block to our &amp;lt;code&amp;gt;if (rand &amp;lt;= Props.addHediffChance))&amp;lt;/code&amp;gt; statement. This is where keeping track of curly braces comes in; Visual Studio should draw vertical lines between the correct curlies. Add this:&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
    MoteMaker.ThrowText(hitThing.PositionHeld.ToVector3(), hitThing.MapHeld, &amp;quot;TST_PlagueBullet_FailureMote&amp;quot;.Translate(Props.addHediffChance), 12f);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* This throws a mote (particle effect, essentially), with text stating that the plague was not applied, at the target's position.&lt;br /&gt;
* Fun fact: the &amp;lt;code&amp;gt;.ToVector3()&amp;lt;/code&amp;gt; call is the entire reason we needed to reference UnityEngine and UnityEngine.CoreModule.&lt;br /&gt;
&lt;br /&gt;
=== Connecting XML and C#, Part 2 ===&lt;br /&gt;
Finally, we need to make sure our projectile's def tells the game to use our new Projectile_PlagueBullet class instead of Bullet.&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;thingClass&amp;gt;TST_PlagueGun.Projectile_PlagueBullet&amp;lt;/thingClass&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We're done! Your final Projectile_PlagueBullet class should look like this:&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
using Verse;&lt;br /&gt;
using RimWorld;&lt;br /&gt;
&lt;br /&gt;
namespace TST_PlagueGun&lt;br /&gt;
{&lt;br /&gt;
    public class Projectile_PlagueBullet : Bullet&lt;br /&gt;
    {&lt;br /&gt;
        public ModExtension_PlagueBullet Props =&amp;gt; base.def.GetModExtension&amp;lt;ModExtension_PlagueBullet&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
        protected override void Impact(Thing hitThing, bool blockedByShield = false)&lt;br /&gt;
        {&lt;br /&gt;
            base.Impact(hitThing, blockedByShield);&lt;br /&gt;
            if (Props != null &amp;amp;&amp;amp; hitThing != null &amp;amp;&amp;amp; hitThing is Pawn hitPawn)&lt;br /&gt;
            {&lt;br /&gt;
                float rand = Rand.Value;&lt;br /&gt;
                if (rand &amp;lt;= Props.addHediffChance)&lt;br /&gt;
                {&lt;br /&gt;
                    Messages.Message(&amp;quot;TST_PlagueBullet_SuccessMessage&amp;quot;.Translate(&lt;br /&gt;
                        this.launcher.Label, hitPawn.Label&lt;br /&gt;
                    ), MessageTypeDefOf.NeutralEvent);&lt;br /&gt;
                    Hediff plagueOnPawn = hitPawn.health?.hediffSet?.GetFirstHediffOfDef(Props.hediffToAdd);&lt;br /&gt;
                    float randomSeverity = Rand.Range(0.15f, 0.30f);&lt;br /&gt;
                    if (plagueOnPawn != null)&lt;br /&gt;
                    {&lt;br /&gt;
                        plagueOnPawn.Severity += randomSeverity;&lt;br /&gt;
                    }&lt;br /&gt;
                    else&lt;br /&gt;
                    {&lt;br /&gt;
                        Hediff hediff = HediffMaker.MakeHediff(Props.hediffToAdd, hitPawn);&lt;br /&gt;
                        hediff.Severity = randomSeverity;&lt;br /&gt;
                        hitPawn.health.AddHediff(hediff);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                else&lt;br /&gt;
                {&lt;br /&gt;
                    MoteMaker.ThrowText(hitThing.PositionHeld.ToVector3(), hitThing.MapHeld, &amp;quot;TST_PlagueBullet_FailureMote&amp;quot;.Translate(Props.addHediffChance), 12f);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just compile and test your work; the plague will be properly applied and everything.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Code you write on your own should not look like this - for one thing, it should be well-commented so that others (even if it's just you in the future) know exactly what you're trying to do and how you're doing it. The code [https://github.com/dninemfive/PlagueGun/blob/master/PlagueGun/Projectile_PlagueBullet.cs in the repo] is probably over-commented and designed for a general audience but I recommend reviewing it.&lt;br /&gt;
&lt;br /&gt;
== Localization ==&lt;br /&gt;
...well, almost. If you did test the gun just now, you'll have seen that the text was all distorted, using special characters which looked like the normal ones instead of text you expected. This is because of the use of &amp;lt;code&amp;gt;.Translate()&amp;lt;/code&amp;gt; on keys which do not have translations in the language database. We just need to add those, and we'll be all set!&lt;br /&gt;
&lt;br /&gt;
# First, create a bunch of folders, starting in the root of your mod folder:&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;nowiki /&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;small&amp;gt;Languages&amp;gt;English&amp;gt;Keyed&amp;lt;/small&amp;gt;&lt;br /&gt;
# Next, create a new file called PlagueGun_Keys.xml, with our favorite header.&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
# This will be really quick. Add the opening and closing &amp;lt;code&amp;gt;&amp;lt;LanguageData&amp;gt;&amp;lt;/code&amp;gt; tags:&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;LanguageData&amp;gt;&lt;br /&gt;
&amp;lt;/LanguageData&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
# And, finally, add translations for the two keys used in the projectile class.&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;TST_PlagueBullet_FailureMote&amp;gt;Failure: {0} chance&amp;lt;/TST_PlagueBullet_FailureMote&amp;gt;&lt;br /&gt;
&amp;lt;TST_PlagueBullet_SuccessMessage&amp;gt;{0} infected {1} with the plague!&amp;lt;/TST_PlagueBullet_SuccessMessage&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
#* The &amp;lt;code&amp;gt;{0}&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;{1}&amp;lt;/code&amp;gt; in these keys will be replaced with the first and second arguments, respectively, of the &amp;lt;code&amp;gt;.Translate()&amp;lt;/code&amp;gt; calls. For reference:&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
// successful hit message&lt;br /&gt;
&amp;quot;TST_PlagueBullet_SuccessMessage&amp;quot;.Translate(this.launcher.Label, hitPawn.Label)&lt;br /&gt;
// unsuccessful hit mote&lt;br /&gt;
&amp;quot;TST_PlagueBullet_FailureMote&amp;quot;.Translate(Props.addHediffChance)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
#* If you give &amp;lt;code&amp;gt;.Translate()&amp;lt;/code&amp;gt; more arguments, you can use &amp;lt;code&amp;gt;{2}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{3}&amp;lt;/code&amp;gt;, &amp;amp;c.&lt;br /&gt;
#* Note that, since you only passed one argument to the failure message, &amp;lt;code&amp;gt;{1}&amp;lt;/code&amp;gt; would not be replaced with anything.&lt;br /&gt;
# Your PlagueGun_Keys.xml file should look like this:&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;LanguageData&amp;gt;&lt;br /&gt;
	&amp;lt;TST_PlagueBullet_FailureMote&amp;gt;Failure: {0} chance&amp;lt;/TST_PlagueBullet_FailureMote&amp;gt;&lt;br /&gt;
	&amp;lt;TST_PlagueBullet_SuccessMessage&amp;gt;{0} infected {1} with the plague!&amp;lt;/TST_PlagueBullet_SuccessMessage&amp;gt;&lt;br /&gt;
&amp;lt;/LanguageData&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Next Steps ==&lt;br /&gt;
This concludes this tutorial. Congratulations on making it this far; you now have a solid understanding of XML and C# modding, and of connecting these two. There's a lot more to learn, especially on the C# end, so make sure to practice. If you have any questions don't hesitate to hit up the [https://discord.gg/UTaMDWc Discord]#mod-development or the [https://ludeon.com/forums/index.php?board=14.0 forums] for help.&lt;br /&gt;
&lt;br /&gt;
As for this mod, you might want to add custom textures or sounds. For your next, you might want to try messing around with [[Modding Tutorials/Harmony|Harmony]] or see other [[Modding Tutorials|tutorials]] for inspiration.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Modding Tutorials/Setting up a solution|Setting up a solution]]&lt;br /&gt;
* [[Modding Tutorials/Distribution|Distribution]]&lt;br /&gt;
* [[Modding Tutorials/Harmony|Harmony]]&lt;br /&gt;
* [[Modding_Tutorials/Mod_folder_structure#The_Languages_folder|Language support]]&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
* This tutorial is a rewrite of the original by Jecrell (see also original forum {{LudeonThread|33219}})&lt;br /&gt;
&lt;br /&gt;
[[Category: Modding tutorials]]&lt;br /&gt;
[[Category: Modding]]&lt;/div&gt;</summary>
		<author><name>Halicade</name></author>
	</entry>
	<entry>
		<id>https://rimworldwiki.com/index.php?title=Modding_Tutorials/RimWorld_1.6_Mod_Updates&amp;diff=162560</id>
		<title>Modding Tutorials/RimWorld 1.6 Mod Updates</title>
		<link rel="alternate" type="text/html" href="https://rimworldwiki.com/index.php?title=Modding_Tutorials/RimWorld_1.6_Mod_Updates&amp;diff=162560"/>
		<updated>2025-06-13T01:31:04Z</updated>

		<summary type="html">&lt;p&gt;Halicade: /* Misc */ targetparams change&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:RimWorld 1.6 Mod Updates}}&lt;br /&gt;
&lt;br /&gt;
{{BackToTutorials}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''NOTICE''': This is a repository of information for mod developers updating their mods to RimWorld 1.6. '''THERE MAY BE ODYSSEY DLC SPOILERS HERE.'''&lt;br /&gt;
&lt;br /&gt;
For questions and clarifications, please come visit us at the #mod-development channel on the [https://discord.gg/rimworld RimWorld Discord server].&lt;br /&gt;
&lt;br /&gt;
== General Tips ==&lt;br /&gt;
&lt;br /&gt;
If you are updating a mod between RimWorld versions for the first time:&lt;br /&gt;
&lt;br /&gt;
# Update your supportedVersions in your About.xml&lt;br /&gt;
# Consider using [[Modding_Tutorials/Mod_Folder_Structure|LoadFolders]] to freeze your previous version content.&lt;br /&gt;
# Try to recompile your assemblies. Address any issues that come up.&lt;br /&gt;
# Try to load your mod. Work the error list top to bottom.&lt;br /&gt;
# Check your mod functionality. This is a great time to create a functionality checklist for future updates if you haven't made one already!&lt;br /&gt;
# Check back after further patches. Updates and additional content may be released in post-release patches for months to come, don't assume that mods never break once updated!&lt;br /&gt;
&lt;br /&gt;
== RimWorld 1.6 Base Game Changes ==&lt;br /&gt;
&lt;br /&gt;
Official Changelog: [https://docs.google.com/document/d/e/2PACX-1vRCjqVtPQDFGu4POiKTUd_8o3U2Asdhx99SOvcgU66ABdYtk3Cgndd53yJ6BC4tZX530pp_m6lf4Z9P/pub Official Google Doc] - describes all base game changes in RimWorld 1.6.&lt;br /&gt;
&lt;br /&gt;
Official Modder Primer: [https://docs.google.com/document/d/e/2PACX-1vRKE9u5ZW_zG45pxzwNvy4sxvozDeqtxlxpac5jwenOeW6liQCPgmPl9bIbtcMuqL1NPIDHOLFg64M_/pub Official Google Doc] - technical document intended for modders.&lt;br /&gt;
&lt;br /&gt;
=== Designators ===&lt;br /&gt;
&lt;br /&gt;
* As part of the new vanilla designator shapes system, the virtual DraggableDimensions property has been replaced with DrawStyleCategory, which returns a DrawStyleCategoryDef. You can use one of the several vanilla presets or create your own Def to determine what kinds of shapes can be drawn with your designator.&lt;br /&gt;
&lt;br /&gt;
=== Buildings ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;placingDraggableDimensions&amp;gt;&amp;lt;/code&amp;gt; has been changed to &amp;lt;code&amp;gt;&amp;lt;drawStyleCategory&amp;gt;&amp;lt;/code&amp;gt; to utilize the new vanilla designator shapes system. This is a DrawStyleCategoryDef.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;soundAmbient&amp;gt;&amp;lt;/code&amp;gt; has been removed in 1.6 in favor of a new ThingComp. The following is from the Toxifier Generator:&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&amp;lt;li Class=&amp;quot;CompProperties_AmbientSound&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;sound&amp;gt;Toxifier_Working&amp;lt;/sound&amp;gt;&lt;br /&gt;
    &amp;lt;disabledOnUnpowered&amp;gt;true&amp;lt;/disabledOnUnpowered&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pawns ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;wildness&amp;gt;&amp;lt;/code&amp;gt; is no longer a field on RaceProperties, but is now a StatDef that goes in a race's &amp;lt;code&amp;gt;&amp;lt;statBases&amp;gt;&amp;lt;/code&amp;gt;. Note that as a StatDef, it is now capitalized as well (&amp;lt;code&amp;gt;&amp;lt;Wildness&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Hediffs ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;causesNeed&amp;gt;&amp;lt;/code&amp;gt; has been removed. For drugs specifically, you should now use &amp;lt;code&amp;gt;&amp;lt;chemicalNeed&amp;gt;&amp;lt;/code&amp;gt; on the HediffDef root, or for non-drug needs you can use the &amp;lt;code&amp;gt;&amp;lt;enablesNeeds&amp;gt;&amp;lt;/code&amp;gt; list in HediffStage.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;disablesNeeds&amp;gt;&amp;lt;/code&amp;gt; has been moved to HediffStage as well.&lt;br /&gt;
&lt;br /&gt;
=== Terrains ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;holdSnow&amp;gt;&amp;lt;/code&amp;gt; has been renamed to &amp;lt;code&amp;gt;&amp;lt;holdSnowOrSand&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Plants ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;hideAtSnowDepth&amp;gt;&amp;lt;/code&amp;gt; has been renamed to &amp;lt;code&amp;gt;&amp;lt;hideAtSnowOrSandDepth&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Scenarios ===&lt;br /&gt;
&lt;br /&gt;
* There is a new &amp;lt;code&amp;gt;ScenarioBase&amp;lt;/code&amp;gt; abstract base for ScenarioDefs. You should inherit from this in order to inherit some new fields that deal with the map layering system; omitting them will cause errors on load.&lt;br /&gt;
&lt;br /&gt;
=== Misc ===&lt;br /&gt;
&lt;br /&gt;
* ActiveDropPodInfo has been renamed to ActiveTransporterInfo - potentially used by Odyssey shuttles now?&lt;br /&gt;
* The targetParams &amp;lt;code&amp;gt;&amp;lt;canTargetMutants&amp;gt;&amp;lt;/code&amp;gt; has been renamed to &amp;lt;code&amp;gt;&amp;lt;canTargetSubhumans&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Visual Studio and Burst ==&lt;br /&gt;
&lt;br /&gt;
If you've decompiled the dll, exported all code to .cs files, and opened that in Visual Studio and are getting constant crashes and hangs:&lt;br /&gt;
&lt;br /&gt;
Edit the file Properties/AssemblyInfo.cs and delete all the lines with &amp;quot;`BurstCompiler`&amp;quot;. It's not like you're re-compiling it, so these are not needed anyway.&lt;br /&gt;
&lt;br /&gt;
== Odyssey DLC Compatibility ==&lt;br /&gt;
&lt;br /&gt;
The following features appear to be DLC-locked. Note that this information has been gathered via datamining and may not reflect the final state of the game at release, nor is it necessarily comprehensive:&lt;br /&gt;
&lt;br /&gt;
* Gravships&lt;br /&gt;
* Transport Shuttles&lt;br /&gt;
* Landmarks, Tile Mutators, and several new GenSteps&lt;br /&gt;
* Space, Asteroid Quests, Oxygen, Vacuum&lt;br /&gt;
* Aggressive Habitat Animals (needs clarification)&lt;br /&gt;
* Coastal Animals (needs clarification)&lt;br /&gt;
* Fishing&lt;br /&gt;
* Mixed Biome Maps&lt;br /&gt;
* Extended animal capabilities: Foraging, Targeted Attack, Sentience&lt;br /&gt;
* New Weather: Droughts, Frozen Water, Floods, Sandstorms&lt;br /&gt;
* Plant Cultivation (needs clarification)&lt;br /&gt;
* New Questgivers: Traders, Beggars, Books, Orbital Scanners (?)&lt;br /&gt;
* Substructure (needs clarification)&lt;br /&gt;
* New Precepts: Fishing, Space, Colony Moving&lt;/div&gt;</summary>
		<author><name>Halicade</name></author>
	</entry>
	<entry>
		<id>https://rimworldwiki.com/index.php?title=Modding_Tutorials/RimWorld_1.6_Mod_Updates&amp;diff=162555</id>
		<title>Modding Tutorials/RimWorld 1.6 Mod Updates</title>
		<link rel="alternate" type="text/html" href="https://rimworldwiki.com/index.php?title=Modding_Tutorials/RimWorld_1.6_Mod_Updates&amp;diff=162555"/>
		<updated>2025-06-12T14:53:00Z</updated>

		<summary type="html">&lt;p&gt;Halicade: Added plant section, Added new hideAtSnowOrSandDepth&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:RimWorld 1.6 Mod Updates}}&lt;br /&gt;
&lt;br /&gt;
{{BackToTutorials}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''NOTICE''': This is a repository of information for mod developers updating their mods to RimWorld 1.6. '''THERE MAY BE ODYSSEY DLC SPOILERS HERE.'''&lt;br /&gt;
&lt;br /&gt;
For questions and clarifications, please come visit us at the #mod-development channel on the [https://discord.gg/rimworld RimWorld Discord server].&lt;br /&gt;
&lt;br /&gt;
== General Tips ==&lt;br /&gt;
&lt;br /&gt;
If you are updating a mod between RimWorld versions for the first time:&lt;br /&gt;
&lt;br /&gt;
# Update your supportedVersions in your About.xml&lt;br /&gt;
# Consider using [[Modding_Tutorials/Mod_Folder_Structure|LoadFolders]] to freeze your previous version content.&lt;br /&gt;
# Try to recompile your assemblies. Address any issues that come up.&lt;br /&gt;
# Try to load your mod. Work the error list top to bottom.&lt;br /&gt;
# Check your mod functionality. This is a great time to create a functionality checklist for future updates if you haven't made one already!&lt;br /&gt;
# Check back after further patches. Updates and additional content may be released in post-release patches for months to come, don't assume that mods never break once updated!&lt;br /&gt;
&lt;br /&gt;
== RimWorld 1.6 Base Game Changes ==&lt;br /&gt;
&lt;br /&gt;
Official Changelog: [https://docs.google.com/document/d/e/2PACX-1vRCjqVtPQDFGu4POiKTUd_8o3U2Asdhx99SOvcgU66ABdYtk3Cgndd53yJ6BC4tZX530pp_m6lf4Z9P/pub Official Google Doc] - describes all base game changes in RimWorld 1.6.&lt;br /&gt;
&lt;br /&gt;
Official Modder Primer: [https://docs.google.com/document/d/e/2PACX-1vRKE9u5ZW_zG45pxzwNvy4sxvozDeqtxlxpac5jwenOeW6liQCPgmPl9bIbtcMuqL1NPIDHOLFg64M_/pub Official Google Doc] - technical document intended for modders.&lt;br /&gt;
&lt;br /&gt;
=== Buildings ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;placingDraggableDimensions&amp;gt;&amp;lt;/code&amp;gt; has been changed to &amp;lt;code&amp;gt;&amp;lt;drawStyleCategory&amp;gt;&amp;lt;/code&amp;gt; to utilize the new vanilla designator shapes system. This is a DrawStyleCategoryDef.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;soundAmbient&amp;gt;&amp;lt;/code&amp;gt; has been removed in 1.6 in favor of a new ThingComp. The following is from the Toxifier Generator:&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&amp;lt;li Class=&amp;quot;CompProperties_AmbientSound&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;sound&amp;gt;Toxifier_Working&amp;lt;/sound&amp;gt;&lt;br /&gt;
    &amp;lt;disabledOnUnpowered&amp;gt;true&amp;lt;/disabledOnUnpowered&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pawns ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;wildness&amp;gt;&amp;lt;/code&amp;gt; is no longer a field on RaceProperties, but is now a StatDef that goes in a race's &amp;lt;code&amp;gt;&amp;lt;statBases&amp;gt;&amp;lt;/code&amp;gt;. Note that as a StatDef, it is now capitalized as well (&amp;lt;code&amp;gt;&amp;lt;Wildness&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Hediffs ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;causesNeed&amp;gt;&amp;lt;/code&amp;gt; has been removed. For drugs specifically, you should now use &amp;lt;code&amp;gt;&amp;lt;chemicalNeed&amp;gt;&amp;lt;/code&amp;gt; on the HediffDef root, or for non-drug needs you can use the &amp;lt;code&amp;gt;&amp;lt;enablesNeeds&amp;gt;&amp;lt;/code&amp;gt; list in HediffStage.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;disablesNeeds&amp;gt;&amp;lt;/code&amp;gt; has been moved to HediffStage as well.&lt;br /&gt;
&lt;br /&gt;
=== Terrains ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;holdSnow&amp;gt;&amp;lt;/code&amp;gt; has been renamed to &amp;lt;code&amp;gt;&amp;lt;holdSnowOrSand&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Plants ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;hideAtSnowDepth&amp;gt;&amp;lt;/code&amp;gt; has been renamed to &amp;lt;code&amp;gt;&amp;lt;hideAtSnowOrSandDepth&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Scenarios ===&lt;br /&gt;
&lt;br /&gt;
* There is a new &amp;lt;code&amp;gt;ScenarioBase&amp;lt;/code&amp;gt; abstract base for ScenarioDefs. You should inherit from this in order to inherit some new fields that deal with the map layering system; omitting them will cause errors on load.&lt;br /&gt;
&lt;br /&gt;
== Visual Studio and Burst ==&lt;br /&gt;
&lt;br /&gt;
If you've decompiled the dll, exported all code to .cs files, and opened that in Visual Studio and are getting constant crashes and hangs:&lt;br /&gt;
&lt;br /&gt;
Edit the file Properties/AssemblyInfo.cs and delete all the lines with &amp;quot;`BurstCompiler`&amp;quot;. It's not like you're re-compiling it, so these are not needed anyway.&lt;br /&gt;
&lt;br /&gt;
== Odyssey DLC Compatibility ==&lt;br /&gt;
&lt;br /&gt;
The following features appear to be DLC-locked. Note that this information has been gathered via datamining and may not reflect the final state of the game at release, nor is it necessarily comprehensive:&lt;br /&gt;
&lt;br /&gt;
* Gravships&lt;br /&gt;
* Transport Shuttles&lt;br /&gt;
* Landmarks, Tile Mutators, and several new GenSteps&lt;br /&gt;
* Space, Asteroid Quests, Oxygen, Vacuum&lt;br /&gt;
* Aggressive Habitat Animals (needs clarification)&lt;br /&gt;
* Coastal Animals (needs clarification)&lt;br /&gt;
* Fishing&lt;br /&gt;
* Mixed Biome Maps&lt;br /&gt;
* Extended animal capabilities: Foraging, Targeted Attack, Sentience&lt;br /&gt;
* New Weather: Droughts, Frozen Water, Floods, Sandstorms&lt;br /&gt;
* Plant Cultivation (needs clarification)&lt;br /&gt;
* New Questgivers: Traders, Beggars, Books, Orbital Scanners (?)&lt;br /&gt;
* Substructure (needs clarification)&lt;br /&gt;
* New Precepts: Fishing, Space, Colony Moving&lt;/div&gt;</summary>
		<author><name>Halicade</name></author>
	</entry>
	<entry>
		<id>https://rimworldwiki.com/index.php?title=Modding_Tutorials/Setting_up_a_solution&amp;diff=161919</id>
		<title>Modding Tutorials/Setting up a solution</title>
		<link rel="alternate" type="text/html" href="https://rimworldwiki.com/index.php?title=Modding_Tutorials/Setting_up_a_solution&amp;diff=161919"/>
		<updated>2025-05-11T00:43:22Z</updated>

		<summary type="html">&lt;p&gt;Halicade: Missing word&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BackToTutorials}}&lt;br /&gt;
{{Credit|[[User:Alistaire|Alistaire]]}}&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this tutorial you will learn how to set up a solution, along with instructions on setting the output directory and files for more convenient building right into the Assemblies folder.&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
&lt;br /&gt;
* The manual option in this tutorial requires you to have [[Modding_Tutorials/Mod_folder_structure#The Source and Assemblies folders|set up a Source and Assemblies folder]] (the Visual Studio automatic option sets this up for you).&lt;br /&gt;
* You will want to have an IDE installed: [[Modding Tutorials/Recommended software#IDE's|Recommended IDE's]].&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Setting up a solution=&lt;br /&gt;
Setting up can be different for different IDE's. Feel free to add '''''complete''''' instructions for your IDE of choice.&lt;br /&gt;
&lt;br /&gt;
===Visual Studio Community 2022===&lt;br /&gt;
''NOTE: Visual Studio 2022 is a rather heavy application (2-3 GB for basic functionality) but works out of the box. It is strongly recommended if you are on Windows and have a PC that can handle it. This tutorial is similar for other versions of Visual Studio.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Option 1 (Manual Method):====&lt;br /&gt;
# Create a new class library project&lt;br /&gt;
## Once loaded, go to File -&amp;gt; New -&amp;gt; Project...&lt;br /&gt;
## Type &amp;quot;Class Library (.NET Framework)&amp;quot; in the search bar, and select the C# option. [[File:ClassLibrary.png|200px|thumb|right|Installing the .NET framework]]&lt;br /&gt;
## Enter your project name.&lt;br /&gt;
## Choose a location, preferably:&amp;lt;br/&amp;gt;&amp;lt;pre&amp;gt;(RimWorldInstallFolder)/Mods/(YourModName)/Source&amp;lt;/pre&amp;gt;&lt;br /&gt;
## Enter a solution name (optionally, tick &amp;quot;Place solution and project in the same directory&amp;quot;)&lt;br /&gt;
## Make sure Framework is &amp;quot;.NET Framework 4.7.2&amp;quot;&lt;br /&gt;
# In your project, set target framework and various other properties&lt;br /&gt;
## In your Solution Explorer (the panel usually located on the right), right click your project -&amp;gt; Properties (or expand your project and double click &amp;quot;Properties&amp;quot; with the wrench icon)&lt;br /&gt;
## ''Optional'': Under Application, change your Assembly and Namespace names to anything of your choice&lt;br /&gt;
## Go to Build -&amp;gt; Advanced... and set &amp;quot;Debugging information&amp;quot; to none&lt;br /&gt;
## Leave Advanced..., and set the Output Path to &amp;quot;..\..\Assemblies\&amp;quot; (Or wherever the Assemblies folder is)&lt;br /&gt;
# Add references to RimWorld code&lt;br /&gt;
## Expand your project in Solution Explorer. Then right click &amp;quot;References&amp;quot; -&amp;gt; Add Reference...&lt;br /&gt;
## Click Browse...&lt;br /&gt;
## Navigate towards &amp;lt;pre&amp;gt;RimWorldInstallPath/RimWorld******_Data/Managed&amp;lt;/pre&amp;gt; and select files: &amp;lt;br/&amp;gt;&amp;lt;pre&amp;gt;Assembly-CSharp.dll&amp;amp;#10;UnityEngine.CoreModule.dll&amp;lt;/pre&amp;gt;&lt;br /&gt;
## Click &amp;quot;Add&amp;quot;&lt;br /&gt;
## Click &amp;quot;OK&amp;quot; to close the Reference Manager.&lt;br /&gt;
## Right-click on both Assembly-CSharp.dll and UnityEngine.dll and set Copy Local to False (Properties pane).&lt;br /&gt;
&lt;br /&gt;
====Option 2 (Using Nuget):====&lt;br /&gt;
This option uses [https://www.nuget.org/packages/Krafs.Rimworld.Ref Krafs Rimworld Reference Package] it is less involved than using reference assemblies and is the recommended method.&amp;lt;/br&amp;gt;&lt;br /&gt;
#Follow the above up till ''Add references to RimWorld code''&lt;br /&gt;
#From the Tools menu, select NuGet Package Manager -&amp;gt; Package Manager Settings.&lt;br /&gt;
##In the Settings dialog, under Package Management, change the ''Default package management format'' to '''PackageReference'''.&lt;br /&gt;
##Click OK to close the dialog.&lt;br /&gt;
#Open Nuget Manager and type ''Rimworld''&lt;br /&gt;
#Add Krafs Rimworld Reference&lt;br /&gt;
You can now continue as if you added the assemblies. Doing this makes your project portable, because RimRef can be downloaded by anyone and used from anywhere, unlike Rimworld's assemblies which can't be distributed.&lt;br /&gt;
&lt;br /&gt;
====Option 3 (Using Rimworld Dotnet Template):====&lt;br /&gt;
This option uses [https://github.com/Zeta-of-the-rim/Rimwold-Dotnet-Template Rimworld Dotnet Template] it allows faster creation of mod files including Xml folders&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After installing the template.&lt;br /&gt;
#Open your mod folder&lt;br /&gt;
#create a new folder for your mod (It is best to use the name you want for your mod)&lt;br /&gt;
#Open a command prompt in that folder&lt;br /&gt;
#type ''dotnet new  RimMod'' (This will create a new mod with the name you specified)&lt;br /&gt;
#Open the About folder and edit the About.xml file&lt;br /&gt;
#Open the .sln file in your preferred IDE&lt;br /&gt;
#Add the rimworld assemblies using your preferred method&lt;br /&gt;
&lt;br /&gt;
While this method is faster, it is still good to know how to do it manually.&lt;br /&gt;
&lt;br /&gt;
====Option 4 (Using Cookiecutter):====&lt;br /&gt;
This option uses the [https://ludeon.com/forums/index.php?topic=39038.0 Rimworld Mod Development Cookiecutter] tool.&amp;lt;/br&amp;gt;&lt;br /&gt;
'''Note: despite being automatic and potentially taking away some of the tedium away, the environment it sets up is very particular and this tool is currently not recommended for newcomers.'''&amp;lt;/br&amp;gt;&lt;br /&gt;
''As of Jan 2019, the cookiecutter is set up for Windows development.  Linux/Mac people can still use it, but they will have a few errors to clean up.''&amp;lt;/br&amp;gt;&lt;br /&gt;
# Open Visual Studio&lt;br /&gt;
# Once loaded, go to File -&amp;gt; New -&amp;gt; From Cookiecutter...&lt;br /&gt;
# Search for ''rimworld''&lt;br /&gt;
# Double-click ''cookiecutter-rimworld-mod-development''&lt;br /&gt;
# Change the Template Options:&lt;br /&gt;
## ''Create To'' =&amp;gt; ''Your/Rimworld/Mod/Directory''&lt;br /&gt;
## ''mod_name''&lt;br /&gt;
## ''namespace_name'' (don't change if unsure)&lt;br /&gt;
## ''author'' =&amp;gt; ''your steam username''&lt;br /&gt;
## ''target_version'' =&amp;gt; current RW version (can leave blank for most up-to-date)&lt;br /&gt;
## ''in_game_description'' (not required, can change later in About-Release.xml)&lt;br /&gt;
## ''url'' (can leave blank for link to your Steam Workshop profile)&lt;br /&gt;
# Click &amp;quot;Create and Open Folder&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Sharpdevelop===&lt;br /&gt;
'''Caution:''' Sharpdevelop (or #develop) does NOT CURRENTLY allow for C# 6.0+ syntax without plugins and does NOT ALLOW for C# 7.0+ syntax at all. For your average project this does not matter, however some existing projects are already built entirely upon C# 6.0+ syntax which can not be compiled anymore in Sharpdevelop. Visual Studio does not have these issues and should be your go-to for compiling large projects such as Combat Extended.&lt;br /&gt;
&lt;br /&gt;
# Create a new class library project in your [[Modding Tutorials/Recommended software#IDE.27s|IDE of choice]];&lt;br /&gt;
## Go to File -&amp;gt; New -&amp;gt; Solution;&lt;br /&gt;
## Go to C# or .NET -&amp;gt; Library or Class Library (NOT portable);&lt;br /&gt;
## Enter a project name (solution name automatically updated);&lt;br /&gt;
## Choose a location, preferably:&amp;lt;br/&amp;gt;&amp;lt;pre&amp;gt;(RimWorldInstallFolder)/Mods/(YourModName)/Source&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ''Optional'': Untick &amp;quot;Create a directory for solution&amp;quot;/&amp;quot;Create a project within the solution directory&amp;quot;,&lt;br /&gt;
# In your project, add references to Assembly-CSharp.dll and UnityEngine.dll:&lt;br /&gt;
## In your IDE project file browser, right-click the &amp;quot;References&amp;quot; folder and &amp;quot;Add reference&amp;quot;;&lt;br /&gt;
## Choose the &amp;quot;.NET Assembly Browser&amp;quot; tab and &amp;quot;Browse...&amp;quot;;&lt;br /&gt;
## Navigate towards &amp;lt;pre&amp;gt;RimWorld******/RimWorld******_Data/Managed&amp;lt;/pre&amp;gt; and select files: &amp;lt;br/&amp;gt;&amp;lt;pre&amp;gt;Assembly-CSharp.dll&amp;amp;#10;UnityEngine.CoreModule.dll&amp;lt;/pre&amp;gt;&lt;br /&gt;
## Click &amp;quot;Open&amp;quot; then &amp;quot;OK&amp;quot;;&lt;br /&gt;
## In the References folder, right-click Assembly-CSharp -&amp;gt; Properties and change &amp;quot;Local copy&amp;quot; to False. Do the same for UnityEngine,&lt;br /&gt;
# In your project properties, change the target framework to .NET 4.7.2:&lt;br /&gt;
## In your IDE project file browser, right-click &amp;quot;(YourSolutionName)&amp;quot;;&lt;br /&gt;
## Choose Properties;&lt;br /&gt;
## Go to the &amp;quot;Compiling&amp;quot; tab, &amp;quot;Output&amp;quot;, &amp;quot;Target framework&amp;quot;, &amp;quot;Change&amp;quot; and choose &amp;quot;.NET Framework 4.7.2&amp;quot;,&lt;br /&gt;
# In your project properties, change the build events so only a single file is built:&lt;br /&gt;
## Go to the &amp;quot;Compiling&amp;quot; tab, &amp;quot;Output&amp;quot;, &amp;quot;Debug info&amp;quot; and choose &amp;quot;No debug information&amp;quot;;&lt;br /&gt;
## Right-click your .cs files -&amp;gt; Properties and change &amp;quot;Copy to output&amp;quot; (If you haven't resized the properties bar, this will be truncated to &amp;quot;Copy to out&amp;quot;) to Never,&lt;br /&gt;
# In your project properties, fix the output location to put the DLL in the Assemblies folder:&lt;br /&gt;
## Go to the &amp;quot;Compiling&amp;quot; tab, &amp;quot;Output&amp;quot;, &amp;quot;Output path&amp;quot; and change the output path to &amp;quot;..\..\Assemblies\&amp;quot;.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
&lt;br /&gt;
On Linux it is possible to develop using .NET packages provided by Microsoft:&lt;br /&gt;
# [https://dotnet.microsoft.com/download Install .NET by following the provided instructions.]&lt;br /&gt;
# If you use IDE, use it to build (no further details, not tested).&lt;br /&gt;
# It is possible to build from CLI using a .csproj file. Find a mod that has description pointing to its GitHub sources and copy from there ([https://github.com/llunak/rimworld-dietfiltersinstorage/blob/master/Source/DietFiltersInStorage.csproj example here]), or use another way to create a .csproj file.&lt;br /&gt;
# For building use a command like the following (substitute the proper .csproj file, change Release to Debug for a debug build):&amp;lt;br/&amp;gt;&amp;lt;pre&amp;gt;dotnet build &amp;lt;project file&amp;gt;.csproj /property:Configuration=Release&amp;lt;/pre&amp;gt;&lt;br /&gt;
# If you get errors, possibly the .csproj is Windows-specific and needs to be edited:&lt;br /&gt;
## You may need to fix paths (point them to .dll files in RimWorld/RimWorld*_Data/Managed, but it is generally better to use NuGet as described above in Option 2, as that is platform-independent).&lt;br /&gt;
## See other setups above for other settings (those IDEs write those settings to the .csproj files).&lt;br /&gt;
&lt;br /&gt;
Note that .NET Framework from Microsoft is Windows-only, and some .csproj files do not build without it. Generally it seems those using Windows-specific paths are affected, while those platform-independent work fine. Either use Mono (see below), or use one that works. The example .csproj file linked above can usually be used as a drop-in replacement, with only properties in the first PropertyGroup needing adjustment. If you really want or need it, you can get .NET Framework from Mono, by additionally doing these steps:&lt;br /&gt;
# Install Mono (refer to your distribution's instructions);&lt;br /&gt;
# Change the build command to the following (4.7.2 is the .NET version from the .csproj file):&amp;lt;br/&amp;gt;&amp;lt;pre&amp;gt;FrameworkPathOverride=$(dirname $(which mono))/../lib/mono/4.7.2-api/ dotnet build &amp;lt;project file&amp;gt;.csproj /property:Configuration=Release&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Xamarin/MonoDevelop===&lt;br /&gt;
The setup is similar as the one above. A few special points to address:&lt;br /&gt;
# Mono 4.X isn't backward compatible so you may need to install an older 3.X version of Mono in order to compile against .NET4.7.2 dlls.&lt;br /&gt;
# Make sure you uncheck &amp;quot;Use MSBuild build engine (recommended for this project type)&amp;quot; under project &amp;gt; options &amp;gt; build &amp;gt; general   (You might find this by right-clicking on your project - not solution - name and selecting options)&lt;br /&gt;
# Changing the framework to 4.7.2 can be found (for Linux anyway) in the same place.&lt;br /&gt;
&lt;br /&gt;
More detailed installation instructions for Linux can be found [https://blog.rubenwardy.com/2016/07/21/rimworld-setup-monodevelop/ here] and [https://spdskatr.github.io/RWModdingResources/mono-arch here]. Note that as of now (2021) these may be outdated, so if it doesn't work, you can try the steps described in the Mono section.&lt;br /&gt;
&lt;br /&gt;
===Rider (good for Mac)===&lt;br /&gt;
JetBrains Rider is a great cross-platform C# IDE. Previously a paid product (with exceptions), it now offers a community license, making it free for non-commercial use.&lt;br /&gt;
&lt;br /&gt;
# Open Rider and click New Solution in the welcome dialog.&lt;br /&gt;
## Click Class Library under .NET on the left. The option may take a second to show up.&lt;br /&gt;
## Under Solution Name (and Project Name), enter the name of your mod.&lt;br /&gt;
## Set the Solution Directory to [your mod folder]/Source.&lt;br /&gt;
## Optionally check &amp;quot;put solution and project in the same directory.&amp;quot; This is probably a good idea.&lt;br /&gt;
## Change Framework to .Net Framework 4.7.2. If you're on Windows and 4.7.2 does not show up as an option, you will have to install the &amp;quot;4.7.2 Dev Pack&amp;quot; from [https://dotnet.microsoft.com/en-us/download/visual-studio-sdks Microsoft.]&lt;br /&gt;
## Click Create.&lt;br /&gt;
# In the left side bar, expand your solution, right click your project (mod name with &amp;quot;C#&amp;quot; icon) and click Properties.&lt;br /&gt;
## In the Properties window, select Configurations &amp;gt; Debug on the left and uncheck Debug Symbols.&lt;br /&gt;
## For both configurations, change the Output Path to ../../Assemblies.&lt;br /&gt;
## Click OK.&lt;br /&gt;
# Expand your project, right click References and click Add Reference.&lt;br /&gt;
## Click Add From.&lt;br /&gt;
## Browse to the folder with the RimWorld DLLs&lt;br /&gt;
### DLL Location for Mac: &amp;quot;/Users/[username]/Library/Application Support/Steam/steamapps/common/RimWorld/RimWorldMac.app/Contents/Resources/Data/Managed&lt;br /&gt;
### For Win10: &amp;quot;\Program Files (x86)\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed&amp;quot;&lt;br /&gt;
## Select both Assembly-CSharp.dll and UnityEngine.dll and click OK.&lt;br /&gt;
## Expand Assemblies under References. For both of the assemblies that you just added:&lt;br /&gt;
### Right click the assembly and click Properties.&lt;br /&gt;
### Uncheck &amp;quot;Copy Local&amp;quot; (you may need to scroll down) and click OK.&lt;br /&gt;
&lt;br /&gt;
You're done! Note that Rider has a built-in decompiler—to view the source of a RimWorld class or method, just right-click its name and click Go To &amp;gt; Definition.&lt;br /&gt;
&lt;br /&gt;
===.NET Framework via Commmandline===&lt;br /&gt;
If you are on Windows and for some reason you don't want to use Visual Studio, you can also use the C# compiler that comes with the .NET Framework from within the terminal.&lt;br /&gt;
&lt;br /&gt;
# Install the [https://dotnet.microsoft.com .NET Framework].&lt;br /&gt;
# (Optional) Adding the compiler to PATH.&lt;br /&gt;
## Search for &amp;quot;env&amp;quot; -&amp;gt; Edit system environment variables -&amp;gt; click on &amp;quot;Environment Variables&amp;quot; -&amp;gt; Edit the Path of the user variables -&amp;gt; Add the folder of csc.exe (Usually C:\Windows\Microsoft.NET\Framework\vX.X.XXXXX).&lt;br /&gt;
# Find &amp;lt;br/&amp;gt;&amp;lt;pre&amp;gt;Assembly-CSharp.dll&amp;amp;#10;UnityEngine.CoreModule.dll&amp;lt;/pre&amp;gt; in your game files(Usualy at: C:\Program Files (x86)\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\).&lt;br /&gt;
# Open a terminal and cd to the location of your .cs file.&lt;br /&gt;
# Compile your .cs file (If you skipped adding csc.exe to path, replace it with its full filepath in the following command).&lt;br /&gt;
## It should look something like this:&amp;lt;pre&amp;gt;csc.exe /t:library /r:&amp;quot;C:\Program Files (x86)\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\Assembly-CSharp.dll&amp;quot;,&amp;quot;C:\Program Files (x86)\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll&amp;quot; MyMod.cs&amp;lt;/pre&amp;gt;&lt;br /&gt;
## The command is structured where:&amp;lt;pre&amp;gt;csc.exe&amp;lt;/pre&amp;gt; is the compiler(or the whole filepath), and:&amp;lt;pre&amp;gt;/r:&amp;quot;...&amp;quot;,&amp;quot;...&amp;quot;&amp;lt;/pre&amp;gt; is the filepath of both gamefiles from step 3, and:&amp;lt;pre&amp;gt;MyMod.cs&amp;lt;/pre&amp;gt; is your C# source code.&lt;br /&gt;
# Explanation:&lt;br /&gt;
## the /t flag sets it to be a .dll file.&lt;br /&gt;
## the /r flag references the game files(Not the decompiled source code, the game files).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Visual Studio Code via Dev Container===&lt;br /&gt;
{{Recode|section=1|reason=Section commented out due to unknown, unvalidated source. Ideally a full guide for VCS needs to be written}}&lt;br /&gt;
&amp;lt;!-- VS Code provides with Dev Containers a very simple way to set up an working development environment. To make use of Dev Containers you need VS Code with the Dev Containers Extension and docker installed on your machine.&lt;br /&gt;
&lt;br /&gt;
====Quick Start====&lt;br /&gt;
For a quick start either clone the repository inside your mods folder:&lt;br /&gt;
&amp;lt;pre&amp;gt;git clone https://github.com/N3fastus/RainingGoo&amp;lt;/pre&amp;gt;&lt;br /&gt;
or download a zip archive by visiting the [https://github.com/N3fastus/RainingGoo Repository]. Click &amp;quot;Code&amp;quot;, then &amp;quot;Download ZIP&amp;quot; and unzip the code in your mods folder.&lt;br /&gt;
The Mod has a dependency to [https://github.com/pardeike/HarmonyRimWorld/releases Harmony], this one needs also to be in the &amp;quot;Mods&amp;quot; directory. Download the zip and extract it to the &amp;quot;Mods&amp;quot; folder.&lt;br /&gt;
&lt;br /&gt;
Now open the folder with VS Code. If you are not on Linux you need to adjust the path in '''.devcontainer/docker-compose.yml''' to your platform. &lt;br /&gt;
To start up the container you need to press '''CTRL + Shift + P''' and type '''&amp;quot;Dev Container: Reopen in Container&amp;quot;'''. This might take a few minutes.&lt;br /&gt;
When the container is up and running, switch to the terminal inside VS Code and type:&lt;br /&gt;
&amp;lt;pre&amp;gt;dotnet build&amp;lt;/pre&amp;gt;&lt;br /&gt;
In the Assemblies folder should now be a &amp;quot;RainingGoo.dll&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
====Starting a new Project====&lt;br /&gt;
To start over with a complete new solution, copy the &amp;quot;.devcontainer&amp;quot; folder to your own project and open it in VS Code. &lt;br /&gt;
&lt;br /&gt;
To create a new solution file in the actual location:&lt;br /&gt;
&amp;lt;pre&amp;gt;dotnet new sln&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To create a new project (here a library) in the actual location:&lt;br /&gt;
&amp;lt;pre&amp;gt;dotnet new classlib -n MyNewProject -o .&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To add the created project to the solution file:&lt;br /&gt;
&amp;lt;pre&amp;gt;dotnet sln add Path/to/MyNewProject.csproj&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the configuration of the csproj files compare against the example project above.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Common issues=&lt;br /&gt;
* Can't find the option to target .NET Framework 4.7.2? It may require additional installation steps. In Visual Studio, Tools =&amp;gt; Get Tools and features =&amp;gt; Individual Components =&amp;gt; Select ''.NET Framework 4.7.2 development tools'' (or google installation instructions). Also make sure your project is a ''Class Library (.NET '''Framework''')''. Not .NET Core or .NET Standard.&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
* [[Modding Tutorials/Writing custom code|Writing custom code]] continues on setting up your solution.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Modding tutorials]]&lt;/div&gt;</summary>
		<author><name>Halicade</name></author>
	</entry>
	<entry>
		<id>https://rimworldwiki.com/index.php?title=Modding_Tutorials/Compatibility&amp;diff=160084</id>
		<title>Modding Tutorials/Compatibility</title>
		<link rel="alternate" type="text/html" href="https://rimworldwiki.com/index.php?title=Modding_Tutorials/Compatibility&amp;diff=160084"/>
		<updated>2025-03-02T03:03:19Z</updated>

		<summary type="html">&lt;p&gt;Halicade: /* Defensive patching */  Removing outdated patch method to prevent its usage. PatchOperationConditional should be used&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BackToTutorials}}&lt;br /&gt;
{{Stub}}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
As the pool of mods gets bigger and the game's development stabilises, compatibility between mods becomes more and more important. Prior to Alpha 17, compatibility was often an afterthought, or technically unfeasible. Since then, with the advent of tools like xpath-based [[Modding Tutorials/PatchOperations| PatchOperations]] and [[Modding Tutorials/Harmony| Harmony]], there is no technical excuse for mod conflicts. With these two tools, all mods can co-exist and alter anything in their respective domain without interfering with the operation of other mods. All that is required is at least one, but preferably two modders willing to cooperate. &lt;br /&gt;
&lt;br /&gt;
=Mod conflicts=&lt;br /&gt;
Two or more mods can alter the same thing. If both adhere to best practices, this can happen with minimal or no issues. The most common cause of XML mod conflicts is [[Modding_Tutorials/XML_file_structure#Inheritance| overwriting (abstract) bases]], overwriting Defs wholesale and [[Modding Tutorials/Harmony| destructive prefixes]]. Note that while two mods can both change the same thing, we can't really speak of a conflict until unintended or undesired behaviour arises.&lt;br /&gt;
&lt;br /&gt;
=Avoiding mod conflicts=&lt;br /&gt;
&lt;br /&gt;
* Don't overwrite abstract bases. You can use [https://github.com/RimWorld-CCL-Reborn/AllYourBase this tool] to easily find mods which don't adhere to best practices. &lt;br /&gt;
* Stay in scope. Do your patching defensively.&lt;br /&gt;
* Don't overwrite vanilla's Defs unless you absolutely have to. If you just want to change just a few values, use [[Modding Tutorials/PatchOperations| xpath]].&lt;br /&gt;
* In C#, keep in mind that things can and will be null. Even more so when dealing with other mods: sometimes mods have to be creative with their solutions (and other times their creator just plain has no idea what they're doing).&lt;br /&gt;
&lt;br /&gt;
==Defensive patching==&lt;br /&gt;
Modders should keep in mind that there are more mods than just theirs and Core. Users run with dozens, if not hundreds of mods. Always try to limit your scope so your alterations only apply to those things you intend to change.&lt;br /&gt;
&lt;br /&gt;
===XML===&lt;br /&gt;
When adding something (like a stackLimit to Thoughts, or comps to ThingsWithComps), keep in mind you're likely not the first. Here is an example of a defensive xpath:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Add /comps/li/compClass if there are no comps yet. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Add /li/compClass to /comps if exists (i.e. other mod already added the comps field first) --&amp;gt;&lt;br /&gt;
&amp;lt;Operation Class=&amp;quot;PatchOperationConditional&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xpath&amp;gt;/Defs/WorldObjectDef[defName=&amp;quot;Caravan&amp;quot;]/comps&amp;lt;/xpath&amp;gt;&lt;br /&gt;
    &amp;lt;nomatch Class=&amp;quot;PatchOperationAdd&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xpath&amp;gt;/Defs/WorldObjectDef[defName=&amp;quot;Caravan&amp;quot;]&amp;lt;/xpath&amp;gt;&lt;br /&gt;
        &amp;lt;value&amp;gt;&lt;br /&gt;
            &amp;lt;comps&amp;gt;&lt;br /&gt;
                &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;compClass&amp;gt;MyNamespace.MyComp&amp;lt;/compClass&amp;gt;&lt;br /&gt;
                &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;/comps&amp;gt;&lt;br /&gt;
        &amp;lt;/value&amp;gt;&lt;br /&gt;
    &amp;lt;/nomatch&amp;gt;&lt;br /&gt;
    &amp;lt;match Class=&amp;quot;PatchOperationAdd&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xpath&amp;gt;/Defs/WorldObjectDef[defName=&amp;quot;Caravan&amp;quot;]/comps&amp;lt;/xpath&amp;gt;&lt;br /&gt;
        &amp;lt;value&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;compClass&amp;gt;MyNamespace.MyComp&amp;lt;/compClass&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/value&amp;gt;&lt;br /&gt;
    &amp;lt;/match&amp;gt;&lt;br /&gt;
&amp;lt;/Operation&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===C#===&lt;br /&gt;
C# compatibility issues generally fall into these categories:&amp;lt;br/&amp;gt;&lt;br /&gt;
* Destructive prefixes&lt;br /&gt;
::These should be avoided if at all possible. In a lot of cases, you can substitute with a postfix instead. You can also limit the impact of your destructive prefix by staying in scope as much as possible. It's entirely feasible to check for a def, type, comp, whatever, and determine if you should really return false in all cases.&lt;br /&gt;
* Null references&lt;br /&gt;
::You're probably not doing enough null-checking. Null is a valid value for a lot of things in RimWorld.&lt;br /&gt;
* Weird interactions&lt;br /&gt;
::These have to be handled on a case by case basis.&lt;br /&gt;
&lt;br /&gt;
==Mod load order==&lt;br /&gt;
If one mod wants to make [[Muffalo]]s green and another wants to make them red, one of them is going to win. The general understanding of mod load order is that &amp;quot;mods on the bottom win and overwrite mods on top&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
As with most things, the truth is a bit more fine-grained. It's true that if &amp;quot;Core, Mod 1, Mod 2, Mod 3&amp;quot; is the load order, and it's true that the last mod in the load order &amp;quot;wins&amp;quot;, but the actual load order is a bit different.&lt;br /&gt;
&lt;br /&gt;
# XML&lt;br /&gt;
# xpath&lt;br /&gt;
# C#&lt;br /&gt;
&lt;br /&gt;
The game first loads all XML (defs, mostly) from Core, Mod 1, Mod 2, Mod 3&lt;br /&gt;
Then it applies all xpath patches from  Mod 1, Mod 2, Mod 3&lt;br /&gt;
Then it loads the C# from Mod 1, Mod 2, Mod 3&lt;br /&gt;
&lt;br /&gt;
Core doesn't use xpath or load any C#, so they're not in that list. The C# for RimWorld is already loaded by that point, roughly speaking.&lt;br /&gt;
So if Mod 3 overwrites something in XML, but Mod 2 overwrites it in xpath and Mod 1 overwrites it in C#, it's Mod 1 that wins -- even though Mod 3 and Mod 2 come after it in the load order.&lt;br /&gt;
&lt;br /&gt;
There are a few things that matter with load order:&lt;br /&gt;
- Does the mod require a different mod? Examples of that are mods that require HugsLib, Proper Shotguns, Turret Extensions, Alien Races, JecsTools, whatever. If you are missing a dependency, you'll notice: You get a nice red error saying something like&lt;br /&gt;
Could not find type named TurretExtensions.CompProperties_Upgradable from node &amp;lt;A lot of XML&amp;gt; and missing a dependency like that will put the entire game in a corrupted and unplayable state.&lt;br /&gt;
&lt;br /&gt;
[[Category:Modding tutorials]]&lt;/div&gt;</summary>
		<author><name>Halicade</name></author>
	</entry>
	<entry>
		<id>https://rimworldwiki.com/index.php?title=Modding_Tutorials/Basic_Plant&amp;diff=158573</id>
		<title>Modding Tutorials/Basic Plant</title>
		<link rel="alternate" type="text/html" href="https://rimworldwiki.com/index.php?title=Modding_Tutorials/Basic_Plant&amp;diff=158573"/>
		<updated>2025-01-15T02:04:34Z</updated>

		<summary type="html">&lt;p&gt;Halicade: Updating supported version number&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Basic Plant}}&lt;br /&gt;
{{BackToTutorials}}&lt;br /&gt;
&lt;br /&gt;
This is a basic RimWorld mod tutorial for the purpose of creating a custom plant. We will also use the plant matter gathered from this custom plant in a later tutorial.&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
In this tutorial you will:&lt;br /&gt;
&lt;br /&gt;
* Create [[Modding_Tutorials/ThingDef|ThingDef]]s for a '''new plant''': theragold, a genetically modified cultivar of marigolds with both nutritional and medicinal benefits&lt;br /&gt;
* Learn how to use '''XML inheritance''' to share data between multiple [[Modding_Tutorials/ThingDef|ThingDef]]s&lt;br /&gt;
* Assign '''custom mature and immature plant textures''' to your new plant&lt;br /&gt;
* '''Add your new plant to existing vanilla and modded biomes'''&lt;br /&gt;
* Create a [[Modding_Tutorials/ThingDef|ThingDef]] for a '''new raw food''' item&lt;br /&gt;
* Create a new [[Modding_Tutorials/RecipeDef|RecipeDef]] to '''craft herbal medicine''' using this new item&lt;br /&gt;
&lt;br /&gt;
== Recommended Reading ==&lt;br /&gt;
* [[Modding_Tutorials/Mod_Folder_Structure|Mod Folder Structure]]&lt;br /&gt;
* [[Modding_Tutorials/XML_Defs|Defs]]&lt;br /&gt;
* [[Modding_Tutorials/MayRequire|MayRequire]]&lt;br /&gt;
&lt;br /&gt;
== Sample Repository ==&lt;br /&gt;
[[File:ExamplePlant.png|none|border|link=https://github.com/Aelanna/ExamplePlant]]&lt;br /&gt;
A working implementation of this mod can be found [https://github.com/Aelanna/ExamplePlant in this GitHub repository]. You can use it to compare against your work or as a basis for modification!&lt;br /&gt;
&lt;br /&gt;
== Folder Setup ==&lt;br /&gt;
&lt;br /&gt;
First, you will want to create the files and folders necessary for this mod:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
Mods&lt;br /&gt;
└ MyModFolder&lt;br /&gt;
  ├ About&lt;br /&gt;
  │ ├ About.xml&lt;br /&gt;
  │ └ Preview.png&lt;br /&gt;
  ├ Defs&lt;br /&gt;
  │ ├ RecipeDefs&lt;br /&gt;
  │ │ └ ExampleRecipe_Theragold.xml&lt;br /&gt;
  │ ├ ThingDefs_Items&lt;br /&gt;
  │ │ └ ExampleItem_Theragold.xml&lt;br /&gt;
  │ └ ThingDefs_Plants&lt;br /&gt;
  │   └ ExamplePlant_Theragold.xml&lt;br /&gt;
  └ Textures&lt;br /&gt;
    └ ExampleMod&lt;br /&gt;
      ├ ImmatureTheragold&lt;br /&gt;
      │ └ ImmatureTheragold_a.png&lt;br /&gt;
      ├ Theragold&lt;br /&gt;
      │ └ Theragold_a.png&lt;br /&gt;
      └ RawTheragold.png&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please check out the [[Modding_Tutorials/Mod_Folder_Structure|mod folder structure guide]] for more information about individual folders.&lt;br /&gt;
&lt;br /&gt;
=== About.xml ===&lt;br /&gt;
&lt;br /&gt;
Your &amp;lt;code&amp;gt;About.xml&amp;lt;/code&amp;gt; is used to identify your mod to RimWorld; please see [[Modding_Tutorials/About.xml|the About.xml reference page]] for more information. Be sure to replace &amp;quot;AuthorName&amp;quot; with your own name:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;ModMetaData&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- This is the internal identifier for your mod. --&amp;gt;&lt;br /&gt;
  &amp;lt;!-- It is recommended that you make it unique to as to avoid potential collisions with other authors; --&amp;gt;&lt;br /&gt;
  &amp;lt;!--     if Rimworld detects multiple mods with the same packageId then it will refuse to load all of them. --&amp;gt;&lt;br /&gt;
  &amp;lt;packageId&amp;gt;AuthorName.ExamplePlant&amp;lt;/packageId&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- This is both the displayed name of your mod as well as the name used for patch targeting. --&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;Example Plant&amp;lt;/name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Your name goes here. --&amp;gt;&lt;br /&gt;
  &amp;lt;author&amp;gt;AuthorName&amp;lt;/author&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- A version number for your own tracking --&amp;gt;&lt;br /&gt;
  &amp;lt;!-- See wiki About.xml guide for concerns regarding this field for RimWorld versions prior to 1.4 --&amp;gt;&lt;br /&gt;
  &amp;lt;modVersion&amp;gt;1.0&amp;lt;/modVersion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- These are the RimWorld game versions that your mod supports. --&amp;gt;&lt;br /&gt;
  &amp;lt;!-- It is recommended that you only list versions that you have explicitly tested to ensure they work, --&amp;gt;&lt;br /&gt;
  &amp;lt;!-- as even basic XML options can change between major versions of the game. --&amp;gt;&lt;br /&gt;
  &amp;lt;supportedVersions&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1.5&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/supportedVersions&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- This is the description of your mod shown in both the vanilla mod manager as well as modded managers. --&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;This is an example melee weapon mod made for the RimWorld Wiki.&amp;lt;/description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ModMetaData&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sample Assets ===&lt;br /&gt;
&lt;br /&gt;
You can use these as the example textures:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;TwoColumnCollapsibleLayout&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;TwoColumnCollapsibleLayout-section&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;TwoColumnCollapsibleLayout-subtitle&amp;quot;&amp;gt;Mature Plant Texture&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;TwoColumnCollapsibleLayout-text&amp;quot;&amp;gt;&lt;br /&gt;
[[File:ExamplePlant_Theragold.png|none]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;TwoColumnCollapsibleLayout-section&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;TwoColumnCollapsibleLayout-subtitle&amp;quot;&amp;gt;Immature Plant Texture&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;TwoColumnCollapsibleLayout-text&amp;quot;&amp;gt;&lt;br /&gt;
[[File:ExamplePlant_ImmatureTheragold.png|none]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;TwoColumnCollapsibleLayout-section&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;TwoColumnCollapsibleLayout-subtitle&amp;quot;&amp;gt;Raw Food Item Texture&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;TwoColumnCollapsibleLayout-text&amp;quot;&amp;gt;&lt;br /&gt;
[[File:ExamplePlant_RawTheragold.png|none]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Instructions ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Create plant ThingDefs ===&lt;br /&gt;
&lt;br /&gt;
Our first step is to create the XML that represents our new plant. Whenever possible, this is best accomplished by copying vanilla [[Modding_Tutorials/ThingDef|ThingDef]]s and modifying them; in this case we will use the three Defs that constitute the vanilla [[healroot]] as our starting point, as it is the most similar existing plant to what we want to create. The XML for healroot can be found in &amp;lt;code&amp;gt;Data/Core/Defs/ThingDefs_Plants/Plants_Cultivated_Farm.xml&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Data/Core/Defs/ThingDefs_Plants/Plants_Wild_General.xml&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In our own &amp;lt;code&amp;gt;ExamplePlant_Theragold.xml&amp;lt;/code&amp;gt;, we'll have the following three ThingDefs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;Defs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Abstract base: TheragoldBase --&amp;gt;&lt;br /&gt;
  &amp;lt;!-- The data from this node will be inherited by our two &amp;quot;concrete&amp;quot; Defs --&amp;gt;&lt;br /&gt;
  &amp;lt;ThingDef ParentName=&amp;quot;PlantBase&amp;quot; Name=&amp;quot;TheragoldBase&amp;quot; Abstract=&amp;quot;True&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- pasted content omitted --&amp;gt;&lt;br /&gt;
  &amp;lt;/ThingDef&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Cultivated theragold --&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This ThingDef will inherit all fields from the abstract base TheragoldBase --&amp;gt;&lt;br /&gt;
  &amp;lt;ThingDef ParentName=&amp;quot;TheragoldBase&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;defName&amp;gt;ExamplePlant_Theragold&amp;lt;/defName&amp;gt;&lt;br /&gt;
    &amp;lt;label&amp;gt;theragold&amp;lt;/label&amp;gt;&lt;br /&gt;
    &amp;lt;!-- pasted content omitted --&amp;gt;&lt;br /&gt;
  &amp;lt;/ThingDef&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Wild theragold --&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This ThingDef will inherit all fields from the abstract base TheragoldBase --&amp;gt;&lt;br /&gt;
  &amp;lt;ThingDef ParentName=&amp;quot;TheragoldBase&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;defName&amp;gt;ExamplePlant_TheragoldWild&amp;lt;/defName&amp;gt;&lt;br /&gt;
    &amp;lt;label&amp;gt;wild theragold&amp;lt;/label&amp;gt;&lt;br /&gt;
    &amp;lt;!-- pasted content omitted --&amp;gt;&lt;br /&gt;
  &amp;lt;/ThingDef&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/Defs&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Modify our copied ThingDefs ===&lt;br /&gt;
&lt;br /&gt;
In order to differentiate our plant from healroot, we'll make the following changes:&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;TheragoldBase&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
By specifying &amp;lt;code&amp;gt;Abstract=&amp;quot;True&amp;quot;&amp;lt;/code&amp;gt; as an attribute, our base ThingDef will not actually be loaded on its own, however its fields will be inherited by ThingDefs that specify its &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; as a parent via &amp;lt;code&amp;gt;ParentName=&amp;quot;TheragoldBase&amp;quot;&amp;lt;/code&amp;gt;. This will allow us to share field values between two or more ThingDefs without copying each one.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;TutorialTableWrapper&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;TutorialCodeTable&amp;quot;&lt;br /&gt;
! XML !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;graphicData&amp;gt;&lt;br /&gt;
  &amp;lt;texPath&amp;gt;ExampleMod/Theragold&amp;lt;/texPath&amp;gt;&lt;br /&gt;
  &amp;lt;graphicClass&amp;gt;Graphic_Random&amp;lt;/graphicClass&amp;gt;&lt;br /&gt;
&amp;lt;/graphicData&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
This defines the default mature graphic for our new plant. Graphic_Random is a graphicClass that must be pointed at a folder; this is used by most vanilla plants and allows you to have multiple textures for more visual variety.&lt;br /&gt;
&lt;br /&gt;
In the specific case of plants, the texture will also be horizontally flipped at random for additional variety.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;selectable&amp;gt;true&amp;lt;/selectable&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
By default, plants that inherit from &amp;lt;code&amp;gt;PlantBase&amp;lt;/code&amp;gt; are not selectable. This should be overridden if colonists can meaningfully interact with it in any way; the only vanilla plants that are not selectable are completely non-interactible plants such as grasses, shrubs, and anima and gauranlen grass.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;plant&amp;gt;&lt;br /&gt;
  &amp;lt;immatureGraphicPath&amp;gt;ExampleMod/ImmatureTheragold&amp;lt;/immatureGraphicPath&amp;gt;&lt;br /&gt;
  &amp;lt;growDays&amp;gt;8&amp;lt;/growDays&amp;gt;&lt;br /&gt;
  &amp;lt;dieIfLeafless&amp;gt;false&amp;lt;/dieIfLeafless&amp;gt;&lt;br /&gt;
  &amp;lt;harvestWork&amp;gt;400&amp;lt;/harvestWork&amp;gt;&lt;br /&gt;
  &amp;lt;harvestTag&amp;gt;Standard&amp;lt;/harvestTag&amp;gt;&lt;br /&gt;
  &amp;lt;harvestedThingDef&amp;gt;ExamplePlant_RawTheragold&amp;lt;/harvestedThingDef&amp;gt;&lt;br /&gt;
  &amp;lt;harvestYield&amp;gt;8&amp;lt;/harvestYield&amp;gt;&lt;br /&gt;
  &amp;lt;topWindExposure&amp;gt;0.1&amp;lt;/topWindExposure&amp;gt;&lt;br /&gt;
  &amp;lt;visualSizeRange&amp;gt;0.3~1.0&amp;lt;/visualSizeRange&amp;gt;&lt;br /&gt;
  &amp;lt;wildOrder&amp;gt;2&amp;lt;/wildOrder&amp;gt;&lt;br /&gt;
  &amp;lt;allowAutoCut&amp;gt;false&amp;lt;/allowAutoCut&amp;gt;&lt;br /&gt;
&amp;lt;/plant&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The &amp;lt;code&amp;gt;plant&amp;lt;/code&amp;gt; tag contains many properties and settings related to plants in RimWorld. The ones we specifically add or change here are the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;immatureGraphicPath&amp;lt;/code&amp;gt; sets the texture used for this planet when it is immature (it cannot be harvested yet). This uses the same &amp;lt;code&amp;gt;graphicClass&amp;lt;/code&amp;gt; as the main graphic data.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;growDays&amp;lt;/code&amp;gt; represents the amount of time in whole days that it takes for this plant to mature. Note that since plants rest at night, the actual number of in-game days required will be longer than specified; this value will be used for the wild variant of our plant and we will override it for the cultivated version.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;harvestedThingDef&amp;lt;/code&amp;gt; is the item that will be created when this plant is harvested. We will define it in a later step.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;harvestYield&amp;lt;/code&amp;gt; is the amount of the &amp;lt;code&amp;gt;harvestedThingDef&amp;lt;/code&amp;gt; that will be created when this plant is harvested. Note that the final yield will be affected by the pawn's Plant skill and stats.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;ExamplePlant_Theragold&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
This will represent the cultivated variant of our new plant. We will start with the vanilla &amp;lt;code&amp;gt;Plant_Healroot&amp;lt;/code&amp;gt; and modify the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;TutorialTableWrapper&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;TutorialCodeTable&amp;quot;&lt;br /&gt;
! XML !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ThingDef ParentName=&amp;quot;TheragoldBase&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
We will use our new custom abstract base instead of &amp;lt;code&amp;gt;HealrootBase&amp;lt;/code&amp;gt; as the parent for this ThingDef.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;defName&amp;gt;ExamplePlant_Theragold&amp;lt;/defName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The &amp;lt;code&amp;gt;defName&amp;lt;/code&amp;gt; of a ThingDef is its identity and must be globally unique across all mods and official content. It is strongly recommended that it is prefixed with a project or mod name, so in this case we will use &amp;quot;ExamplePlant_&amp;quot; as our prefix.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;label&amp;gt;theragold&amp;lt;/label&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A ThingDef's label is its in-game name. Unless it is a proper name, it should be in lowercase so that it can be injected naturally into sentences that use it. RimWorld will automatically capitalize it as necessary if used in titles or as the start of a sentence.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;Engineered by a long-forgotten glitterworld, theragolds are a genetically modified cultivar of marigolds intended for seeding on terraformed garden worlds. While not particularly efficient at either, theragolds can be eaten for nutrition or processed into various medicinal products. Its hardiness and relative ease of cultivation makes it a valuable secondary crop for frontier colonies.\n\nThis secondary cultivar of theragold is faster-growing but less hardy, and intended for cultivation by frontier colonies.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
This is the full description of our plant as shown in the full stat card when being inspected.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;plant&amp;gt;&lt;br /&gt;
  &amp;lt;growDays&amp;gt;5&amp;lt;/growDays&amp;gt;&lt;br /&gt;
  &amp;lt;sowWork&amp;gt;250&amp;lt;/sowWork&amp;gt;&lt;br /&gt;
  &amp;lt;sowMinSkill&amp;gt;6&amp;lt;/sowMinSkill&amp;gt;&lt;br /&gt;
  &amp;lt;sowTags&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Ground&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Hydroponic&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/sowTags&amp;gt;&lt;br /&gt;
  &amp;lt;purpose&amp;gt;Food&amp;lt;/purpose&amp;gt;&lt;br /&gt;
&amp;lt;/plant&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
We will add or override the following fields in our &amp;lt;code&amp;gt;plant&amp;lt;/code&amp;gt; properties:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;growDays&amp;lt;/code&amp;gt; for the cultivated variant is much shorter at 5 days. This is slower than rice but faster than potatoes, corn, or healroot. Factored in with its yield, this makes our new plant significantly less nutrition-efficient than any of the three core food crops.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sowWork&amp;lt;/code&amp;gt; is slightly more involved than the 170 for core food crops.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sowMinSkill&amp;lt;/code&amp;gt; of 6 is higher than any vanilla food crop but lower than healroot, which requires 8.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sowTags&amp;lt;/code&amp;gt; determine where this plant can be sown. Our new plant can be sown in the Ground or in Hydroponics, but cannot be down in Decorative locations such as flower pots.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;purpose&amp;lt;/code&amp;gt; Unlike healroot, the primary immediate use for our plant is food.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;ExamplePlant_TheragoldWild&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
This will represent the wild variant of our new plant. We will start with the vanilla &amp;lt;code&amp;gt;Plant_HealrootWild&amp;lt;/code&amp;gt; and modify the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;TutorialTableWrapper&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;TutorialCodeTable&amp;quot;&lt;br /&gt;
! XML !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ThingDef ParentName=&amp;quot;TheragoldBase&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
We will use our new custom abstract base instead of &amp;lt;code&amp;gt;HealrootBase&amp;lt;/code&amp;gt; as the parent for this ThingDef.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;defName&amp;gt;ExamplePlant_TheragoldWild&amp;lt;/defName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The &amp;lt;code&amp;gt;defName&amp;lt;/code&amp;gt; of a ThingDef is its identity and must be globally unique across all mods and official content. It is strongly recommended that it is prefixed with a project or mod name, so in this case we will use &amp;quot;ExamplePlant_&amp;quot; as our prefix.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;label&amp;gt;wild theragold&amp;lt;/label&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A ThingDef's label is its in-game name. Unless it is a proper name, it should be in lowercase so that it can be injected naturally into sentences that use it. RimWorld will automatically capitalize it as necessary if used in titles or as the start of a sentence.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;Engineered by a long-forgotten glitterworld, theragolds are a genetically modified cultivar of marigolds intended for seeding on terraformed garden worlds. While not particularly efficient at either, theragolds can be eaten for nutrition or processed into various medicinal products. Its hardiness and relative ease of cultivation makes it a valuable secondary crop for frontier colonies.\n\nThis original cultivar of theragold is hardier but slower-growing than the modified variant intended for human cultivation and can be found growing wild in a variety of biomes.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
This is the full description of our plant as shown in the full stat card when being inspected.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;neverMultiSelect&amp;gt;false&amp;lt;/neverMultiSelect&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
By default, plants will not be selected when the player band-box selects regions of the map. We want to override this behavior as wild theragold is both edible and has medicinal value.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;plant&amp;gt;&lt;br /&gt;
  &amp;lt;wildClusterRadius&amp;gt;4&amp;lt;/wildClusterRadius&amp;gt;&lt;br /&gt;
  &amp;lt;wildClusterWeight&amp;gt;80&amp;lt;/wildClusterWeight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;wildBiomes&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- These values match the vanilla weights of wild healroot --&amp;gt;&lt;br /&gt;
    &amp;lt;TemperateForest&amp;gt;0.05&amp;lt;/TemperateForest&amp;gt;&lt;br /&gt;
    &amp;lt;TemperateSwamp&amp;gt;0.05&amp;lt;/TemperateSwamp&amp;gt;&lt;br /&gt;
    &amp;lt;BorealForest&amp;gt;0.16&amp;lt;/BorealForest&amp;gt;&lt;br /&gt;
    &amp;lt;Tundra&amp;gt;0.05&amp;lt;/Tundra&amp;gt;&lt;br /&gt;
    &amp;lt;ColdBog&amp;gt;0.05&amp;lt;/ColdBog&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- These are examples of optional compatibility entries for modded biomes --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- This is the &amp;quot;feralisk-infested jungle&amp;quot; biome from Alpha Biomes by Sarg --&amp;gt;&lt;br /&gt;
    &amp;lt;AB_FeraliskInfestedJungle MayRequire=&amp;quot;sarg.alphabiomes&amp;quot;&amp;gt;0.05&amp;lt;/AB_FeraliskInfestedJungle&amp;gt;&lt;br /&gt;
    &amp;lt;!-- This is the &amp;quot;idyllic meadow&amp;quot; biome from Alpha Biomes by Sarg --&amp;gt;&lt;br /&gt;
    &amp;lt;AB_IdyllicMeadows MayRequire=&amp;quot;sarg.alphabiomes&amp;quot;&amp;gt;0.05&amp;lt;/AB_IdyllicMeadows&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- This is the &amp;quot;alpine meadow&amp;quot; biome from More Vanilla Biomes by Zylleon --&amp;gt;&lt;br /&gt;
    &amp;lt;ZBiome_AlpineMeadow MayRequire=&amp;quot;zylle.MoreVanillaBiomes&amp;quot;&amp;gt;0.05&amp;lt;/ZBiome_AlpineMeadow&amp;gt;&lt;br /&gt;
    &amp;lt;!-- This is the &amp;quot;cloud forest&amp;quot; biome from More Vanilla Biomes by Zylleon --&amp;gt;&lt;br /&gt;
    &amp;lt;ZBiome_CloudForest MayRequire=&amp;quot;zylle.MoreVanillaBiomes&amp;quot;&amp;gt;0.05&amp;lt;/ZBiome_CloudForest&amp;gt;&lt;br /&gt;
    &amp;lt;!-- This is the &amp;quot;desert oasis&amp;quot; biome from More Vanilla Biomes by Zylleon --&amp;gt;&lt;br /&gt;
    &amp;lt;ZBiome_DesertOasis MayRequire=&amp;quot;zylle.MoreVanillaBiomes&amp;quot;&amp;gt;0.05&amp;lt;/ZBiome_DesertOasis&amp;gt;&lt;br /&gt;
    &amp;lt;!-- This is the &amp;quot;grasslands&amp;quot; biome from More Vanilla Biomes by Zylleon --&amp;gt;&lt;br /&gt;
    &amp;lt;ZBiome_Grasslands MayRequire=&amp;quot;zylle.MoreVanillaBiomes&amp;quot;&amp;gt;0.05&amp;lt;/ZBiome_Grasslands&amp;gt;&lt;br /&gt;
    &amp;lt;!-- This is the &amp;quot;marsh&amp;quot; biome from More Vanilla Biomes by Zylleon --&amp;gt;&lt;br /&gt;
    &amp;lt;ZBiome_Marsh MayRequire=&amp;quot;zylle.MoreVanillaBiomes&amp;quot;&amp;gt;0.05&amp;lt;/ZBiome_Marsh&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- This is the &amp;quot;boreal island&amp;quot; biome from Biomes! Islands by the Biomes! team --&amp;gt;&lt;br /&gt;
    &amp;lt;BiomesIslands_BorealIsland MayRequire=&amp;quot;BiomesTeam.BiomesIslands&amp;quot;&amp;gt;0.16&amp;lt;/BiomesIslands_BorealIsland&amp;gt;&lt;br /&gt;
    &amp;lt;!-- This is the &amp;quot;temperate island&amp;quot; biome from Biomes! Islands by the Biomes! team --&amp;gt;&lt;br /&gt;
    &amp;lt;BiomesIslands_TemperateIsland MayRequire=&amp;quot;BiomesTeam.BiomesIslands&amp;quot;&amp;gt;0.05&amp;lt;/BiomesIslands_TemperateIsland&amp;gt;&lt;br /&gt;
    &amp;lt;!-- This is the &amp;quot;temperate archipelago&amp;quot; biome from Biomes! Islands by the Biomes! team --&amp;gt;&lt;br /&gt;
    &amp;lt;BiomesIslands_TemperateArchipelago MayRequire=&amp;quot;BiomesTeam.BiomesIslands&amp;quot;&amp;gt;0.05&amp;lt;/BiomesIslands_TemperateArchipelago&amp;gt;&lt;br /&gt;
    &amp;lt;!-- This is the &amp;quot;tropical island&amp;quot; biome from Biomes! Islands by the Biomes! team --&amp;gt;&lt;br /&gt;
    &amp;lt;BiomesIslands_TropicalIsland MayRequire=&amp;quot;BiomesTeam.BiomesIslands&amp;quot;&amp;gt;0.05&amp;lt;/BiomesIslands_TropicalIsland&amp;gt;&lt;br /&gt;
    &amp;lt;!-- This is the &amp;quot;tropical archipelago&amp;quot; biome from Biomes! Islands by the Biomes! team --&amp;gt;&lt;br /&gt;
    &amp;lt;BiomesIslands_TropicalArchipelago MayRequire=&amp;quot;BiomesTeam.BiomesIslands&amp;quot;&amp;gt;0.05&amp;lt;/BiomesIslands_TropicalArchipelago&amp;gt;&lt;br /&gt;
    &amp;lt;!-- This is the &amp;quot;tundra island&amp;quot; biome from Biomes! Islands by the Biomes! team --&amp;gt;&lt;br /&gt;
    &amp;lt;BiomesIslands_TundraIsland MayRequire=&amp;quot;BiomesTeam.BiomesIslands&amp;quot;&amp;gt;0.05&amp;lt;/BiomesIslands_TundraIsland&amp;gt;&lt;br /&gt;
    &amp;lt;!-- This is the &amp;quot;tundra archipelago&amp;quot; biome from Biomes! Islands by the Biomes! team --&amp;gt;&lt;br /&gt;
    &amp;lt;BiomesIslands_TundraArchipelago MayRequire=&amp;quot;BiomesTeam.BiomesIslands&amp;quot;&amp;gt;0.05&amp;lt;/BiomesIslands_TundraArchipelago&amp;gt;&lt;br /&gt;
    &amp;lt;!-- This is the &amp;quot;chromatic oasis&amp;quot; biome from Biomes! Oasis by the Biomes! team --&amp;gt;&lt;br /&gt;
    &amp;lt;BMT_ChromaticOasis MayRequire=&amp;quot;BiomesTeam.Oasis&amp;quot;&amp;gt;0.2&amp;lt;/BMT_ChromaticOasis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/wildBiomes&amp;gt;&lt;br /&gt;
&amp;lt;/plant&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
&amp;lt;code&amp;gt;wildBiomes&amp;lt;/code&amp;gt; is the only critical addition here for the wild variant of our plant. This determines the biomes in which our plant can naturally spawn, as well as the ecosystem weight within those biomes, which we will match to the weight of healroot. While this can also be accomplished by using [[Modding_Tutorials/PatchOperations|PatchOperations]], using the &amp;lt;code&amp;gt;wildBiomes&amp;lt;/code&amp;gt; tag is far easier.&lt;br /&gt;
&lt;br /&gt;
In addition to vanilla biomes, we also have optional compatibility entries for several popular biome mods. These examples use [[Modding_Tutorials/MayRequire|MayRequire]] to safely disable themselves if the specified mod is not loaded, and have been listed here with their authors' permission.&lt;br /&gt;
&lt;br /&gt;
Note that this is not an exhaustive list of either vanilla biomes nor the modded biomes in their respective mods; these are the ones that our plant should plausibly appear in and individual choices are subject to creative liberty.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. Create a raw food ThingDef ===&lt;br /&gt;
&lt;br /&gt;
Now, we will create a new ThingDef to represent the raw food item harvested from our new plant. As before, we can and should copy an existing vanilla ThingDef as a starting point; in this case, we can copy &amp;lt;code&amp;gt;RawRice&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RawPotatoes&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;RawCorn&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;Data/Core/Defs/ThingDefs_Items/Items_Resource_RawPlant.xml&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;Defs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Example raw food: raw theragold --&amp;gt;&lt;br /&gt;
  &amp;lt;ThingDef ParentName=&amp;quot;PlantFoodRawBase&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- pasted content omitted --&amp;gt;&lt;br /&gt;
  &amp;lt;/ThingDef&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/Defs&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modifying the ThingDef ====&lt;br /&gt;
&lt;br /&gt;
This will represent the wild variant of our new plant. We will start with the vanilla &amp;lt;code&amp;gt;Plant_HealrootWild&amp;lt;/code&amp;gt; and modify the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;TutorialTableWrapper&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;TutorialCodeTable&amp;quot;&lt;br /&gt;
! XML !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;defName&amp;gt;ExamplePlant_RawTheragold&amp;lt;/defName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The &amp;lt;code&amp;gt;defName&amp;lt;/code&amp;gt; of a ThingDef is its identity and must be globally unique across all mods and official content. It is strongly recommended that it is prefixed with a project or mod name, so in this case we will use &amp;quot;ExamplePlant_&amp;quot; as our prefix.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;label&amp;gt;theragold flowers&amp;lt;/label&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A ThingDef's label is its in-game name. Unless it is a proper name, it should be in lowercase so that it can be injected naturally into sentences that use it. RimWorld will automatically capitalize it as necessary if used in titles or as the start of a sentence.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;Raw theragold flowers. This can be cooked into meals or crafted into various medicinal products.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
This is the full description of our item as shown in the full stat card when being inspected.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;graphicData&amp;gt;&lt;br /&gt;
  &amp;lt;texPath&amp;gt;ExampleMod/RawTheragold&amp;lt;/texPath&amp;gt;&lt;br /&gt;
&amp;lt;/graphicData&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
This is the texture we will use for our food item. Note that &amp;lt;code&amp;gt;PlantFoodRawBase&amp;lt;/code&amp;gt; uses &amp;lt;code&amp;gt;Graphic_Single&amp;lt;/code&amp;gt;, so we will point the &amp;lt;code&amp;gt;texPath&amp;lt;/code&amp;gt; directly at the texture instead of at a folder.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;comps&amp;gt;&lt;br /&gt;
  &amp;lt;li Class=&amp;quot;CompProperties_Rottable&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;daysToRotStart&amp;gt;30&amp;lt;/daysToRotStart&amp;gt;&lt;br /&gt;
    &amp;lt;rotDestroys&amp;gt;true&amp;lt;/rotDestroys&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/comps&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Our &amp;lt;daysToRotStart&amp;gt; will be set to 30, which will make it rot slower than raw fruits and vegetables, but faster than grains such as rice or corn.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. Create a medicine RecipeDef ===&lt;br /&gt;
&lt;br /&gt;
Finally, we will create a new RecipeDef that will allow us to craft herbal medicine from raw matter harvested from our custom plant. Since there is no direct vanilla analogue to this recipe, we will be created it from scratch, starting in our &amp;lt;code&amp;gt;ExampleRecipe_Theragold.xml&amp;lt;/code&amp;gt; file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;Defs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Example recipe: make herbal medicine from theragold flowers --&amp;gt;&lt;br /&gt;
  &amp;lt;RecipeDef&amp;gt;&lt;br /&gt;
    &amp;lt;!-- content to be filled here --&amp;gt;&lt;br /&gt;
  &amp;lt;/RecipeDef&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/Defs&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Filling in the RecipeDef ====&lt;br /&gt;
&lt;br /&gt;
This will represent the wild variant of our new plant. We will start with the vanilla &amp;lt;code&amp;gt;Plant_HealrootWild&amp;lt;/code&amp;gt; and modify the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;TutorialTableWrapper&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;TutorialCodeTable&amp;quot;&lt;br /&gt;
! XML !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;defName&amp;gt;ExamplePlant_Make_MedicineHerbal&amp;lt;/defName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
In addition to our mod prefix, vanilla naming convention -- including those for auto-generated crafting recipes -- is to prefix &amp;quot;Make_&amp;quot; onto the defName of the final product, so we will maintain the same general naming general convention to inform the nature of our custom RecipeDef.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;label&amp;gt;make herbal medicine from theragold&amp;lt;/label&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
For RecipeDefs, its label is what is shown in the Add Bill list for workbenches, so qualifying it with the primary ingredient can help differentiate it from other potential recipes for the same product.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;Make herbal medicine from theragold flowers.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
This is the full description of our recipe as shown in the full bill interface.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;jobString&amp;gt;Making herbal medicine from theragold flowers.&amp;lt;/jobString&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
This string is shown in a pawn's inspect pane when it is performing work on this recipe.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;effectWorking&amp;gt;Cook&amp;lt;/effectWorking&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
This specifies an EffecterDef that should be used while this recipe is being worked on. We will use the same one used for cooking meals.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;soundWorking&amp;gt;Recipe_CookMeal&amp;lt;/soundWorking&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
This specifies a SoundDef that should be sustained while this recipe is being worked on. We will also use the same sound effect used for cooking meals here.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;workSkill&amp;gt;Cooking&amp;lt;/workSkill&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
This specifies the primary skill associated with this recipe. This is the skill that will gain experience points when work is done on this recipe, as well as being the filtering skill used in the bill interface.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;workAmount&amp;gt;300&amp;lt;/workAmount&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
300 work matches the amount of work required for vanilla simple meals, and equates to approximately 5s of time at 100% work speed.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;workSpeedStat&amp;gt;GeneralLaborSpeed&amp;lt;/workSpeedStat&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
This is the StatDef used to determine how quickly a pawn performs the work required to complete this recipe.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;recipeUsers&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;CraftingSpot&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;DrugLab&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/recipeUsers&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Specifies the workbenches that this recipe can be performed at via their &amp;lt;code&amp;gt;defName&amp;lt;/code&amp;gt;s. In our case, we want our recipe to be usable at both the vanilla crafting spot and drug lab.&lt;br /&gt;
&lt;br /&gt;
Note that you can also accomplish this by using a [[Modding_Tutorials/PatchOperations|PatchOperation]] on the targeted workbenches, but this is usually the easier way to introduce a new recipe, especially if you are not targeting your own workbenches.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ingredients&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;filter&amp;gt;&lt;br /&gt;
      &amp;lt;thingDefs&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;ExamplePlant_RawTheragold&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;/thingDefs&amp;gt;&lt;br /&gt;
    &amp;lt;/filter&amp;gt;&lt;br /&gt;
    &amp;lt;count&amp;gt;12&amp;lt;/count&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ingredients&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The &amp;lt;code&amp;gt;ingredients&amp;lt;/code&amp;gt; tag specifies the materials that will be consumed in the process of using this recipe. A full exploration of all possible ingredient options is outside the scope of this tutorial; in our case, we simply want to use 12 theragold flowers for each recipe instance.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fixedIngredientFilter&amp;gt;&lt;br /&gt;
  &amp;lt;thingDefs&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;ExamplePlant_RawTheragold&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/thingDefs&amp;gt;&lt;br /&gt;
&amp;lt;/fixedIngredientFilter&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The &amp;lt;code&amp;gt;fixedIngredientFilter&amp;lt;/code&amp;gt; specifies all possible ThingDefs that can be used to fulfill the ingredient requirements for this recipe. As with the ingredients list, an exploration of all possible filter options is outside the scope of this tutorial and in our case the only ingredient we will need is the aforementioned theragold flowers.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;products&amp;gt;&lt;br /&gt;
  &amp;lt;MedicineHerbal&amp;gt;1&amp;lt;/MedicineHerbal&amp;gt;&lt;br /&gt;
&amp;lt;/products&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
This specifies the items that should be produced by this recipe. Our goal is to produce a single herbal medicine for each instance of this recipe being performed.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;skillRequirements&amp;gt;&lt;br /&gt;
  &amp;lt;Crafting&amp;gt;2&amp;lt;/Crafting&amp;gt;&lt;br /&gt;
&amp;lt;/skillRequirements&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Finally, we will put a low requirement of 2 Crafting skill needed to perform this recipe. Note that this entire tag can be omitted if you do not want a skill requirement at all.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. Done! ===&lt;br /&gt;
&lt;br /&gt;
Your first plant is complete! Boot up RimWorld and you should be able to see and enable the &amp;quot;Example Plant&amp;quot; mod in your mod manager. You can then start a new game on an appropriate biome, use [[Development mode|dev mode tools]] to spawn the plant directly, or sow it in a growing zone with a sufficiently skilled colonist. Be sure to also check out the crafting recipe on the appropriate workbenches!&lt;br /&gt;
&lt;br /&gt;
If you get any errors, be sure to check out the [[Modding_Tutorials/Troubleshooting|troubleshooting guide]] or join us on the '''#mod-development''' channel on the [https://discord.gg/rimworld RimWorld Discord server].&lt;br /&gt;
&lt;br /&gt;
[[Category:Modding]]&lt;br /&gt;
[[Category:Modding tutorials]]&lt;/div&gt;</summary>
		<author><name>Halicade</name></author>
	</entry>
	<entry>
		<id>https://rimworldwiki.com/index.php?title=Modding_Tutorials/Basic_Ranged_Weapon&amp;diff=158572</id>
		<title>Modding Tutorials/Basic Ranged Weapon</title>
		<link rel="alternate" type="text/html" href="https://rimworldwiki.com/index.php?title=Modding_Tutorials/Basic_Ranged_Weapon&amp;diff=158572"/>
		<updated>2025-01-15T02:04:00Z</updated>

		<summary type="html">&lt;p&gt;Halicade: Updating supported version number&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Basic Ranged Weapon}}&lt;br /&gt;
{{BackToTutorials}}&lt;br /&gt;
&lt;br /&gt;
This is a basic RimWorld mod tutorial for the purpose of creating a simple ranged weapon using only XML. Be sure to check out the [[Modding_Tutorials/Basic_Melee_Weapon|basic melee weapon tutorial]] as well.&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
* Create a new '''saw launcher''' item, a ranged weapon&lt;br /&gt;
* Give it a '''custom projectile''' with a '''custom damage type'''&lt;br /&gt;
* Give it '''custom melee and ranged sound effects'''&lt;br /&gt;
&lt;br /&gt;
== Recommended Reading ==&lt;br /&gt;
* [[Modding_Tutorials/Mod_folder_structure|Mod Folder Structure]]&lt;br /&gt;
* [[Modding_Tutorials/XML_Defs|Defs]]&lt;br /&gt;
* [[Modding_Tutorials/ThingDef|ThingDef]]&lt;br /&gt;
* [[Modding_Tutorials/Basic_Melee_Weapon|Tutorial: Basic Melee Weapon]]&lt;br /&gt;
&lt;br /&gt;
== Sample Repository ==&lt;br /&gt;
[[File:ExampleRangedWeapon.png|none|border|link=https://github.com/Aelanna/ExampleRangedWeapon]]&lt;br /&gt;
A working implementation of this mod can be found [https://github.com/Aelanna/ExampleRangedWeapon in this GitHub repository]. You can use it to compare against your work or as a basis for modification!&lt;br /&gt;
&lt;br /&gt;
== Folder Setup ==&lt;br /&gt;
&lt;br /&gt;
First, you will want to create the files and folders necessary for this mod:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
Mods&lt;br /&gt;
└ MyModFolder&lt;br /&gt;
  ├ About&lt;br /&gt;
  │ ├ About.xml&lt;br /&gt;
  │ └ Preview.png&lt;br /&gt;
  ├ Defs&lt;br /&gt;
  │ ├ DamageDefs&lt;br /&gt;
  │ │ └ ExampleDamage_Ranged.xml&lt;br /&gt;
  │ ├ SoundDefs&lt;br /&gt;
  │ │ └ ExampleSounds_RangedWeapon.xml&lt;br /&gt;
  │ └ ThingDefs&lt;br /&gt;
  │   └ ExampleWeapons_Ranged.xml&lt;br /&gt;
  ├ Sounds&lt;br /&gt;
  │ └ ExampleMod&lt;br /&gt;
  │   ├ Example_SawLaunch.ogg&lt;br /&gt;
  │   └ Example_SawMelee.ogg&lt;br /&gt;
  └ Textures&lt;br /&gt;
    └ ExampleMod&lt;br /&gt;
      ├ Example_SawBlade.png&lt;br /&gt;
      └ Example_SawLauncher.png&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please check out the [[Modding_Tutorials/Mod_folder_structure|mod folder structure guide]] for more information about individual folders.&lt;br /&gt;
&lt;br /&gt;
=== About.xml ===&lt;br /&gt;
&lt;br /&gt;
Your &amp;lt;code&amp;gt;About.xml&amp;lt;/code&amp;gt; is used to identify your mod to RimWorld; please see [[Modding_Tutorials/About.xml|the About.xml reference page]] for more information. Be sure to replace &amp;quot;AuthorName&amp;quot; with your own name:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;ModMetaData&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- This is the internal identifier for your mod. --&amp;gt;&lt;br /&gt;
  &amp;lt;!-- It is recommended that you make it unique to as to avoid potential collisions with other authors; --&amp;gt;&lt;br /&gt;
  &amp;lt;!--     if Rimworld detects multiple mods with the same packageId then it will refuse to load all of them. --&amp;gt;&lt;br /&gt;
  &amp;lt;packageId&amp;gt;AuthorName.ExampleRangedWeapon&amp;lt;/packageId&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- This is both the displayed name of your mod as well as the name used for patch targeting. --&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;Example Ranged Weapon&amp;lt;/name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Your name goes here. --&amp;gt;&lt;br /&gt;
  &amp;lt;author&amp;gt;AuthorName&amp;lt;/author&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- These are the RimWorld game versions that your mod supports. --&amp;gt;&lt;br /&gt;
  &amp;lt;!-- It is recommended that you only list versions that you have explicitly tested to ensure they work, --&amp;gt;&lt;br /&gt;
  &amp;lt;!-- as even basic XML options can change between major versions of the game. --&amp;gt;&lt;br /&gt;
  &amp;lt;supportedVersions&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1.5&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/supportedVersions&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- This is the description of your mod shown in both the vanilla mod manager as well as modded managers. --&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;This is an example ranged weapon mod made for the RimWorld Wiki.&amp;lt;/description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ModMetaData&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sample Assets ===&lt;br /&gt;
&lt;br /&gt;
You can use these as the example assets:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;TwoColumnCollapsibleLayout&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;TwoColumnCollapsibleLayout-section&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;TwoColumnCollapsibleLayout-subtitle&amp;quot;&amp;gt;Ranged Sound Effect&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;TwoColumnCollapsibleLayout-text&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Example_SawLaunch.ogg|none]] ([[:File:Example_SawLaunch.ogg|link]])&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;TwoColumnCollapsibleLayout-section&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;TwoColumnCollapsibleLayout-subtitle&amp;quot;&amp;gt;Melee Sound Effect&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;TwoColumnCollapsibleLayout-text&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Example_SawMelee.ogg|none]] ([[:File:Example_SawMelee.ogg|link]])&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;TwoColumnCollapsibleLayout-section&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;TwoColumnCollapsibleLayout-subtitle&amp;quot;&amp;gt;Projectile Texture&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;TwoColumnCollapsibleLayout-text&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Example_SawBlade.png|none]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;TwoColumnCollapsibleLayout-section&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;TwoColumnCollapsibleLayout-subtitle&amp;quot;&amp;gt;Weapon Texture&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;TwoColumnCollapsibleLayout-text&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Example_SawLauncher.png|none]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Instructions ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Create the weapon ThingDef ===&lt;br /&gt;
&lt;br /&gt;
Our first step is to create the XML that represents our new weapon. Whenever possible, this is best accomplished by first copying a vanilla [[Modding_Tutorials/ThingDef|ThingDef]] and modifying it; in this case we will use the vanilla [[pump shotgun]] as our starting point, as it is the most similar existing weapon to what we want to create. The XML for the pump shotgun can be found in &amp;lt;code&amp;gt;Data/Core/Defs/ThingDefs_Misc/Weapons/RangedIndustrial.xml&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In our own &amp;lt;code&amp;gt;ExampleWeapons_Ranged.xml&amp;lt;/code&amp;gt;, we'll add the following content:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;Defs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Example weapon: saw launcher --&amp;gt;&lt;br /&gt;
  &amp;lt;ThingDef ParentName=&amp;quot;BaseHumanMakeableGun&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- pasted content omitted --&amp;gt;&lt;br /&gt;
  &amp;lt;/ThingDef&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/Defs&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Modify the weapon ThingDef ===&lt;br /&gt;
&lt;br /&gt;
In order to differentiate our weapon from the vanilla pump shotgun, we'll make the following changes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;TutorialTableWrapper&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;TutorialCodeTable&amp;quot;&lt;br /&gt;
! XML !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;defName&amp;gt;ExampleGun_SawLauncher&amp;lt;/defName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The &amp;lt;code&amp;gt;defName&amp;lt;/code&amp;gt; of a ThingDef is its identity and must be globally unique across all mods and official content. It is strongly recommended that it is prefixed with a project or mod name, so in this case we will use &amp;quot;ExampleGun_&amp;quot; as our prefix.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;label&amp;gt;saw launcher&amp;lt;/label&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A ThingDef's label is its in-game name. Unless it is a proper name, it should be in lowercase so that it can be injected naturally into sentences that use it. RimWorld will automatically capitalize it as necessary if used in titles or as the start of a sentence.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;A heavy industrial circular saw used for both construction and demolition.\n\nSome madman has modified this tool to allow its blades to be shot out at high velocity, rendering it a short-ranged but devastating weapon.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A ThingDef's description is used when inspecting the item's details.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;graphicData&amp;gt;&lt;br /&gt;
  &amp;lt;texPath&amp;gt;ExampleMod/Example_SawLauncher&amp;lt;/texPath&amp;gt;&lt;br /&gt;
  &amp;lt;graphicClass&amp;gt;Graphic_Single&amp;lt;/graphicClass&amp;gt;&lt;br /&gt;
&amp;lt;/graphicData&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
This is where define the texture of our weapon. Similar to how defNames must be unique across all mods, the &amp;lt;code&amp;gt;texPath&amp;lt;/code&amp;gt; of our texture must be unique across all mods if we want to avoid an asset collision. We will use the folder &amp;lt;code&amp;gt;ExampleMod&amp;lt;/code&amp;gt; as our &amp;quot;namespace&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
For ranged weapons such as our saw launcher, the texture defined in our &amp;lt;code&amp;gt;&amp;lt;graphicData&amp;gt;&amp;lt;/code&amp;gt; will be used for both items on the ground as well as the equipped weapon texture. The texture of the fired projectiles will be defined in a separate &amp;lt;code&amp;gt;ThingDef&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;costList&amp;gt;&lt;br /&gt;
  &amp;lt;Steel&amp;gt;80&amp;lt;/Steel&amp;gt;&lt;br /&gt;
  &amp;lt;ComponentIndustrial&amp;gt;4&amp;lt;/ComponentIndustrial&amp;gt;&lt;br /&gt;
&amp;lt;/costList&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Since our saw launcher is a more complex tool than the pump shotgun with more functionality, we will have it cost 80 [[steel]] and 4 [[components].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;statBases&amp;gt;&lt;br /&gt;
  &amp;lt;WorkToMake&amp;gt;15000&amp;lt;/WorkToMake&amp;gt;&lt;br /&gt;
  &amp;lt;Mass&amp;gt;9.9&amp;lt;/Mass&amp;gt;&lt;br /&gt;
  &amp;lt;AccuracyTouch&amp;gt;0.85&amp;lt;/AccuracyTouch&amp;gt;&lt;br /&gt;
  &amp;lt;AccuracyShort&amp;gt;0.80&amp;lt;/AccuracyShort&amp;gt;&lt;br /&gt;
  &amp;lt;AccuracyMedium&amp;gt;0.70&amp;lt;/AccuracyMedium&amp;gt;&lt;br /&gt;
  &amp;lt;AccuracyLong&amp;gt;0.56&amp;lt;/AccuracyLong&amp;gt;&lt;br /&gt;
  &amp;lt;RangedWeapon_Cooldown&amp;gt;1.8&amp;lt;/RangedWeapon_Cooldown&amp;gt;&lt;br /&gt;
&amp;lt;/statBases&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Our saw launcher requires more time to craft than a pump shotgun, weighs far more, has lower accuracy at range, and has a longer recovery cooldown duration.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;equippedStatOffsets&amp;gt;&lt;br /&gt;
  &amp;lt;ConstructionSpeed&amp;gt;0.10&amp;lt;/ConstructionSpeed&amp;gt;&lt;br /&gt;
&amp;lt;/equippedStatOffsets&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
While there is no &amp;lt;code&amp;gt;StatDef&amp;lt;/code&amp;gt; that specifically affects deconstruction speed, &amp;lt;code&amp;gt;ConstructionSpeed&amp;lt;/code&amp;gt; does affect the speed at which colonists deconstruct buildings and is appropriate enough to justify our use of it. Our saw launcher will grant a 10% construction speed bonus to its wielder.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;verbs&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;verbClass&amp;gt;Verb_Shoot&amp;lt;/verbClass&amp;gt;&lt;br /&gt;
    &amp;lt;hasStandardCommand&amp;gt;true&amp;lt;/hasStandardCommand&amp;gt;&lt;br /&gt;
    &amp;lt;defaultProjectile&amp;gt;ExampleBullet_SawBlade&amp;lt;/defaultProjectile&amp;gt;&lt;br /&gt;
    &amp;lt;warmupTime&amp;gt;1.2&amp;lt;/warmupTime&amp;gt;&lt;br /&gt;
    &amp;lt;range&amp;gt;12.9&amp;lt;/range&amp;gt;&lt;br /&gt;
    &amp;lt;soundCast&amp;gt;ExampleWeapon_SawLauncher&amp;lt;/soundCast&amp;gt;&lt;br /&gt;
    &amp;lt;soundCastTail&amp;gt;GunTail_Heavy&amp;lt;/soundCastTail&amp;gt;&lt;br /&gt;
    &amp;lt;muzzleFlashScale&amp;gt;0&amp;lt;/muzzleFlashScale&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/verbs&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The &amp;lt;code&amp;gt;verbs&amp;lt;/code&amp;gt; list defines the ranged attacks available for a weapon. Here we will specifically modify the &amp;lt;code&amp;gt;defaultProjectile&amp;lt;/code&amp;gt; to use a custom projectile that we will define later, increase the &amp;lt;code&amp;gt;warmupTime&amp;lt;/code&amp;gt; to represent the awkwardness of its use as a weapon, lower its &amp;lt;code&amp;gt;range&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;12.9&amp;lt;/code&amp;gt; to match the chain shotgun, change the &amp;lt;code&amp;gt;soundCast&amp;lt;/code&amp;gt; to use a custom &amp;lt;code&amp;gt;SoundDef&amp;lt;/code&amp;gt;, and reduce the &amp;lt;code&amp;gt;muzzleFlashScale&amp;lt;/code&amp;gt; to 0.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tools&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;label&amp;gt;handle&amp;lt;/label&amp;gt;&lt;br /&gt;
    &amp;lt;capacities&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Blunt&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/capacities&amp;gt;&lt;br /&gt;
    &amp;lt;power&amp;gt;9&amp;lt;/power&amp;gt;&lt;br /&gt;
    &amp;lt;cooldownTime&amp;gt;2&amp;lt;/cooldownTime&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;label&amp;gt;blade&amp;lt;/label&amp;gt;&lt;br /&gt;
    &amp;lt;capacities&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Demolish&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/capacities&amp;gt;&lt;br /&gt;
    &amp;lt;power&amp;gt;13&amp;lt;/power&amp;gt;&lt;br /&gt;
    &amp;lt;cooldownTime&amp;gt;2&amp;lt;/cooldownTime&amp;gt;&lt;br /&gt;
    &amp;lt;soundMeleeHit&amp;gt;ExampleWeapon_SawLauncherMelee&amp;lt;/soundMeleeHit&amp;gt;&lt;br /&gt;
    &amp;lt;soundMeleeMiss&amp;gt;ExampleWeapon_SawLauncher&amp;lt;/soundMeleeMiss&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/tools&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
To better model our saw launcher's primary use as a demolition tool, we will change the &amp;lt;code&amp;gt;barrel&amp;lt;/code&amp;gt; tool from the pump shotgun into a &amp;lt;code&amp;gt;blade&amp;lt;/code&amp;gt; tool that utilizes the &amp;lt;code&amp;gt;Demolish&amp;lt;/code&amp;gt; capacity to perform building-destroying attacks similar to a [[breach axe]]. Our saw will have a higher power but far slower cooldown, giving it a lower overall damage output that better suits its overall versatility.&lt;br /&gt;
&lt;br /&gt;
Also note that we set custom &amp;lt;code&amp;gt;SoundDef&amp;lt;/code&amp;gt; references for &amp;lt;code&amp;gt;soundMeleeHit&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;soundMeleeMiss&amp;lt;/code&amp;gt;. We will create these two &amp;lt;code&amp;gt;SoundDef&amp;lt;/code&amp;gt; entries in a later step.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;recipeMaker&amp;gt;&lt;br /&gt;
  &amp;lt;skillRequirements&amp;gt;&lt;br /&gt;
    &amp;lt;Crafting&amp;gt;5&amp;lt;/Crafting&amp;gt;&lt;br /&gt;
  &amp;lt;/skillRequirements&amp;gt;&lt;br /&gt;
  &amp;lt;displayPriority&amp;gt;436&amp;lt;/displayPriority&amp;gt;&lt;br /&gt;
&amp;lt;/recipeMaker&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Our saw launcher will have the same Crafting skill requirement as the pump shotgun, and we will place it just after the [[chain shotgun]] in the crafting recipe list.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. Create and modify the projectile ThingDef  ===&lt;br /&gt;
&lt;br /&gt;
Now we need to create the &amp;lt;code&amp;gt;ThingDef&amp;lt;/code&amp;gt; that defines our weapon's projectile. Similarly to the weapon itself, we will copy the pump shotgun's &amp;lt;code&amp;gt;Bullet_Shotgun&amp;lt;/code&amp;gt; projectile, which is immediately after the weapon's &amp;lt;code&amp;gt;ThingDef&amp;lt;/code&amp;gt; in the same file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Example projectile: saw blade --&amp;gt;&lt;br /&gt;
&amp;lt;ThingDef ParentName=&amp;quot;BaseBullet&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!-- pasted content omitted --&amp;gt;&lt;br /&gt;
&amp;lt;/ThingDef&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, we will modify the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;TutorialTableWrapper&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;TutorialCodeTable&amp;quot;&lt;br /&gt;
! XML !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;defName&amp;gt;ExampleBullet_SawBlade&amp;lt;/defName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Since the projectile itself is a &amp;lt;code&amp;gt;ThingDef&amp;lt;/code&amp;gt; as well, it must similarly have a globally-unique &amp;lt;code&amp;gt;defName&amp;lt;/code&amp;gt;. We must also make sure that we match our &amp;lt;code&amp;gt;defName&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;verbs&amp;lt;/code&amp;gt; of our weapon.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;label&amp;gt;saw blade&amp;lt;/label&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
While the &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; of our projectile is not shown in the weapon's stat card, it is visible if the player hovers over it with their mouse while it is in flight and the game is paused.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;graphicData&amp;gt;&lt;br /&gt;
  &amp;lt;texPath&amp;gt;ExampleMod/Example_SawBlade&amp;lt;/texPath&amp;gt;&lt;br /&gt;
  &amp;lt;graphicClass&amp;gt;Graphic_Single&amp;lt;/graphicClass&amp;gt;&lt;br /&gt;
&amp;lt;/graphicData&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
In the &amp;lt;code&amp;gt;graphicData&amp;lt;/code&amp;gt; for our projectile, we will specify the texture used for the projectile in flight.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;projectile&amp;gt;&lt;br /&gt;
  &amp;lt;damageDef&amp;gt;ExampleDamage_Saw&amp;lt;/damageDef&amp;gt;&lt;br /&gt;
  &amp;lt;damageAmountBase&amp;gt;25&amp;lt;/damageAmountBase&amp;gt;&lt;br /&gt;
  &amp;lt;stoppingPower&amp;gt;1.5&amp;lt;/stoppingPower&amp;gt;&lt;br /&gt;
  &amp;lt;armorPenetrationBase&amp;gt;0.19&amp;lt;/armorPenetrationBase&amp;gt;&lt;br /&gt;
  &amp;lt;speed&amp;gt;55&amp;lt;/speed&amp;gt;&lt;br /&gt;
&amp;lt;/projectile&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Here we will specify the various values related to the damage dealt by this projectile upon impact. We will be using a custom &amp;lt;code&amp;gt;damageDef&amp;lt;/code&amp;gt;, and we want our saw blade to deal higher base damage and slightly higher armor penetration, while having much lower stopping power.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. Create and modify a DamageDef  ===&lt;br /&gt;
&lt;br /&gt;
Next, we need to create a custom &amp;lt;code&amp;gt;DamageDef&amp;lt;/code&amp;gt; for our custom projectile, because none of our vanilla options are entirely accurate or appropriate for our use case. Unlike our previous two &amp;lt;code&amp;gt;ThingDef&amp;lt;/code&amp;gt; entries, we will create this one entirely from scratch since it will be relatively simple. We will start by creating the following in our &amp;lt;code&amp;gt;ExampleDamage_Ranged.xml&amp;lt;/code&amp;gt; file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;Defs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Example damage type: ranged cut --&amp;gt;&lt;br /&gt;
  &amp;lt;DamageDef ParentName=&amp;quot;Arrow&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- further tags will go here --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/DamageDef&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/Defs&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The reason we want to use &amp;lt;code&amp;gt;Arrow&amp;lt;/code&amp;gt; as our parent is because the vanilla &amp;lt;code&amp;gt;Arrow&amp;lt;/code&amp;gt; damage type already does most of what we want: it is a ranged damage type for purposes of shield belt penetration, it inflicts &amp;lt;code&amp;gt;Cut&amp;lt;/code&amp;gt; injuries, and it is opposed by &amp;lt;code&amp;gt;Sharp&amp;lt;/code&amp;gt; armor. This means we only have to add the following overrides to customize our new damage type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;TutorialTableWrapper&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;TutorialCodeTable&amp;quot;&lt;br /&gt;
! XML !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;defName&amp;gt;ExampleDamage_Saw&amp;lt;/defName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
As always, we need to ensure our &amp;lt;code&amp;gt;defName&amp;lt;/code&amp;gt; is unique amongst all &amp;lt;code&amp;gt;DamageDef&amp;lt;/code&amp;gt; entries, so we will prefix it with &amp;quot;ExampleDamage_&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;label&amp;gt;saw&amp;lt;/label&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
This label will be seen in the damage breakdown for our weapon and projectile stat cards. All the usual recommendations for &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; fields apply here as well.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;deathMessage&amp;gt;{0} has been sliced to death by a saw blade.&amp;lt;/deathMessage&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Our &amp;lt;code&amp;gt;deathMessage&amp;lt;/code&amp;gt; is the text that will be shown in the combat log when a pawn is killed by our &amp;lt;code&amp;gt;DamageDef&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt;{0}&amp;lt;/code&amp;gt; is an ''injection'' and will be replaced by the name of the pawn by RimWorld's grammar resolver system.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 6. Create custom SoundDefs  ===&lt;br /&gt;
&lt;br /&gt;
We're almost done! The last thing we need to do is to create the two custom &amp;lt;code&amp;gt;SoundDef&amp;lt;/code&amp;gt; entries so our new weapon can have a unique melee and ranged attack sound effect. We will start by creating two &amp;lt;code&amp;gt;SoundDef&amp;lt;/code&amp;gt; entries in our &amp;lt;code&amp;gt;ExampleSounds_RangedWeapon.xml&amp;lt;/code&amp;gt; file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;Defs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Example sound: saw launcher firing --&amp;gt;&lt;br /&gt;
  &amp;lt;SoundDef&amp;gt;&lt;br /&gt;
    &amp;lt;defName&amp;gt;ExampleWeapon_SawLauncher&amp;lt;/defName&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- configuration tags go here --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/SoundDef&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Example sound: saw launcher melee --&amp;gt;&lt;br /&gt;
  &amp;lt;SoundDef&amp;gt;&lt;br /&gt;
    &amp;lt;defName&amp;gt;ExampleWeapon_SawLauncherMelee&amp;lt;/defName&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- configuration tags go here --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/SoundDef&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/Defs&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;ExampleWeapon_SawLauncher&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The following tags go into our &amp;lt;code&amp;gt;ExampleWeapon_SawLauncher&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;SoundDef&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;TutorialTableWrapper&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;TutorialCodeTable&amp;quot;&lt;br /&gt;
! XML !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;context&amp;gt;MapOnly&amp;lt;/context&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Setting &amp;lt;code&amp;gt;context&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;MapOnly&amp;lt;/code&amp;gt; specifies that our sound effect should only play while the player's focus is on a regular map such as a settlement or quest map, and will stop playing if the player switches to the [[Menus#World|world map]].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;subSounds&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;grains&amp;gt;&lt;br /&gt;
      &amp;lt;li Class=&amp;quot;AudioGrain_Clip&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;clipPath&amp;gt;ExampleMod/Example_SawLaunch&amp;lt;/clipPath&amp;gt;&lt;br /&gt;
      &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/grains&amp;gt;&lt;br /&gt;
    &amp;lt;volumeRange&amp;gt;40~45&amp;lt;/volumeRange&amp;gt;&lt;br /&gt;
    &amp;lt;pitchRange&amp;gt;0.8940217~1.084783&amp;lt;/pitchRange&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/subSounds&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
This is the meat of our &amp;lt;code&amp;gt;SoundDef&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;grains&amp;lt;/code&amp;gt; list in our &amp;lt;code&amp;gt;SoundDef&amp;lt;/code&amp;gt; determines the actual sound files that should be associated with it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;volumeRange&amp;lt;/code&amp;gt; determines the volume level at which our sound should play, which will be randomly within this range every time it is played. The exact volume range of each sound effect is not always the same, as different sound files may have different baseline volume levels; you may have to adjust this value based on whether it feels too quiet or loud in your testing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;pitchRange&amp;lt;/code&amp;gt; is used to randomize the exact pitch of the sound by pitch-shifting within the specified range each time it is played. This can give more perceived variation to your sounds, which helps to ensure that it does not sound repetitive.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;ExampleWeapon_SawLauncherMelee&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The following tags go into our &amp;lt;code&amp;gt;ExampleWeapon_SawLauncherMelee&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;SoundDef&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;TutorialTableWrapper&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;TutorialCodeTable&amp;quot;&lt;br /&gt;
! XML !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;context&amp;gt;MapOnly&amp;lt;/context&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
As with the previous entry, we want this sound to only play on regular maps as well.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;subSounds&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;grains&amp;gt;&lt;br /&gt;
      &amp;lt;li Class=&amp;quot;AudioGrain_Clip&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;clipPath&amp;gt;ExampleMod/Example_SawMelee&amp;lt;/clipPath&amp;gt;&lt;br /&gt;
      &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/grains&amp;gt;&lt;br /&gt;
    &amp;lt;volumeRange&amp;gt;45~50&amp;lt;/volumeRange&amp;gt;&lt;br /&gt;
    &amp;lt;pitchRange&amp;gt;0.8940217~1.084783&amp;lt;/pitchRange&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/subSounds&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Our melee sound effect will be very similar to our ranged sound effect, but we will use a different grain clip and adjust the volume slightly higher, as the melee sound should be more impactful.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 7. Done! ===&lt;br /&gt;
&lt;br /&gt;
Your first ranged weapon is complete! Boot up RimWorld and you should be able to see and enable the &amp;quot;Example Ranged Weapon&amp;quot; mod in your mod manager. You can then use [[Development mode|dev mode tools]] to spawn the weapon directly, or craft it at a [[Machining table|machining table]].&lt;br /&gt;
&lt;br /&gt;
If you get any errors, be sure to check out the [[Modding_Tutorials/Troubleshooting|troubleshooting guide]] or join us on the '''#mod-development''' channel on the [https://discord.gg/rimworld RimWorld Discord server].&lt;br /&gt;
&lt;br /&gt;
[[Category:Modding]]&lt;br /&gt;
[[Category:Modding tutorials]]&lt;/div&gt;</summary>
		<author><name>Halicade</name></author>
	</entry>
	<entry>
		<id>https://rimworldwiki.com/index.php?title=Modding_Tutorials/Basic_Melee_Weapon&amp;diff=158571</id>
		<title>Modding Tutorials/Basic Melee Weapon</title>
		<link rel="alternate" type="text/html" href="https://rimworldwiki.com/index.php?title=Modding_Tutorials/Basic_Melee_Weapon&amp;diff=158571"/>
		<updated>2025-01-15T02:03:25Z</updated>

		<summary type="html">&lt;p&gt;Halicade: Updating version number&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Basic Melee Weapon}}&lt;br /&gt;
{{BackToTutorials}}&lt;br /&gt;
&lt;br /&gt;
This is a basic RimWorld mod tutorial for the purpose of creating a simple melee weapon.&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
* Create a new '''machete''' item, a simple melee weapon&lt;br /&gt;
* Give it a '''custom texture''' with a '''color mask'''&lt;br /&gt;
* Give it a simple '''stat bonus'''&lt;br /&gt;
&lt;br /&gt;
== Recommended Reading ==&lt;br /&gt;
* [[Modding_Tutorials/Mod_folder_structure|Mod Folder Structure]]&lt;br /&gt;
* [[Modding_Tutorials/XML_Defs|Defs]]&lt;br /&gt;
* [[Modding_Tutorials/ThingDef|ThingDef]]&lt;br /&gt;
&lt;br /&gt;
== Sample Repository ==&lt;br /&gt;
[[File:ExampleMeleeWeapon.png|none|border|link=https://github.com/Aelanna/ExampleMeleeWeapon]]&lt;br /&gt;
A working implementation of this mod can be found [https://github.com/Aelanna/ExampleMeleeWeapon in this GitHub repository]. You can use it to compare against your work or as a basis for modification!&lt;br /&gt;
&lt;br /&gt;
== Folder Setup ==&lt;br /&gt;
&lt;br /&gt;
First, you will want to create the files and folders necessary for this mod:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
Mods&lt;br /&gt;
└ MyModFolder&lt;br /&gt;
  ├ About&lt;br /&gt;
  │ ├ About.xml&lt;br /&gt;
  │ └ Preview.png&lt;br /&gt;
  ├ Defs&lt;br /&gt;
  │ └ ThingDefs&lt;br /&gt;
  │   └ ExampleWeapons_Melee.xml&lt;br /&gt;
  └ Textures&lt;br /&gt;
    └ ExampleMod&lt;br /&gt;
      ├ ExampleWeapon_Machete.png&lt;br /&gt;
      └ ExampleWeapon_Machete_m.png&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please check out the [[Modding_Tutorials/Mod_folder_structure|mod folder structure guide]] for more information about individual folders.&lt;br /&gt;
&lt;br /&gt;
=== About.xml ===&lt;br /&gt;
&lt;br /&gt;
Your &amp;lt;code&amp;gt;About.xml&amp;lt;/code&amp;gt; is used to identify your mod to RimWorld; please see [[Modding_Tutorials/About.xml|the About.xml reference page]] for more information. Be sure to replace &amp;quot;AuthorName&amp;quot; with your own name:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;ModMetaData&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- This is the internal identifier for your mod. --&amp;gt;&lt;br /&gt;
  &amp;lt;!-- It is recommended that you make it unique to as to avoid potential collisions with other authors; --&amp;gt;&lt;br /&gt;
  &amp;lt;!--     if Rimworld detects multiple mods with the same packageId then it will refuse to load all of them. --&amp;gt;&lt;br /&gt;
  &amp;lt;packageId&amp;gt;AuthorName.ExampleMeleeWeapon&amp;lt;/packageId&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- This is both the displayed name of your mod as well as the name used for patch targeting. --&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;Example Melee Weapon&amp;lt;/name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Your name goes here. --&amp;gt;&lt;br /&gt;
  &amp;lt;author&amp;gt;AuthorName&amp;lt;/author&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- These are the RimWorld game versions that your mod supports. --&amp;gt;&lt;br /&gt;
  &amp;lt;!-- It is recommended that you only list versions that you have explicitly tested to ensure they work, --&amp;gt;&lt;br /&gt;
  &amp;lt;!-- as even basic XML options can change between major versions of the game. --&amp;gt;&lt;br /&gt;
  &amp;lt;supportedVersions&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1.5&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/supportedVersions&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
  &amp;lt;!-- This is the description of your mod shown in both the vanilla mod manager as well as modded managers. --&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;This is an example melee weapon mod made for the RimWorld Wiki.&amp;lt;/description&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;/ModMetaData&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sample Assets ===&lt;br /&gt;
&lt;br /&gt;
You can use these as the example textures:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;TwoColumnCollapsibleLayout&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;TwoColumnCollapsibleLayout-section&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;TwoColumnCollapsibleLayout-subtitle&amp;quot;&amp;gt;Weapon Texture&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;TwoColumnCollapsibleLayout-text&amp;quot;&amp;gt;&lt;br /&gt;
[[File:ExampleWeapon Machete.png|none]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;TwoColumnCollapsibleLayout-section&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;TwoColumnCollapsibleLayout-subtitle&amp;quot;&amp;gt;Texture Mask&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;TwoColumnCollapsibleLayout-text&amp;quot;&amp;gt;&lt;br /&gt;
[[File:ExampleWeapon Machete_m.png|none]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Instructions ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Create a ThingDef ===&lt;br /&gt;
&lt;br /&gt;
Our first step is to create the XML that represents our new weapon. Whenever possible, this is best accomplished by first copying a vanilla [[Modding_Tutorials/ThingDef|ThingDef]] and modifying it; in this case we will use the vanilla [[gladius]] as our starting point, as it is the most similar existing weapon to what we want to create. The XML for the gladius can be found in &amp;lt;code&amp;gt;Data/Core/Defs/ThingDefs_Misc/Weapons/MeleeMedieval.xml&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In our own &amp;lt;code&amp;gt;ExampleWeapons_Melee.xml&amp;lt;/code&amp;gt;, we'll have the following content:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;Defs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Example weapon: machete --&amp;gt;&lt;br /&gt;
  &amp;lt;ThingDef ParentName=&amp;quot;BaseMeleeWeapon_Sharp_Quality&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- pasted content omitted --&amp;gt;&lt;br /&gt;
  &amp;lt;/ThingDef&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/Defs&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Modify the copied ThingDef ===&lt;br /&gt;
&lt;br /&gt;
In order to differentiate our weapon from the vanilla gladius, we'll make the following changes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;TutorialTableWrapper&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;TutorialCodeTable&amp;quot;&lt;br /&gt;
! XML !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;defName&amp;gt;ExampleMeleeWeapon_Machete&amp;lt;/defName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
The &amp;lt;code&amp;gt;defName&amp;lt;/code&amp;gt; of a ThingDef is its identity and must be globally unique across all mods and official content. It is strongly recommended that it is prefixed with a project or mod name, so in this case we will use &amp;quot;ExampleMeleeWeapon_&amp;quot; as our prefix.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;label&amp;gt;machete&amp;lt;/label&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A ThingDef's label is its in-game name. Unless it is a proper name, it should be in lowercase so that it can be injected naturally into sentences that use it. RimWorld will automatically capitalize it as necessary if used in titles or as the start of a sentence.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;A broad blade meant for cutting vegetation in overgrown environments, machetes can be used as a broad-bladed combat knife in a pinch.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A ThingDef's description is used when inspecting the item's details.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;graphicData&amp;gt;&lt;br /&gt;
  &amp;lt;texPath&amp;gt;ExampleMod/ExampleWeapon_Machete&amp;lt;/texPath&amp;gt;&lt;br /&gt;
  &amp;lt;graphicClass&amp;gt;Graphic_Single&amp;lt;/graphicClass&amp;gt;&lt;br /&gt;
  &amp;lt;shaderType&amp;gt;CutoutComplex&amp;lt;/shaderType&amp;gt;&lt;br /&gt;
&amp;lt;/graphicData&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
This is where define the texture of our weapon, as well as some basic rendering settings. Similar to how defNames must be unique across all mods, the &amp;lt;code&amp;gt;texPath&amp;lt;/code&amp;gt; of our texture must be unique across all mods if we want to avoid an asset collision. We will use the folder &amp;lt;code&amp;gt;ExampleMod&amp;lt;/code&amp;gt; as our &amp;quot;namespace&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
For melee weapons such as our machete, the texture defined in our &amp;lt;code&amp;gt;&amp;lt;graphicData&amp;gt;&amp;lt;/code&amp;gt; will be used for both items on the ground as well as the equipped weapon texture. Since we want our weapon to only be colored by its materials on the blade and not have its grip color changed, we will be using a second image as a Texture Mask. This will require us to use &amp;lt;code&amp;gt;CutoutComplex&amp;lt;/code&amp;gt; as our &amp;lt;code&amp;gt;&amp;lt;shaderType&amp;gt;&amp;lt;/code&amp;gt;, so we will specify that here as well.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;costStuffCount&amp;gt;40&amp;lt;/costStuffCount&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Since our machete is a more primitive tool than the gladius with a simple single-edged blade, we will have it cost 40 &amp;quot;stuff&amp;quot; instead of 50 like the gladius.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Stuff&amp;quot; in RimWorld refers to the material it is made out of; just like the gladius, ours will be able to be made out of both Woody and Metallic stuff.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;statBases&amp;gt;&lt;br /&gt;
  &amp;lt;WorkToMake&amp;gt;10000&amp;lt;/WorkToMake&amp;gt;&lt;br /&gt;
  &amp;lt;Mass&amp;gt;0.75&amp;lt;/Mass&amp;gt;&lt;br /&gt;
&amp;lt;/statBases&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Similarly, our machete is easier to make at only 10,000 work units instead of 12,000 and is lighter at 0.75kg instead of 0.85kg.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;equippedStatOffsets&amp;gt;&lt;br /&gt;
  &amp;lt;PlantWorkSpeed&amp;gt;0.10&amp;lt;/PlantWorkSpeed&amp;gt;&lt;br /&gt;
&amp;lt;/equippedStatOffsets&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Historically, while machetes have been used as weapons, they are first and foremost a tool used for cutting plants and clearing overgrown vegetation. As such, we want our machete to increase the plant cutting speed of the pawn that wields it by 10%.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;relicChance&amp;gt;1&amp;lt;/relicChance&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Unlike the gladius or longsword, machetes are generally not intended to be used as weapons and thus should not be used as often for an ideoligion's relics.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tools&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;label&amp;gt;handle&amp;lt;/label&amp;gt;&lt;br /&gt;
    &amp;lt;capacities&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Blunt&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/capacities&amp;gt;&lt;br /&gt;
    &amp;lt;power&amp;gt;9&amp;lt;/power&amp;gt;&lt;br /&gt;
    &amp;lt;cooldownTime&amp;gt;2&amp;lt;/cooldownTime&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;label&amp;gt;point&amp;lt;/label&amp;gt;&lt;br /&gt;
    &amp;lt;capacities&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Stab&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/capacities&amp;gt;&lt;br /&gt;
    &amp;lt;power&amp;gt;14&amp;lt;/power&amp;gt;&lt;br /&gt;
    &amp;lt;cooldownTime&amp;gt;2&amp;lt;/cooldownTime&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;label&amp;gt;edge&amp;lt;/label&amp;gt;&lt;br /&gt;
    &amp;lt;capacities&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Cut&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/capacities&amp;gt;&lt;br /&gt;
    &amp;lt;power&amp;gt;14&amp;lt;/power&amp;gt;&lt;br /&gt;
    &amp;lt;cooldownTime&amp;gt;2&amp;lt;/cooldownTime&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/tools&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
A weapon's &amp;lt;code&amp;gt;&amp;lt;tools&amp;gt;&amp;lt;/code&amp;gt; determines the types of [[Combat|melee attacks]] that can be made with it. Our machete should not be as effective as a gladius in combat, so we will reduce the power of its &amp;lt;code&amp;gt;point&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;edge&amp;lt;/code&amp;gt; attacks from 16 to 14. The &amp;lt;code&amp;gt;handle&amp;lt;/code&amp;gt; tool's power remains the same, as it is a secondary attack.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;recipeMaker&amp;gt;&lt;br /&gt;
  &amp;lt;researchPrerequisite&amp;gt;Smithing&amp;lt;/researchPrerequisite&amp;gt;&lt;br /&gt;
  &amp;lt;skillRequirements&amp;gt;&lt;br /&gt;
    &amp;lt;Crafting&amp;gt;2&amp;lt;/Crafting&amp;gt;&lt;br /&gt;
  &amp;lt;/skillRequirements&amp;gt;&lt;br /&gt;
  &amp;lt;displayPriority&amp;gt;409&amp;lt;/displayPriority&amp;gt;&lt;br /&gt;
&amp;lt;/recipeMaker&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
| class=&amp;quot;TutorialCodeTable-description&amp;quot; |&lt;br /&gt;
Our machete is easier to craft than a gladius, and will only require a Crafting skill of 2 to make. We also want our machete to appear above the gladius in recipe lists, so we will change its &amp;lt;code&amp;gt;&amp;lt;displayPriority&amp;gt;&amp;lt;/code&amp;gt; from 410 to 409.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. Done! ===&lt;br /&gt;
&lt;br /&gt;
Your first melee weapon is complete! Boot up RimWorld and you should be able to see and enable the &amp;quot;Example Melee Weapon&amp;quot; mod in your mod manager. You can then use [[Development mode|dev mode tools]] to spawn the weapon directly, or craft it at an [[Electric_smithy|electric]] or [[Fueled_smithy|fueled smithy]].&lt;br /&gt;
&lt;br /&gt;
If you get any errors, be sure to check out the [[Modding_Tutorials/Troubleshooting|troubleshooting guide]] or join us on the '''#mod-development''' channel on the [https://discord.gg/rimworld RimWorld Discord server].&lt;br /&gt;
&lt;br /&gt;
[[Category:Modding]]&lt;br /&gt;
[[Category:Modding tutorials]]&lt;/div&gt;</summary>
		<author><name>Halicade</name></author>
	</entry>
	<entry>
		<id>https://rimworldwiki.com/index.php?title=Modding_Tutorials&amp;diff=158545</id>
		<title>Modding Tutorials</title>
		<link rel="alternate" type="text/html" href="https://rimworldwiki.com/index.php?title=Modding_Tutorials&amp;diff=158545"/>
		<updated>2025-01-14T03:04:31Z</updated>

		<summary type="html">&lt;p&gt;Halicade: /* Uploading to Steam Workshop */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--Top Nav Box--&amp;gt;&lt;br /&gt;
{| align=center&lt;br /&gt;
| {{Mods_Nav}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is the hub page for tutorials, guides, and reference materials for creating mods for RimWorld. If you are looking for instructions on how to use RimWorld, please check out the general [[Modding]] hub.&lt;br /&gt;
&lt;br /&gt;
As RimWorld does not have a formal modding API, nearly all of the information here has been gathered and maintained by the modding community.&lt;br /&gt;
&lt;br /&gt;
'''NEW: [[Modding_Tutorials/RimWorld_1.5_Mod_Updates|RimWorld 1.5 Mod_Updates]]''' - A work-in-progress list of changes datamined by the modding community in the current unstable version of RimWorld 1.5. '''THERE MAY BE ANOMALY SPOILERS, YOU HAVE BEEN WARNED.'''&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
==About RimWorld==&lt;br /&gt;
RimWorld is a multi-platform game written on Unity 2019.4. However, the Unity Editor is not used for creating mods unless you are creating new shaders.&lt;br /&gt;
&lt;br /&gt;
* [[Modding_Tutorials/Recommended_software|Recommended Software]] - Editors and other useful software for mod development&lt;br /&gt;
* [[Modding_Tutorials/Mod_Folder_Structure|Mod Folder Structure]] - Explore the basic folder structure of a mod&lt;br /&gt;
** [[Modding_Tutorials/About.xml|About.xml]] - About.xml identifies and describes your mod to RimWorld so that it can be loaded properly&lt;br /&gt;
* [[Modding_Tutorials/Defs|Defs]] - XML Definitions are used to define and configure content in a way that does not require compiling code&lt;br /&gt;
** [[Modding_Tutorials/MayRequire|MayRequire]] - MayRequire and MayRequireAnyOf are used to conditionally load Defs and list entries based on whether a DLC or other mod is loaded&lt;br /&gt;
* [[Modding_Tutorials/Localization|Localization]] - Define text strings used for translations and word lists used in name and text generation&lt;br /&gt;
* [[Modding_Tutorials/PatchOperations|PatchOperations]] - PatchOperations are used to modify XML Defs without overwriting them directly&lt;br /&gt;
* [[Modding_Tutorials/Sounds|Sounds]] - (Needs Rewriting) Adding sound files for mods&lt;br /&gt;
* [[Modding_Tutorials/Textures|Textures]] - How to create and add textures to mods&lt;br /&gt;
&lt;br /&gt;
===XML Tutorials===&lt;br /&gt;
&lt;br /&gt;
The following are step-by-step tutorials for creating basic content mods.&lt;br /&gt;
&lt;br /&gt;
Basic Tutorials:&lt;br /&gt;
* [[Modding_Tutorials/Basic_Melee_Weapon|Basic Melee Weapon]] - How to create a basic melee weapon with a texture mask&lt;br /&gt;
* [[Modding_Tutorials/Basic_Ranged_Weapon|Basic Ranged Weapon]] - How to create a basic ranged weapon with custom sound effects&lt;br /&gt;
* [[Modding_Tutorials/Basic_Plant|Basic Plant]] - How to create a custom plant with both a cultivated and wild variant&lt;br /&gt;
* Custom Animal (Upcoming)&lt;br /&gt;
* Simple Building (Upcoming)&lt;br /&gt;
* Custom Workbench (Upcoming)&lt;br /&gt;
* Custom Drug (Upcoming)&lt;br /&gt;
&lt;br /&gt;
Advanced Tutorials:&lt;br /&gt;
* Custom Faction (Upcoming)&lt;br /&gt;
* Custom Culture (Upcoming)&lt;br /&gt;
* Custom Trader Type (Upcoming)&lt;br /&gt;
&lt;br /&gt;
===C# Guides===&lt;br /&gt;
&lt;br /&gt;
C# is used to create and define custom game behaviors &lt;br /&gt;
&lt;br /&gt;
* [[Modding_Tutorials/Decompiling source code|Decompiling Source Code]] - How to set up and use a decompiler to read vanilla game code&lt;br /&gt;
* [[Modding_Tutorials/Setting up a solution|Setting up a Solution]] - How to set up a solution for compiling a custom mod assembly&lt;br /&gt;
* [[Modding_Tutorials/Application_Startup|Application Startup]] - Describes the application startup process and the order in which game data is loaded&lt;br /&gt;
* Custom Consumable (Upcoming)&lt;br /&gt;
* Custom Overlays (Upcoming)&lt;br /&gt;
&lt;br /&gt;
===Slightly Outdated===&lt;br /&gt;
&lt;br /&gt;
* [[Modding_Tutorials/Plague_Gun_(1.1)|Plague Gun]] - This tutorial was created for RimWorld 1.0 but updated for 1.4. While the exact content is obsolete as you can now accomplish the same result with purely vanilla XML, it is still useful as a crash course for end-to-end mod creation and is here until newer tutorials can replace it.&lt;br /&gt;
&lt;br /&gt;
===Uploading to Steam Workshop===&lt;br /&gt;
* You can upload your mod to Steam Workshop by enabling Development Mode from your game Options and then using the Upload option under the Advanced button in the vanilla mod manager.&lt;br /&gt;
* Note that in order to upload to Steam Workshop, you must own the game on Steam Workshop. Owning RimWorld on GOG or Epic will not work.&lt;br /&gt;
* Your Preview.png should be a 640x360 or 1280x720 PNG and '''must''' be under 1MB. If it is too large, then your upload will be rejected with &amp;lt;code&amp;gt;Error : Limit Exceeded&amp;lt;/code&amp;gt;&lt;br /&gt;
* If you get a &amp;lt;code&amp;gt;OnItemSubmitted Fail&amp;lt;/code&amp;gt; error, make sure you close any programs that are targeting items in your mods folder. This can also mean that Steam Workshop is having some technical issues at the moment. If it keeps occurring, then the only thing to do is to wait a few hours for it to clear up.&lt;br /&gt;
* Steam mod descriptions don't use markdown, they use a variant of BBCode. Please check out the [https://steamcommunity.com/comment/Guide/formattinghelp Steam text formatting guide].&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
'''Note:''' All of the above tutorials have been cleaned up and reviewed by the #mod-development team on the [https://discord.gg/rimworld RimWorld Discord] in cooperation with RimWorld Wiki staff editors. Please let us know before creating, adding, or making any major edits to the vetted tutorials and guides section!&lt;br /&gt;
&lt;br /&gt;
==Outdated / Under Review==&lt;br /&gt;
&lt;br /&gt;
The following tutorials are either out of date or in need of a rewrite. The information in them might be useful but may not be up to standard; please be aware of any potential inaccuracies until they can be addressed.&lt;br /&gt;
&lt;br /&gt;
* [[Modding Tutorials/First Steps|First Steps and Some Links]]&lt;br /&gt;
* [[Modding Tutorials/Essence| Essence of Modding]]&lt;br /&gt;
* [[Modding Troubleshooting Tips and Guides]]&lt;br /&gt;
* [[Modding Tutorials/Testing mods|Testing Mods]]&lt;br /&gt;
** [[Modding Tutorials/Testing mods#Development mode|Development Mode]]&lt;br /&gt;
* [[Modding Tutorials/Sounds|Adding and Testing Sounds]]&lt;br /&gt;
* [[Modding Tutorials/Assets|Decompiling Texture/Sound Assets]]&lt;br /&gt;
* [[Modding Tutorials/Compatibility|Compatibility]]&lt;br /&gt;
* [[Modding_Tutorials/Distribution|Distribution]]&lt;br /&gt;
* [[Modding_Tutorials/Modifying defs|Modifying Defs]]&lt;br /&gt;
* [[Modding_Tutorials/Troubleshooting|Troubleshooting mods]]&lt;br /&gt;
&lt;br /&gt;
(Redundant, need to be reviewed and consolidated or removed)&lt;br /&gt;
* [[Modding_Tutorials/Getting_started_with_mods|Getting Started With XML]]&lt;br /&gt;
* [[Modding_Tutorials/Xml_Adding_Weapons_Traits_Research|Adding a New Weapon, Trait and Research to the game]]&lt;br /&gt;
* [[Modding_Tutorials/Xml_Patches|Making Patches using Xml]]&lt;br /&gt;
&lt;br /&gt;
===XML tutorials===&lt;br /&gt;
&lt;br /&gt;
* [[Modding Tutorials/XML file structure|XML File Structure]]&lt;br /&gt;
* [[Modding Tutorials/XML Defs|Introduction to XML Defs]]&lt;br /&gt;
** [[Modding Tutorials/Compatibility with defs|XML Def Compatibility]]&lt;br /&gt;
** [[Modding Tutorials/ThingDef|ThingDef explained]]&lt;br /&gt;
** [[Modding Tutorials/Weapons Guns|Weapons_Guns.xml explained]]. Slightly dated.&lt;br /&gt;
&lt;br /&gt;
===C# tutorials===&lt;br /&gt;
* [[Modding_Tutorials/Hello World|Hello World]]&lt;br /&gt;
* [[Modding_Tutorials/Writing custom code|Writing Custom Code]]&lt;br /&gt;
* [[Modding Tutorials/Linking XML and C#|Linking XML and C#]]&lt;br /&gt;
* [[Modding_Tutorials/Harmony|Alter Code at Runtime with Harmony]] - this is a best practice for modifying game code, replacing C# code injection to reduce Mod Conflicts&lt;br /&gt;
* [[Modding_Tutorials/Modifying classes|Adding fields and methods to classes]]&lt;br /&gt;
* [[Modding Tutorials/ModSettings|Mod settings]] - Add settings to your mod&lt;br /&gt;
* [[Modding Tutorials/DefModExtension|Def mod extensions]] - Add (custom) fields to Defs&lt;br /&gt;
* [[Modding Tutorials/Custom Comp Classes|Custom Comp Classes]] - A quick overview of what types of Comps there are, and what they're suited for.&lt;br /&gt;
* [[Modding_Tutorials/ThingComp|ThingComp]] - Learn all there is to know about ThingComps.&lt;br /&gt;
* [[Modding Tutorials/GameComponent|Components]] - GameComponents, WorldComponents, and MapComponents&lt;br /&gt;
* [[Modding_Tutorials/Def classes|Introduction to Def Classes]]&lt;br /&gt;
* [[Modding_Tutorials/Compatibility_with_DLLs|Using Harmony to optionally patch other mods for the sake of compatibility]]&lt;br /&gt;
* [[Modding Tutorials/TweakValue|TweakValues]] - Change values on the fly (handy for quick iteration!)&lt;br /&gt;
* [[Modding Tutorials/ExposeData|ExposeData]] - Save stuff&lt;br /&gt;
* [[Modding Tutorials/BigAssListOfUsefulClasses|The big ass list of useful classes]] - A non-exhaustive list of classes you'll use most&lt;br /&gt;
* [[Modding Tutorials/GrammarResolver|Grammar Resolver]] - PAWN_objective, PAWN_possessive? Find out what it all means here.&lt;br /&gt;
* [https://github.com/Mehni/ExampleJob/wiki ExampleJob] - Mehni's top to bottom breakdown of Jobs.&lt;br /&gt;
* [[Modding_Tutorials/ConfigErrors|Config Errors]] - Provide configuration issues to the user on startup.&lt;br /&gt;
* [[Modding Tutorials/DebugActions|Debug Actions]] - Call methods from the debug menu&lt;br /&gt;
* [https://www.arp242.net/rimworld-mod-linux.html Getting started with RimWorld modding on Linux]&lt;br /&gt;
&lt;br /&gt;
===Art Tutorials===&lt;br /&gt;
* [https://spdskatr.github.io/RWModdingResources/artstyle Artstyle] - Officially unofficial guide to RimWorld's Artstyle&lt;br /&gt;
* [https://www.reddit.com/r/RimWorld/comments/5tn1pi/rimworldstyle_sprite_tutorials/ Ekksu's guide to creating RimWorld animals]&lt;br /&gt;
* [https://steamcommunity.com/sharedfiles/filedetails/?id=1114369188 ChickenPlucker's guide to creating apparel]&lt;br /&gt;
* [https://github.com/seraphile/rimshare/wiki/Colouring-in-Images Seraphile's guide to masks]&lt;br /&gt;
&lt;br /&gt;
===Under Construction===&lt;br /&gt;
&lt;br /&gt;
These are currently unfinished and need to be cleaned up or removed&lt;br /&gt;
&lt;br /&gt;
* [[Modding Tutorials/Quests]]&lt;br /&gt;
* [[Modding Tutorials/Troubleshooting/Finding Exceptions]]&lt;br /&gt;
&lt;br /&gt;
===Dangerously Outdated===&lt;br /&gt;
&lt;br /&gt;
* [[RimWorld 1.3: XML Mod Creation]]&lt;br /&gt;
* [[Modding Tutorials/Assembly Modding Example|Assembly Modding]]&lt;br /&gt;
* [[Plague Gun (1.1)|The Plague Gun]] tutorial originally by Jecrell, updated to 1.1+. &lt;br /&gt;
* [[Modding Tutorials/Xenotype template]] originally by Ryflamer&lt;br /&gt;
&lt;br /&gt;
* [[Modding Tutorials/Smelter]]&lt;br /&gt;
* [[Modding Tutorials/Items]]&lt;br /&gt;
* [[Modding Tutorials/Furniture]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [https://github.com/roxxploxx/RimWorldModGuide/wiki Roxxploxx's set of modding tutorials]&lt;br /&gt;
* [https://spdskatr.github.io/RWModdingResources/ RimWorld Modding Resources - A hub for guides, modders, practical tips]&lt;br /&gt;
&lt;br /&gt;
[[Category:Modding]]&lt;br /&gt;
[[Category:Modding tutorials]]&lt;/div&gt;</summary>
		<author><name>Halicade</name></author>
	</entry>
</feed>