Plague Gun/Connecting XML and Csharp
Plague Gun/Connecting XML and Csharp has been deprecated or removed completely from the game; it is no longer applicable to current versions |
This page is suggested to be moved. Destination: Please suggest a target page. Reason: move to Modding Tutorials, also consider merging into single page. |
This page is obsolete for the current version of RimWorld and is kept as a resource for modders of previous versions. For the current version see: Plague Gun (1.1) This tutorial was originally written by Jecrell. Thread.
Connecting XML and C#[edit]
For the next part of the tutorial, we are going to use C# code to create a custom ThingDef blueprint type, and we're going to create a custom class for our Thing to use in-game when it spawns. Before we can get to C# however, we need to "bridge" XML and C# by pointing the XML to use our C# code. First, decide your mod's namespace. This prevents RimWorld from being confused by other mods. This is the name RimWorld knows to use for your C# code. For the purposes of this tutorial, we're going to use Plague.
The following XML will not work in-game until we've written the C# code and created an assembly (.dll file) for our mod.
- Change the line for the ThingDef to reference a custom ThingDef class.
<ThingDef Class="Plague.ThingDef_PlagueBullet" ParentName="BaseBullet"> <defName>TST_Bullet_PlagueGun</defName>
- Add three more lines to the thing def before the closing tag (</ThingDef>).
<AddHediffChance>0.05</AddHediffChance> <HediffToAdd>Plague</HediffToAdd> <thingClass>Plague.Projectile_PlagueBullet</thingClass>
- AddHediffChance and HediffToAdd will give us a percentage of success to add a Hediff of our choice in XML (in this case we're using Plague). We will code how these parameters are used in the C# Coding section.
Completed example[edit]
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<!-- ================================= Industrial ==================================== -->
<ThingDef Class="Plague.ThingDef_PlagueBullet" ParentName="BaseBullet">
<defName>TST_Bullet_PlagueGun</defName>
<label>plague bullet</label>
<graphicData>
<texPath>Things/Projectile/Bullet_Small</texPath>
<graphicClass>Graphic_Single</graphicClass>
</graphicData>
<projectile>
<flyOverhead>false</flyOverhead>
<damageDef>Bullet</damageDef>
<damageAmountBase>12</damageAmountBase>
<stoppingPower>1</stoppingPower>
<speed>55</speed>
</projectile>
<AddHediffChance>0.05</AddHediffChance>
<HediffToAdd>Plague</HediffToAdd>
<thingClass>Plague.Projectile_PlagueBullet</thingClass>
</ThingDef>
<!-- The Plague Gun has been left out of this example for the sake of brevity. -->
</Defs>
See also[edit]
- Required Items
- XML Stage
- Connecting XML and C# <- You are here.
- C# Assembly Setup
- C# Coding
- Localisation