Swimming Kit
A RimWorld mod which adds swimming attribute for pawns to change speeds while in water tiles.
Required Mods
- Harmony
Optional / Compatible Mods
- [url=https://steamcommunity.com/sharedfiles/filedetails/?id=2048567351]TerrainMovementKit[/url] A copy of this mod is included automatically, but if you also install the TerrainMovementKit as well it won't cause any issues with the SwimmingKit.
Description
The mod acts as a toolkit for adding swimming statistics to the game. It makes pawns respect a new SwimSpeed baseStat for both moving through water and for planning pathing through water.
In working on another mod it took the better part of a long weekend to get all the various places that needed changing correct, so to save other modders time and to enable adding actual aquatic gear / pawns I put the changes together in this mod.
[b]Change in Terrain[/b]
This mod makes Ocean and DeepWater tiles accessible. Normal pawns will move very very slow through ocean, but it is possible for pawns and items to now be in Ocean. If a pawn has SwimSpeed it will travel much quicker through ocean tiles.
How to Use
Adding the `SwimSpeed` to any `ThingDef`'s `statBases` will apply swim speed when in water tiles.
<ThingDef ParentName="AnimalThingBase" ADogSaidBody="Tail">
<defName>Turtle</defName>
<label>turtle</label>
<description>A tortoise that likes water</description>
<statBases>
<MoveSpeed>1</MoveSpeed>
<!-- This makes turtle have a base speed of 4 in water -->
<SwimSpeed>4</SwimSpeed>
</statBases>
</ThingDef>
Setting aquatic in the Swimming.AquaticExtension will make something aquatic only, meaning it won't go on land.
<ThingDef ParentName="AnimalThingBase">
<defName>Shark</defName>
<label>shark</label>
<description>A shark that can only go in water</description>
<statBases>
<MoveSpeed>0.15</MoveSpeed>
<SwimSpeed>4</SwimSpeed>
</statBases>
<modExtensions>
<!-- This makes sharks stay in the water -->
<li Class="Swimming.AquaticExtension">
<aquatic>true</aquatic>
</li>
</modExtensions>
</ThingDef>
If you want to conditionally set a SwimSpeed only if this mod is present you can do the following:
// Dynamically set the SwimSpeed to avoid requiring SwimmingKit
StatDef swimDef = DefDatabase<StatDef>.GetNamed("SwimSpeed", false);
if (swimDef != null)
{
ThingDef turtle = ThingDef.Named("Turtle");
turtle.SetStatBaseValue(swimDef, 4.0f);
}
You can also effect SwimSpeed by modifying equipment.
<ThingDef ParentName="ArmorMachineableBase">
<defName>Apparel_HydroPowerArmor</defName>
<label>hydro plate armor</label>
<description>Augmented power armor with built-in water-jets for fast traversal underwater.</description>
</statBases>
<equippedStatOffsets>
<MoveSpeed>-1.0</MoveSpeed>
<SwimSpeed>3.5</SwimSpeed>
</equippedStatOffsets>
</ThingDef>
For more details please read the [url=https%3A%2F%2Fgithub.com%2FMSeal%2FRimworldSwimming]Github SwimmingKit page[/url][github.com].
Credits
[url=https%3A%2F%2Fwww.freeiconspng.com%2Fimg%2F3775]Icon Graphic Base[/url][www.freeiconspng.com]
[url=https%3A%2F%2Fgithub.com%2Fpardeike%2FHarmony]Powered by Harmony Patch Library[/url][github.com]