GithubHelp home page GithubHelp logo

giddyupcore's Introduction

Giddy-up! Core

Install

Download the zip from one of the releases, unpack and place the unpacked folder in the Rimworld mods folder.

Contributing

Translations are always very welcome. Just create a pull request.

Licence

Feel free to add this mod to modpacks or to use the code or icons for other projects. Do however not release exact copies of my project, or exact copies with minor adjustments without my consent. Code is derivate from Ludeon Studio.

Patching

No patching is needed to get Giddy-up working for other animal adding mods. However, some configurations can be patched:

Configuring draw priority and forbidden animals

In the mod options animals can be forbidden to be used as mount and the drawing priority of mounted animals can be configured. If you want to have this preconfigured for the animals in a mod you've developed, a patch can be created. Check out Patches/Races.xml for an example.

Custom drawing offsets for riders

Giddy-up automatically detects the position of the back of the animal to determine where to draw the rider. In some cases it may look better when deviating from this automatically determined position. For this purpose, you can configure custom drawing offsets for each animal individually. This offset is relative to the drawing position determined automatically by the mod. The following example patch ensures riders are drawn on the back of thrumbo's instead of on their neck.

<Patch>
	<Operation Class="PatchOperationSequence">
		<success>Always</success>
		<operations>
		<li Class="PatchOperationAddModExtension">
			<xpath>*/ThingDef[ defName = "Thrumbo"]</xpath> 
			<value>
				<li Class="GiddyUpCore.DrawingOffsetPatch">
					<!--Offsets can be configured for each view (north, south, west, east) separately using comma separated floating point values-->
					<northOffsetCSV>0,0,-0.6</northOffsetCSV><!--x,y,z coordinates. Mind that x: horizontal axis, y: drawing priority, z: vertical axis -->	
					<southOffsetCSV>0,0,-0.6</southOffsetCSV>	
					<eastOffsetCSV>-0.5,0,-0.6</eastOffsetCSV>	
					<westOffsetCSV>0.5,0,-0.6</westOffsetCSV>	
				</li>
			</value>
		</li>
		</operations>
	</Operation>
</Patch>

Custom allowed life stages

By default, only animals in their final life stage can be mounted. However, by patching, you can allow other life stages. The following example patch allows that the Muffalo can be mounted during any life stage:

<Patch>
	<Operation Class="PatchOperationSequence">
		<success>Always</success>
		<operations>
		<li Class="PatchOperationAddModExtension">
			<xpath>*/ThingDef[ defName = "Muffalo"]</xpath> 
			<value>
				<li Class="GiddyUpCore.AllowedLifeStagesPatch">
					<allowedLifeStagesCSV>0,1,2</allowedLifeStagesCSV> <!-- Provide the life stage indices as csv here.-->	
				</li>
			</value>
		</li>
		</operations>
	</Operation>
</Patch>

Restrict mount usage per faction.

If you want a certain faction only to use certain mounts, you can create a patch like the following example. You can also directly add a tag to a FactionDef instead of patching. In the example, the Pirate faction is patched so that it only uses Muffalos and Cougars.

<Patch>
	<Operation Class="PatchOperationSequence">
		<success>Always</success>
		<operations>
		<li Class="PatchOperationAddModExtension">
			<xpath>*/FactionDef[ defName = "Pirate"]</xpath> 
			<value>
				<li Class="GiddyUpCore.FactionRestrictionsPatch">
					<mountChance>30</mountChance>
					<!-- wild animals are the animals that can spawn in the wild -->
					<wildAnimalWeight>100</wildAnimalWeight> <!--Weights can have any integer value, and the relative fraction to the other weight will determine the change a type of animal spawns-->
					<nonWildAnimalWeight>0</nonWildAnimalWeight> <!-- setting this to 0 ensures no default domestic animals are spawned -->
					<!-- nonWild animals are the animals that cannot spawn in the wild, examples are Thrumbo's, farm animals etc.  -->
					<allowedWildAnimalsCSV>Muffalo,Cougar</allowedWildAnimalsCSV> <!--Use a csv with animal DefNames-->
					<allowedNonWildAnimalsCSV>""</allowedNonWildAnimalsCSV> <!-- only making this empty will imply no restrictions at all, so make sure domesticAnimalWeight is 0 if you don't want any domestic animals-->
				</li>
			</value>
		</li>
		</operations>
	</Operation>
</Patch>

Restrict mount usage per PawnKind.

It's also possible to restrict the mount usage of certain PawnKinds. In this example, the MercenarySlasher PawnKind, is patched so it only uses muffalo's and thrumbos as mount (with a high thrumbo chance :)).

<Patch>
	<Operation Class="PatchOperationSequence">
		<success>Always</success>
		<operations>
		<li Class="PatchOperationAddModExtension">
			<xpath>*/PawnKindDef[ defName = "MercenarySlasher"]</xpath>
			<value>
				<li Class="GiddyUpCore.CustomMountsPatch">
					<mountChance>100</mountChance><!-- % chance the pawn of the PawnKind will be a rider with a mount-->
					<possibleMounts>
						<li>
							<key>Muffalo</key> <!-- DefName of the mount-->
							<value>10</value> <!-- Weight determining the chance the mount will be of the type of the key --> 
						</li>
						<li>
							<key>Thrumbo</key>
							<value>200</value><!-- note that the weights don't have to add up to 100, as they are normalized automatically -->
						</li>
					</possibleMounts>
				</li>
			</value>
		</li>
		</operations>
	</Operation>
</Patch>
	

Using overlay textures to make some mounts look good.

Some mounts, especially the ones with long horns or long necks, look strange when the pawn is drawn in front, or behind them, because the pawn either overlaps strange parts of the animal, or drawing the pawn behind the animal doesn't look appropriate. An example of such an animal is the caribou. By patching, it's possible to solve this problem.

By default, a mounted caribou would look like this: Image of Caribou - problematic

However, when patched properly it looks like this: Image of Caribou - patched

To achieve this, the parts of the animal that should overlap the rider are provided as images, and the following patch is used:

<Patch>
	<Operation Class="PatchOperationSequence">
		<success>Always</success>
		<operations>
		<li Class="PatchOperationAdd">
			<xpath>*/ThingDef[defName = "Caribou"]/comps</xpath> <!-- Note that the Caribou always has comps. some animals don't have comps by default though. Make sure to take this into account when patching. -->
			<value>
				<li Class="GiddyUpCore.CompProperties_Overlay">
					<overlayFront> <!--Different overlays can be provided for different viewpoints, possibilities are: overlayFront, overlaySide, and overlayBack -->
						<graphicDataDefault><!-- Different graphics data can be provided for different genders, possibilities are: graphicDataDefault(for all genders), graphicDataMale and graphicDataFemale -->
						  <texPath>Things/Pawn/Caribou_overlay_front</texPath> <!-- Any property of the GraphicData class can be set here. This includes colors, shadows etc! -->
						  <graphicClass>Graphic_Single</graphicClass>
						  <drawSize>4.38</drawSize>
						  <drawRotated>false</drawRotated>
						  <shaderType>MetaOverlay</shaderType>
						</graphicDataDefault>					
					    <offsetDefault>(0,0,0,0)</offsetDefault> <!--  Different offsets can be provided for different genders. Possibilities are: offsetDefault(for all genders), offsetFemale and offsetMale --> 
					</overlayFront>
					<overlaySide>
						<graphicDataDefault>
						  <texPath>Things/Pawn/Caribou_overlay_side</texPath>
						  <graphicClass>Graphic_Single</graphicClass>
						  <drawSize>4.38</drawSize>
						  <drawRotated>false</drawRotated>
	                                          <shaderType>MetaOverlay</shaderType>
						</graphicDataDefault>
					    <offsetDefault>(0,0,0,0)</offsetDefault>
					</overlaySide>
				</li>
			</value>
		</li>
		</operations>
	</Operation>
</Patch>

Overlay textures with multi-texture support (Rimworld 1.1).

In the case that an animal has multiple texture variants, creating overlays for each texture variant is supported. I If you make sure that your overlay texture has the same naming convention as the original texture, Giddy-up will automatically match your overlay with the texture a given animal is using. Vanilla textures use the convention . As long as your overlay starts with , the auto-matching will work. In the following example a patch for the vanilla horse, introduced in Rimworld 1.1 is shown. It has 6 distinct textures, which are assigned randomly by the game.

<Operation Class="PatchOperationSequence">
	<success>Always</success>
	<operations>
	<li Class="PatchOperationAdd">
		<xpath>*/ThingDef[defName = "Horse"]/comps</xpath>
		<value>
			<li Class="GiddyUpCore.CompProperties_Overlay">
				<overlayFront>
					<graphicDataDefault> <!-- all variants use the graphics data properties defined here. -->
					  <graphicClass>Graphic_Single</graphicClass> <!-- Any property of the GraphicData class can be set here. This includes colors, shadows etc! -->
					  <drawSize>2.1</drawSize>
					  <drawRotated>false</drawRotated>
					  <shaderType>MetaOverlay</shaderType>
					  <shadowData>
						<volume>(0.8, 0.6, 0.6)</volume>
						<offset>(0,0,-0.3)</offset>
					  </shadowData>
					</graphicDataDefault>
					<allVariants>
						<li>
							<texPath>Things/Pawn/Horse1_south</texPath>
						</li>							
						<li>
							<texPath>Things/Pawn/Horse2_south</texPath>
						</li>							
						<li>
							<texPath>Things/Pawn/Horse3_south</texPath>
						</li>							
						<li>
							<texPath>Things/Pawn/Horse4_south</texPath>
						</li>							
						<li>
							<texPath>Things/Pawn/Horse5_south</texPath>
						</li>						
						<li>
							<texPath>Things/Pawn/Horse6_south</texPath>
						</li>
					</allVariants>
				    <offsetDefault>(0,0,0,0)</offsetDefault>
				</overlayFront>
			</li>
		</value>
	</li>
	</operations>
</Operation>

Custom stats when animals are mounted.

Want to make an animal faster when it's mounted? Or want it to have more armor? Then this patching option is what you need. In the following example, a Thrumbo is patched so it's twice as fast, has a rediculous amount of armor when mounted, and has a metal bounce off effect when the armor deflects projectiles:

<Operation Class="PatchOperationAddModExtension">
	<xpath>*/ThingDef[ defName = "Thrumbo"]</xpath> 
	<value>
		<li Class="GiddyUpCore.CustomStatsPatch">
			<!--Speed factor. In this example the thrumbo is made twice as fast when used as mount -->
			<speedModifier>2.0</speedModifier>
			<!--Armor factor. In this example the thrumbo has 10 times the heat/blunt/sharp armor when used as mount, making it completly indistructible -->
			<armorModifier>10.0</armorModifier>
			<!--Setting useMetalArmor to true, makes the animal's skin have the metal bounce of effect when hit, when used as mount --> 
			<useMetalArmor>true</useMetalArmor>
		</li>
	</value>
</Operation>

Want more patching possibilities? Just ask!

giddyupcore's People

Contributors

arialavi avatar ashnal avatar bambinoff avatar cody-spring avatar cyinghan avatar juanosarg avatar kaptain-kavern avatar kbatbouta avatar lazydog8242 avatar lingluo39 avatar mora145 avatar ogliss avatar pablosan93 avatar proxyer avatar rheirman avatar roelheirman avatar roffelchen avatar shiuanyue avatar zimgineering avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

giddyupcore's Issues

Movespeed patch should be applied after all other mods patch movespeed.

Theoretically it's possible that a rider's movespeed is patched after the rider's speed is set to the mount's speed. This can cause an inconsistency between the mount's speed and the rider's speed. Also, it can make mounts faster or slower than they should be due to speed modifiers that shouldn't affect mounts (for instance shoes, or chains etc.)

Weird crash

I'm hoping this will help you a bit, since I'm not really sure what else to do with it.

Setting breakpad minidump AppID = 294100
Steam_SetMinidumpSteamID:  Caching Steam ID:  76561198048583162 [API loaded no]
mmap(...PROT_NONE...) failed
Stacktrace:

  at (wrapper managed-to-native) object.__icall_wrapper_mono_object_new_fast (intptr) <0x0005e>
  at (wrapper managed-to-native) object.__icall_wrapper_mono_object_new_fast (intptr) <0x0005e>
  at Harmony.Traverse.Field (string) <0x0015e>
  at GiddyUpCore.Harmony.Pawn_RotationTracker_UpdateRotation.Prefix (Verse.Pawn_RotationTracker&) <0x0004e>
  at (wrapper dynamic-method) Verse.Pawn_RotationTracker.UpdateRotation_Patch2 (object) <0x00036>
  at (wrapper dynamic-method) Verse.Pawn_RotationTracker.RotationTrackerTick_Patch1 (object) <0x0002b>
  at (wrapper dynamic-method) Verse.Pawn.Tick_Patch3 (object) <0x001e4>
  at (wrapper dynamic-method) Verse.TickList.Tick_Patch2 (object) <0x003f3>
  at Verse.TickManager.DoSingleTick () <0x001c0>
  at Verse.TickManager.TickManagerUpdate () <0x0015f>
  at Verse.Game.UpdatePlay () <0x00029>
  at Verse.Root_Play.Update () <0x00080>
  at (wrapper runtime-invoke) object.runtime_invoke_void__this__ (object,intptr,intptr,intptr) <0x0005e>

Native stacktrace:

	/home/deus/.steam/steam/steamapps/common/RimWorld/RimWorldLinux_Data/Mono/x86_64/libmono.so(+0x91f56) [0x7f63721ecf56]
	/lib/x86_64-linux-gnu/libpthread.so.0(+0x12890) [0x7f637b6d4890]
	/lib/x86_64-linux-gnu/libc.so.6(gsignal+0xc7) [0x7f637a7c8e97]
	/lib/x86_64-linux-gnu/libc.so.6(abort+0x141) [0x7f637a7ca801]
	/home/deus/.steam/steam/steamapps/common/RimWorld/RimWorldLinux_Data/Mono/x86_64/libmono.so(+0x1a10cb) [0x7f63722fc0cb]
	/home/deus/.steam/steam/steamapps/common/RimWorld/RimWorldLinux_Data/Mono/x86_64/libmono.so(+0x1a241e) [0x7f63722fd41e]
	/home/deus/.steam/steam/steamapps/common/RimWorld/RimWorldLinux_Data/Mono/x86_64/libmono.so(+0x198c3b) [0x7f63722f3c3b]
	/home/deus/.steam/steam/steamapps/common/RimWorld/RimWorldLinux_Data/Mono/x86_64/libmono.so(+0x199dba) [0x7f63722f4dba]
	/home/deus/.steam/steam/steamapps/common/RimWorld/RimWorldLinux_Data/Mono/x86_64/libmono.so(+0x199f49) [0x7f63722f4f49]
	/home/deus/.steam/steam/steamapps/common/RimWorld/RimWorldLinux_Data/Mono/x86_64/libmono.so(+0x19a78e) [0x7f63722f578e]
	/home/deus/.steam/steam/steamapps/common/RimWorld/RimWorldLinux_Data/Mono/x86_64/libmono.so(+0x19a99f) [0x7f63722f599f]
	/home/deus/.steam/steam/steamapps/common/RimWorld/RimWorldLinux_Data/Mono/x86_64/libmono.so(+0x19defb) [0x7f63722f8efb]
	/home/deus/.steam/steam/steamapps/common/RimWorld/RimWorldLinux_Data/Mono/x86_64/libmono.so(+0x19e891) [0x7f63722f9891]
	/home/deus/.steam/steam/steamapps/common/RimWorld/RimWorldLinux_Data/Mono/x86_64/libmono.so(+0x1a4c48) [0x7f63722ffc48]
	[0x41eb1fae]
	[0x7f62c801438c]
	[0x41657801]
	[0x41fc8da0]
	[0x41ebb56f]
	/home/deus/.steam/steam/steamapps/common/RimWorld/RimWorldLinux_Data/Mono/x86_64/libmono.so(+0x38d89) [0x7f6372193d89]
	/home/deus/.steam/steam/steamapps/common/RimWorld/RimWorldLinux_Data/Mono/x86_64/libmono.so(mono_runtime_invoke+0x68) [0x7f637228fb39]
	./RimWorldLinux.x86_64() [0x9b9a82]
	./RimWorldLinux.x86_64() [0xa247ee]
	./RimWorldLinux.x86_64() [0x9f674c]
	./RimWorldLinux.x86_64() [0x5eb082]
	./RimWorldLinux.x86_64() [0x8011d9]
	./RimWorldLinux.x86_64() [0x45488f]
	/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7f637a7abb97]
	./RimWorldLinux.x86_64() [0x45df99]

Debug info from gdb:

ERROR: ld.so: object '/home/deus/.steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
I refuse to debug myself!
No threads.

=================================================================
Got a SIGABRT while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries 
used by your application.
=================================================================

Crash on setup camp

Hi. I have a crash after the latest update with the setup camp mod. I didn't had this error before. I have setup camp before.

Mod version: latest from Steam
Version: 1.1.2654 (64 bit)
Harmony v2.0,1.0 Mod v1.0.2.0

Exception from asynchronous event: System.NullReferenceException: Object reference not set to an instance of an object
  at GiddyUpRideAndRoll.Harmony.CaravanEnterMapUtility_Enter.MountCaravanMounts (System.Collections.Generic.List`1[T] pawns) [0x00086] in <f2a255b31b7742feb9fc211cbe4c4119>:0 
  at (wrapper dynamic-method) RimWorld.Planet.CaravanEnterMapUtility.DMD<DMD<Enter_Patch2>?648074112::Enter_Patch2>(RimWorld.Planet.Caravan,Verse.Map,System.Func`2<Verse.Pawn, Verse.IntVec3>,RimWorld.Planet.CaravanDropInventoryMode,bool)
  at (wrapper dynamic-method) RimWorld.Planet.CaravanEnterMapUtility.DMD<DMD<Enter_Patch1>?520662784::Enter_Patch1>(RimWorld.Planet.Caravan,Verse.Map,RimWorld.Planet.CaravanEnterMode,RimWorld.Planet.CaravanDropInventoryMode,bool,System.Predicate`1<Verse.IntVec3>)
  at Syrchalis_SetUpCamp.SetUpCamp_Utility+<>c__DisplayClass3_0.<Camp>b__1 () [0x00028] in <898da351fdc44b2989b0aec53b40a06b>:0 
  at Verse.LongEventHandler.RunEventFromAnotherThread (System.Action action) [0x00008] in <0ee2c524c4be441e9b7f8bfcb20aca6f>:0 
Verse.Log:Error(String, Boolean)
Verse.LongEventHandler:RunEventFromAnotherThread(Action)
Verse.<>c:<UpdateCurrentAsynchronousEvent>b__27_0()
System.Threading.ThreadHelper:ThreadStart_Context(Object)
System.Threading.ExecutionContext:RunInternal(ExecutionContext, ContextCallback, Object, Boolean)
System.Threading.ExecutionContext:Run(ExecutionContext, ContextCallback, Object, Boolean)
System.Threading.ExecutionContext:Run(ExecutionContext, ContextCallback, Object)
System.Threading.ThreadHelper:ThreadStart()

Mod list:

<?xml version="1.0" encoding="utf-8"?>
<ModList>
	<Name>LordRims9</Name>
	<modIds>
		<li>Core</li>
		<li>1507748539</li>
		<li>818773962</li>
		<li>932008009</li>
		<li>839005762</li>
		<li>1316188771</li>
		<li>1354114366</li>
		<li>1400245220</li>
		<li>1400238872</li>
		<li>1400234784</li>
		<li>1400227853</li>
		<li>1201382956</li>
		<li>730936602</li>
		<li>1602579533</li>
		<li>1539309348</li>
		<li>761421485</li>
		<li>712141500</li>
		<li>1098354593</li>
		<li>725153576</li>
		<li>1541460369</li>
		<li>935982361</li>
		<li>708455313</li>
		<li>1931133197</li>
		<li>1691419062</li>
		<li>1543157124</li>
		<li>715565262</li>
		<li>1501832876</li>
		<li>1543189281</li>
		<li>1543189511</li>
		<li>1541139150</li>
		<li>1505423207</li>
		<li>836308268</li>
		<li>1446523594</li>
		<li>818322128</li>
		<li>1539311500</li>
		<li>1539311991</li>
		<li>715759739</li>
		<li>1216999901</li>
		<li>1253251478</li>
		<li>1217001091</li>
		<li>1316142788</li>
		<li>1331961995</li>
		<li>1817862464</li>
		<li>1082915328</li>
		<li>1185265132</li>
		<li>1192504741</li>
		<li>1188485723</li>
		<li>1185269798</li>
		<li>1185906628</li>
		<li>1185274792</li>
		<li>1185281838</li>
		<li>1244299809</li>
		<li>1083959631</li>
		<li>1662902728</li>
		<li>__LocalCopy_GloomyFurniture_-22-12</li>
		<li>1865654125</li>
		<li>1517406823</li>
		<li>753498552</li>
		<li>1516158345</li>
		<li>1879568817</li>
		<li>715565817</li>
		<li>__LocalCopy_Medieval_Times_-22-12</li>
		<li>826998327</li>
		<li>1454024362</li>
		<li>1544944259</li>
		<li>1541250497</li>
		<li>1612316880</li>
		<li>830221184</li>
		<li>1543561093</li>
		<li>1180719857</li>
		<li>1540322147</li>
		<li>1365242717</li>
		<li>1438693028</li>
		<li>1552507180</li>
		<li>1543177113</li>
		<li>1531882210</li>
		<li>1571623829</li>
		<li>1616643195</li>
		<li>709317151</li>
		<li>1372003680</li>
		<li>946390822</li>
		<li>1713190031</li>
		<li>726479594</li>
		<li>1521844535</li>
		<li>1553179450</li>
		<li>761403726</li>
		<li>1904794820</li>
		<li>1561221991</li>
		<li>1554149030</li>
		<li>1204108550</li>
		<li>1180718516</li>
		<li>1470065926</li>
		<li>927155256</li>
		<li>1309994319</li>
		<li>__LocalCopy_Smoked_meat_-23-12</li>
		<li>725447220</li>
		<li>853043503</li>
		<li>1430086135</li>
		<li>725747149</li>
		<li>1353625821</li>
		<li>1543172057</li>
		<li>1836900626</li>
		<li>1895364938</li>
		<li>1823540489</li>
		<li>1849183875</li>
		<li>1849184079</li>
		<li>1895364782</li>
		<li>1700683323</li>
		<li>1895364585</li>
		<li>1938420742</li>
		<li>1803445973</li>
		<li>725219116</li>
		<li>1554147049</li>
		<li>1544626521</li>
		<li>1673071343</li>
		<li>962732083</li>
		<li>1323773476</li>
		<li>867467808</li>
		<li>1844358534</li>
		<li>1817883612</li>
		<li>725956940</li>
		<li>746425621</li>
		<li>1677616980</li>
		<li>1544107509</li>
		<li>1594293342</li>
		<li>1508292711</li>
		<li>1729795429</li>
		<li>1570960972</li>
		<li>1508341791</li>
		<li>1612308782</li>
		<li>1339148170</li>
		<li>1203903378</li>
		<li>728381322</li>
		<li>1875828205</li>
		<li>1507384362</li>
		<li>784123492</li>
		<li>1896982754</li>
		<li>794038005</li>
		<li>1957158779</li>
		<li>1845154007</li>
		<li>1613593314</li>
	</modIds>
	<modNames>
		<li>Core</li>
		<li>Mod Manager</li>
		<li>HugsLib</li>
		<li>JecsTools</li>
		<li>Humanoid Alien Races 2.0</li>
		<li>Doors Expanded</li>
		<li>RimQuest</li>
		<li>Lord of the Rims - The Third Age</li>
		<li>Lord of the Rims - Dwarves</li>
		<li>Lord of the Rims - Elves</li>
		<li>Lord of the Rims - Hobbits</li>
		<li>A RimWorld of Magic</li>
		<li>Achtung!</li>
		<li>Additional Joy Objects Lite</li>
		<li>[RF] Advanced Bridges [1.0]</li>
		<li>Allow Tool</li>
		<li>Animal Tab</li>
		<li>Animals Logic</li>
		<li>Area Unlocker</li>
		<li>Better Pawn Control</li>
		<li>Better Workbench Management</li>
		<li>Blueprints</li>
		<li>Boats</li>
		<li>Build From Inventory</li>
		<li>Cleaning Priority</li>
		<li>Colony Manager</li>
		<li>Color Coded Mood Bar</li>
		<li>[TWC]Cupro's Alloys 1.0</li>
		<li>[TWC]Cupro's Stones 1.0</li>
		<li>Door Curtains</li>
		<li>Door Mat R1.0</li>
		<li>Dubs Bad Hygiene</li>
		<li>Dubs Mint Menus</li>
		<li>Facial Stuff 1.0</li>
		<li>[RF] Fertile Fields [1.0]</li>
		<li>[RF] Fishing [1.0]</li>
		<li>Follow Me</li>
		<li>Giddy-up! Core</li>
		<li>Giddy-up! Caravan</li>
		<li>Giddy-up! Battle Mounts</li>
		<li>Gear Up And Go</li>
		<li>Giddy-up! Ride and Roll</li>
		<li>[WD] Expanded Floors 1.0</li>
		<li>Expanded Woodworking</li>
		<li>VGP Vegetable Garden</li>
		<li>VGP More Veggies</li>
		<li>VGP Garden Drinks</li>
		<li>VGP Garden Fabrics</li>
		<li>VGP Garden Gourmet</li>
		<li>VGP Garden Medicine</li>
		<li>VGP Xtra Trees and Flowers</li>
		<li>VGP_CoffeeTeaDrugs</li>
		<li>Expanded Woodworking for Vegetable Garden Project</li>
		<li>Geyser Cooking station</li>
		<li>GloomyFurniture</li>
		<li>Gloomy Deco</li>
		<li>Herd Migration Revival</li>
		<li>Hospitality</li>
		<li>Interaction Bubbles</li>
		<li>Last Visited</li>
		<li>Medical Tab</li>
		<li>Medieval Times</li>
		<li>Moody</li>
		<li>More Faction Interaction</li>
		<li>More Furniture [1.0]</li>
		<li>More Harvest Designators!</li>
		<li>More Sculpture</li>
		<li>More vanilla factions</li>
		<li>[T] MoreFloors</li>
		<li>[KV] Path Avoid - 1.0</li>
		<li>[RF] Permafrost [1.0]</li>
		<li>Pharmacist</li>
		<li>Progress Renderer</li>
		<li>Psychology</li>
		<li>Quarry 1.0</li>
		<li>[WD] Realistic Darkness 1.0</li>
		<li>[RF] Realistic Planets [1.0]</li>
		<li>Recipe icons</li>
		<li>Relations Tab</li>
		<li>Replace Stuff</li>
		<li>ResearchPal</li>
		<li>RimStory</li>
		<li>Rimworld Search Agency</li>
		<li>RimWriter - Books, Scrolls, Tablets, and Libraries</li>
		<li>Roof Support 1.0</li>
		<li>[sd] round tables</li>
		<li>Round table + GloomyFurniture</li>
		<li>[1.0] RPG Style Inventory</li>
		<li>[RF] Rumor Has It.... [1.0]</li>
		<li>RunAndGun</li>
		<li>[KV] Save Storage, Outfit, Crafting, Drug, &amp; Operation Settings - 1.0</li>
		<li>[SYR] Set Up Camp</li>
		<li>Simple sidearms</li>
		<li>Smart Medicine</li>
		<li>Smoked meat</li>
		<li>Spoons Hair Mod</li>
		<li>Stuffed Floors</li>
		<li>Table Diner</li>
		<li>Tilled Soil</li>
		<li>Use Bedrolls</li>
		<li>CuproPanda's Drinks</li>
		<li>Vanilla Animals Expanded — Arid Shrubland</li>
		<li>Vanilla Animals Expanded — Boreal Forest</li>
		<li>Vanilla Animals Expanded — Cats and Dogs</li>
		<li>Vanilla Animals Expanded — Desert</li>
		<li>Vanilla Animals Expanded — Extreme Desert</li>
		<li>Vanilla Animals Expanded — Ice Sheet</li>
		<li>Vanilla Animals Expanded — Livestock</li>
		<li>Vanilla Animals Expanded — Tundra</li>
		<li>Vanilla Events Expanded</li>
		<li>Vanilla Fences</li>
		<li>Work Tab</li>
		<li>Zen Garden</li>
		<li>While You're Up [1.0]</li>
		<li>Jewelry</li>
		<li>RuntimeGC</li>
		<li>Meals On Wheels</li>
		<li>Camera+</li>
		<li>[WD] Expanded Floors (Expanded Woodworking Addon) 1.0</li>
		<li>[WD] Expanded Floors (Dropdown Menu Addon) - 1.0</li>
		<li>Expanded Prosthetics and Organ Engineering</li>
		<li>A Dog Said... Animal Prosthetics</li>
		<li>Bionic icons</li>
		<li>I Clearly Have Enough!</li>
		<li>Impassable Chest-deep Water</li>
		<li>[KV] More Trait Slots - 1.0</li>
		<li>Pawn Education</li>
		<li>Powerful Faction Bases</li>
		<li>[FSF] Rain Washes Away Filth</li>
		<li>Red Dragon</li>
		<li>Room Food</li>
		<li>1.0 - Imprisonment On The Go! (Make Pawns Prisoners Without Beds)</li>
		<li>Apparello 2</li>
		<li>Armor Racks</li>
		<li>[KV] Consolidated Traits - 1.0</li>
		<li>Easier Growingzones</li>
		<li>PawnTargetFix</li>
		<li>PrisonerRansom</li>
		<li>Vanilla Furniture Expanded - Farming</li>
		<li>Vanilla Furniture Expanded - Security</li>
		<li>Medieval - Vanilla</li>
	</modNames>
</ModList>

Some ridden animals lost when reforming caravan from enemy (resources) site

Won the battle at an enemy resources site.
When forming caravan, I had 6 horses, a prisoner, 7 pawns.
Tied to the caravan spot, at least 4 horses. I can't swear on the precise number.
Assigned a rider to each of the 6 horses, 1 pawn walking.
Sent the caravan out.

Message "Caravan lost": 4 of the 6 horses were left behind (lost).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.