Skip to content
Lana Avery edited this page Feb 27, 2026 · 2 revisions

This wiki explains how other modders can use the mod extensions of Giddy-Up. You can either add these mod extensions through a PatchOperationAddModExtension, or if you are the author the original Def, you could just write it directly into the def itself using a MayRequire.

Basic overrides

<!-- extension of ThingDef -->
<li Class="GiddyUp.Mountable" />
<li Class="GiddyUp.NotMountable" />
<li Class="GiddyUp.DrawInFront" />

<!-- extension of JobDef -->
<li Class="GiddyUp.CanDoMounted" />

The in-game mod options allow players to specify which animals are mountable or not, as well as swapping the draw behavior. By including these override extensions, the default assumptions are inverted. So, for example, if it would have by default allowed a monstrous animal to be mounted, the NotMountable extension will prevent this default.

Animals larger than bodySize 1.2 are assumed mountable. No assumptions are made regarding the drawing behavior, it always draws behind the pawn by default.

Faction restrictions

<!-- extension of FactionDef -->
<li Class="GiddyUp.FactionRestrictions">
	<allowedWildAnimals>
		<li>Thrumbo</li>
		<li>Rhino</li>
	</allowedWildAnimals>
	<allowedNonWildAnimals>
		<li>Horse</li>
		<li>Ostrich</li>
	</allowedNonWildAnimals>
	<mountChance>50</mountChance>
	<wildAnimalWeight>25</wildAnimalWeight>
	<nonWildAnimalWeight>75</nonWildAnimalWeight>
</li>

This allows you to theme a faction so that they only pick from specific species during the mount generation phase.

  • allowedWildAnimals and allowedNonWildAnimals: these lists can be used however you'd like, their names are only a suggestion. They are tied to the weight fields, below.
  • wildAnimalWeight and nonWildAnimalWeight: The higher the number relative to the other, the more likely its corresponding list will be the pool used to pick from.
  • mountChance: The percentage odds any pawn of this faction will spawn mounted up during both friendly and hostile incidents.

Custom mounts

<!-- extension of PawnKindDef -->
<li Class="GiddyUp.CustomMounts">
	<mountChance>50</mountChance>
	<possibleMounts>
		<li>
			<key>Horse</key>
			<value>90</value>
		</li>
		<li>
			<key>Thrumbo</key>
			<value>10</value>
		</li>
	</possibleMounts>
</li>

This applies to specific pawnkinds, allowing you to override what type of mount they should spawn with. You could, for example, generate cavalry units this way.

  • mountChance: The percentage odds that this pawnkind will spawn mounted up during both friendly and hostile incidents. If not specified, the default chances are used.
  • possibleMounts: This is a dictionary-type list of mounts the pawn may select from in the event they pass the mountChance roll. The value is an arbitrary weight and needn't add up to 100, as it is a normalized draw. This list is optional. If not specified, then you are only applying a custom mountChance override.

Allowed life stages

<!-- extension of ThingDef -->
<li Class="GiddyUp.AllowedLifeStages">
	<allowedLifeStagesCSV>3,4</allowedLifeStagesCSV>
</li>

By default, only the final life stage is considered mountable (for most animals this would be their adult life stage). You can created a comma separated list of allowed life stages using this extension.

Custom stats

<!-- extension of PawnKindDef -->
<li Class="GiddyUp.CustomStats">
	<speedModifier>1.0</speedModifier>
	<armorModifier>1.0</armorModifier>
	<useMetalArmor>true</useMetalArmor>
</li>

Used to provided bonuses to animals.

Drawing offset

<!-- extension of ThingDef -->
<li Class="GiddyUp.DrawingOffset">
	<northOffset>(0.0, 0.0, 0.0)</northOffset>
	<southOffset>(0.0, 0.0, 0.0)</southOffset>
	<eastOffset>(0.0, 0.0, -0.25)</eastOffset>
	<westOffset>(0.0, 0.0, -0.25)</westOffset>
</li>

Giddy-Up will automatically attempt to sort out where the rider sits by analyzing the pixels of the sprite and trying to find where the transparency lies. In the event it doesn't get it right, you can specify the offsets manually here.

These are Vector3 fields - X, Y, Z. Normally you just need to change Z to have the pawn sit a bit higher/lower on the mount, and X is left/right. The Y offset can normally be ignored unless you're doing something fancy with layering.

Research restrictions

<!-- extension of ThingDef -->
<li Class="GiddyUp.ResearchRestrictions">
	<researchProjectDefs>
		<li>DragonRiding</li>
	</researchProjectDefs>
	<researchProjectDefToAttack>MountedCombat</researchProjectDefToAttack>
</li>

This restricts the mounting of specific species unless a research project has completed, or even multiple projects. All fields are optional.

  • researchProjectDefs: A list of research project defs that must all be completed before mounting is allowed.
  • researchProjectDefToAttack: If this field is specified, then that creature cannot participate in mounted combat (the rider can still attack, though).

MayRequire example

<PawnKindDef ParentName="VFEM_Medieval_Knight">
	<defName>VFEM_Medieval_King</defName>
	<label>king</label>
	<labelFemale>queen</labelFemale>
	<combatPower>150</combatPower>
	<minGenerationAge>30</minGenerationAge>
	<maxGenerationAge>999</maxGenerationAge>
	<itemQuality>Good</itemQuality>
	<factionLeader>true</factionLeader>
	<apparelRequired>
		<li>VFEM_Apparel_KingsCrown</li>
		<li>VFEM_Apparel_KingsRobes</li>
	</apparelRequired>
	<apparelMoney>
		<min>1600</min>
		<max>3000</max>
	</apparelMoney>
	<weaponMoney>
		<min>500</min>
		<max>700</max>
	</weaponMoney>
	<initialWillRange>3~5</initialWillRange>
	<initialResistanceRange>20~30</initialResistanceRange>
	<modExtensions>
		<li MayRequire="Owlchemist.GiddyUp" Class="GiddyUp.CustomMounts">
			<mountChance>50</mountChance>
			<possibleMounts>
				<li>
					<key>Horse</key>
					<value>90</value>
				</li>
				<li>
					<key>Thrumbo</key>
					<value>10</value>
				</li>
			</possibleMounts>
		</li>
	</modExtensions>
</PawnKindDef>

The last node shows an example of how to in-line the extension without needing to write up a patch file.

Clone this wiki locally