So as nobody else seems to have created a thread, feel free to contribute any breaking changes to existing functionality or obscure gotchas that may frustrate others seeking to update mods to the latest patch.
map/: There is now a colormap_time file.
interface/portrait_properties.txt: There are now 24 frames in p0, 19 frames in p33, 10 in p34.
I have just updated the interface and map folders of NMIH mod, which could run with 2.8.4.
Unfortunately it got still CTD with 3.0 after selecting the play character. Maybe common files are the key (these files aren't updated yet).
I'm having the same problem. My mod crashes when I click Start Game... the bar gets to "Loading game" before the CTD. I've updated most things in the common directory but it hasn't helped yet.
Edit:
My problem was caused by the new file common/trade_routes/01_trans_saharan_trade_route.txt.
It was referring to province IDs that don't exist in my mod. Replacing it with a blank file got the game to start without crashing.
i am having a similar issue, however after doing some testing(attempting to start in ironman) it seems to be an issue with the random world feature(the save game registers as random world despite not being created as such)My problem isn't solved by trade routes because the mod uses replace_path.
But I agree that trade notes cause sometimes CTD.![]()
i am having a similar issue, however after doing some testing(attempting to start in ironman) it seems to be an issue with the random world feature(the save game registers as random world despite not being created as such)
The province_setup folder was removed, do you still have it in common and maybe it still being there causes an issue?Another possibility is missing "terrain" entry in province files. Missing these codes in the province set up folder caused CTD in the last patches.
- Eliminated the "province_setup" folder. Now based purely on province history instead, meaning you no longer have to duplicate script
The province_setup folder was removed, do you still have it in common and maybe it still being there causes an issue?
adjacencies = {
}
culture_group_spread = {
factor = 100
modifier = {
factor = 10
num_culture_provinces < 20
}
modifier = {
factor = 0.8
num_culture_provinces > 30
}
modifier = {
factor = 0.8
num_culture_provinces > 40
}
modifier = {
factor = 0.8
num_culture_provinces > 50
}
modifier = {
factor = 0.8
num_culture_provinces > 60
}
modifier = {
factor = 0.8
num_culture_provinces > 70
}
modifier = {
factor = 0.8
num_culture_provinces > 80
}
modifier = {
factor = 0.8
num_culture_provinces > 90
}
modifier = {
factor = 0.8
num_culture_provinces > 100
}
modifier = {
factor = 0.8
num_culture_provinces > 110
}
modifier = {
factor = 8
culture_group = altaic
NOT = {
has_alternate_start_setting = {
setting = culture
option = full_random
}
}
}
modifier = {
factor = 0.05
culture_group = chinese_group
NOT = {
has_alternate_start_setting = {
setting = culture
option = full_random
}
}
}
modifier = {
factor = 3
culture_group = latin
year = 1000
NOT = {
has_alternate_start_setting = {
setting = culture
option = full_random
}
}
}
modifier = { # Boost groups with many individual cultures somewhat
factor = 1.5
OR = {
culture_group = byzantine
culture_group = celtic
culture_group = baltic
culture_group = arabic
culture_group = dravidian_group
}
NOT = {
has_alternate_start_setting = {
setting = culture
option = full_random
}
}
}
modifier = { # Boost groups with very many individual cultures even more
factor = 3
OR = {
culture_group = byzantine
culture_group = finno_ugric
culture_group = iranian
culture_group = indo_aryan_group
}
NOT = {
has_alternate_start_setting = {
setting = culture
option = full_random
}
}
}
modifier = {
factor = 14
OR = {
culture_group = horse_group
culture_group = cat_group
culture_group = bear_group
culture_group = hedgehog_group
culture_group = duck_group
culture_group = dog_group
culture_group = dragon_group
culture_group = elephant_group
}
has_alternate_start_parameter = { key = special_culture value = animal_kingdoms }
}
modifier = {
factor = 0.5
NOR = {
culture_group = horse_group
culture_group = cat_group
culture_group = bear_group
culture_group = hedgehog_group
culture_group = duck_group
culture_group = dog_group
culture_group = dragon_group
culture_group = elephant_group
}
has_alternate_start_parameter = { key = special_culture value = animal_kingdoms }
}
}
culture_spread = {
factor = 100
modifier = {
factor = 10
num_culture_provinces < 3
}
modifier = {
factor = 0.8
num_culture_provinces > 5
}
modifier = {
factor = 0.8
num_culture_provinces > 10
}
modifier = {
factor = 0.8
num_culture_provinces > 15
}
modifier = {
factor = 0.8
num_culture_provinces > 20
}
modifier = {
factor = 0.8
num_culture_provinces > 25
}
modifier = {
factor = 0.8
num_culture_provinces > 30
}
modifier = {
factor = 0.1
culture = crimean_gothic
NOT = {
has_alternate_start_setting = {
setting = culture
option = full_random
}
}
}
modifier = {
factor = 0.3
culture = dalmatian
NOT = {
has_alternate_start_setting = {
setting = culture
option = full_random
}
}
}
modifier = {
factor = 0.3
culture = khitan
NOT = {
has_alternate_start_setting = {
setting = culture
option = full_random
}
}
}
modifier = {
factor = 0.3
culture = norman
NOT = {
has_alternate_start_setting = {
setting = culture
option = full_random
}
}
}
modifier = {
factor = 0.6
culture = occitan
NOT = {
has_alternate_start_setting = {
setting = culture
option = full_random
}
}
}
}
religion_group_spawn = {
factor = 100
modifier = {
factor = 0.001
any_religion_distance < 200
}
modifier = {
factor = 0.1
any_religion_distance < 350
}
modifier = { # No starting on islands, except the British Isles
factor = 0
is_island = yes
NOT = { region = world_europe_west_brittania }
}
}
religion_group_spread = {
factor = 100
modifier = {
factor = 10
num_religion_provinces < 5
}
modifier = {
factor = 0.8
num_religion_provinces > 20
}
modifier = {
factor = 0.8
num_religion_provinces > 40
}
modifier = {
factor = 0.8
num_religion_provinces > 60
}
modifier = {
factor = 0.8
num_religion_provinces > 80
}
modifier = {
factor = 0.8
num_religion_provinces > 100
}
modifier = {
factor = 0.8
num_religion_provinces > 120
}
modifier = {
factor = 0.8
num_religion_provinces > 140
}
modifier = {
factor = 0.8
num_religion_provinces > 160
}
modifier = {
factor = 0.8
num_religion_provinces > 180
}
modifier = {
factor = 0.035
religion_group = jewish_group
NOT = {
has_alternate_start_setting = {
setting = religion
option = full_random
}
}
}
modifier = {
factor = 0.25
religion_group = zoroastrian_group
year = 1000
NOT = {
has_alternate_start_setting = {
setting = religion
option = full_random
}
}
}
modifier = {
factor = 5
religion_group = pagan_group
NOT = { year = 1000 }
NOT = {
has_alternate_start_setting = {
setting = religion
option = full_random
}
}
NOT = {
has_alternate_start_setting = {
setting = random_scenario_more_pagans
option = checked
}
}
}
modifier = {
factor = 2.25
religion_group = muslim
NOT = {
has_alternate_start_setting = {
setting = religion
option = full_random
}
}
}
modifier = {
factor = 2.75
religion_group = christian
NOT = {
has_alternate_start_setting = {
setting = religion
option = full_random
}
}
}
modifier = {
factor = 1.75
religion_group = indian_group
NOT = {
has_alternate_start_setting = {
setting = religion
option = full_random
}
}
}
modifier = {
factor = 25
religion_group = pagan_group
has_alternate_start_setting = {
setting = random_scenario_more_pagans
option = checked
}
}
}
religion_spread = {
factor = 100
modifier = {
factor = 10
num_religion_provinces < 2
}
modifier = {
factor = 0.8
num_religion_provinces > 10
}
modifier = {
factor = 0.8
num_religion_provinces > 20
}
modifier = {
factor = 0.8
num_religion_provinces > 30
}
modifier = {
factor = 0.8
num_religion_provinces > 40
}
modifier = {
factor = 0.8
num_religion_provinces > 50
}
modifier = {
factor = 0.8
num_religion_provinces > 60
}
modifier = {
factor = 0.6
religion = jain
year = 1000
NOT = {
has_alternate_start_setting = {
setting = religion
option = full_random
}
}
}
modifier = {
factor = 0.3
religion = shiite
NOT = {
has_alternate_start_setting = {
setting = religion
option = full_random
}
}
}
modifier = {
factor = 0.2
religion = ibadi
NOT = {
has_alternate_start_setting = {
setting = religion
option = full_random
}
}
}
modifier = {
factor = 0.65
religion = orthodox
NOT = {
has_alternate_start_setting = {
setting = religion
option = full_random
}
}
}
modifier = {
factor = 0.2
religion = miaphysite
NOT = {
has_alternate_start_setting = {
setting = religion
option = full_random
}
}
}
modifier = {
factor = 0.15
religion = nestorian
NOT = {
has_alternate_start_setting = {
setting = religion
option = full_random
}
}
}
modifier = {
factor = 0.05
religion = taoist
NOT = {
has_alternate_start_setting = {
setting = religion
option = full_random
}
}
}
modifier = {
factor = 0.2
religion = manichean
NOT = {
has_alternate_start_setting = {
setting = religion
option = full_random
}
}
}
modifier = {
factor = 0.2
religion = zun_pagan
NOT = {
has_alternate_start_setting = {
setting = religion
option = full_random
}
}
NOT = {
has_alternate_start_setting = {
setting = random_scenario_more_pagans
option = checked
}
}
}
modifier = {
factor = 0.5
religion = bon
NOT = {
has_alternate_start_setting = {
setting = religion
option = full_random
}
}
NOT = {
has_alternate_start_setting = {
setting = random_scenario_more_pagans
option = checked
}
}
}
}
dejure_kingdom_spread = {
factor = 100
modifier = {
factor = 5
distance = { where = FROM value < 100 }
}
modifier = {
factor = 0.6
distance = { where = FROM value > 200 }
}
modifier = {
factor = 0.6
distance = { where = FROM value > 300 }
}
modifier = {
factor = 0.6
distance = { where = FROM value > 400 }
}
modifier = {
factor = 0.6
distance = { where = FROM value > 500 }
}
modifier = {
factor = 0.6
distance = { where = FROM value > 600 }
}
modifier = {
factor = 0.6
distance = { where = FROM value > 700 }
}
modifier = {
factor = 0.6
distance = { where = FROM value > 800 }
}
modifier = {
factor = 0.6
distance = { where = FROM value > 900 }
}
modifier = {
factor = 0.6
distance = { where = FROM value > 1000 }
}
}
dejure_empire_spread = {
factor = 100
modifier = {
factor = 5
distance = { where = FROM value < 100 }
}
modifier = {
factor = 0.6
distance = { where = FROM value > 200 }
}
modifier = {
factor = 0.6
distance = { where = FROM value > 300 }
}
modifier = {
factor = 0.6
distance = { where = FROM value > 400 }
}
modifier = {
factor = 0.6
distance = { where = FROM value > 500 }
}
modifier = {
factor = 0.6
distance = { where = FROM value > 600 }
}
modifier = {
factor = 0.6
distance = { where = FROM value > 700 }
}
modifier = {
factor = 0.6
distance = { where = FROM value > 800 }
}
modifier = {
factor = 0.6
distance = { where = FROM value > 900 }
}
modifier = {
factor = 0.6
distance = { where = FROM value > 1000 }
}
}
holy_site_spread = {
factor = 100
# We want three holy sites within the religion's borders, and two outside
modifier = {
factor = 0
NOT = { religion = FROM }
FROM = { num_holy_sites_generated < 1 }
}
modifier = {
factor = 0.01
NOT = { religion = FROM }
NOT = { parent_religion = { religion = FROM } }
FROM = { num_holy_sites_generated < 3 }
}
modifier = {
factor = 0.001
NOT = { religion_group = FROM }
FROM = { num_holy_sites_generated < 3 }
}
modifier = {
factor = 0.001
FROM = { num_holy_sites_generated >= 3 }
religion = FROM
}
# Stay near our borders
modifier = {
factor = 2
religion_group = FROM
}
# Avoid clustering
modifier = {
factor = 0 # We simply never want to be adjacent to a holy site
any_neighbor_province = {
is_holy_site = FROM
}
}
modifier = {
factor = 0
holy_site_distance = { target = FROM value < 100 }
}
modifier = {
factor = 0.01
holy_site_distance = { target = FROM value < 200 }
}
modifier = {
factor = 0.1
holy_site_distance = { target = FROM value < 300 }
FROM = { NOT = { religion_group = pagan_group } }
}
modifier = {
factor = 20
holy_site_distance = { target = FROM value > 500 }
FROM = { num_holy_sites_generated > 0 }
}
modifier = { # Pagan sites tend to be closer
factor = 30
holy_site_distance = { target = FROM value < 350 }
FROM = { religion_group = pagan_group }
}
modifier = {
factor = 0 # We use this as a proxy for religion distance, because religion distance is expensive to calculate
NOT = { religion = FROM }
NAND = {
parent_religion = { religion = FROM }
FROM = { num_holy_sites_generated >= 3 } # Heresies can put their 3rd holy site in their parent religion
}
FROM = { num_holy_sites_generated > 0 }
holy_site_distance = { target = FROM value > 400 }
}
# Sharing some holy sites with parent religion is neat
modifier = {
factor = 100
FROM = {
parent_religion = {
ROOT = {
is_holy_site = PREV
}
}
}
}
}
Missing key in religion_name_formats in alternate_starts/02_naming.txt most likely:I've gotten a crash with my CKGenerator random maps on some generations, it seems to originate from the customizable_localization:
Code:defined_text = { name = GetJesus text = { trigger = { NOT = { has_alternate_start_parameter = { key = religion_names value = random } } } localisation_key = string_jesus_christ } text = { trigger = { has_alternate_start_parameter = { key = religion_names value = random } } localisation_key = string_not_jesus_christ } }
Specifically something about the trigger:
Code:has_alternate_start_parameter = { key = religion_names value = random }
is causing it to crash during initial load (Loading Events).
No custom religions, generated mod has only catholic + norman used (since its designed purely for use with Random World not to be played directly)
No idea why yet. If anyone has any clever ideas would love to hear about them![]()
common/alternate_start/_documentation.info said:== Religion name generation ==
Religion naming comes in three formats: character name based, dynasty name based, and holy site based.
These are equally likely.
What loc keys to use are defined in "religion_name_formats" (02_naming.txt in vanilla).
Note that all three sections *must* have at least one key, or the game will crash when religion name randomization is used.
If holy site is picked, a random loc key from the "holy_site" section will be picked, and a random holy site will get picked and the name of the county inserted.
If character or dynasty based naming is picked, a list of all provinces with the religion will be made, much like for culture generation. One is picked at random, and the culture in that province used to generate the name.
For character name based, it will pick a random male name, weighted according to the regular naming weights.
For dynasty name based, it will pick a random dynasty of that culture with no restrictions. This pick is unweighted. The last word in the dynasty name will be used if it consists of more than one word. Apostrophes E.G., as in d'Anjou) will be considered as spaces.
It then takes a random loc key from the character/dynasty section, and runs it through localisation.
Gods, piety, and so on get their names randomly selected from the corresponding section in religion_name_formats. These are simply loc keys that provide suitable generic names. Heresies will take their descriptions from heresy_desc rather than desc.
Descriptions will be unique as long as you have defined at least as many descriptions as there are religions that can spawn on the map, as divided between heresies and non-heresies.
Religions with no provinces will copy their parent religion's naming for gods and so on, while generating a name of their own based on the culture used for the parent religion's name, or its holy sites.
After the naming has been decided the scripted effect "randomize_religion_names_effect" is called. There is no scope. It is used to activate, give holders and rename all religious titles.
When religion names are randomized, the icons will be replaced with the religion icon strips in gfx/interface/shattered_random
Missing key in religion_name_formats in alternate_starts/02_naming.txt most likely:
Might be related to this:Has anyone else had any issue with custom maps with random world, with some landmasses having either no character, no religion, no culture or a combination of these? I have adjacencies set up in 01_spread to connect the landmasses together, and its weird how one continent has no religion, another has no culture, another has no characters, and the biggest continents have all three okay.
This behaviour, with the same landmasses, persists between different regenerations.
alternate_starts/_documentation.info said:== Spread notes ==
Be aware that the spread calculations use 32-bit fixed point numbers.
This means that if the sum of all chances is above roughly 2.1 million, the numbers will go negative and all hell breaks loose. Therefore, try to keep your numbers within reason.
It also means that modifiers smaller than 0.001 are not possible; it will be interpreted as 0.
Might be related to this:
0. All cultures/religions are cleared from the map
1. For every group, a random province is chosen as the seed province (for religions, this is weighted using "religion_group_spawn", which can use the special trigger any_religion_distance to check the distance to groups already spawned. Religion group spawn happens in a random order)
2. Each province that neighbors a group gets its score calculated. Note that this means a province that borders multiple filled out provinces can have multiple entries. Even for the same group
3. A province is picked by random (weighted proportionally by the score) from the score list, and given the culture/religion group
4. Step 2 and 3 are repeated until all provinces have a culture/religion group
5. For each group, the religion/culture is cleared once more. Each culture/religion within that group randomly picks a starting province within the area allocated to the group. Steps 2 through 4 are then run using cultures rather than group
4. Step 2 and 3 are repeated until all provinces have a culture/religion group
On top of normal adjacencies, the adjacencies from the "adjacencies" section are used. See the "adjacencies" section of this document. These are *required* if your mod has islands, as otherwise they might end up with no culture or religion. Your territory thus has to be fully connected. You can ensure a score of 0 to make sure it only ever spreads via such an adjacency when there are literally no other options though.