-
Notifications
You must be signed in to change notification settings - Fork 0
tutorials Creating a Civic
ghost-ng edited this page Jan 29, 2026
·
1 revision
This tutorial shows how to add a new civic to Civilization VII's culture tree.
Civics in Civ VII use the Progression Tree system, similar to technologies. Each civic is a KIND_TREE_NODE that belongs to one of the age-specific civic trees:
| Age | Civic Tree |
|---|---|
| Antiquity | TREE_CIVICS_AQ_MAIN |
| Exploration | TREE_CIVICS_EX_MAIN |
| Modern | TREE_CIVICS_MO_MAIN |
Civics primarily unlock Traditions (policies) and Wonders.
MyCivicMod/
├── MyCivicMod.modinfo
├── data/
│ ├── civic.xml
│ └── civic-text.xml
<?xml version="1.0" encoding="utf-8"?>
<Mod id="my-civic-mod" version="1.0.0" xmlns="ModInfo">
<Properties>
<Name>My New Civic</Name>
<Description>Adds a new civic to the Antiquity culture tree</Description>
<Authors>Your Name</Authors>
</Properties>
<ActionCriteria>
<Criteria id="antiquity">
<AgeInUse>AGE_ANTIQUITY</AgeInUse>
</Criteria>
</ActionCriteria>
<ActionGroups>
<ActionGroup id="game-content" scope="game" criteria="antiquity">
<Actions>
<UpdateDatabase>
<Item>data/civic.xml</Item>
</UpdateDatabase>
<UpdateText>
<Item>data/civic-text.xml</Item>
</UpdateText>
</Actions>
</ActionGroup>
</ActionGroups>
</Mod>Create data/civic.xml:
<?xml version="1.0" encoding="utf-8"?>
<Database>
<!-- Register the type -->
<Types>
<Row Type="NODE_CIVIC_AQ_MAIN_DIPLOMACY" Kind="KIND_TREE_NODE"/>
</Types>
<!-- Optional: Add a quote -->
<TypeQuotes>
<Row
Type="NODE_CIVIC_AQ_MAIN_DIPLOMACY"
Quote="LOC_CIVIC_DIPLOMACY_QUOTE"
QuoteAuthor="LOC_CIVIC_DIPLOMACY_QUOTE_AUTHOR"/>
</TypeQuotes>
<!-- Define the civic in the progression tree -->
<ProgressionTreeNodes>
<Row
ProgressionTreeNodeType="NODE_CIVIC_AQ_MAIN_DIPLOMACY"
ProgressionTree="TREE_CIVICS_AQ_MAIN"
Cost="300"
Name="LOC_CIVIC_DIPLOMACY_NAME"
IconString="cult_diplomacy"/>
</ProgressionTreeNodes>
<!-- Set prerequisites -->
<ProgressionTreePrereqs>
<Row Node="NODE_CIVIC_AQ_MAIN_DIPLOMACY" PrereqNode="NODE_CIVIC_AQ_MAIN_CODE_OF_LAWS"/>
</ProgressionTreePrereqs>
<!-- Define what the civic unlocks -->
<ProgressionTreeNodeUnlocks>
<!-- Unlock a tradition (policy) -->
<Row
ProgressionTreeNodeType="NODE_CIVIC_AQ_MAIN_DIPLOMACY"
TargetKind="KIND_TRADITION"
TargetType="TRADITION_AMBASSADORS"
UnlockDepth="1"/>
<!-- Unlock a wonder -->
<Row
ProgressionTreeNodeType="NODE_CIVIC_AQ_MAIN_DIPLOMACY"
TargetKind="KIND_CONSTRUCTIBLE"
TargetType="WONDER_FORUM"
UnlockDepth="1"/>
</ProgressionTreeNodeUnlocks>
<!-- Optional: Set advisory categories -->
<ProgressionTree_Advisories>
<Row ProgressionTreeNodeType="NODE_CIVIC_AQ_MAIN_DIPLOMACY"
AdvisoryClassType="ADVISORY_CLASS_POLITICAL"/>
</ProgressionTree_Advisories>
</Database>Create data/civic-text.xml:
<?xml version="1.0" encoding="utf-8"?>
<Database>
<LocalizedText>
<Row Tag="LOC_CIVIC_DIPLOMACY_NAME" Language="en_US">
<Text>Diplomacy</Text>
</Row>
<Row Tag="LOC_CIVIC_DIPLOMACY_QUOTE" Language="en_US">
<Text>Diplomacy is the art of telling people to go to hell in such a way that they ask for directions.</Text>
</Row>
<Row Tag="LOC_CIVIC_DIPLOMACY_QUOTE_AUTHOR" Language="en_US">
<Text>Winston Churchill</Text>
</Row>
</LocalizedText>
</Database>| Column | Description |
|---|---|
ProgressionTreeNodeType |
Primary key (your civic type) |
ProgressionTree |
Which tree (TREE_CIVICS_AQ_MAIN, TREE_CIVICS_EX_MAIN, TREE_CIVICS_MO_MAIN) |
Cost |
Culture cost to research |
Name |
Localization key for name |
IconString |
Icon identifier (use cult_ prefix for civic icons) |
| TargetKind | Description | Examples |
|---|---|---|
KIND_TRADITION |
Policies/Traditions |
TRADITION_SCHOLARS, TRADITION_HONOR
|
KIND_CONSTRUCTIBLE |
Wonders and buildings |
WONDER_ORACLE, BUILDING_ALTAR
|
KIND_UNIT |
Units |
UNIT_MERCHANT, UNIT_ARMY_COMMANDER
|
KIND_PROJECT |
City projects | PROJECT_CITY_CULTURE_PROJECT |
KIND_MODIFIER |
Direct effects | Settlement cap increases, codex bonuses |
KIND_DIPLOMATIC_ACTION |
Diplomacy options | DIPLOMACY_ACTION_IMPROVE_TRADE_RELATIONS |
Set which advisor recommends this civic:
| AdvisoryClassType | Focus |
|---|---|
ADVISORY_CLASS_CULTURE |
Cultural development |
ADVISORY_CLASS_MILITARY |
Military strength |
ADVISORY_CLASS_DEFENSE |
Defensive capabilities |
ADVISORY_CLASS_ECONOMIC |
Economic growth |
ADVISORY_CLASS_POLITICAL |
Diplomacy and politics |
If your civic unlocks a new tradition, you need to define it:
data/tradition.xml:
<?xml version="1.0" encoding="utf-8"?>
<Database>
<Types>
<Row Type="TRADITION_AMBASSADORS" Kind="KIND_TRADITION"/>
</Types>
<Traditions>
<Row
TraditionType="TRADITION_AMBASSADORS"
Name="LOC_TRADITION_AMBASSADORS_NAME"
Description="LOC_TRADITION_AMBASSADORS_DESC"
Icon="ICON_TRADITION_AMBASSADORS"/>
</Traditions>
<!-- Link modifier to tradition -->
<TraditionModifiers>
<Row TraitType="TRADITION_AMBASSADORS" ModifierId="MOD_AMBASSADORS_INFLUENCE"/>
</TraditionModifiers>
</Database>data/tradition-gameeffects.xml:
<?xml version="1.0" encoding="utf-8"?>
<GameEffects xmlns="GameEffects">
<Modifier id="MOD_AMBASSADORS_INFLUENCE"
collection="COLLECTION_OWNER"
effect="EFFECT_PLAYER_ADJUST_YIELD">
<Argument name="YieldType">YIELD_INFLUENCE</Argument>
<Argument name="Amount">3</Argument>
</Modifier>
</GameEffects>Require multiple civics before this one:
<ProgressionTreePrereqs>
<Row Node="NODE_CIVIC_AQ_MAIN_DIPLOMACY" PrereqNode="NODE_CIVIC_AQ_MAIN_CODE_OF_LAWS"/>
<Row Node="NODE_CIVIC_AQ_MAIN_DIPLOMACY" PrereqNode="NODE_CIVIC_AQ_MAIN_PUBLIC_LIFE"/>
</ProgressionTreePrereqs>Like technologies, civics have two depths:
<ProgressionTreeNodeUnlocks>
<!-- Depth 1: Initial completion -->
<Row ProgressionTreeNodeType="NODE_CIVIC_AQ_MAIN_DIPLOMACY"
TargetKind="KIND_TRADITION"
TargetType="TRADITION_AMBASSADORS"
UnlockDepth="1"/>
<!-- Depth 2: Full mastery -->
<Row ProgressionTreeNodeType="NODE_CIVIC_AQ_MAIN_DIPLOMACY"
TargetKind="KIND_CONSTRUCTIBLE"
TargetType="WONDER_FORUM"
UnlockDepth="2"/>
<Row ProgressionTreeNodeType="NODE_CIVIC_AQ_MAIN_DIPLOMACY"
TargetKind="KIND_DIPLOMATIC_ACTION"
TargetType="DIPLOMACY_ACTION_ALLIANCE"
UnlockDepth="2"/>
</ProgressionTreeNodeUnlocks>Unlock different content for specific civilizations:
<ProgressionTreeNodeUnlocks>
<!-- Standard merchant for all -->
<Row ProgressionTreeNodeType="NODE_CIVIC_AQ_MAIN_DIPLOMACY"
TargetKind="KIND_UNIT"
TargetType="UNIT_MERCHANT"
UnlockDepth="1"/>
<!-- Special merchant for Rome only -->
<Row ProgressionTreeNodeType="NODE_CIVIC_AQ_MAIN_DIPLOMACY"
TargetKind="KIND_UNIT"
TargetType="UNIT_ROMAN_EMISSARY"
UnlockDepth="1"
RequiredTraitType="TRAIT_ROME"/>
</ProgressionTreeNodeUnlocks>A full working civic mod:
data/civic.xml:
<?xml version="1.0" encoding="utf-8"?>
<Database>
<Types>
<Row Type="NODE_CIVIC_AQ_MAIN_DIPLOMACY" Kind="KIND_TREE_NODE"/>
<Row Type="TRADITION_AMBASSADORS" Kind="KIND_TRADITION"/>
</Types>
<TypeQuotes>
<Row Type="NODE_CIVIC_AQ_MAIN_DIPLOMACY"
Quote="LOC_CIVIC_DIPLOMACY_QUOTE"
QuoteAuthor="LOC_CIVIC_DIPLOMACY_QUOTE_AUTHOR"/>
</TypeQuotes>
<ProgressionTreeNodes>
<Row ProgressionTreeNodeType="NODE_CIVIC_AQ_MAIN_DIPLOMACY"
ProgressionTree="TREE_CIVICS_AQ_MAIN"
Cost="350"
Name="LOC_CIVIC_DIPLOMACY_NAME"
IconString="cult_diplomacy"/>
</ProgressionTreeNodes>
<ProgressionTreePrereqs>
<Row Node="NODE_CIVIC_AQ_MAIN_DIPLOMACY" PrereqNode="NODE_CIVIC_AQ_MAIN_CODE_OF_LAWS"/>
</ProgressionTreePrereqs>
<ProgressionTreeNodeUnlocks>
<Row ProgressionTreeNodeType="NODE_CIVIC_AQ_MAIN_DIPLOMACY"
TargetKind="KIND_TRADITION"
TargetType="TRADITION_AMBASSADORS"
UnlockDepth="1"/>
</ProgressionTreeNodeUnlocks>
<ProgressionTree_Advisories>
<Row ProgressionTreeNodeType="NODE_CIVIC_AQ_MAIN_DIPLOMACY"
AdvisoryClassType="ADVISORY_CLASS_POLITICAL"/>
</ProgressionTree_Advisories>
<!-- Define the tradition -->
<Traditions>
<Row TraditionType="TRADITION_AMBASSADORS"
Name="LOC_TRADITION_AMBASSADORS_NAME"
Description="LOC_TRADITION_AMBASSADORS_DESC"/>
</Traditions>
<TraditionModifiers>
<Row TraitType="TRADITION_AMBASSADORS" ModifierId="MOD_AMBASSADORS_INFLUENCE"/>
</TraditionModifiers>
</Database>data/civic-gameeffects.xml:
<?xml version="1.0" encoding="utf-8"?>
<GameEffects xmlns="GameEffects">
<Modifier id="MOD_AMBASSADORS_INFLUENCE"
collection="COLLECTION_OWNER"
effect="EFFECT_PLAYER_ADJUST_YIELD">
<Argument name="YieldType">YIELD_INFLUENCE</Argument>
<Argument name="Amount">3</Argument>
</Modifier>
</GameEffects>data/civic-text.xml:
<?xml version="1.0" encoding="utf-8"?>
<Database>
<LocalizedText>
<Row Tag="LOC_CIVIC_DIPLOMACY_NAME" Language="en_US">
<Text>Diplomacy</Text>
</Row>
<Row Tag="LOC_CIVIC_DIPLOMACY_QUOTE" Language="en_US">
<Text>Diplomacy is the art of saying "Nice doggie" until you can find a rock.</Text>
</Row>
<Row Tag="LOC_CIVIC_DIPLOMACY_QUOTE_AUTHOR" Language="en_US">
<Text>Will Rogers</Text>
</Row>
<Row Tag="LOC_TRADITION_AMBASSADORS_NAME" Language="en_US">
<Text>Ambassadors</Text>
</Row>
<Row Tag="LOC_TRADITION_AMBASSADORS_DESC" Language="en_US">
<Text>+3 [icon:YIELD_INFLUENCE] Influence per turn.</Text>
</Row>
</LocalizedText>
</Database>Reference these as prerequisites:
| Civic | Type |
|---|---|
| Chiefdom | NODE_CIVIC_AQ_MAIN_CHIEFDOM |
| Mysticism | NODE_CIVIC_AQ_MAIN_MYSTICISM |
| Discipline | NODE_CIVIC_AQ_MAIN_DISCIPLINE |
| Public Life | NODE_CIVIC_AQ_MAIN_PUBLIC_LIFE |
| Code of Laws | NODE_CIVIC_AQ_MAIN_CODE_OF_LAWS |
| Tactics | NODE_CIVIC_AQ_MAIN_TACTICS |
| Entertainment | NODE_CIVIC_AQ_MAIN_ENTERTAINMENT |
| Citizenship | NODE_CIVIC_AQ_MAIN_CITIZENSHIP |
| Organized Military | NODE_CIVIC_AQ_MAIN_ORG_MILITARY |
| Literacy | NODE_CIVIC_AQ_MAIN_LITERACY |
| Skilled Trades | NODE_CIVIC_AQ_MAIN_SKILLED_TRADES |
| Philosophy | NODE_CIVIC_AQ_MAIN_PHILOSOPHY |
| Commerce | NODE_CIVIC_AQ_MAIN_COMMERCE |