Metaprogression Skip

Slay369er

Chieftain
Joined
Feb 6, 2025
Messages
2
Hi,

I'm new at modding CIV, but I want to get into it with Civ 7. I was poking around the game files and I found in Base/modules/age-antiquity/config (and all the other ages too) a metaprogression.xml file, which had xp values for the various challenges. I changed one of these and launched the game, and it did change in game. I'm unsure if it was a cosmetic change or if that challenge would grant that amount of xp.
image0 (3).jpeg

Is modifying base game xml bad practice? Is there another way to do this by placing something in the mods file? Please let me know, thanks.

Also, I attached the modified ancient era xml if you want to try skipping all leader meta progression.
 

Attachments

Editing files directly, while not the end of the world, is bad practice. Proper mod that you can enable or disable is better If you have the time. There is already guide for simple template mod. You only need to change the file that is updating the Unit Strength to one that updates those XPs. Not on PC now so cant look into files and assist further.
 
Hi! Commenting here because I tried your method of editing game files; the xp number displayed on the quest reward did change. However, I didnt receive additional xp after completing the quest. Is there any other way for one to get more xp, for example modding?
 
Editing files directly, while not the end of the world, is bad practice. Proper mod that you can enable or disable is better If you have the time. There is already guide for simple template mod. You only need to change the file that is updating the Unit Strength to one that updates those XPs. Not on PC now so cant look into files and assist further.
I checked the modding guide but am unsure how to change unit strength to updating xp... is there any tips on changing the files? Thanks a ton!
 
I checked the modding guide but am unsure how to change unit strength to updating xp... is there any tips on changing the files? Thanks a ton!
Code:
<?xml version="1.0" encoding="utf-8"?>
<Database>
    <Unit_Stats>
        <Update>
            <Where UnitType="UNIT_MEDJAY"/>
            <Set Combat="100"/>
        </Update>
    </Unit_Stats>
</Database>

The part before and after Unit_Stats is always part of your file, it says basically that it is an XML file updating Database. The Unit_Stats is the name of the Table. When you look into source XML files, find Row tag that adds something you wish to update or of similar kind and name of the tag it is underneath of is the name of the Table. For example, If you wish to update something about Metaprogression (the Challenges granting XP), look into metaprogression.xml. There the entries are underneath MetaprogressionModifiers tag, so that is what you would put instead of Unit_Stats. Inside (where Update tag is), place actions you wish to do in the Table.

Code:
<Row ModifierId="METAPROGRESSION_CUSTOM_CHALLENGE" RequiredLeaderType="LEADER_AMINA" />

This creates brand new entry, a new challenge for Amina she may get XP for. Presumably, the rest of details (what must be done to fullfill the challenge, how much XP it grants, etc.) is in definition of the referenced Modifer, but I did not study this enough to tell more, and explaining custom modifiers is another more complex topic.

Code:
<Update>
    <Where ModifierId="METAPROGRESSION_ORIGINAL_CHALLENGE" RequiredLeaderType="LEADER_AMINA" />
    <Set ModifierId="METAPROGRESSION_CUSTOM_CHALLENGE" />
</Update>

This finds existing entry which grants Amina METAPROGRESSION_ORIGINAL_CHALLENGE challenge and updates it by changing it into her having METAPROGRESSION_CUSTOM_CHALLENGE challenge instead.

Code:
<Delete ModifierId="METAPROGRESSION_ORIGINAL_CHALLENGE" RequiredLeaderType="LEADER_AMINA" />

This finds existing entry which grants Amina METAPROGRESSION_ORIGINAL_CHALLENGE challenge and deletes it, so she no longer grains XP upon completing its condition.

These modifiers are usually defined in sibling files ending with -gameeffects, in this case, metaprogression-gameeffects.xml. Requirements represent what must be done to fullfill it and effect="X" represents what you get for it, I assume. I do not know how to create new effects. What I would do is find Challenge A that grants highest amount of XP and cause each Challenge that grants XP to trigger Challenge A's effect instead of their original, so they would presumably grant the highest amount of XP. This is all assumptions though.

I didn't find a way to update GameEffects either. I would instead create new ones with different id (inside GameEffects instead of Database, as you see in source files), which would be copies of original Modifiers of the Challenges and only change the effect="X" to be the same as the Challenge A has. Then you use

Code:
<Update>
    <Where ModifierId="METAPROGRESSION_ORIGINAL_CHALLENGE" RequiredLeaderType="LEADER_AMINA" />
    <Set ModifierId="METAPROGRESSION_CUSTOM_CHALLENGE" />
</Update

to update the appropriate Challenges to grant the alternative (XP changed) Modifier instead of the original. Again, untested, all my assumptions.
 
By the way, OP says he changed the file in config, which has disclaimer:

<!-- This file was automatically generated via the metaprogression generation workflow. -->

It may be visual only, generated off the file in data folder.
 
Code:
<?xml version="1.0" encoding="utf-8"?>
<Database>
    <Unit_Stats>
        <Update>
            <Where UnitType="UNIT_MEDJAY"/>
            <Set Combat="100"/>
        </Update>
    </Unit_Stats>
</Database>

The part before and after Unit_Stats is always part of your file, it says basically that it is an XML file updating Database. The Unit_Stats is the name of the Table. When you look into source XML files, find Row tag that adds something you wish to update or of similar kind and name of the tag it is underneath of is the name of the Table. For example, If you wish to update something about Metaprogression (the Challenges granting XP), look into metaprogression.xml. There the entries are underneath MetaprogressionModifiers tag, so that is what you would put instead of Unit_Stats. Inside (where Update tag is), place actions you wish to do in the Table.

Code:
<Row ModifierId="METAPROGRESSION_CUSTOM_CHALLENGE" RequiredLeaderType="LEADER_AMINA" />

This creates brand new entry, a new challenge for Amina she may get XP for. Presumably, the rest of details (what must be done to fullfill the challenge, how much XP it grants, etc.) is in definition of the referenced Modifer, but I did not study this enough to tell more, and explaining custom modifiers is another more complex topic.

Code:
<Update>
    <Where ModifierId="METAPROGRESSION_ORIGINAL_CHALLENGE" RequiredLeaderType="LEADER_AMINA" />
    <Set ModifierId="METAPROGRESSION_CUSTOM_CHALLENGE" />
</Update>

This finds existing entry which grants Amina METAPROGRESSION_ORIGINAL_CHALLENGE challenge and updates it by changing it into her having METAPROGRESSION_CUSTOM_CHALLENGE challenge instead.

Code:
<Delete ModifierId="METAPROGRESSION_ORIGINAL_CHALLENGE" RequiredLeaderType="LEADER_AMINA" />

This finds existing entry which grants Amina METAPROGRESSION_ORIGINAL_CHALLENGE challenge and deletes it, so she no longer grains XP upon completing its condition.

These modifiers are usually defined in sibling files ending with -gameeffects, in this case, metaprogression-gameeffects.xml. Requirements represent what must be done to fullfill it and effect="X" represents what you get for it, I assume. I do not know how to create new effects. What I would do is find Challenge A that grants highest amount of XP and cause each Challenge that grants XP to trigger Challenge A's effect instead of their original, so they would presumably grant the highest amount of XP. This is all assumptions though.

I didn't find a way to update GameEffects either. I would instead create new ones with different id (inside GameEffects instead of Database, as you see in source files), which would be copies of original Modifiers of the Challenges and only change the effect="X" to be the same as the Challenge A has. Then you use

Code:
<Update>
    <Where ModifierId="METAPROGRESSION_ORIGINAL_CHALLENGE" RequiredLeaderType="LEADER_AMINA" />
    <Set ModifierId="METAPROGRESSION_CUSTOM_CHALLENGE" />
</Update

to update the appropriate Challenges to grant the alternative (XP changed) Modifier instead of the original. Again, untested, all my assumptions.
Ahhhhh I see; I'll go see what I can make of the files and potentially make an xp mod. Thanks so much!
 
Back
Top Bottom