-
Notifications
You must be signed in to change notification settings - Fork 0
database Units
ghost-ng edited this page Jan 28, 2026
·
1 revision
This document describes the database tables used to define units in Civilization VII.
Units are defined across multiple tables:
-
Types- Registers the unit type -
Units- Core unit properties -
Unit_Stats- Combat statistics -
TypeTags- Unit classification tags - Related ability tables
Every unit must first be registered in the Types table:
<Types>
<Row Type="UNIT_WARRIOR" Kind="KIND_UNIT"/>
<Row Type="UNIT_SCOUT" Kind="KIND_UNIT"/>
</Types>| Column | Type | Description |
|---|---|---|
Type |
TEXT | Unique identifier (e.g., UNIT_WARRIOR) |
Kind |
TEXT | Must be KIND_UNIT
|
The main unit definition table:
<Units>
<Row
UnitType="UNIT_SCOUT"
Name="LOC_UNIT_SCOUT_NAME"
Description="LOC_UNIT_SCOUT_DESCRIPTION"
BaseSightRange="2"
BaseMoves="2"
UnitMovementClass="UNIT_MOVEMENT_CLASS_RECON"
Domain="DOMAIN_LAND"
CoreClass="CORE_CLASS_RECON"
FormationClass="FORMATION_CLASS_CIVILIAN"
ZoneOfControl="false"
/>
</Units>| Column | Type | Description | Example Values |
|---|---|---|---|
UnitType |
TEXT | Primary key, matches Type | UNIT_WARRIOR |
Name |
TEXT | Localization key for name | LOC_UNIT_WARRIOR_NAME |
Description |
TEXT | Localization key for description | LOC_UNIT_WARRIOR_DESCRIPTION |
BaseSightRange |
INTEGER | Vision range in tiles | 2 |
BaseMoves |
INTEGER | Movement points per turn |
2, 3, 4
|
UnitMovementClass |
TEXT | Movement type | See below |
Domain |
TEXT | Unit domain |
DOMAIN_LAND, DOMAIN_SEA, DOMAIN_AIR
|
CoreClass |
TEXT | Core classification | See below |
FormationClass |
TEXT | Formation type | See below |
ZoneOfControl |
BOOLEAN | Exerts ZOC |
true, false
|
CanTrain |
BOOLEAN | Can be trained normally |
true, false
|
CanPurchase |
BOOLEAN | Can be purchased with gold |
true, false
|
FoundCity |
BOOLEAN | Can found settlements |
true (Settlers) |
MakeTradeRoute |
BOOLEAN | Creates trade routes |
true (Merchants) |
CostProgressionModel |
TEXT | How cost scales | See below |
CostProgressionParam1 |
INTEGER | Cost scaling parameter | Varies |
PrereqPopulation |
INTEGER | Population required to train |
5 (Settlers) |
CanEarnExperience |
BOOLEAN | Gains XP |
true, false
|
PromotionClass |
TEXT | Promotion tree | See below |
CanTriggerDiscovery |
BOOLEAN | Triggers discovery sites |
true, false
|
CanBeDamaged |
BOOLEAN | Can take damage |
true, false
|
ManualDelete |
BOOLEAN | Can be manually deleted |
true, false
|
| Value | Description |
|---|---|
UNIT_MOVEMENT_CLASS_FOOT |
Standard land movement |
UNIT_MOVEMENT_CLASS_RECON |
Scout/reconnaissance |
UNIT_MOVEMENT_CLASS_NAVAL |
Naval vessels |
UNIT_MOVEMENT_CLASS_MOUNTED |
Cavalry |
UNIT_MOVEMENT_CLASS_WHEELED |
Wheeled vehicles |
NO_UNIT_MOVEMENT_CLASS |
Stationary units |
| Value | Description |
|---|---|
DOMAIN_LAND |
Ground units |
DOMAIN_SEA |
Naval units |
DOMAIN_AIR |
Aircraft |
| Value | Description |
|---|---|
CORE_CLASS_MILITARY |
Combat units |
CORE_CLASS_CIVILIAN |
Non-combat civilians |
CORE_CLASS_RECON |
Scouts and explorers |
CORE_CLASS_SUPPORT |
Support units (Commanders, Settlers) |
| Value | Description |
|---|---|
FORMATION_CLASS_LAND_COMBAT |
Land combat formation |
FORMATION_CLASS_NAVAL_COMBAT |
Naval combat formation |
FORMATION_CLASS_CIVILIAN |
Civilian formation |
FORMATION_CLASS_COMMAND |
Commander formation |
| Value | Description |
|---|---|
COST_PROGRESSION_PREVIOUS_COPIES |
Cost increases with each copy |
COST_PROGRESSION_NUM_SETTLEMENTS |
Cost scales with settlement count |
| Value | Description |
|---|---|
PROMOTION_CLASS_LAND_COMMANDER |
Army commander promotions |
PROMOTION_CLASS_NAVAL_COMMANDER |
Fleet commander promotions |
PROMOTION_CLASS_AIR_COMMANDER |
Squadron commander promotions |
PROMOTION_CLASS_CARRIER_COMMANDER |
Carrier commander promotions |
PROMOTION_CLASS_AERODROME_COMMANDER |
Aerodrome commander promotions |
Combat statistics for units:
<Unit_Stats>
<Row UnitType="UNIT_WARRIOR" Combat="25"/>
<Row UnitType="UNIT_ARCHER" Combat="15" RangedCombat="25" Range="2"/>
</Unit_Stats>| Column | Type | Description |
|---|---|---|
UnitType |
TEXT | Foreign key to Units |
Combat |
INTEGER | Melee combat strength |
RangedCombat |
INTEGER | Ranged combat strength |
Range |
INTEGER | Attack range in tiles |
Unit classification tags for game logic:
<TypeTags>
<Row Type="UNIT_SCOUT" Tag="UNIT_CLASS_NON_COMBAT"/>
<Row Type="UNIT_SCOUT" Tag="UNIT_CLASS_AUTOEXPLORE"/>
<Row Type="UNIT_SCOUT" Tag="UNIT_CLASS_RECON"/>
<Row Type="UNIT_WARRIOR" Tag="UNIT_CLASS_COMBAT"/>
<Row Type="UNIT_WARRIOR" Tag="UNIT_CLASS_MELEE"/>
<Row Type="UNIT_WARRIOR" Tag="UNIT_CLASS_INFANTRY"/>
</TypeTags>| Tag | Description |
|---|---|
UNIT_CLASS_COMBAT |
Can engage in combat |
UNIT_CLASS_NON_COMBAT |
Cannot attack |
UNIT_CLASS_MELEE |
Melee attacker |
UNIT_CLASS_RANGED |
Ranged attacker |
UNIT_CLASS_INFANTRY |
Infantry unit |
UNIT_CLASS_CAVALRY |
Cavalry unit |
UNIT_CLASS_MOUNTED |
Mounted unit |
UNIT_CLASS_SIEGE |
Siege weapon |
UNIT_CLASS_NAVAL |
Naval unit |
UNIT_CLASS_AIRCRAFT |
Air unit |
UNIT_CLASS_RECON |
Reconnaissance |
UNIT_CLASS_COMMAND |
Commander unit |
UNIT_CLASS_HEAVY |
Heavy unit |
UNIT_CLASS_LIGHT |
Light unit |
UNIT_CLASS_STEALTH |
Stealth capable |
AGELESS |
Persists across ages |
Abilities are defined in Types with KIND_ABILITY:
<Types>
<Row Type="ABILITY_AMPHIBIOUS" Kind="KIND_ABILITY"/>
<Row Type="ABILITY_FIRST_STRIKE" Kind="KIND_ABILITY"/>
</Types>| Ability | Description |
|---|---|
ABILITY_AMPHIBIOUS |
No penalty attacking from water |
ABILITY_FIRST_STRIKE |
Attacks first in combat |
ABILITY_FEAR |
Causes fear in enemies |
ABILITY_POISON |
Applies poison damage |
ABILITY_SKIRMISH |
Can move after attacking |
ABILITY_SWIFT |
Increased movement |
ABILITY_STEALTH |
Can be hidden |
<?xml version="1.0" encoding="utf-8"?>
<Database>
<!-- Register the type -->
<Types>
<Row Type="UNIT_MY_WARRIOR" Kind="KIND_UNIT"/>
</Types>
<!-- Define the unit -->
<Units>
<Row
UnitType="UNIT_MY_WARRIOR"
Name="LOC_UNIT_MY_WARRIOR_NAME"
Description="LOC_UNIT_MY_WARRIOR_DESCRIPTION"
BaseSightRange="2"
BaseMoves="2"
UnitMovementClass="UNIT_MOVEMENT_CLASS_FOOT"
Domain="DOMAIN_LAND"
CoreClass="CORE_CLASS_MILITARY"
FormationClass="FORMATION_CLASS_LAND_COMBAT"
ZoneOfControl="true"
/>
</Units>
<!-- Combat stats -->
<Unit_Stats>
<Row UnitType="UNIT_MY_WARRIOR" Combat="30"/>
</Unit_Stats>
<!-- Classification -->
<TypeTags>
<Row Type="UNIT_MY_WARRIOR" Tag="UNIT_CLASS_COMBAT"/>
<Row Type="UNIT_MY_WARRIOR" Tag="UNIT_CLASS_MELEE"/>
<Row Type="UNIT_MY_WARRIOR" Tag="UNIT_CLASS_INFANTRY"/>
</TypeTags>
</Database>-
UnitPromotionClasses- Promotion class definitions -
UnitAbilities- Unit ability definitions -
Unit_BuildingPrereqs- Building prerequisites -
Unit_ResourceCosts- Strategic resource costs