<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.elementalgame.com/index.php?action=history&amp;feed=atom&amp;title=Data_Modding_Guide</id>
	<title>Data Modding Guide - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.elementalgame.com/index.php?action=history&amp;feed=atom&amp;title=Data_Modding_Guide"/>
	<link rel="alternate" type="text/html" href="https://wiki.elementalgame.com/index.php?title=Data_Modding_Guide&amp;action=history"/>
	<updated>2026-04-10T06:08:26Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://wiki.elementalgame.com/index.php?title=Data_Modding_Guide&amp;diff=1689&amp;oldid=prev</id>
		<title>Jsan: Created page with &quot;{{DISPLAYTITLE:&lt;span style=&quot;position: absolute; clip: rect(1px 1px 1px 1px); clip: rect(1px, 1px, 1px, 1px);&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}} {{HeaderTemplate |welcome=Data Modding Guide }} This guide covers how to create data mods for Elemental: Reforged. Data mods let you add new units, spells, items, improvements, and more -- or modify and remove existing ones -- using XML files.  {{SectionTemplate |h=h1 |title=Getting Started |content= ===Mod Folder Location===  All mods l...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.elementalgame.com/index.php?title=Data_Modding_Guide&amp;diff=1689&amp;oldid=prev"/>
		<updated>2026-04-07T18:32:15Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;{{DISPLAYTITLE:&amp;lt;span style=&amp;quot;position: absolute; clip: rect(1px 1px 1px 1px); clip: rect(1px, 1px, 1px, 1px);&amp;quot;&amp;gt;{{FULLPAGENAME}}&amp;lt;/span&amp;gt;}} {{HeaderTemplate |welcome=Data Modding Guide }} This guide covers how to create data mods for Elemental: Reforged. Data mods let you add new units, spells, items, improvements, and more -- or modify and remove existing ones -- using XML files.  {{SectionTemplate |h=h1 |title=Getting Started |content= ===Mod Folder Location===  All mods l...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{DISPLAYTITLE:&amp;lt;span style=&amp;quot;position: absolute; clip: rect(1px 1px 1px 1px); clip: rect(1px, 1px, 1px, 1px);&amp;quot;&amp;gt;{{FULLPAGENAME}}&amp;lt;/span&amp;gt;}}&lt;br /&gt;
{{HeaderTemplate&lt;br /&gt;
|welcome=Data Modding Guide&lt;br /&gt;
}}&lt;br /&gt;
This guide covers how to create data mods for Elemental: Reforged. Data mods let you add new units, spells, items, improvements, and more -- or modify and remove existing ones -- using XML files.&lt;br /&gt;
&lt;br /&gt;
{{SectionTemplate&lt;br /&gt;
|h=h1&lt;br /&gt;
|title=Getting Started&lt;br /&gt;
|content=&lt;br /&gt;
===Mod Folder Location===&lt;br /&gt;
&lt;br /&gt;
All mods live under your Documents folder:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Documents\My Games\ElementalReforged\Mods\&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The game automatically creates a &amp;lt;code&amp;gt;User&amp;lt;/code&amp;gt; subfolder for local mods. You can also create your own named folder.&lt;br /&gt;
&lt;br /&gt;
===Mod Folder Structure===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Mods/&lt;br /&gt;
  YourModName/&lt;br /&gt;
    Data/&lt;br /&gt;
      GameCore/           &amp;amp;lt;-- Most game definitions go here&lt;br /&gt;
        Core Stamps/      &amp;amp;lt;-- Terrain stamps&lt;br /&gt;
        Effects/          &amp;amp;lt;-- Particle/visual effects&lt;br /&gt;
        Scenarios/        &amp;amp;lt;-- Scenario definitions&lt;br /&gt;
      Animations/         &amp;amp;lt;-- Custom animations&lt;br /&gt;
      Core Tiles/         &amp;amp;lt;-- Tile designs (recursive)&lt;br /&gt;
      Core World/         &amp;amp;lt;-- World data (recursive)&lt;br /&gt;
      CutScenes/          &amp;amp;lt;-- Cutscene definitions&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Place your XML files in the appropriate subdirectory. The game scans these paths when mods are enabled and merges them with the base game data.&lt;br /&gt;
&lt;br /&gt;
===Enabling Your Mod===&lt;br /&gt;
&lt;br /&gt;
# Launch the game&lt;br /&gt;
# From the main menu, open the &amp;#039;&amp;#039;&amp;#039;Mod Manager&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
# Enable the &amp;#039;&amp;#039;&amp;#039;User&amp;#039;&amp;#039;&amp;#039; folder (or your custom mod folder)&lt;br /&gt;
# Adjust &amp;#039;&amp;#039;&amp;#039;load order&amp;#039;&amp;#039;&amp;#039; if you have multiple mods (later mods override earlier ones)&lt;br /&gt;
# Restart or start a new game&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionTemplate&lt;br /&gt;
|h=h1&lt;br /&gt;
|title=XML File Format&lt;br /&gt;
|content=&lt;br /&gt;
All game data is defined in XML files. Here&amp;#039;s the basic structure:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;#039;1.0&amp;#039; encoding=&amp;#039;utf-8&amp;#039;?&amp;gt;&lt;br /&gt;
&amp;lt;RootElement&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;DataType InternalName=&amp;quot;MyDefinition&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Property1&amp;gt;value&amp;lt;/Property1&amp;gt;&lt;br /&gt;
    &amp;lt;Property2&amp;gt;value&amp;lt;/Property2&amp;gt;&lt;br /&gt;
  &amp;lt;/DataType&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/RootElement&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Key rules:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* Every definition needs an &amp;lt;code&amp;gt;InternalName&amp;lt;/code&amp;gt; attribute -- this is its unique identifier&lt;br /&gt;
* The root element name varies by file but doesn&amp;#039;t affect parsing&lt;br /&gt;
* Text values for player-visible strings should use localization keys (e.g., &amp;lt;code&amp;gt;TXT_MY_MOD_UNIT_NAME&amp;lt;/code&amp;gt;), but you can use plain text for testing&lt;br /&gt;
* Boolean values are &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; (false) or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; (true)&lt;br /&gt;
* Colors are comma-separated: &amp;lt;code&amp;gt;R,G,B&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;R,G,B,A&amp;lt;/code&amp;gt; (0-255)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionTemplate&lt;br /&gt;
|h=h1&lt;br /&gt;
|title=Core Data Types&lt;br /&gt;
|content=&lt;br /&gt;
Here are the most commonly modded data types and the XML tags they use:&lt;br /&gt;
&lt;br /&gt;
===Units===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;UnitTypes&amp;gt;&lt;br /&gt;
  &amp;lt;UnitType InternalName=&amp;quot;MyCustomUnit&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DisplayName&amp;gt;My Custom Unit&amp;lt;/DisplayName&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;A powerful warrior.&amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Class&amp;gt;Adventurer&amp;lt;/Class&amp;gt;&lt;br /&gt;
    &amp;lt;Allegiance&amp;gt;Empire&amp;lt;/Allegiance&amp;gt;&lt;br /&gt;
    &amp;lt;CreatureType&amp;gt;Champion&amp;lt;/CreatureType&amp;gt;&lt;br /&gt;
    &amp;lt;RaceType&amp;gt;Race_Type_Men&amp;lt;/RaceType&amp;gt;&lt;br /&gt;
    &amp;lt;Gender&amp;gt;Male&amp;lt;/Gender&amp;gt;&lt;br /&gt;
    &amp;lt;IsChampion&amp;gt;1&amp;lt;/IsChampion&amp;gt;&lt;br /&gt;
    &amp;lt;Unique&amp;gt;0&amp;lt;/Unique&amp;gt;&lt;br /&gt;
    &amp;lt;CanBeDesigned&amp;gt;0&amp;lt;/CanBeDesigned&amp;gt;&lt;br /&gt;
    &amp;lt;SpawnRating&amp;gt;1&amp;lt;/SpawnRating&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Stats at level 1 --&amp;gt;&lt;br /&gt;
    &amp;lt;LevelMilestone InternalName=&amp;quot;L1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Level&amp;gt;1&amp;lt;/Level&amp;gt;&lt;br /&gt;
      &amp;lt;UnitStat_HitPoints&amp;gt;30&amp;lt;/UnitStat_HitPoints&amp;gt;&lt;br /&gt;
      &amp;lt;UnitStat_Accuracy&amp;gt;85&amp;lt;/UnitStat_Accuracy&amp;gt;&lt;br /&gt;
      &amp;lt;UnitStat_CombatSpeed&amp;gt;24&amp;lt;/UnitStat_CombatSpeed&amp;gt;&lt;br /&gt;
    &amp;lt;/LevelMilestone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Starting equipment (by InternalName) --&amp;gt;&lt;br /&gt;
    &amp;lt;AutoCreateEquipment&amp;gt;IronSword&amp;lt;/AutoCreateEquipment&amp;gt;&lt;br /&gt;
    &amp;lt;Equipment&amp;gt;F_Male_Head_01&amp;lt;/Equipment&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Starting abilities --&amp;gt;&lt;br /&gt;
    &amp;lt;SelectedAbilityBonusOption&amp;gt;Fire1&amp;lt;/SelectedAbilityBonusOption&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Visual setup --&amp;gt;&lt;br /&gt;
    &amp;lt;ModelPath&amp;gt;Gfx\HKB\Units\F_Male_Mesh_01.hkb&amp;lt;/ModelPath&amp;gt;&lt;br /&gt;
    &amp;lt;SkeletonPath&amp;gt;Gfx\HKB\Units\K_Male_Skeleton_01.hkb&amp;lt;/SkeletonPath&amp;gt;&lt;br /&gt;
    &amp;lt;AnimationPack&amp;gt;MaleSovereignAnimationPack&amp;lt;/AnimationPack&amp;gt;&lt;br /&gt;
    &amp;lt;BattleAnimationBehavior&amp;gt;Melee&amp;lt;/BattleAnimationBehavior&amp;gt;&lt;br /&gt;
    &amp;lt;Color_Skin&amp;gt;180,140,110,255&amp;lt;/Color_Skin&amp;gt;&lt;br /&gt;
    &amp;lt;Color_Clothing1&amp;gt;60,40,30,255&amp;lt;/Color_Clothing1&amp;gt;&lt;br /&gt;
    &amp;lt;SoundPack&amp;gt;SoundPack_Generic_Male&amp;lt;/SoundPack&amp;gt;&lt;br /&gt;
  &amp;lt;/UnitType&amp;gt;&lt;br /&gt;
&amp;lt;/UnitTypes&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Spells===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Spells&amp;gt;&lt;br /&gt;
  &amp;lt;SpellDef InternalName=&amp;quot;MyFireball&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DisplayName&amp;gt;Fireball&amp;lt;/DisplayName&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;Hurls a ball of fire at the target.&amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Image&amp;gt;T_Fireball_Painting.png&amp;lt;/Image&amp;gt;&lt;br /&gt;
    &amp;lt;IconFG&amp;gt;T_Fireball_Icon.png&amp;lt;/IconFG&amp;gt;&lt;br /&gt;
    &amp;lt;SpellType&amp;gt;Tactical&amp;lt;/SpellType&amp;gt;&lt;br /&gt;
    &amp;lt;SpellClass&amp;gt;Offensive&amp;lt;/SpellClass&amp;gt;&lt;br /&gt;
    &amp;lt;SpellSubClass&amp;gt;Damage&amp;lt;/SpellSubClass&amp;gt;&lt;br /&gt;
    &amp;lt;SpellTargetType&amp;gt;EnemyUnit&amp;lt;/SpellTargetType&amp;gt;&lt;br /&gt;
    &amp;lt;SpellBookSortCategory&amp;gt;Attack&amp;lt;/SpellBookSortCategory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Prerequisites --&amp;gt;&lt;br /&gt;
    &amp;lt;Prereq&amp;gt;&lt;br /&gt;
      &amp;lt;Type&amp;gt;AbilityBonusOption&amp;lt;/Type&amp;gt;&lt;br /&gt;
      &amp;lt;Attribute&amp;gt;FireAdept1&amp;lt;/Attribute&amp;gt;&lt;br /&gt;
    &amp;lt;/Prereq&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Casting cost --&amp;gt;&lt;br /&gt;
    &amp;lt;SpellResourceCost&amp;gt;&lt;br /&gt;
      &amp;lt;Resource&amp;gt;Mana&amp;lt;/Resource&amp;gt;&lt;br /&gt;
      &amp;lt;Amount&amp;gt;12&amp;lt;/Amount&amp;gt;&lt;br /&gt;
    &amp;lt;/SpellResourceCost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Damage effect (see GameModifier section) --&amp;gt;&lt;br /&gt;
    &amp;lt;GameModifier&amp;gt;&lt;br /&gt;
      &amp;lt;ModType&amp;gt;Unit&amp;lt;/ModType&amp;gt;&lt;br /&gt;
      &amp;lt;Attribute&amp;gt;AdjustUnitStat&amp;lt;/Attribute&amp;gt;&lt;br /&gt;
      &amp;lt;StrVal&amp;gt;CurHealth&amp;lt;/StrVal&amp;gt;&lt;br /&gt;
      &amp;lt;Value&amp;gt;-15&amp;lt;/Value&amp;gt;&lt;br /&gt;
    &amp;lt;/GameModifier&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Visual effect --&amp;gt;&lt;br /&gt;
    &amp;lt;SpellDefEffect&amp;gt;&lt;br /&gt;
      &amp;lt;EffectName&amp;gt;T_Fireball_Particle&amp;lt;/EffectName&amp;gt;&lt;br /&gt;
      &amp;lt;EffectScale&amp;gt;1.0&amp;lt;/EffectScale&amp;gt;&lt;br /&gt;
      &amp;lt;SnapToTerrain&amp;gt;1&amp;lt;/SnapToTerrain&amp;gt;&lt;br /&gt;
    &amp;lt;/SpellDefEffect&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;HitSoundFX&amp;gt;Spell_Fire_01&amp;lt;/HitSoundFX&amp;gt;&lt;br /&gt;
  &amp;lt;/SpellDef&amp;gt;&lt;br /&gt;
&amp;lt;/Spells&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Improvements (City Buildings)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;ImprovementTypes&amp;gt;&lt;br /&gt;
  &amp;lt;ImprovementType InternalName=&amp;quot;MyLibrary&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DisplayName&amp;gt;Grand Library&amp;lt;/DisplayName&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;A center of learning.&amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;RequiresCity&amp;gt;1&amp;lt;/RequiresCity&amp;gt;&lt;br /&gt;
    &amp;lt;RequiresForceUnlock&amp;gt;1&amp;lt;/RequiresForceUnlock&amp;gt;&lt;br /&gt;
    &amp;lt;LaborToBuild&amp;gt;0&amp;lt;/LaborToBuild&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Required tech or building --&amp;gt;&lt;br /&gt;
    &amp;lt;RequiredImprovement&amp;gt;Conclave&amp;lt;/RequiredImprovement&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Terrain restrictions --&amp;gt;&lt;br /&gt;
    &amp;lt;BarredTerrain&amp;gt;River&amp;lt;/BarredTerrain&amp;gt;&lt;br /&gt;
    &amp;lt;BarredTerrain&amp;gt;SwampTerrain&amp;lt;/BarredTerrain&amp;gt;&lt;br /&gt;
    &amp;lt;PreferredTerrain&amp;gt;City&amp;lt;/PreferredTerrain&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Effects --&amp;gt;&lt;br /&gt;
    &amp;lt;GameModifier&amp;gt;&lt;br /&gt;
      &amp;lt;ModType&amp;gt;Player&amp;lt;/ModType&amp;gt;&lt;br /&gt;
      &amp;lt;Attribute&amp;gt;AbilityBonus&amp;lt;/Attribute&amp;gt;&lt;br /&gt;
      &amp;lt;StrVal&amp;gt;A_Research&amp;lt;/StrVal&amp;gt;&lt;br /&gt;
      &amp;lt;Value&amp;gt;15&amp;lt;/Value&amp;gt;&lt;br /&gt;
      &amp;lt;Provides&amp;gt;+15 Research&amp;lt;/Provides&amp;gt;&lt;br /&gt;
    &amp;lt;/GameModifier&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- AI priority --&amp;gt;&lt;br /&gt;
    &amp;lt;AIData AIPersonality=&amp;quot;AI_General&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;AIPriority&amp;gt;14&amp;lt;/AIPriority&amp;gt;&lt;br /&gt;
      &amp;lt;AITag&amp;gt;Study&amp;lt;/AITag&amp;gt;&lt;br /&gt;
    &amp;lt;/AIData&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;ArtDef&amp;gt;Art_Academy&amp;lt;/ArtDef&amp;gt;&lt;br /&gt;
  &amp;lt;/ImprovementType&amp;gt;&lt;br /&gt;
&amp;lt;/ImprovementTypes&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Resources===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;ResourceTypes&amp;gt;&lt;br /&gt;
  &amp;lt;ResourceType InternalName=&amp;quot;MyResource&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DisplayName&amp;gt;Moonstone&amp;lt;/DisplayName&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;A rare crystalline mineral.&amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Type&amp;gt;Material&amp;lt;/Type&amp;gt;&lt;br /&gt;
    &amp;lt;Icon&amp;gt;Gfx//Icons//Res_Icon_Moonstone.png&amp;lt;/Icon&amp;gt;&lt;br /&gt;
    &amp;lt;Worth&amp;gt;5&amp;lt;/Worth&amp;gt;&lt;br /&gt;
    &amp;lt;Global&amp;gt;0&amp;lt;/Global&amp;gt;&lt;br /&gt;
    &amp;lt;Rarity&amp;gt;0.3&amp;lt;/Rarity&amp;gt;&lt;br /&gt;
    &amp;lt;Shared&amp;gt;0&amp;lt;/Shared&amp;gt;&lt;br /&gt;
    &amp;lt;TradedByCaravans&amp;gt;1&amp;lt;/TradedByCaravans&amp;gt;&lt;br /&gt;
    &amp;lt;ShownInGlobalDisplay&amp;gt;1&amp;lt;/ShownInGlobalDisplay&amp;gt;&lt;br /&gt;
    &amp;lt;IconColor&amp;gt;180,200,255&amp;lt;/IconColor&amp;gt;&lt;br /&gt;
    &amp;lt;ModelColor&amp;gt;180,200,255&amp;lt;/ModelColor&amp;gt;&lt;br /&gt;
  &amp;lt;/ResourceType&amp;gt;&lt;br /&gt;
&amp;lt;/ResourceTypes&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Terrain Types===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;TerrainTypes&amp;gt;&lt;br /&gt;
  &amp;lt;TerrainType InternalName=&amp;quot;MyTerrain&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DisplayName&amp;gt;Crystalline Wastes&amp;lt;/DisplayName&amp;gt;&lt;br /&gt;
    &amp;lt;MaxHeight&amp;gt;60&amp;lt;/MaxHeight&amp;gt;&lt;br /&gt;
    &amp;lt;MinHeight&amp;gt;50&amp;lt;/MinHeight&amp;gt;&lt;br /&gt;
    &amp;lt;MovementCost&amp;gt;12&amp;lt;/MovementCost&amp;gt;&lt;br /&gt;
    &amp;lt;Category&amp;gt;Land&amp;lt;/Category&amp;gt;&lt;br /&gt;
    &amp;lt;IsBaseTerrain&amp;gt;0&amp;lt;/IsBaseTerrain&amp;gt;&lt;br /&gt;
    &amp;lt;IsTerrainFeature&amp;gt;1&amp;lt;/IsTerrainFeature&amp;gt;&lt;br /&gt;
    &amp;lt;PassableByLandUnits&amp;gt;1&amp;lt;/PassableByLandUnits&amp;gt;&lt;br /&gt;
    &amp;lt;PassableByWaterUnits&amp;gt;0&amp;lt;/PassableByWaterUnits&amp;gt;&lt;br /&gt;
    &amp;lt;PassableByAirUnits&amp;gt;1&amp;lt;/PassableByAirUnits&amp;gt;&lt;br /&gt;
    &amp;lt;Indestructable&amp;gt;0&amp;lt;/Indestructable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Yield bonus --&amp;gt;&lt;br /&gt;
    &amp;lt;GameModifier InternalName=&amp;quot;CrystalYield&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;ModType&amp;gt;Resource&amp;lt;/ModType&amp;gt;&lt;br /&gt;
      &amp;lt;Attribute&amp;gt;TileYieldMaterial&amp;lt;/Attribute&amp;gt;&lt;br /&gt;
      &amp;lt;Value&amp;gt;2&amp;lt;/Value&amp;gt;&lt;br /&gt;
      &amp;lt;PerTurn&amp;gt;1&amp;lt;/PerTurn&amp;gt;&lt;br /&gt;
    &amp;lt;/GameModifier&amp;gt;&lt;br /&gt;
  &amp;lt;/TerrainType&amp;gt;&lt;br /&gt;
&amp;lt;/TerrainTypes&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionTemplate&lt;br /&gt;
|h=h1&lt;br /&gt;
|title=The GameModifier System&lt;br /&gt;
|content=&lt;br /&gt;
GameModifiers are the backbone of effects in Elemental. They&amp;#039;re used everywhere: spells, items, improvements, terrain, abilities, and more. A single definition can contain multiple GameModifier blocks.&lt;br /&gt;
&lt;br /&gt;
===Basic Structure===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;GameModifier InternalName=&amp;quot;OptionalName&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ModType&amp;gt;Unit&amp;lt;/ModType&amp;gt;&lt;br /&gt;
  &amp;lt;Attribute&amp;gt;AdjustUnitStat&amp;lt;/Attribute&amp;gt;&lt;br /&gt;
  &amp;lt;StrVal&amp;gt;CurHealth&amp;lt;/StrVal&amp;gt;&lt;br /&gt;
  &amp;lt;Value&amp;gt;10&amp;lt;/Value&amp;gt;&lt;br /&gt;
  &amp;lt;Provides&amp;gt;+10 HP&amp;lt;/Provides&amp;gt;&lt;br /&gt;
&amp;lt;/GameModifier&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ModType Values===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;ModType&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Applies to&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;Unit&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Individual units (stats, abilities)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;Player&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Player-wide bonuses (research, gold income)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;Resource&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Resource yields and production&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;Map&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Terrain and tile effects&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Common Attributes===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;XML Tag&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Description&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;ModType&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;What the modifier targets&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;Attribute&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;The specific attribute to modify&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;Value&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Numeric value of the effect&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;StrVal&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;StrVal2&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;String parameters (e.g., stat name, unit class)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;Provides&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Player-visible description of the effect&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;Duration&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;How many turns the effect lasts&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;DurationOnTile&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Duration while on a specific tile&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;Radius&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Area of effect radius&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;Multiplier&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Multiplicative factor (default: 1.0)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;BonusValue&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Additional bonus amount&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;MinValue&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;MaxValue&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Random range (if both set, value is randomized between them)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Conditional Modifiers===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;XML Tag&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Description&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;PerTurn&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Apply every turn (boolean)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;PerLevel&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Scale with unit level (boolean)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;PerStamina&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Scale with stamina (boolean)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;Cumulative&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Stacks with itself (boolean)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;vsDamaged&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Only applies vs damaged targets&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;vsLower&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Only applies vs lower-stat targets&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;vsHigher&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Only applies vs higher-stat targets&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;vsOtherAllegiance&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Only applies vs different allegiance&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;WhenUnderPercentHitPoints&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Activates when HP below threshold (0-100)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;WhenUnderArmySize&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Activates when army size is under N&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;WhenOverArmySize&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Activates when army size is over N&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Application Timing===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;XML Tag&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Description&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;xActions&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Apply at battle start&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;ApplyAtBattleEnd&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Apply when battle ends&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;ApplyDuringConstruction&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Apply while building is under construction&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;ApplyFromTileAtTacticalTurnStart&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Apply from tile at each tactical turn&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;RemoveWhenTargetLeavesTile&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Remove effect when unit leaves the tile&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;IsPreHitSpellModifier&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Apply before hit resolution&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;ApplyIfSpellTargetKilled&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Apply only if the spell kills the target&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Targeting===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;XML Tag&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Description&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;AffectedUnits&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Filter which units are affected&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;UnitClass&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Filter by unit class&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;TerrainType&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Filter by terrain type&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;ApplyToCaster&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Apply to the caster instead of the target&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;ApplyToPlayer&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Apply to the player instead of a unit&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;ApplyToTile&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Apply to the tile instead of a unit&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;ApplyToSpellRadiusCenterOnly&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Only affect center tile of AoE&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionTemplate&lt;br /&gt;
|h=h1&lt;br /&gt;
|title=The Calculate System (Variable Expressions)&lt;br /&gt;
|content=&lt;br /&gt;
For dynamic values that depend on game state (unit stats, shard counts, etc.), use &amp;lt;code&amp;gt;Calculate&amp;lt;/code&amp;gt; blocks inside a GameModifier:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;GameModifier&amp;gt;&lt;br /&gt;
  &amp;lt;ModType&amp;gt;Unit&amp;lt;/ModType&amp;gt;&lt;br /&gt;
  &amp;lt;Attribute&amp;gt;CurHealth&amp;lt;/Attribute&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;Calculate InternalName=&amp;quot;ShardBonus&amp;quot; ValueOwner=&amp;quot;CastingUnit&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Expression&amp;gt;&amp;lt;![CDATA[[UnitOwner_GetNumLifeShards] * 2]]&amp;gt;&amp;lt;/Expression&amp;gt;&lt;br /&gt;
  &amp;lt;/Calculate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;Calculate InternalName=&amp;quot;BaseHeal&amp;quot; ValueOwner=&amp;quot;CastingUnit&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Expression&amp;gt;&amp;lt;![CDATA[[ShardBonus] + 8]]&amp;gt;&amp;lt;/Expression&amp;gt;&lt;br /&gt;
  &amp;lt;/Calculate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;Calculate InternalName=&amp;quot;Value&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Expression&amp;gt;&amp;lt;![CDATA[[BaseHeal]]]&amp;gt;&amp;lt;/Expression&amp;gt;&lt;br /&gt;
  &amp;lt;/Calculate&amp;gt;&lt;br /&gt;
&amp;lt;/GameModifier&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===How It Works===&lt;br /&gt;
&lt;br /&gt;
* Each &amp;lt;code&amp;gt;Calculate&amp;lt;/code&amp;gt; block has an &amp;lt;code&amp;gt;InternalName&amp;lt;/code&amp;gt; and an &amp;lt;code&amp;gt;&amp;amp;lt;Expression&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Variables are referenced with square brackets: &amp;lt;code&amp;gt;[VariableName]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Variables can reference other Calculate blocks by InternalName, or properties from the ValueOwner&lt;br /&gt;
* The system links calculators together: child calculators feed into parent calculators&lt;br /&gt;
* The final result must be in a calculator named &amp;lt;code&amp;gt;Value&amp;lt;/code&amp;gt;&lt;br /&gt;
* Use &amp;lt;code&amp;gt;ValueForFormattedDescription&amp;lt;/code&amp;gt; for the value shown in UI descriptions&lt;br /&gt;
&lt;br /&gt;
===Supported Operators===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Operator&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Description&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Addition&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Subtraction&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Multiplication&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Division&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;%&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Modulo&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;^&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Exponentiation&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Less than (returns 0 or 1)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Greater than (returns 0 or 1)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Calculate Tags===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Tag&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Description&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;Expression&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;The math expression (wrap in &amp;lt;code&amp;gt;&amp;amp;lt;![CDATA[...]]&amp;amp;gt;&amp;lt;/code&amp;gt; for safety)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;Min&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Minimum value the result can be&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;Max&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Maximum value the result can be&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;ValueOwner&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Where to look up variable values (&amp;lt;code&amp;gt;CastingUnit&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TargetUnit&amp;lt;/code&amp;gt;, etc.)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Common Variable Names===&lt;br /&gt;
&lt;br /&gt;
Variables available depend on the &amp;lt;code&amp;gt;ValueOwner&amp;lt;/code&amp;gt;. Common ones include:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;[UnitOwner_GetNumLifeShards]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[UnitOwner_GetNumFireShards]&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
* &amp;lt;code&amp;gt;[UnitStat_HitPoints]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[UnitStat_Accuracy]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[UnitStat_CombatSpeed]&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;[Unit_GetHPCurrent]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[Unit_GetLevel]&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;[A_Diplomacy]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[TradeIncome]&amp;lt;/code&amp;gt; (for treaty calculations)&lt;br /&gt;
* Any float property exposed by the ValueOwner&amp;#039;s &amp;lt;code&amp;gt;GetFloatProperty()&amp;lt;/code&amp;gt; method&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionTemplate&lt;br /&gt;
|h=h1&lt;br /&gt;
|title=Overriding Existing Definitions&lt;br /&gt;
|content=&lt;br /&gt;
===The IfExists Attribute===&lt;br /&gt;
&lt;br /&gt;
When your mod defines something with the same &amp;lt;code&amp;gt;InternalName&amp;lt;/code&amp;gt; as a base game definition, you can control what happens using the &amp;lt;code&amp;gt;IfExists&amp;lt;/code&amp;gt; attribute:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;UnitType InternalName=&amp;quot;Champion_Craul&amp;quot; IfExists=&amp;quot;ClearIfExists&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This completely replaces Craul&amp;#039;s definition --&amp;gt;&lt;br /&gt;
&amp;lt;/UnitType&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;IfExists Value&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Behavior&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;Update&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Merge your values on top of the existing definition (partial override)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;ClearIfExists&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wipe the existing definition completely, then read your new values (full replacement)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;ClearChildren&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Clear child collections (e.g., level milestones) but keep parent data&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;Ignore&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Skip this definition if it already exists&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;Duplicate&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Always create a new entry (no duplicate check)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you don&amp;#039;t specify &amp;lt;code&amp;gt;IfExists&amp;lt;/code&amp;gt;, each data type has a default behavior. Most types default to &amp;lt;code&amp;gt;Update&amp;lt;/code&amp;gt;, meaning your values merge on top.&lt;br /&gt;
&lt;br /&gt;
===Practical Examples===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Buff an existing unit&amp;#039;s HP:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!-- Update mode (default) - only changes what you specify --&amp;gt;&lt;br /&gt;
&amp;lt;UnitType InternalName=&amp;quot;Champion_Craul&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;LevelMilestone InternalName=&amp;quot;L1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;UnitStat_HitPoints&amp;gt;50&amp;lt;/UnitStat_HitPoints&amp;gt;&lt;br /&gt;
  &amp;lt;/LevelMilestone&amp;gt;&lt;br /&gt;
&amp;lt;/UnitType&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Completely replace a spell:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;SpellDef InternalName=&amp;quot;Aid&amp;quot; IfExists=&amp;quot;ClearIfExists&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Your entire new spell definition here --&amp;gt;&lt;br /&gt;
  &amp;lt;DisplayName&amp;gt;Greater Aid&amp;lt;/DisplayName&amp;gt;&lt;br /&gt;
  &amp;lt;!-- ... all fields must be specified ... --&amp;gt;&lt;br /&gt;
&amp;lt;/SpellDef&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionTemplate&lt;br /&gt;
|h=h1&lt;br /&gt;
|title=Removing Definitions (RemoveDef)&lt;br /&gt;
|content=&lt;br /&gt;
The Smart Modding system lets you surgically remove base game content. Place a &amp;lt;code&amp;gt;&amp;amp;lt;RemoveDef&amp;amp;gt;&amp;lt;/code&amp;gt; block in any XML file in your mod:&lt;br /&gt;
&lt;br /&gt;
===Remove All Definitions of a Type===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;RemoveDef&amp;gt;&lt;br /&gt;
  &amp;lt;RemoveAllCoreDefsOfType&amp;gt;UnitType&amp;lt;/RemoveAllCoreDefsOfType&amp;gt;&lt;br /&gt;
&amp;lt;/RemoveDef&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This removes every core UnitType, letting your mod provide all units from scratch.&lt;br /&gt;
&lt;br /&gt;
===Remove Specific Definitions by Name===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;RemoveDef&amp;gt;&lt;br /&gt;
  &amp;lt;UnitType InternalName=&amp;quot;Champion_Craul&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SpellDef InternalName=&amp;quot;Aid&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ImprovementType InternalName=&amp;quot;Academy&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/RemoveDef&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Skip Parsing Entire Files===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;RemoveDef&amp;gt;&lt;br /&gt;
  &amp;lt;SkipParsingFile&amp;gt;CoreUnitProps.xml&amp;lt;/SkipParsingFile&amp;gt;&lt;br /&gt;
  &amp;lt;SkipParsingFile&amp;gt;CoreMonsters.xml&amp;lt;/SkipParsingFile&amp;gt;&lt;br /&gt;
&amp;lt;/RemoveDef&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This prevents the game from loading those files at all, so your mod can provide complete replacements.&lt;br /&gt;
&lt;br /&gt;
===Combining Approaches===&lt;br /&gt;
&lt;br /&gt;
You can combine these in a single RemoveDef block:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;RemoveDef&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Remove all core factions --&amp;gt;&lt;br /&gt;
  &amp;lt;RemoveAllCoreDefsOfType&amp;gt;RaceConfig&amp;lt;/RemoveAllCoreDefsOfType&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Remove a specific spell --&amp;gt;&lt;br /&gt;
  &amp;lt;SpellDef InternalName=&amp;quot;Aid&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Skip loading the base monster file entirely --&amp;gt;&lt;br /&gt;
  &amp;lt;SkipParsingFile&amp;gt;CoreMonsters.xml&amp;lt;/SkipParsingFile&amp;gt;&lt;br /&gt;
&amp;lt;/RemoveDef&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Important:&amp;#039;&amp;#039;&amp;#039; RemoveDef only affects &amp;#039;&amp;#039;&amp;#039;core&amp;#039;&amp;#039;&amp;#039; definitions. It won&amp;#039;t remove definitions added by other mods loaded before yours. Load order matters.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionTemplate&lt;br /&gt;
|h=h1&lt;br /&gt;
|title=Load Order&lt;br /&gt;
|content=&lt;br /&gt;
When multiple mods are enabled, the game loads them in the order shown in the Mod Manager. This matters because:&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Later mods win.&amp;#039;&amp;#039;&amp;#039; If two mods define the same &amp;lt;code&amp;gt;InternalName&amp;lt;/code&amp;gt;, the later one&amp;#039;s values take precedence (in &amp;lt;code&amp;gt;Update&amp;lt;/code&amp;gt; mode, the later mod&amp;#039;s values overwrite the earlier mod&amp;#039;s for any overlapping fields).&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;RemoveDef applies to core only.&amp;#039;&amp;#039;&amp;#039; RemoveDef blocks remove base game definitions during the counting phase, before any mod definitions are parsed.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Recommended practice:&amp;#039;&amp;#039;&amp;#039; If your mod depends on another mod, document that it should be loaded after the dependency.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionTemplate&lt;br /&gt;
|h=h1&lt;br /&gt;
|title=AI Data&lt;br /&gt;
|content=&lt;br /&gt;
Most data types support an &amp;lt;code&amp;gt;&amp;amp;lt;AIData&amp;amp;gt;&amp;lt;/code&amp;gt; block that tells the AI how to evaluate and use the definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;AIData AIPersonality=&amp;quot;AI_General&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;AIPriority&amp;gt;15&amp;lt;/AIPriority&amp;gt;&lt;br /&gt;
  &amp;lt;AITag&amp;gt;Study&amp;lt;/AITag&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Optional: calculated value for AI decisions --&amp;gt;&lt;br /&gt;
  &amp;lt;ValueCalcWrapper&amp;gt;&lt;br /&gt;
    &amp;lt;ValueType&amp;gt;IsTargetWorthy&amp;lt;/ValueType&amp;gt;&lt;br /&gt;
    &amp;lt;Calculate InternalName=&amp;quot;Calc&amp;quot; ValueOwner=&amp;quot;TargetUnit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Expression&amp;gt;&amp;lt;![CDATA[[Unit_GetHPCurrent]]]&amp;gt;&amp;lt;/Expression&amp;gt;&lt;br /&gt;
    &amp;lt;/Calculate&amp;gt;&lt;br /&gt;
    &amp;lt;Calculate InternalName=&amp;quot;Value&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Expression&amp;gt;&amp;lt;![CDATA[[Calc] &amp;lt; 30]]&amp;gt;&amp;lt;/Expression&amp;gt;&lt;br /&gt;
    &amp;lt;/Calculate&amp;gt;&lt;br /&gt;
  &amp;lt;/ValueCalcWrapper&amp;gt;&lt;br /&gt;
&amp;lt;/AIData&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Higher &amp;lt;code&amp;gt;AIPriority&amp;lt;/code&amp;gt; values make the AI favor that option more. The &amp;lt;code&amp;gt;ValueCalcWrapper&amp;lt;/code&amp;gt; provides dynamic evaluation for context-sensitive decisions.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionTemplate&lt;br /&gt;
|h=h1&lt;br /&gt;
|title=Reference: Moddable Data Types&lt;br /&gt;
|content=&lt;br /&gt;
Here are the major data types you can define in XML. Use the corresponding tag name as your XML element:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;XML Tag&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Description&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Example File&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;UnitType&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Units, champions, monsters&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CoreUnits.xml&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;SpellDef&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Spell definitions&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CoreSpells.xml&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;ImprovementType&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;City buildings and improvements&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CoreImprovements.xml&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;ResourceType&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Resources (gold, mana, materials)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CoreResources.xml&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;TerrainType&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Terrain types and features&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;TerrainTypes.xml&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;GameItemType&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Equipment and items&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CoreItems.xml&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;RaceConfig&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Faction configurations&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CoreRaceConfigs.xml&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;RaceType&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Race type definitions&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CoreRaceTypes.xml&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;TechDef&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Technology definitions&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CoreTechs.xml&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;TechTree&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Technology tree layout&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;TechTree_Amarian.xml&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;QuestDef&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Quest definitions&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CoreQuests.xml&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;QuestLocation&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Quest locations on the map&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CoreQuestLocations.xml&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;AbilityBonus&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Ability/trait definitions&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CoreAbilities.xml&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;RecipeType&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Crafting recipes&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CoreRecipes.xml&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;DungeonType&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Dungeon definitions&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;(in GameCore)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;GoodieHut&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Goodie hut encounters&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CoreGoodieHuts.xml&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;GameTrigger&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Event triggers&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CoreGameEvents.xml&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;FlavorText&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Random flavor text&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CoreFlavorText.xml&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;NamePool&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Name generation pools&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CoreNamePools.xml&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;FactionConfig&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Faction setup and colors&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CoreRaceConfigs.xml&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;DifficultyLevel&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Difficulty settings&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CoreDifficultyLevels.xml&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;Treaty&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Diplomacy treaty types&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Treaties.xml&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;MapSettings&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Map generation settings&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CoreMaps.xml&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;RandomEvent&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Random event definitions&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CoreRandomEvents.xml&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;UnitStatType&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Unit stat definitions&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CoreUnitStats.xml&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;UnitQualityType&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Unit quality tiers&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CoreUnitQualityTypes.xml&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;MusicLayerGroup&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Music definitions&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CoreLayeredMusic.xml&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;SoundPack&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Sound effect packs&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;UnitSoundPacks.xml&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Tip:&amp;#039;&amp;#039;&amp;#039; The best way to learn any data type&amp;#039;s available fields is to look at the corresponding core XML file in &amp;lt;code&amp;gt;Elemental-LH/Game/data/GameCore/&amp;lt;/code&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionTemplate&lt;br /&gt;
|h=h1&lt;br /&gt;
|title=Tips and Best Practices&lt;br /&gt;
|content=&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Start small.&amp;#039;&amp;#039;&amp;#039; Override one unit or one spell to make sure your mod folder is set up correctly before building something large.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Use&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;Update&amp;lt;/code&amp;gt; &amp;#039;&amp;#039;&amp;#039;mode&amp;#039;&amp;#039;&amp;#039; (the default) for small tweaks. Only use &amp;lt;code&amp;gt;ClearIfExists&amp;lt;/code&amp;gt; when you need to completely replace a definition.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Keep your InternalNames unique&amp;#039;&amp;#039;&amp;#039; for new content. Prefix them with your mod name to avoid conflicts: &amp;lt;code&amp;gt;MyMod_FireGolem&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;FireGolem&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Test with the Spawn Object tool&amp;#039;&amp;#039;&amp;#039; in-game (Ctrl+Alt+S or tilde key) to quickly spawn and inspect your modded objects.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Back up your mod folder&amp;#039;&amp;#039;&amp;#039; before making large changes.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Check load order&amp;#039;&amp;#039;&amp;#039; if your changes aren&amp;#039;t appearing -- your mod might be loading before another mod that overrides the same definitions.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Localization keys&amp;#039;&amp;#039;&amp;#039; (e.g., &amp;lt;code&amp;gt;TXT_MY_MOD_UNIT_NAME&amp;lt;/code&amp;gt;) can be defined in localization XML files, but plain text strings work fine for testing and small mods.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Modding]]&lt;/div&gt;</summary>
		<author><name>Jsan</name></author>
	</entry>
</feed>