Basic Melee Weapon
This is a basic RimWorld mod tutorial for the purpose of creating a simple melee weapon.
Goals[edit]
- Create a new machete item, a simple melee weapon
- Give it a custom texture with a color mask
- Give it a simple stat bonus
Recommended Reading[edit]
Sample Repository[edit]
A working implementation of this mod can be found in this GitHub repository. You can use it to compare against your work or as a basis for modification!
Folder Setup[edit]
First, you will want to create the files and folders necessary for this mod:
Mods └ MyModFolder ├ About │ ├ About.xml │ └ Preview.png ├ Defs │ └ ThingDefs │ └ ExampleWeapons_Melee.xml └ Textures └ ExampleMod ├ ExampleWeapon_Machete.png └ ExampleWeapon_Machete_m.png
Please check out the mod folder structure guide for more information about individual folders.
About.xml[edit]
Your About.xml
is used to identify your mod to RimWorld; please see the About.xml reference page for more information. Be sure to replace "AuthorName" with your own name:
<?xml version="1.0" encoding="utf-8"?> <ModMetaData> <!-- This is the internal identifier for your mod. --> <!-- It is recommended that you make it unique to as to avoid potential collisions with other authors; --> <!-- if Rimworld detects multiple mods with the same packageId then it will refuse to load all of them. --> <packageId>AuthorName.ExampleMeleeWeapon</packageId> <!-- This is both the displayed name of your mod as well as the name used for patch targeting. --> <name>Example Melee Weapon</name> <!-- Your name goes here. --> <author>AuthorName</author> <!-- These are the RimWorld game versions that your mod supports. --> <!-- It is recommended that you only list versions that you have explicitly tested to ensure they work, --> <!-- as even basic XML options can change between major versions of the game. --> <supportedVersions> <li>1.4</li> </supportedVersions> <!-- This is the description of your mod shown in both the vanilla mod manager as well as modded managers. --> <description>This is an example melee weapon mod made for the RimWorld Wiki.</description> </ModMetaData>
Sample Assets[edit]
You can use these as the example textures:
Instructions[edit]
1. Create a ThingDef[edit]
Our first step is to create the XML that represents our new weapon. Whenever possible, this is best accomplished by first copying a vanilla 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 Data/Core/Defs/ThingDefs_Misc/Weapons/MeleeMedieval.xml
.
In our own ExampleWeapons_Melee.xml
, we'll have the following content:
<?xml version="1.0" encoding="utf-8" ?> <Defs> <!-- Example weapon: machete --> <ThingDef ParentName="BaseMeleeWeapon_Sharp_Quality"> <!-- pasted content omitted --> </ThingDef> </Defs>
2. Modify the copied ThingDef[edit]
In order to differentiate our weapon from the vanilla gladius, we'll make the following changes:
XML | Description |
---|---|
<defName>ExampleMeleeWeapon_Machete</defName> |
The |
<label>machete</label> |
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. |
<description>A broad blade meant for cutting vegetation in overgrown environments, machetes can be used as a broad-bladed combat knife in a pinch.</description> |
A ThingDef's description is used when inspecting the item's details. |
<graphicData> <texPath>ExampleMod/ExampleWeapon_Machete</texPath> <graphicClass>Graphic_Single</graphicClass> <shaderType>CutoutComplex</shaderType> </graphicData> |
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 For melee weapons such as our machete, the texture defined in our |
<costStuffCount>40</costStuffCount> |
Since our machete is a more primitive tool than the gladius with a simple single-edged blade, we will have it cost 40 "stuff" instead of 50 like the gladius. "Stuff" 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. |
<statBases> <WorkToMake>10000</WorkToMake> <Mass>0.75</Mass> </statBases> |
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. |
<equippedStatOffsets> <PlantWorkSpeed>0.10</PlantWorkSpeed> </equippedStatOffsets> |
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%. |
<relicChance>1</relicChance> |
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. |
<tools> <li> <label>handle</label> <capacities> <li>Blunt</li> </capacities> <power>9</power> <cooldownTime>2</cooldownTime> </li> <li> <label>point</label> <capacities> <li>Stab</li> </capacities> <power>14</power> <cooldownTime>2</cooldownTime> </li> <li> <label>edge</label> <capacities> <li>Cut</li> </capacities> <power>14</power> <cooldownTime>2</cooldownTime> </li> </tools> |
A weapon's |
<recipeMaker> <researchPrerequisite>Smithing</researchPrerequisite> <skillRequirements> <Crafting>2</Crafting> </skillRequirements> <displayPriority>409</displayPriority> </recipeMaker> |
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 |
3. Done![edit]
Your first melee weapon is complete! Boot up RimWorld and you should be able to see and enable the "Example Melee Weapon" mod in your mod manager. You can then use dev mode tools to spawn the weapon directly, or craft it at an electric or fueled smithy.
If you get any errors, be sure to check out the troubleshooting guide or join us on the #mod-development channel on the RimWorld Discord server.