-
Notifications
You must be signed in to change notification settings - Fork 0
legacy paths Overview
This document covers the Legacy Path system in Civilization VII - the primary progression and victory mechanism that replaces traditional victory types from previous games.
Legacy Paths are Civ VII's core victory-like progression system. Each Age has four Legacy Paths (Science, Culture, Military, Economic), and players earn "path points" toward each by accomplishing specific goals. Completing milestones on these paths grants Legacy Points, which are the primary currency for winning the game.
| Concept | Description |
|---|---|
| Legacy Path | A progression track within an Age (e.g., LEGACY_PATH_ANTIQUITY_SCIENCE) |
| Legacy Path Class | The category of a path (Science, Culture, Military, Economic) |
| Path Points | Points earned toward a specific Legacy Path |
| Milestones | Thresholds on each path that grant rewards when reached |
| Legacy Points | Final victory currency - most Legacy Points at game end wins |
| Age Progression | Timer system that advances the game through Ages |
| Table | Purpose |
|---|---|
LegacyPathClasses |
Define the four path categories |
LegacyPaths |
Define specific paths for each Age |
AgeProgressions |
Age timer configuration |
AgeProgressionMilestones |
Milestone thresholds per path |
AgeProgressionMilestoneRewards |
Rewards granted at milestones |
AgeProgressionRewards |
Define reward modifiers |
AgeProgressionEvents |
Events that accelerate Age progression |
Strategies |
AI strategy definitions for paths |
StrategyConditions |
Conditions for AI to follow a strategy |
Four fundamental classes are defined in base-standard/data/gameplay.xml:
<LegacyPathClasses>
<Row LegacyPathClassType="LEGACY_PATH_CLASS_CULTURE" Name="LOC_LEGACY_PATH_CLASS_CULTURE_NAME" />
<Row LegacyPathClassType="LEGACY_PATH_CLASS_ECONOMIC" Name="LOC_LEGACY_PATH_CLASS_ECONOMIC_NAME" />
<Row LegacyPathClassType="LEGACY_PATH_CLASS_MILITARY" Name="LOC_LEGACY_PATH_CLASS_MILITARY_NAME" />
<Row LegacyPathClassType="LEGACY_PATH_CLASS_SCIENCE" Name="LOC_LEGACY_PATH_CLASS_SCIENCE_NAME" />
</LegacyPathClasses>| Column | Type | Description |
|---|---|---|
LegacyPathClassType |
TEXT | Unique identifier for the class |
Name |
TEXT | Localization key for display name |
Legacy Paths use KIND_LEGACY_PATH in Antiquity but KIND_VICTORY in later ages:
<!-- Antiquity uses KIND_LEGACY_PATH -->
<Types>
<Row Type="LEGACY_PATH_ANTIQUITY_SCIENCE" Kind="KIND_LEGACY_PATH"/>
</Types>
<!-- Exploration/Modern use KIND_VICTORY -->
<Types>
<Row Type="LEGACY_PATH_EXPLORATION_SCIENCE" Kind="KIND_VICTORY"/>
</Types><LegacyPaths>
<Row LegacyPathType="LEGACY_PATH_ANTIQUITY_SCIENCE"
Age="AGE_ANTIQUITY"
LegacyPathClassType="LEGACY_PATH_CLASS_SCIENCE"
Name="LOC_LEGACY_PATH_ANTIQUITY_SCIENCE_NAME"
Description="LOC_LEGACY_PATH_ANTIQUITY_SCIENCE_DESCRIPTION"/>
</LegacyPaths>| Column | Type | Description |
|---|---|---|
LegacyPathType |
TEXT | Unique path identifier |
Age |
TEXT | Age this path belongs to (AGE_ANTIQUITY, AGE_EXPLORATION, AGE_MODERN) |
LegacyPathClassType |
TEXT | Reference to LegacyPathClasses |
Name |
TEXT | Localization key for path name |
Description |
TEXT | Localization key for description |
| Path | Class | Goal |
|---|---|---|
LEGACY_PATH_ANTIQUITY_SCIENCE |
Science | Collect Great Works of Writing |
LEGACY_PATH_ANTIQUITY_CULTURE |
Culture | Build Wonders |
LEGACY_PATH_ANTIQUITY_MILITARY |
Military | Control settlements (conquest/expansion) |
LEGACY_PATH_ANTIQUITY_ECONOMIC |
Economic | Collect unique resources |
| Path | Class | Goal |
|---|---|---|
LEGACY_PATH_EXPLORATION_SCIENCE |
Science | Build high-yield districts (40+ yield) |
LEGACY_PATH_EXPLORATION_CULTURE |
Culture | Collect Relics |
LEGACY_PATH_EXPLORATION_MILITARY |
Military | Settle/conquer in Distant Lands |
LEGACY_PATH_EXPLORATION_ECONOMIC |
Economic | Accumulate treasure resources |
| Path | Class | Goal |
|---|---|---|
LEGACY_PATH_MODERN_SCIENCE |
Science | Complete space projects |
LEGACY_PATH_MODERN_CULTURE |
Culture | Collect Artifacts |
LEGACY_PATH_MODERN_MILITARY |
Military | Conquer with ideology bonuses |
LEGACY_PATH_MODERN_ECONOMIC |
Economic | Build industrial infrastructure |
Each Legacy Path has 3 milestones. Reaching them grants rewards and accelerates Age progression.
<Types>
<Row Type="ANTIQUITY_SCIENCE_MILESTONE_1" Kind="KIND_AGE_PROGRESSION_MILESTONE"/>
<Row Type="ANTIQUITY_SCIENCE_MILESTONE_2" Kind="KIND_AGE_PROGRESSION_MILESTONE"/>
<Row Type="ANTIQUITY_SCIENCE_MILESTONE_3" Kind="KIND_AGE_PROGRESSION_MILESTONE"/>
</Types><AgeProgressionMilestones>
<Row AgeProgressionMilestoneType="ANTIQUITY_SCIENCE_MILESTONE_1"
LegacyPathType="LEGACY_PATH_ANTIQUITY_SCIENCE"
RequiredPathPoints="3"
AgeProgressionEventType="AGE_PROGRESSION_PLAYER_MILESTONE_1"/>
<Row AgeProgressionMilestoneType="ANTIQUITY_SCIENCE_MILESTONE_2"
LegacyPathType="LEGACY_PATH_ANTIQUITY_SCIENCE"
RequiredPathPoints="6"
AgeProgressionEventType="AGE_PROGRESSION_PLAYER_MILESTONE_2"/>
<Row AgeProgressionMilestoneType="ANTIQUITY_SCIENCE_MILESTONE_3"
LegacyPathType="LEGACY_PATH_ANTIQUITY_SCIENCE"
RequiredPathPoints="10"
AgeProgressionEventType="AGE_PROGRESSION_PLAYER_MILESTONE_3"
FinalMilestone="true"/>
</AgeProgressionMilestones>| Column | Type | Description |
|---|---|---|
AgeProgressionMilestoneType |
TEXT | Unique milestone identifier |
LegacyPathType |
TEXT | Parent Legacy Path |
RequiredPathPoints |
INTEGER | Path points needed to reach |
AgeProgressionEventType |
TEXT | Event triggered (affects Age timer) |
FinalMilestone |
BOOLEAN | Whether this is the final milestone |
| Path | Milestone 1 | Milestone 2 | Milestone 3 |
|---|---|---|---|
| Science | 3 points | 6 points | 10 points |
| Culture | 2 points | 4 points | 7 points |
| Military | 6 points | 9 points | 12 points |
| Economic | 7 points | 14 points | 20 points |
Link milestones to rewards using AgeProgressionMilestoneRewards:
<AgeProgressionMilestoneRewards>
<!-- Immediate legacy point reward -->
<Row AgeProgressionMilestoneType="ANTIQUITY_SCIENCE_MILESTONE_1"
AgeProgressionRewardType="AGE_REWARD_LEGACY_POINT_SCIENCE"
IsImmediate="true"/>
<!-- Attribute unlock reward -->
<Row AgeProgressionMilestoneType="ANTIQUITY_SCIENCE_MILESTONE_1"
AgeProgressionRewardType="AGE_REWARD_MILESTONE1_SCIENCE_1"/>
</AgeProgressionMilestoneRewards>| Column | Type | Description |
|---|---|---|
AgeProgressionMilestoneType |
TEXT | Milestone this reward is for |
AgeProgressionRewardType |
TEXT | Reward to grant |
IsImmediate |
BOOLEAN | Whether reward applies immediately |
Define what rewards do using GameEffects:
<AgeProgressionRewards>
<Row AgeProgressionRewardType="AGE_REWARD_LEGACY_POINT_SCIENCE"
ModifierId="MOD_AGE_REWARD_LEGACY_POINT_SCIENCE"
Name="LOC_LEGACY_POINT_SCIENCE_REWARD_NAME"
Description="LOC_LEGACY_POINT_SCIENCE_REWARD_DESCRIPTION"
DescriptionFinalAge="LOC_LEGACY_POINT_SCIENCE_REWARD_FINAL_AGE_DESCRIPTION"
icon="AGE_REWARD_LEGACY_POINT_SCIENCE"/>
</AgeProgressionRewards>| Column | Type | Description |
|---|---|---|
AgeProgressionRewardType |
TEXT | Unique reward identifier |
ModifierId |
TEXT | GameEffect modifier to apply |
Name |
TEXT | Localization key for name |
Description |
TEXT | Localization key for description |
DescriptionFinalAge |
TEXT | Alternate description in final Age |
icon |
TEXT | Icon reference |
<GameEffects xmlns="GameEffects">
<!-- Grant 1 Legacy Point of Science type -->
<Modifier id="MOD_AGE_REWARD_LEGACY_POINT_SCIENCE"
collection="COLLECTION_OWNER"
effect="EFFECT_PLAYER_GRANT_LEGACY_POINTS"
permanent="true">
<Argument name="Amount">1</Argument>
<Argument name="Type">CARD_CATEGORY_SCIENTIFIC</Argument>
</Modifier>
<!-- Unlock selection for Age transition -->
<Modifier id="MOD_AGE_REWARD_GOLDEN_AGE_SCIENCE_1"
collection="COLLECTION_OWNER"
effect="EFFECT_PLAYER_GRANT_UNLOCK"
permanent="true">
<Argument name="Unlock">UNLOCK_WON_SCIENTIFIC_VICTORY_1</Argument>
</Modifier>
</GameEffects>Define how players earn path points using scoring modifiers:
<PlayerModifiers>
<Row ModifierId="VICTORY_ANTIQUITY_SCIENCE_GREAT_WORK_SCORING"/>
</PlayerModifiers>
<Modifiers>
<Row ModifierId="VICTORY_ANTIQUITY_SCIENCE_GREAT_WORK_SCORING"
ModifierType="MODIFIER_PLAYER_ADJUST_GREAT_WORK_SCORING"
SubjectRequirementSetId="REQSET_PLAYER_IS_MAJOR"/>
</Modifiers>
<ModifierArguments>
<Row ModifierId="VICTORY_ANTIQUITY_SCIENCE_GREAT_WORK_SCORING"
Name="VP" Value="1"/>
<Row ModifierId="VICTORY_ANTIQUITY_SCIENCE_GREAT_WORK_SCORING"
Name="LegacyPathType" Value="LEGACY_PATH_ANTIQUITY_SCIENCE"/>
<Row ModifierId="VICTORY_ANTIQUITY_SCIENCE_GREAT_WORK_SCORING"
Name="GreatWorkObjectType" Value="GREATWORKOBJECT_WRITING"/>
</ModifierArguments>| ModifierType | What it scores |
|---|---|
MODIFIER_PLAYER_ADJUST_GREAT_WORK_SCORING |
Great Works by type |
MODIFIER_PLAYER_ADJUST_WONDER_SCORING |
Wonders built |
MODIFIER_PLAYER_ADJUST_SETTLEMENT_COUNT_SCORING |
Settlements (conquest/non-conquest) |
MODIFIER_PLAYER_ADJUST_RESOURCE_SCORING |
Resources collected |
MODIFIER_PLAYER_ADJUST_HIGH_YIELD_DISTRICT_SCORING |
High-yield districts |
MODIFIER_PLAYER_ADJUST_SETTLEMENT_SCORING |
Modern settlement scoring |
| Argument | Description |
|---|---|
VP |
Path points awarded per item |
LegacyPathType |
Which path gets the points |
Conquest |
Only count conquered settlements |
NonConquest |
Only count peacefully acquired settlements |
DistantLands |
Only count settlements in distant lands |
FollowsReligion |
Bonus if settlement follows your religion |
HaveIdeology |
Bonus if you have an ideology |
OpposingIdeology |
Bonus for conquering opposing ideology |
GreatWorkObjectType |
Filter by Great Work type |
Reversible |
Whether losing the item loses points |
Ages advance based on accumulated progression points:
<AgeProgressions>
<Row AgeProgressionType="AGE_PROGRESSION_ANTIQUITY_AGE_TIMER"
AgeType="AGE_ANTIQUITY"
EndsAge="true"
MaxPoints_Abbreviated="160"
MaxPoints_Standard="200"
MaxPoints_Long="240"/>
</AgeProgressions>Events add points to the Age timer:
<AgeProgressionEvents>
<Row AgeProgressionEventType="AGE_PROGRESSION_PLAYER_MILESTONE_1"
Points="5"
AgeProgressionType="AGE_PROGRESSION_ANTIQUITY_AGE_TIMER"/>
<Row AgeProgressionEventType="AGE_PROGRESSION_PLAYER_MILESTONE_2"
Points="5"
AgeProgressionType="AGE_PROGRESSION_ANTIQUITY_AGE_TIMER"/>
<Row AgeProgressionEventType="AGE_PROGRESSION_PLAYER_MILESTONE_3"
Points="10"
AgeProgressionType="AGE_PROGRESSION_ANTIQUITY_AGE_TIMER"/>
<Row AgeProgressionEventType="AGE_PROGRESSION_FUTURE_CIVIC"
Points="10"
AgeProgressionType="AGE_PROGRESSION_ANTIQUITY_AGE_TIMER"/>
<Row AgeProgressionEventType="AGE_PROGRESSION_FUTURE_TECH"
Points="10"
AgeProgressionType="AGE_PROGRESSION_ANTIQUITY_AGE_TIMER"/>
<Row AgeProgressionEventType="AGE_PROGRESSION_PLAYER_ELIMINATED"
Points="25"
AgeProgressionType="AGE_PROGRESSION_ANTIQUITY_AGE_TIMER"/>
</AgeProgressionEvents><AgeProgressionTurns>
<Row AgeProgressionTurnType="AGE_PROGRESSION_PER_TURN_BASE"
Points="1"
GameSpeedScaling="false"
AgeProgressionType="AGE_PROGRESSION_ANTIQUITY_AGE_TIMER"/>
</AgeProgressionTurns>When failing to achieve milestones, Dark Age rewards provide consolation bonuses:
<AgeProgressionDarkAgeRewardInfos>
<Row LegacyPathType="LEGACY_PATH_ANTIQUITY_SCIENCE"
Name="LOC_LEGACY_PATH_ANTIQUITY_SCIENCE_DARK_AGE_REWARD_TEXT"
Description="LOC_LEGACY_PATH_ANTIQUITY_SCIENCE_DARK_AGE_DESCRIPTION"
Icon="CARD_AT_EXP_DARK_AGE_SCIENCE"/>
</AgeProgressionDarkAgeRewardInfos>Define how AI pursues Legacy Paths:
<Strategies>
<Row StrategyType="LEGACY_PATH_STRATEGY_SCIENCE"
LegacyPathType="LEGACY_PATH_ANTIQUITY_SCIENCE"
MinNumConditionsNeeded="2"
MaxNumConditionsNeeded="5"/>
</Strategies>Conditions the AI evaluates to determine if it should pursue a strategy:
<StrategyConditions>
<Row StrategyType="LEGACY_PATH_STRATEGY_SCIENCE"
ConditionFunction="GovernmentMatches"
ThresholdValue="1"
StringValue="GOVERNMENT_DESPOTISM"/>
<Row StrategyType="LEGACY_PATH_STRATEGY_SCIENCE"
ConditionFunction="NumCities"
ThresholdValue="3"/>
<Row StrategyType="LEGACY_PATH_STRATEGY_SCIENCE"
ConditionFunction="TopSciencePercent"
ThresholdValue="33"/>
<Row StrategyType="LEGACY_PATH_STRATEGY_SCIENCE"
ConditionFunction="NumGreatWorks"
ThresholdValue="2"/>
<Row StrategyType="LEGACY_PATH_STRATEGY_SCIENCE"
ConditionFunction="HasLeaderTrait"
ThresholdValue="1"
StringValue="TRAIT_LEADER_ATTRIBUTE_SCIENTIFIC"/>
</StrategyConditions>| Function | Description |
|---|---|
GovernmentMatches |
Player has specific government |
NumCities |
Player has at least X cities |
NumConqueredCities |
Player has conquered at least X cities |
NumCommanders |
Player has at least X commanders |
NumGreatWorks |
Player has at least X great works |
NumWonders |
Player has at least X wonders |
TopMilitaryPercent |
Player is in top X% military |
TopSciencePercent |
Player is in top X% science |
TopYieldPercent |
Player is in top X% for specific yield |
VictoryPoints |
Player has X path points |
HasLeaderTrait |
Leader has specific trait |
LimitedWars |
Player has limited wars |
NumMajorsMet |
Player has met X major civs |
The ultimate victory is determined by Legacy Points:
<Victories>
<Row VictoryType="VICTORY_LEGACY"
VictoryClassType="VICTORY_CLASS_LEGACY"
Name="LOC_VICTORY_LEGACY_NAME"
Description="LOC_VICTORY_LEGACY_DESCRIPTION"
RequirementSetId="REQSET_LEGACY_VICTORY"/>
</Victories>
<Requirements>
<Row RequirementId="REQ_LEGACY_VICTORY"
RequirementType="REQUIREMENT_TEAM_LEGACY_VICTORY"/>
</Requirements>The REQUIREMENT_TEAM_LEGACY_VICTORY checks which team has the most Legacy Points at the end of the final Age.
<?xml version="1.0" encoding="utf-8"?>
<Database>
<!-- 1. Register Types -->
<Types>
<Row Type="LEGACY_PATH_MY_DIPLOMATIC" Kind="KIND_VICTORY"/>
<Row Type="MY_DIPLOMATIC_MILESTONE_1" Kind="KIND_AGE_PROGRESSION_MILESTONE"/>
<Row Type="MY_DIPLOMATIC_MILESTONE_2" Kind="KIND_AGE_PROGRESSION_MILESTONE"/>
<Row Type="MY_DIPLOMATIC_MILESTONE_3" Kind="KIND_AGE_PROGRESSION_MILESTONE"/>
</Types>
<!-- 2. Define Legacy Path Class (or use existing) -->
<!-- Using existing LEGACY_PATH_CLASS_CULTURE for diplomatic -->
<!-- 3. Define the Legacy Path -->
<LegacyPaths>
<Row LegacyPathType="LEGACY_PATH_MY_DIPLOMATIC"
Age="AGE_EXPLORATION"
LegacyPathClassType="LEGACY_PATH_CLASS_CULTURE"
Name="LOC_LEGACY_PATH_MY_DIPLOMATIC_NAME"
Description="LOC_LEGACY_PATH_MY_DIPLOMATIC_DESCRIPTION"/>
</LegacyPaths>
<!-- 4. Define Milestones -->
<AgeProgressionMilestones>
<Row AgeProgressionMilestoneType="MY_DIPLOMATIC_MILESTONE_1"
LegacyPathType="LEGACY_PATH_MY_DIPLOMATIC"
RequiredPathPoints="5"
AgeProgressionEventType="AGE_PROGRESSION_PLAYER_MILESTONE_1"/>
<Row AgeProgressionMilestoneType="MY_DIPLOMATIC_MILESTONE_2"
LegacyPathType="LEGACY_PATH_MY_DIPLOMATIC"
RequiredPathPoints="10"
AgeProgressionEventType="AGE_PROGRESSION_PLAYER_MILESTONE_2"/>
<Row AgeProgressionMilestoneType="MY_DIPLOMATIC_MILESTONE_3"
LegacyPathType="LEGACY_PATH_MY_DIPLOMATIC"
RequiredPathPoints="15"
AgeProgressionEventType="AGE_PROGRESSION_PLAYER_MILESTONE_3"
FinalMilestone="true"/>
</AgeProgressionMilestones>
<!-- 5. Define Milestone Rewards -->
<AgeProgressionMilestoneRewards>
<Row AgeProgressionMilestoneType="MY_DIPLOMATIC_MILESTONE_1"
AgeProgressionRewardType="AGE_REWARD_LEGACY_POINT_CULTURE"
IsImmediate="true"/>
<Row AgeProgressionMilestoneType="MY_DIPLOMATIC_MILESTONE_2"
AgeProgressionRewardType="AGE_REWARD_LEGACY_POINT_CULTURE"
IsImmediate="true"/>
<Row AgeProgressionMilestoneType="MY_DIPLOMATIC_MILESTONE_3"
AgeProgressionRewardType="AGE_REWARD_LEGACY_POINT_CULTURE"
IsImmediate="true"/>
</AgeProgressionMilestoneRewards>
<!-- 6. Define Scoring -->
<PlayerModifiers>
<Row ModifierId="MY_DIPLOMATIC_ALLIANCE_SCORING"/>
</PlayerModifiers>
<Modifiers>
<Row ModifierId="MY_DIPLOMATIC_ALLIANCE_SCORING"
ModifierType="MODIFIER_PLAYER_ADJUST_ALLIANCE_SCORING"
SubjectRequirementSetId="REQSET_PLAYER_IS_MAJOR"/>
</Modifiers>
<ModifierArguments>
<Row ModifierId="MY_DIPLOMATIC_ALLIANCE_SCORING"
Name="VP" Value="3"/>
<Row ModifierId="MY_DIPLOMATIC_ALLIANCE_SCORING"
Name="LegacyPathType" Value="LEGACY_PATH_MY_DIPLOMATIC"/>
</ModifierArguments>
<!-- 7. Dark Age Info -->
<AgeProgressionDarkAgeRewardInfos>
<Row LegacyPathType="LEGACY_PATH_MY_DIPLOMATIC"
Name="LOC_LEGACY_PATH_MY_DIPLOMATIC_DARK_AGE_REWARD_TEXT"
Description="LOC_LEGACY_PATH_MY_DIPLOMATIC_DARK_AGE_DESCRIPTION"
Icon="CARD_AT_MOD_DARK_AGE_CULTURE"/>
</AgeProgressionDarkAgeRewardInfos>
</Database><?xml version="1.0" encoding="utf-8"?>
<Database>
<LocalizedText>
<Row Tag="LOC_LEGACY_PATH_MY_DIPLOMATIC_NAME" Language="en_US">
<Text>Diplomatic Legacy</Text>
</Row>
<Row Tag="LOC_LEGACY_PATH_MY_DIPLOMATIC_DESCRIPTION" Language="en_US">
<Text>Form alliances and build diplomatic relationships to earn Legacy Points.</Text>
</Row>
<Row Tag="LOC_LEGACY_PATH_MY_DIPLOMATIC_DARK_AGE_REWARD_TEXT" Language="en_US">
<Text>Isolated Start</Text>
</Row>
<Row Tag="LOC_LEGACY_PATH_MY_DIPLOMATIC_DARK_AGE_DESCRIPTION" Language="en_US">
<Text>Begin the next Age with reduced diplomatic visibility.</Text>
</Row>
</LocalizedText>
</Database>- Balance Path Points - Ensure milestones are achievable within the Age duration
- Distinct Scoring - Each path should have unique ways to earn points
- AI Strategies - Define reasonable conditions for AI pursuit
- Reward Variety - Mix immediate rewards with persistent bonuses
- Age Consistency - Keep path themes appropriate to the historical era
- Legacy Point Balance - Ensure paths award comparable Legacy Points total
- Dark Age Fallbacks - Provide meaningful consolation for missed milestones