Skip to content

CK3 1.16 - Khans of the Steppe - Compatch #2589

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 14 commits into from
May 7, 2025

Conversation

tanner918
Copy link
Contributor

@tanner918 tanner918 commented May 1, 2025

Closes #2586

Changes so far:

  • Updated CK3 version to 1.16 in version.txt

  • Added cost reduction for taking converter's tradition_ekvopetobos if inspired by culture (something new all traditions have now).

  • Added updates to the 00_regional_custom_localization.txt and 99_fr_custom_loc.txt files.

  • Added can_use_nomadic_naming = no to the d_cult_of_humban title since the Head of Faith titles all seem to have that now.

  • Updated/added easter egg characters and the predefined Temujin and Borte characters to list of characters to preserve.

  • Added head_determination pillar to all converter cultures, making it Herd or Domain based off whether they historically seemed more Nomadic or not.

  • Replaced tradition_horse_lords in converter cultures with tradition_devoted_horsemanship, as it seems this was added in as a replacement tradition. From testing, it seems like tradition_devoted_horsemanship is still available even without the Khans of the Steppe DLC so it shouldn't cause any issues, though that could change with future patches. Although tradition_horse_lords does get added to some of the cultures it was removed from at game start if the Khans of the Steppe DLC isn't loaded.

  • Updated government_mappings:

    • Added in mappings to base game's new nomad_government, giving it priority of TFE/ROA's nomadic_government.
    • Made Terra-Indomita's yamato_empire map to Administrative if they are a Kingdom/Empire and have Roads to Power, since the Yamato state seems to have been more Administrative than Feudal at that time period. This will likely end up changing once All Under Heaven comes out.
  • CK3 1.16 removed some titles, so I updated the governorMappings to account for that.

    • The mappings might not be perfect, but they are good enough for now, and the mobei_region mapping is only valid with Terra-Indomita, so that might need to be changed depending on what the CK3 Asia map mods do when updated, and later when All Under Heaven releases.
  • Added the new magi_descendant legend seed to be removed for now.

    • Since it is about being a descendant of the Three Wise Men, and with Christianity being able to spawn in Imperator with mods, the legend seed could be made valid by changing its requirements, given that it currently requires being from specific dynasties.
  • Updated the removable/replaceable_file_blocks.txt files:

    • Updated the parts that were already in the files with relevant changes made in CK3 1.16.
    • There is a scripted_effect called setup_tributaries_effect that handles setting up all of the predefined tributary relationships at game start. I have set the contents of that effect to be removed, so now when it triggers, nothing happens. This could then be used to set up all of the tributary relationships converted from Imperator
    • Made it so the expand_the_steppe_decision doesn't show, and made the extra Nomad regions not trigger (regardless of game rule) since that stuff will likely all be reworked. Depending on how we handle the Great Steppe/Nomad stuff, this might need to be changed.
    • Further modified the restore_roman_empire_decision so that it now requires you to either hold both e_byzantium and e_western_roman_empire, or be the only one holding one of those titles, to prevent one half of the empire restoring Rome while the other remains independent.
    • Further modified the split_roman_empire_decision so that when it chooses who should become the new ERE emperor, it makes sure it chooses someone actually in that region (preferably with the same government as the current Roman Emperor). To account for the possibility that there might not be many available candidates in the custom ere region, I also expanded upon who can be chosen as the Emperor, with the order of who can become emperor now being: Current Co-Emperor -> Powerful Family Head -> Powerful Vassal -> Any Vassal -> Courtier. This should hopefully prevent people who are no where near the region from becoming the new emperor, bring their distant land into the ERE with them.
    • The base game doesn't add Siberia to the custom ere region for the split_roman_empire_decision. This means that if, somehow, the Roman Empire owns land near there, you can end up with the WRE owning Siberia, nowhere near the rest of their lands. To fix this, I added a part to the replaceable_file_blocks.txt file that makes sure Siberia is properly added to that region.
  • Added the title adjective and article loc keys for the WRE title

  • As it is now, because the converter copies over the name of the tags from Imperator to overwrite the title's name in CK3, e_roman_empire will typically convert over as "Rome". However, because the article loc key for the title stays the same, and because the converter doesn't set the title to use definitive form, it will typically end up being called "Empire of The Rome", "Imperium of The Rome", etc in game, which is obviously a little weird. I just setup a game start on_action to force the title to use definitive form and had its loc key get overwritten, so now it properly shows up as "The Roman Empire" in game (following the format of how the other Roman titles are setup). This can obviously be changed/modified if needed, just something minor I noticed.

  • Renamed IRToCK3_admin_game_start.txt to IRToCK3_titles_game_start.txt in the blankMod, added the game start on_action for fixing Rome's name (mentioned above), and also added a game start on_action that makes sure Nomads/Herders start with their proper holding type.

- Added "inspired_by" cost modifier to converter's tradition_ekvopetobos for venetic culture.

- Updated the 00_regional_custom_localization.txt and 99_fr_custom_loc.txt files from blankMod to include latest base game changes.

- Made it so d_cult_of_humban doesn't use the custom nomadic naming system.

- Edited preserved CK3 characters (for now only got easter egg character changes)

- Added head_determination pillar to all converter cultures, using what seemed appropriate for each culture.

- For all converter cultures that used the Horse Lords Tradition, I replaced those with the Devoted Horsemanship Tradition, added with Khans of the Steppe. It seems like the tradition is available to everyone regardless of DLC ownership, and all vanilla cultures that used Horse Lords had that tradition commented out and/or replaced (typically with Devoted Horsemanship)
- Added in a mapping to vanilla CK3's `nomad_government`, giving it priority over TFE's version. (Still need to enable the DLC check for the mapping once that properly gets added to converter)

- Added `magi_descendant` legend seed to be removed. (This could be left in if its conditions are modified)

- Updated version.txt file for CK3 1.16

- Updated blocks of code already in removable/replaceable_file_blocks.txt where it gave errors from script changes. (Still need to go through all of the new additions to the files to see what else should now be removed)
- Adjusted some of the governorMappings since the 1.16 update removed some titles. There might be better mappings than what I chose, but they should be good enough for now.

- Went through most of the script files added/updated with the 1.16 update and added parts that I figured were relevant to the replaceable/removable_file_blocks.txt files. I might have missed some things that should ultimately be removed, this is just what I noticed at first glance.

-- When adding parts to the removable/replaceable_file_blocks.txt files, I added a few parts relevant to the Temujin story cycle since they reference his specific character ID. I wasn't sure if this would cause any issues with a converted save, so I tried either removing them entirely or making them impossible to trigger. This could all be edited/removed if its not necessary.

-- Parts of the code I setup to be removed are for the tributary relationships that are predefined in the game, so that when we add tributary conversion to the converter they shouldn't conflict. We can likely just have the converter overwrite that scripted_effect since its already setup to trigger at game start.

- Made it so that some of the Great Steppe/Nomad content won't be useable, like not allowing the expand_the_steppe_decision and not allowing the extra Nomad regions to start, since we are likely going to rework a bit of that stuff.
- Added base game's nomad_government mappings to Terra-Indomita's Steppe governments.

- Made Terra-Indomita's yamato_empire map to Administrative, if applicable, since the early Yamato state was a little more Administrative than Feudal. This will likely change was All Under Heaven comes out (along with the Chinese governments' mappings)
@tanner918
Copy link
Contributor Author

tanner918 commented May 1, 2025

CK3 1.16 Compatch Notes.docx

Some more notes.

As it is now, the main things I know that still need to be added are:

  • Converter needs to properly check for Khans of the Steppe DLC. (For things like government mapping)

  • We need to figure out how we are going to handle the whole Nomad/Great Steppe situations/setup:

    • Are we limiting the Great Steppe situation to only the Steppe (making it so Nomads can exist outside the Steppe, but lose some of their mechanics), or are we expanding the situation to cover the entire map, allowing Nomads to exist anywhere?
    • Should we add in something to trigger on game start to force certain realms (maybe those created to cover uncolonized land in Imperator, tribal rulers of certain heritage/location, etc) to become Nomad? Should it be handled through game rules?
      • As a side note: For the land that is out of scope of Imperator, because the converter uses the base game's history files as a reference (for setting things like culture, faith, and holding types), some of the land in the Central/Eastern Steppe will default to being Nomadic Holdings, because that's how they are setup in the base game. The game then will force the holders of those counties to become Nomads (if Khans of the Steppe is loaded), or will revert those counties to become Tribal holdings (if Khans of the Steppe isn't loaded). This will make sure that some Nomads do appear in game (as long as mods don't add that region to the map, like Terra-Indomita).
  • Can make tributaries convert over from Imperator:

    • Imperator tributaries/subjects can still be left as vassals when converting since the scripted_effects that handle setting up tributaries in CK3 can account for this and make them independent.
    • The only thing that should need to be done is have the converter output a scripted_effect file that overwrites the base game's setup_tributaries_effect (explained a bit in the file above) so that it sets up tributaries properly on game start.

@tanner918
Copy link
Contributor Author

tanner918 commented May 2, 2025

Ideas for IMP-CK3 Nomad Region Setup.docx

I tried out seeing how the map could be split between subregions for a map-wide Great Steppe situation. Here are some of my attempts, and other info regarding it.

Have no clue what would be the best way to split it up, just tried making roughly the same sized subregions (county-wise), trying to just use predefined geographical regions.

UPDATE (May 5):

  • I did some testing on this, and have been able to properly have the entire map be involved in the Great Steppe situation. None of this has been pushed to this Pull Request, it is separate for now, unless it is decided it should be added.
    • With this, Nomads anywhere on the map could now use all of the relevant Nomad-specific mechanics, like migration.
      • Regarding migration, I was trying to see if there was any way to have the game better reflect the historical migrations, like the various Germanic tribes migrating to different parts of Europe. I have found that the AI decides what titles to target for migration using the ai_will_do block of migration_interaction in "common\character_interactions\09_mpo_interactions.txt". By modifying this, we could have Nomadic rulers of certain cultures, heritages, etc be more likely to target titles in certain regions under certain circumstances, to give a little "push" towards historical migrations happening.
        • This, however, does depend on Nomads of those cultures actually existing, since they are currently the only government capable of migrating. If it is desired, we could theoretically allow Tribal, for example, to migrate as well, but I don't know what other work would need to be put into that.
        • Also, if it is needed for anything in particular (I can't think of anything immediately, the ai_accept block of that character interaction determines whether the recipient character will allow the migrating character to settle in their lands peacefully (if the "accept" the interaction), or if it will lead to war (if they "decline" the interaction).
    • I was also able to get it setup so that only certain seasons can appear in certain subregions, and made it relatively easy to change which seasons a particular subregion can experience.
      • This, however, does come at the expense of the Stargazer mechanic. I have been trying to figure out how the Stargazer predictions are made, but it seems like it may be hard-coded, so I don't think I can do anything about that.
        • If the seasons being predicted are available in that subregion, then I don't think there are any issues.
        • However, it might be possible that the Stargazer predicts seasons that are actually impossible for the given subregion (like Cold Zud and White Zud not being possible in Africa). In the base game, a low-skilled Stargazer can actually predict two entirely incorrect seasons, but a high-skilled Stargazer will pretty much get at least one of the predicted seasons correct (the percent chances might just vary a little). So its not like this is completely broken, its just that when the season changes, if the chosen season isn't valid for the specific subregion, it will forcefully be changed, so there will be some cases where even the highest-skilled Stargazers will be "wrong". Not sure how major of an issue this will be considered.
    • I haven't touched any of the other Nomad content yet, as I wasn't sure exactly how we were going to handle the Nomad stuff in the end. We could maybe make a game rule/frontend option that allows players to choose whether they want a map-wide Great Steppe situation (as I was describing above), or just leave the situations alone entirely, using them how they were setup for the base game.
    • Also, because the current settings on the converter have the only Imperator tags that get converted as duchies being City-State rank tags, that means pretty much every Nomad that gets created in CK3 ends up being a King+, with High Dominance (level 3 dominance), which might break game balance a bit. It also makes it so that the converted realms, at least as long as they remain as is from game start, can't use the confederations mechanic since that is only for counts and dukes. If it is desired that this gets changed, this could be handled by changing the title rank requirements configurable (if changes across all realms/governments are desired), or a separate on_action could be created that breaks at least the Nomads apart a little bit if they are below a certain size (to prevent things like kingdoms that start holding only a single county).

Ultimately, this could be handled in a separate Pull Request after the initial 1.16 compatch stuff is put out. Especially if we decide to try out the .liquid file frontend option feature for the converter I mentioned in the Discord, we could maybe easily handle setting up the Great Steppe situation using that.

tanner918 added 2 commits May 4, 2025 02:48
- Removed unnecessary parts of replaceable/removable_file_blocks.txt files that removed references to the predefined Temujin character, and instead moved him and his wife Borte to the ck3_characters_to_preserve.txt file

- Further modified the split_roman_empire_decision so that when choosing a landed powerful family head or powerful vassal to be the emperor of the ERE, it requires that they have their capital be in the custom ere region, to prevent someone nowhere near the region becoming the emperor and bringing random land along with them.

- Further modified the restore_roman_empire_decision so that it requires you to be the only character holding e_byzantium/e_western_roman_empire so one half of the empire can't restore Rome while the other remains independent.
- Renamed IRToCK3_admin_game_start.txt to IRToCK3_titles_game_start.txt, and added  to new game start on_actions, one that fixes a minor naming issue with the Roman Empire, and another that makes sure Nomads and Herders at the start of the game have their proper holding.

- Add WRE title's adjective and article loc keys

- Add a part to the replaceable_file_blocks.txt file that makes sure to add Siberia to the custom ere region, since the base game leaves that region out for some reason, and it would cause a weird gap if the decision to split the Roman Empire is taken while it holds land near there

- Redid the Split Roman Empire decision so that when choosing who should be the ruler of the ERE, it properly focuses on choosing a ruler actually in that region to prevent someone nowhere near the region from becoming the emperor and bringing in their land with them. I also expanded the selection of who can be chosen as the emperor to better prioritize rulers in that region with the same government as the Roman Emperor, but it can choose someone else if no one fits those requirements.
@tanner918
Copy link
Contributor Author

Some more thoughts/notes, mostly unrelated to the Nomad stuff:

  • (MINOR) In CK3, "Old Saxon" is used as the name for the older Saxon peoples to differentiate them from the more modern "Saxon" culture. However, because we map the cultures to the "Old Saxon" culture instead of the "Saxon" culture, they still appear in game as "Old Saxon", which is a little weird seeing in game. Wasn't sure about thoughts on changing this. I tried looking it up online, and it seems like the only other name they have historically been referred to as was "Continental Saxons", to differentiate them from the Saxons that migrated to Britannia, but that may be a bit long. TFE refers to them as "Saxonian", but I couldn't find anything that shows that as a historical name, it may just be something they came up with themselves to better differentiate them while being a little more immersive.

  • Might look into further modifying the "Cleave the Empire" decision so that if your capital is in the custom ere region, you become the ERE and have someone else become the WRE, while if your capital is not in the custom ere region, it is how it is now with you becoming the WRE and someone else becomes ERE.

    • Maybe also add in an option that allows whoever is chosen as the new emperor for the part that splits off, if they were already landed before being chosen as emperor, to have the choice of keeping their current capital, or move the capital to Constantinople for ERE/Rome for WRE. This way, if they have already built up their current capital, they could just keep it instead of wasting that effort. (Should there be some penalty for not taking the historical capital?)
  • The "Unify Italy" decision, from a historical standpoint, seems to be about bringing ALL of Italy (mainly Sicily, since its de jure under the Byzantines) and Illyria back under control of Italian powers since Rome was controlled all of that, but eventually lost it. This could be considered anachronistic, so could probably be disabled.

    • Or, it could be modified so that if those relevant regions are ever de jure under the Roman empire titles a global variable is set (or if using the cross-script system, they are under Romes control during conversion), and then later are no longer de jure under it, then the decision becomes available.
  • The "Dismantle/Restore the Papacy" decisions should probably be looked at. As it is now, the option to dismantle it is always available right at the start, even if Christianity never formed in Imperator. This stuff can probably be reworked a little overall.

    • Using the cross-script system (or for now, maybe some game start condition checking) might allow
  • It would be nice to have some way of easily referencing which characters were created to fill in the uncolonized land from Imperator. Easiest way might just be having the converter add in a little code that gives them a special variable.

    • For example, in the history character files that define all of the characters, the filler characters have a part like this:
      -50.1.1 = { birth = yes }
      which just tells the game when they were born. This could be modified slightly to instead be:
      -50.1.1 = { birth = yes effect = { set_variable = filler_character } }
      OR
-50.1.1 = {
    birth = yes
    effect = { set_variable = filler_character }
}

I've tested, both these ways work, the first just takes less lines and might be easier to code, the second is just easier to read. This just makes it easy to check for that specific variable to be certain that the character was actually a filler character. This could make some stuff easier, like forcing the filler rulers to be a certain government under certain conditions.

  • (MINOR) The new head_determination pillar, that decides how a culture's Cultural Head is determined (currently only between domain and herd) can be set using the set_culture_pillar effect, allowing that all to be customized as needed.
    • From testing, when diverging a new culture, it seems like this pillar is inherited from the parent culture, so if diverging from a head_determination_herd culture, the new culture will also be head_determination_herd. However, when hybridizing, I can't figure out exactly how its determined. I did a bit of testing, hybridizing cultures where one parent was Domain and the other Herd. Every time I hybridized the same two cultures, the resulting hybrid culture always ended up with the same head_determination pillar, a couple tests of which are shown below:
- Prussian (Herd) + Gallic (Domain) = Herd
- Diverge Prussian (Herd) = Herd
- Gallic (Domain) + Prussian (Herd) = Herd (x3)
- Roman (Domain) + Baranis (Herd) = Domain (x2)
- Baranis (Herd) + Roman (Domain) = Domain
  • I honestly don't know how the game decides which parent it takes the pillar from.
  • But, given how important the Cultural Head can be in deciding what innovations are researched, how fast they are researched, what traditions a culture has, etc, I am curious about the thoughts on giving characters the option to change this.
    • For example, a game start on_action could be created that checks what governments rulers of each culture has. If all of the rulers of this culture are settled, but the culture is set to use Herd, it could change the pillar to be based off Domain instead, while if all of the rulers are Nomads, but the culture is based off Domain, it could change the pillar to be based off Herd.
    • Then, later on, if a Herd-based culture ends up having all of its rulers become settled, the culture head at the time can get the option to make the culture Domain-based instead, or vice versa. This way, cultures can be a little more dynamic, and can actually account for how things play out in Imperator, instead of assuming they always behaved a certain way.
    • If this isn't something that seems like it could/should be put into the converter, I am fine making this a separate mod instead to put onto the Workshop (I might just do that anyway), just wanted to get thoughts on making it a part of the converter mod itself.

IhateTrains and others added 4 commits May 6, 2025 23:52
- Added game rules to allow players to decide whether Imperator tags can stay as Nomadic, and how the government of filler rulers should be setup. Also made an event trigger at game start to alert players of these game rules.

- Setup a game start on_action that destroys the Papal States and makes Catholicism have no Head of Faith at game start. This should prevent the "Dismantle the Papacy" decision from being available at game start, but will allow Catholic characters to properly setup the Papal States on their own.

- Modified the "Restore the Papacy" decision so if the Papal States never existed before, then it's localization goes along the lines of "Setting the Papacy" instead.

- Changed the names of the `saxon` and `old_saxon` cultures, so `old_saxon` now is localized as Saxon, and the `saxon` culture is localized as Saxonian, since it was weird having a culture called "Old Saxon" appear in game.

- Gave Gothic culture "Malleable Invaders" tradition to make it more in-line with the base game culture, but still allowed it to replace the base game culture since it changes stuff like the heritage.

- Made sure that the converter Hunnic culture replaces the base game Hunnic culture since the base game version now has most of its traditions removed.

- Re-enabled the Great Steppe/Nomad content previously disabled (like the expand the Steppe decision, and the extra Nomad regions), at least until a better alternative has been determined.

- Disabled the `unify_italian_empire` decision since it doesn't make sense with history being different.

- Modified the `dismantle_papacy_decision` so that it checks that the Pope is unlanded instead of unplayable. That seems to be what was intended, it just makes it a little confusing when reading the description in game.
@tanner918 tanner918 marked this pull request as ready for review May 7, 2025 07:56
@tanner918 tanner918 requested a review from IhateTrains as a code owner May 7, 2025 07:56
tanner918 added 2 commits May 7, 2025 14:00
Removed game start on_action that destroys Papacy at game start and makes Catholic have no Head of Faith. Instead, now have the "Dismantle Papacy" decision check that Catholic has no active Head of Faith.
Made it so you need the Pope as a prisoner, to prevent the decision from being taken right after game start. Will likely need to be modified once a better idea is determined.
@IhateTrains IhateTrains added the enhancement New feature or request label May 7, 2025
Copy link
Member

@IhateTrains IhateTrains left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@IhateTrains IhateTrains merged commit b0db50e into ParadoxGameConverters:master May 7, 2025
11 checks passed
@tanner918 tanner918 deleted the KotS_Compatch branch May 16, 2025 14:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

A compatch for CK3 1.16 is needed
2 participants