In the last update I've modified the code for Auto-naming.
I've added a <LeadersTimeLine> table as discussed above:
I've also set a GlobalParameters 'LEADERS_REIGN_MAX_TURNS_DIFFERENCE' (default 20) to allow to pick leaders Name for whose the reign have started/ended earlier/later than the current game's turn.
I've used game's turn instead of a set interval in years, because we have a major change of pace between the early and late game, and I'd prefer to have the Leader name to be visible for a few turns when possible.
For auto-naming, the Mod is looking for possible entries in the Localized database, and try to pick Civilization-specific names when they are available.
It use the following formatting to pick an entry:
First it try to get a Leader name (and gender) for the current Civilization, using the data in the Timeline (so ATM only Egypt)
Then it gets the Government TypeName, for example "GOVERNMENT_CHIEFDOM", and build the Localization <Tag> for the 3 names using the TypeName as a root.
The 3 names are:
The mod contains already those entries:
I've also added the ability to create three files in the mod's root folder ("custom.sql", "custom.xml" and "customText.xml") loaded after the other Database/Localized files (but before the PostUpdate.sql automation) for customization without needing to modify the base files.
One could create a customText.xml to add new names for testing like this for example
And a custom.xml to add new entries in the Leader TimeLine:
This could also be done from a modmod of course.
For now the mod doesn't add new government types, but when it does, the mod's code should handle it without issues, as long as corresponding <Tag> are added to the Localized DB.
I've added a <LeadersTimeLine> table as discussed above:
Spoiler :
Code:
<LeadersTimeLine>
<Row CivilizationType="CIVILIZATION_EGYPT" LeaderName="Narmer" Gender="Male" StartDate="-3200" EndDate="-3100" />
<Row CivilizationType="CIVILIZATION_EGYPT" LeaderName="Djoser" Gender="Male" StartDate="-2686" EndDate="-2649" />
<Row CivilizationType="CIVILIZATION_EGYPT" LeaderName="Snefru" Gender="Male" StartDate="-2650" EndDate="-2550" />
<Row CivilizationType="CIVILIZATION_EGYPT" LeaderName="Khufu" Gender="Male" StartDate="-2589" EndDate="-2566" />
<Row CivilizationType="CIVILIZATION_EGYPT" LeaderName="Khafre" Gender="Male" StartDate="-2560" EndDate="-2535" />
<Row CivilizationType="CIVILIZATION_EGYPT" LeaderName="Pepi II" Gender="Male" StartDate="-2278" EndDate="-2184" />
<Row CivilizationType="CIVILIZATION_EGYPT" LeaderName="Senusret I" Gender="Male" StartDate="-1971" EndDate="-1926" />
<Row CivilizationType="CIVILIZATION_EGYPT" LeaderName="Ahmose I" Gender="Male" StartDate="-1549" EndDate="-1524" />
<Row CivilizationType="CIVILIZATION_EGYPT" LeaderName="Amenhotep I" Gender="Male" StartDate="-1525" EndDate="-1504" />
<Row CivilizationType="CIVILIZATION_EGYPT" LeaderName="Thutmose II" Gender="Male" StartDate="-1493" EndDate="-1479" />
<Row CivilizationType="CIVILIZATION_EGYPT" LeaderName="Hatshepsut" Gender="Female" StartDate="-1478" EndDate="-1458" />
<Row CivilizationType="CIVILIZATION_EGYPT" LeaderName="Akhenaten" Gender="Male" StartDate="-1353" EndDate="-1336" />
<Row CivilizationType="CIVILIZATION_EGYPT" LeaderName="Nefertiti" Gender="Female" StartDate="-1334" EndDate="-1332" />
<Row CivilizationType="CIVILIZATION_EGYPT" LeaderName="Tutankhamun" Gender="Male" StartDate="-1332" EndDate="-1323" />
<Row CivilizationType="CIVILIZATION_EGYPT" LeaderName="Seti I" Gender="Male" StartDate="-1290" EndDate="-1278" />
<Row CivilizationType="CIVILIZATION_EGYPT" LeaderName="RamsesII" Gender="Male" StartDate="-1279" EndDate="-1213" />
<Row CivilizationType="CIVILIZATION_EGYPT" LeaderName="Merenptah" Gender="Male" StartDate="-1214" EndDate="-1203" />
<Row CivilizationType="CIVILIZATION_EGYPT" LeaderName="Twosret" Gender="Female" StartDate="-1195" EndDate="-1189" />
<Row CivilizationType="CIVILIZATION_EGYPT" LeaderName="Cleopatra" Gender="Female" StartDate="-51" EndDate="-30" />
</LeadersTimeLine>
I've also set a GlobalParameters 'LEADERS_REIGN_MAX_TURNS_DIFFERENCE' (default 20) to allow to pick leaders Name for whose the reign have started/ended earlier/later than the current game's turn.
I've used game's turn instead of a set interval in years, because we have a major change of pace between the early and late game, and I'd prefer to have the Leader name to be visible for a few turns when possible.
For auto-naming, the Mod is looking for possible entries in the Localized database, and try to pick Civilization-specific names when they are available.
It use the following formatting to pick an entry:
First it try to get a Leader name (and gender) for the current Civilization, using the data in the Timeline (so ATM only Egypt)
Then it gets the Government TypeName, for example "GOVERNMENT_CHIEFDOM", and build the Localization <Tag> for the 3 names using the TypeName as a root.
The 3 names are:
- LeaderName: "Patriach {leaderName}" or "Patriach of {civName}"
- If a leader is found, it will build the Tag depending on the leader gender, and call it with the leaderName:
- LOC_[GENDER]_[GOVERNMENT_TYPE]_NAME :
- "LOC_MALE_GOVERNMENT_CHIEFDOM_NAME" or "LOC_FEMALE_GOVERNMENT_CHIEFDOM_NAME"
- LOC_[GENDER]_[GOVERNMENT_TYPE]_NAME :
- And will also check if a Civilization-specific Tag exist, and use it if available:
- LOC_[CIVILIZATION_TYPE]_[GENDER]_[GOVERNMENT_TYPE]_NAME:
- "LOC_CIVILIZATION_EGYPT_MALE_GOVERNMENT_CHIEFDOM_NAME"
- LOC_[CIVILIZATION_TYPE]_[GENDER]_[GOVERNMENT_TYPE]_NAME:
- If there is no leader, it build the Tag like this (and call it with the civName):
- LOC_UNKNOWN_[GOVERNMENT_TYPE]_NAME:
- "LOC_UNKNOWN_GOVERNMENT_CHIEFDOM_NAME"
- LOC_UNKNOWN_[GOVERNMENT_TYPE]_NAME:
- If a leader is found, it will build the Tag depending on the leader gender, and call it with the leaderName:
- ShortDescription: "{civAdjective} tribesmen"
- It will look for Civilization-specific Tag first:
- LOC_SHORT_[CIVILIZATION_TYPE]_[GOVERNMENT_TYPE]_NAME:
- "LOC_SHORT_CIVILIZATION_EGYPT_GOVERNMENT_CHIEFDOM_NAME"
- LOC_SHORT_[CIVILIZATION_TYPE]_[GOVERNMENT_TYPE]_NAME:
- Or use a generic Tag:
- LOC_SHORT_[GOVERNMENT_TYPE]_NAME
- It will look for Civilization-specific Tag first:
- Description: "Tribe of {civName}"
- Civilization specific:
- LOC_LONG_[CIVILIZATION_TYPE]_[GOVERNMENT_TYPE]_NAME
- Generic Tag:
- LOC_LONG_[GOVERNMENT_TYPE]_NAME
- Civilization specific:
The mod contains already those entries:
Spoiler :
Code:
<LocalizedText> <!-- Government Naming -->
<Replace Tag="LOC_MALE_GOVERNMENT_TRIBE_NAME" Text="Patriarch {1_Name}" Language="en_US" />
<Replace Tag="LOC_MALE_GOVERNMENT_CHIEFDOM_NAME" Text="Chieftain {1_Name}" Language="en_US" />
<Replace Tag="LOC_MALE_GOVERNMENT_AUTOCRACY_NAME" Text="Emperor {1_Name}" Language="en_US" />
<Replace Tag="LOC_MALE_GOVERNMENT_OLIGARCHY_NAME" Text="Imperator {1_Name}" Language="en_US" />
<Replace Tag="LOC_MALE_GOVERNMENT_CLASSICAL_REPUBLIC_NAME" Text="Citizen {1_Name}" Language="en_US" />
<Replace Tag="LOC_MALE_GOVERNMENT_MONARCHY_NAME" Text="King {1_Name}" Language="en_US" />
<Replace Tag="LOC_MALE_GOVERNMENT_THEOCRACY_NAME" Text="Holy Emperor {1_Name}" Language="en_US" />
<Replace Tag="LOC_MALE_GOVERNMENT_MERCHANT_REPUBLIC_NAME" Text="Doge {1_Name}" Language="en_US" />
<Replace Tag="LOC_MALE_GOVERNMENT_FASCISM_NAME" Text="Supreme Leader {1_Name}" Language="en_US" />
<Replace Tag="LOC_MALE_GOVERNMENT_COMMUNISM_NAME" Text="General Secretary {1_Name}" Language="en_US" />
<Replace Tag="LOC_MALE_GOVERNMENT_DEMOCRACY_NAME" Text="President {1_Name}" Language="en_US" />
<Replace Tag="LOC_FEMALE_GOVERNMENT_TRIBE_NAME" Text="Matriarch {1_Name}" Language="en_US" />
<Replace Tag="LOC_FEMALE_GOVERNMENT_CHIEFDOM_NAME" Text="Chieftess {1_Name}" Language="en_US" />
<Replace Tag="LOC_FEMALE_GOVERNMENT_AUTOCRACY_NAME" Text="Empress {1_Name}" Language="en_US" />
<Replace Tag="LOC_FEMALE_GOVERNMENT_OLIGARCHY_NAME" Text="Imperatess {1_Name}" Language="en_US" />
<Replace Tag="LOC_FEMALE_GOVERNMENT_CLASSICAL_REPUBLIC_NAME" Text="Citizen {1_Name}" Language="en_US" />
<Replace Tag="LOC_FEMALE_GOVERNMENT_MONARCHY_NAME" Text="Queen {1_Name}" Language="en_US" />
<Replace Tag="LOC_FEMALE_GOVERNMENT_THEOCRACY_NAME" Text="Holy Empress {1_Name}" Language="en_US" />
<Replace Tag="LOC_FEMALE_GOVERNMENT_MERCHANT_REPUBLIC_NAME" Text="Dogaressa {1_Name}" Language="en_US" />
<Replace Tag="LOC_FEMALE_GOVERNMENT_FASCISM_NAME" Text="Supreme Leader {1_Name}" Language="en_US" />
<Replace Tag="LOC_FEMALE_GOVERNMENT_COMMUNISM_NAME" Text="General Secretary {1_Name}" Language="en_US" />
<Replace Tag="LOC_FEMALE_GOVERNMENT_DEMOCRACY_NAME" Text="President {1_Name}" Language="en_US" />
<Replace Tag="LOC_UNKNOWN_GOVERNMENT_TRIBE_NAME" Text="Patriarch of {1_Name}" Language="en_US" />
<Replace Tag="LOC_UNKNOWN_GOVERNMENT_CHIEFDOM_NAME" Text="Chieftain of {1_Name}" Language="en_US" />
<Replace Tag="LOC_UNKNOWN_GOVERNMENT_AUTOCRACY_NAME" Text="Emperor of {1_Name}" Language="en_US" />
<Replace Tag="LOC_UNKNOWN_GOVERNMENT_OLIGARCHY_NAME" Text="Imperator of {1_Name}" Language="en_US" />
<Replace Tag="LOC_UNKNOWN_GOVERNMENT_CLASSICAL_REPUBLIC_NAME" Text="Citizen of {1_Name}" Language="en_US" />
<Replace Tag="LOC_UNKNOWN_GOVERNMENT_MONARCHY_NAME" Text="King of {1_Name}" Language="en_US" />
<Replace Tag="LOC_UNKNOWN_GOVERNMENT_THEOCRACY_NAME" Text="Holy Emperor of {1_Name}" Language="en_US" />
<Replace Tag="LOC_UNKNOWN_GOVERNMENT_MERCHANT_REPUBLIC_NAME" Text="Doge of {1_Name}" Language="en_US" />
<Replace Tag="LOC_UNKNOWN_GOVERNMENT_FASCISM_NAME" Text="Supreme Leader of {1_Name}" Language="en_US" />
<Replace Tag="LOC_UNKNOWN_GOVERNMENT_COMMUNISM_NAME" Text="General Secretary of {1_Name}" Language="en_US" />
<Replace Tag="LOC_UNKNOWN_GOVERNMENT_DEMOCRACY_NAME" Text="President of {1_Name}" Language="en_US" />
<Replace Tag="LOC_SHORT_GOVERNMENT_TRIBE_NAME" Text="{1_Name} tribesmen" Language="en_US" />
<Replace Tag="LOC_SHORT_GOVERNMENT_CHIEFDOM_NAME" Text="{1_Name} clansmen" Language="en_US" />
<Replace Tag="LOC_SHORT_GOVERNMENT_AUTOCRACY_NAME" Text="{1_Name} people" Language="en_US" />
<Replace Tag="LOC_SHORT_GOVERNMENT_OLIGARCHY_NAME" Text="{1_Name} people" Language="en_US" />
<Replace Tag="LOC_SHORT_GOVERNMENT_CLASSICAL_REPUBLIC_NAME" Text="{1_Name} citizens" Language="en_US" />
<Replace Tag="LOC_SHORT_GOVERNMENT_MONARCHY_NAME" Text="{1_Name} vassals" Language="en_US" />
<Replace Tag="LOC_SHORT_GOVERNMENT_THEOCRACY_NAME" Text="{1_Name} vassals" Language="en_US" />
<Replace Tag="LOC_SHORT_GOVERNMENT_MERCHANT_REPUBLIC_NAME" Text="{1_Name} citizens" Language="en_US" />
<Replace Tag="LOC_SHORT_GOVERNMENT_FASCISM_NAME" Text="{1_Name} people" Language="en_US" />
<Replace Tag="LOC_SHORT_GOVERNMENT_COMMUNISM_NAME" Text="{1_Name} people" Language="en_US" />
<Replace Tag="LOC_SHORT_GOVERNMENT_DEMOCRACY_NAME" Text="{1_Name} citizens" Language="en_US" />
<Replace Tag="LOC_LONG_GOVERNMENT_TRIBE_NAME" Text="Tribe of {1_Name}" Language="en_US" />
<Replace Tag="LOC_LONG_GOVERNMENT_CHIEFDOM_NAME" Text="Clan of {1_Name}" Language="en_US" />
<Replace Tag="LOC_LONG_GOVERNMENT_AUTOCRACY_NAME" Text="Empire of {1_Name}" Language="en_US" />
<Replace Tag="LOC_LONG_GOVERNMENT_OLIGARCHY_NAME" Text="Oligarchy of {1_Name}" Language="en_US" />
<Replace Tag="LOC_LONG_GOVERNMENT_CLASSICAL_REPUBLIC_NAME" Text="Republic of {1_Name}" Language="en_US" />
<Replace Tag="LOC_LONG_GOVERNMENT_MONARCHY_NAME" Text="Kingdom of {1_Name}" Language="en_US" />
<Replace Tag="LOC_LONG_GOVERNMENT_THEOCRACY_NAME" Text="Holy Empire of {1_Name}" Language="en_US" />
<Replace Tag="LOC_LONG_GOVERNMENT_MERCHANT_REPUBLIC_NAME" Text="Free cities of {1_Name}" Language="en_US" />
<Replace Tag="LOC_LONG_GOVERNMENT_FASCISM_NAME" Text="Superior Nation of {1_Name}" Language="en_US" />
<Replace Tag="LOC_LONG_GOVERNMENT_COMMUNISM_NAME" Text="People's Republic of {1_Name}" Language="en_US" />
<Replace Tag="LOC_LONG_GOVERNMENT_DEMOCRACY_NAME" Text="Democratic Republic of {1_Name}" Language="en_US" />
</LocalizedText>
<LocalizedText> <!-- Government Naming -->
<Replace Tag="LOC_CIVILIZATION_EGYPT_MALE_GOVERNMENT_TRIBE_NAME" Text="Pharaoh {1_Name}" Language="en_US" />
<Replace Tag="LOC_CIVILIZATION_EGYPT_MALE_GOVERNMENT_CHIEFDOM_NAME" Text="Pharaoh {1_Name}" Language="en_US" />
<Replace Tag="LOC_CIVILIZATION_EGYPT_MALE_GOVERNMENT_AUTOCRACY_NAME" Text="Pharaoh {1_Name}" Language="en_US" />
<Replace Tag="LOC_CIVILIZATION_EGYPT_MALE_GOVERNMENT_OLIGARCHY_NAME" Text="Pharaoh {1_Name}" Language="en_US" />
<Replace Tag="LOC_CIVILIZATION_EGYPT_MALE_GOVERNMENT_CLASSICAL_REPUBLIC_NAME" Text="Pharaoh {1_Name}" Language="en_US" />
<Replace Tag="LOC_CIVILIZATION_EGYPT_MALE_GOVERNMENT_MONARCHY_NAME" Text="Pharaoh {1_Name}" Language="en_US" />
<Replace Tag="LOC_CIVILIZATION_EGYPT_FEMALE_GOVERNMENT_TRIBE_NAME" Text="Pharaoh {1_Name}" Language="en_US" />
<Replace Tag="LOC_CIVILIZATION_EGYPT_FEMALE_GOVERNMENT_CHIEFDOM_NAME" Text="Pharaoh {1_Name}" Language="en_US" />
<Replace Tag="LOC_CIVILIZATION_EGYPT_FEMALE_GOVERNMENT_AUTOCRACY_NAME" Text="Pharaoh {1_Name}" Language="en_US" />
<Replace Tag="LOC_CIVILIZATION_EGYPT_FEMALE_GOVERNMENT_OLIGARCHY_NAME" Text="Pharaoh {1_Name}" Language="en_US" />
<Replace Tag="LOC_CIVILIZATION_EGYPT_FEMALE_GOVERNMENT_CLASSICAL_REPUBLIC_NAME" Text="Pharaoh {1_Name}" Language="en_US" />
<Replace Tag="LOC_CIVILIZATION_EGYPT_FEMALE_GOVERNMENT_MONARCHY_NAME" Text="Pharaoh {1_Name}" Language="en_US" />
<Replace Tag="LOC_CIVILIZATION_EGYPT_UNKNOWN_GOVERNMENT_TRIBE_NAME" Text="Pharaoh of {1_Name}" Language="en_US" />
<Replace Tag="LOC_CIVILIZATION_EGYPT_UNKNOWN_GOVERNMENT_CHIEFDOM_NAME" Text="Pharaoh of {1_Name}" Language="en_US" />
<Replace Tag="LOC_CIVILIZATION_EGYPT_UNKNOWN_GOVERNMENT_AUTOCRACY_NAME" Text="Pharaoh of {1_Name}" Language="en_US" />
<Replace Tag="LOC_CIVILIZATION_EGYPT_UNKNOWN_GOVERNMENT_OLIGARCHY_NAME" Text="Pharaoh of {1_Name}" Language="en_US" />
<Replace Tag="LOC_CIVILIZATION_EGYPT_UNKNOWN_GOVERNMENT_CLASSICAL_REPUBLIC_NAME" Text="Pharaoh of {1_Name}" Language="en_US" />
<Replace Tag="LOC_CIVILIZATION_EGYPT_UNKNOWN_GOVERNMENT_MONARCHY_NAME" Text="Pharaoh of {1_Name}" Language="en_US" />
</LocalizedText>
I've also added the ability to create three files in the mod's root folder ("custom.sql", "custom.xml" and "customText.xml") loaded after the other Database/Localized files (but before the PostUpdate.sql automation) for customization without needing to modify the base files.
One could create a customText.xml to add new names for testing like this for example
Code:
</GameData>
<LocalizedText>
<Replace Tag="LOC_CIVILIZATION_ROME_MALE_GOVERNMENT_MONARCHY_NAME" Text="{1_Name} Caesar" Language="en_US" />
</LocalizedText>
</GameData>
And a custom.xml to add new entries in the Leader TimeLine:
Code:
</GameData>
<LeadersTimeLine>
<Replace CivilizationType="CIVILIZATION_FRANCE" LeaderName="Napoleon" Gender="Male" StartDate="1804" EndDate="1814" />
</LeadersTimeLine>
</GameData>
This could also be done from a modmod of course.
For now the mod doesn't add new government types, but when it does, the mod's code should handle it without issues, as long as corresponding <Tag> are added to the Localized DB.