first version of language rework

This commit is contained in:
Fishedotjpg 2026-03-20 23:56:53 +00:00
parent 14f85aa035
commit d0fa6114cb
13 changed files with 3006 additions and 57 deletions

View file

@ -0,0 +1,976 @@

# Don't remove the below hex code thingy: not sure what black magic it's doing, but it prevents a startup error somehow.
grant_title_cultural_acceptance_impact = {
value = 0
#How many counties am I giving away out of the total counties of this culture?
add = {
every_in_list = {
list = target_titles
limit = {
tier = tier_county
culture != scope:actor.culture
culture = scope:recipient.culture
NOT = {
recent_history = {
type = granted
years = 10
}
}
}
add = 1
}
divide = {
value = culture_number_of_counties
min = 1
}
multiply = 15 #If you are giving all counties with this culture self rule then you will increase acceptance by 15% - If this is changed also change revoke_title_culture_acceptance_impact
min = 0.5
max = 15
}
add = { # Up to an additional 10 acceptance for Duchies or Kingdoms with a capital of this culture
every_in_list = { #2 per duchy
list = target_titles
if = {
limit = {
tier = tier_duchy
title_capital_county = {
culture != scope:actor.culture
culture = scope:recipient.culture
}
NOT = {
recent_history = {
type = granted
years = 10
}
}
}
add = 2
}
}
every_in_list = { #3 per Kingdom
list = target_titles
if = {
limit = {
tier = tier_kingdom
title_capital_county = {
culture != scope:actor.culture
culture = scope:recipient.culture
}
NOT = {
recent_history = {
type = granted
years = 10
}
}
}
add = 3
}
}
max = 10
}
}
revoke_title_culture_acceptance_impact = {
value = 0
if = {
limit = {
scope:landed_title = {
tier = tier_county
culture != scope:actor.culture
culture = scope:recipient.culture
NOT = {
recent_history = {
type = revoked
years = 5
}
}
}
}
subtract = {
value = 1
divide = {
value = scope:landed_title.culture.culture_number_of_counties
min = 1
}
multiply = 15 #Same as used in grant above
min = 0.5
max = 15
}
}
else = {
scope:landed_title = {
subtract = tier
add = 1 # because tier starts at the barony level and we want to start counting at the county level
}
}
}
auto_grant_county_cultural_acceptance_impact = {
value = 0
add = {
value = 1
divide = {
value = scope:landed_title.culture.culture_number_of_counties
min = 1
}
multiply = 15 #Same as used in grant above
min = 0.5
max = 15
}
}
culture_conversion_acceptance_impact = { #The smaller a culture is, the more upset it will be.
subtract = {
value = 1
divide = {
value = scope:county.culture.culture_number_of_counties
min = 1
}
multiply = 15 #Same as used in grant above
min = 0.5
max = 15
}
}
declare_war_culture_acceptance_impact = {
value = 0
scope:defender.primary_title = {
subtract = tier
add = 1
}
}
declare_war_culture_acceptance_impact = {
value = 0
scope:defender.primary_title = {
subtract = tier
add = 1
}
}
hybridization_threshold_flat_number_value = 40
hybridization_threshold_value = {
value = hybridization_threshold_flat_number_value
# Cultural Parameters
if = {
limit = {
root.culture = {
has_cultural_parameter = easier_to_hybridize
}
}
multiply = 0.5
}
else_if = {
limit = {
root = {
has_trait = nomadic_philosophy
NOT = {
government_has_flag = government_is_nomadic
}
}
}
multiply = 0.5
}
if = {
limit = {
root.culture = {
has_cultural_parameter = harder_to_hybridize
}
}
multiply = 2
}
if = {
limit = {
exists = scope:culture
scope:culture = {
has_cultural_parameter = harder_to_hybridize
}
}
multiply = 2
}
# Struggles
if = {
limit = {
exists = scope:culture
root = {
OR = {
any_character_struggle = {
involvement = involved
has_struggle_phase_parameter = easier_culture_hybridising_for_involved_and_interlopers
is_culture_involved_in_struggle = scope:culture
}
any_character_struggle = {
involvement = interloper
has_struggle_phase_parameter = easier_culture_hybridising_for_involved_and_interlopers
is_culture_involved_in_struggle = scope:culture
}
}
}
}
multiply = 0.5
}
# Events
if = {
limit = {
root = {
exists = var:special_culture
var:special_culture = scope:culture
}
}
multiply = 0.75
}
# Council Position
if = {
limit = {
root = {
has_variable = kurultai_culture_variable_value
}
}
multiply = {
value = 100
subtract = root.var:kurultai_culture_variable_value
divide = 100
}
}
max = 100
min = 0
}
hybridization_ai_threshold_value = {
value = hybridization_threshold_flat_number_value
add = 10
}
culture_divergence_cooldown = {
value = 100
# Game Rules
if = {
limit = {
has_game_rule = slower_hybrid_and_divergence_cooldowns
}
add = 100
}
else_if = {
limit = {
has_game_rule = faster_hybrid_and_divergence_cooldowns
}
add = -50
}
else_if = {
limit = {
has_game_rule = no_hybrid_and_divergence_cooldowns
}
multiply = 0
}
}
culture_hybrid_cooldown = {
value = 50
# Game Rules
if = {
limit = {
has_game_rule = slower_hybrid_and_divergence_cooldowns
}
add = 50
}
else_if = {
limit = {
has_game_rule = faster_hybrid_and_divergence_cooldowns
}
add = -25
}
else_if = {
limit = {
has_game_rule = no_hybrid_and_divergence_cooldowns
}
multiply = 0
}
}
add_tradition_cooldown = {
value = 50
if = {
limit = {
culture_head ?= {
has_variable = kurultai_culture_variable_value
}
}
multiply = {
value = 100
subtract = culture_head.var:kurultai_culture_variable_value
divide = 100
}
}
}
tradition_base_cost = {
value = 2000
if = {
limit = {
culture_head ?= {
has_variable = kurultai_culture_variable_value
}
}
multiply = {
value = 100
subtract = culture_head.var:kurultai_culture_variable_value
divide = 100
}
}
}
tradition_double_base_cost = {
value = tradition_base_cost
multiply = 2
}
tradition_incompatible_ethos_penalty = {
value = 2000
if = {
limit = {
culture_head ?= {
has_variable = kurultai_culture_variable_value
}
}
multiply = {
value = 100
subtract = culture_head.var:kurultai_culture_variable_value
divide = 100
}
}
}
tradition_unfulfilled_criteria_penalty = {
value = 3000
if = {
limit = {
culture_head ?= {
has_variable = kurultai_culture_variable_value
}
}
multiply = {
value = 100
subtract = culture_head.var:kurultai_culture_variable_value
divide = 100
}
}
}
tradition_replacement_cost_factor = 1.5
tradition_replacement_cost_factor_tooltip = {
value = tradition_replacement_cost_factor
subtract = 1
multiply = 100
}
tradition_trait_discount = {
value = tradition_base_cost
multiply = -0.5
}
tradition_heritage_discount = {
value = tradition_base_cost
multiply = -1
}
tradition_replacement_cost_if_relevant = {
value = 1
if = {
limit = {
scope:replacing = yes
}
multiply = {
value = tradition_replacement_cost_factor
desc = replacing_tradition_cost_penalty_desc
}
}
}
culture_realm_size = {
every_culture_county = {
limit = {
holder = {
OR = {
this = scope:actor
is_vassal_or_below_of = scope:actor
}
}
}
add = 1
}
}
culture_realm_size_larger_30_percent = {
add = culture_realm_size
multiply = 1.3
}
culture_realm_size_cost_scopes = {
every_culture_county = {
limit = {
holder = {
OR = {
this = root
is_vassal_or_below_of = root
}
}
}
add = 1
}
}
culture_size = {
every_culture_county = {
add = 1
}
}
culture_size_penalty = {
value = 0
add = {
add = scope:culture.culture_realm_size_cost_scopes
subtract = root.culture.culture_realm_size_cost_scopes
multiply = 50
}
}
divergence_yearly_chance = {
value = 5
if = {
limit = {
has_game_rule = less_common_divergent_culture_ai_frequency
}
multiply = 0.2
}
if = {
limit = {
has_game_rule = relaxed_divergent_culture_ai_frequency
}
multiply = 1.25
}
if = {
limit = {
has_game_rule = none_divergent_culture_ai_frequency
}
multiply = 0
}
}
# % values used in events
miniscule_positive_culture_acceptance = 2
low_positive_culture_acceptance = 5
medium_positive_culture_acceptance = 10
major_positive_culture_acceptance = 25
miniscule_negative_culture_acceptance = -2
low_negative_culture_acceptance = -5
medium_negative_culture_acceptance = -10
### CULTURAL ACCEPTANCE VALUES ###
miniscule_cultural_acceptance_value = 1
minor_cultural_acceptance_value = 2.5
medium_cultural_acceptance_value = 5
major_cultural_acceptance_value = 10
massive_cultural_acceptance_value = 15
miniscule_cultural_acceptance_gain = miniscule_cultural_acceptance_value
minor_cultural_acceptance_gain = minor_cultural_acceptance_value
medium_cultural_acceptance_gain = medium_cultural_acceptance_value
major_cultural_acceptance_gain = major_cultural_acceptance_value
massive_cultural_acceptance_gain = massive_cultural_acceptance_value
miniscule_cultural_acceptance_loss = {
add = miniscule_cultural_acceptance_value
multiply = -1
}
minor_cultural_acceptance_loss = {
add = minor_cultural_acceptance_value
multiply = -1
}
medium_cultural_acceptance_loss ={
add = medium_cultural_acceptance_value
multiply = -1
}
major_cultural_acceptance_loss = {
add = major_cultural_acceptance_value
multiply = -1
}
massive_cultural_acceptance_loss = {
add = massive_cultural_acceptance_value
multiply = -1
}
language_learning_divide_value = 5
current_extra_languages = {
value = num_of_known_languages
subtract = 1
}
language_soft_cap = {
value = 2
if = {
limit = {
learning >= language_learning_divide_value
}
add = {
add = learning
divide = language_learning_divide_value
}
}
if = {
limit = {
has_perk = open_minded_perk
}
add = 2
}
if = {
limit = {
has_perk = smooth_operator_perk
}
add = 1
}
if = {
limit = {
has_perk = been_there_done_that_perk
}
add = 1
}
if = {
limit = {
government_has_flag = government_is_nomadic
domicile ?= { has_domicile_parameter = nomad_yurt_language_cap }
}
add = 1
}
if = {
limit = {
dynasty ?= {
has_dynasty_perk = ep1_culture_legacy_1
}
}
add = 1
}
if = {
limit = {
culture = {
has_cultural_parameter = extra_language_cap
}
}
add = 1
}
if = {
limit = {
culture = {
has_cultural_parameter = extra_language_cap_2
}
}
add = 1
}
}
language_soft_cap_modifier_value = {
value = num_of_known_languages
subtract = language_soft_cap
}
## Cultural Tradition values
grant_independence_prestige_gain_value = {
value = 0
add = {
every_sub_realm_county = {
add = {
value = 100
}
}
}
}
tribal_holding_fort_level_in_jungle_bonus_value = 1
castle_holding_fort_level_in_jungle_bonus_value = 2
camel_percentage_trigger_value_desc = 50
camel_percentage_multiplier_value = {
value = camel_percentage_trigger_value_desc
divide = 100
}
xenophilic_nr_of_cultures_value = 3
xenophilic_acceptance_value = 30
xenophilic_nr_of_cultures_cost_value = 4
xenophilic_acceptance_cost_value = 40
# Remember to sync the below with its corresponding non-scripted value taking parameter.
## Can be found easily by searching for the value name, where it appears as a comment.
longbow_competitions_minimum_archer_maa_value = 1200
republican_vassal_interaction_limit = 4
family_business_court_poistion_aptitude_bonus = 20
court_position_aptitude_family_business_value = {
if = {
limit = {
liege.culture ?= { has_cultural_parameter = close_family_better_court_positions }
is_close_family_of = liege
}
add = {
value = 20
desc = tradition_family_entrepreneurship_name
}
}
}
family_business_councillors_percentage = 10
legalistic_vassal_punishment_acceptance = 20
maritime_mercantilism_coastal_holdings_value = 0.10
maritime_mercantilism_coastal_holdings_value_tt = {
value = maritime_mercantilism_coastal_holdings_value
multiply = 100
}
# Score for a given court language
# Referenced by code!
# Only used by the AI
# Numbers get truncated; 10.3 and 10.4 is the same score
# root = ruler
# scope:target = ruler to copy language from
# scope:my_language_counties = counties in the AI's realm with a culture with their native language
# scope:their_language_counties = counties in the AI's realm with a culture with the target court language
# scope:total_counties = counties in the AI's realm
# scope:courts_with_language = how many royal courts use the same court language? Includes the target
# scope:checking_native_language = are we scoring our own language?
# See also the can_adopt_court_language scripted rule
court_language_ai_score = {
add = scope:their_language_counties
# Bit of relative score for percentage too
add = {
value = scope:their_language_counties
multiply = 10
divide = {
value = scope:total_counties
min = 1
}
}
if = {
limit = { scope:checking_native_language = no }
subtract = scope:my_language_counties
min = 1
}
#Adjust for Court Grandeur.
#World religions primarily cares about other courts that share their faith.
add = {
value = 0
if = { #Islamic rulers cares about islamic courts
limit = {
faith.religion = religion:islam_religion
scope:target.faith.religion = religion:islam_religion
}
add = {
value = scope:target.court_grandeur_current
if = { #Reduce further if not same faith
limit = {
faith != scope:target.faith
}
divide = 2
}
}
}
else_if = { #Christian cares about other Christians - especially of the same faith
limit = {
faith.religion = religion:christianity_religion
scope:target.faith.religion = religion:christianity_religion
}
add = {
value = scope:target.court_grandeur_current
if = { #Reduce further if not same faith
limit = {
faith != scope:target.faith
}
divide = 3
}
}
}
else_if = { #Eastern Faiths
limit = {
OR = {
faith.religion = religion:hinduism_religion
faith.religion = religion:buddhism_religion
faith.religion = religion:jainism_religion
}
OR = {
scope:target.faith.religion = religion:hinduism_religion
scope:target.faith.religion = religion:buddhism_religion
scope:target.faith.religion = religion:jainism_religion
}
}
add = {
value = scope:target.court_grandeur_current
if = { #Reduce further if not same Religion
limit = {
faith.religion != scope:target.faith.religion
}
divide = 2
}
}
}
else_if = { #Abrahamic religion matching vs non co-religionist - CGV Ignored
limit = {
OR = {
faith.religion = religion:islam_religion
faith.religion = religion:christianity_religion
}
faith.religion != scope:target.faith.religion
}
#Add nothing
}
else_if = { #Eastern religion matching vs non Eastern religion - CGV Ignored
limit = {
OR = {
faith.religion = religion:hinduism_religion
faith.religion = religion:buddhism_religion
faith.religion = religion:jainism_religion
}
NOR = {
scope:target.faith.religion = religion:hinduism_religion
scope:target.faith.religion = religion:buddhism_religion
scope:target.faith.religion = religion:jainism_religion
}
}
#Add nothing
}
else = { #Everyone else just cares about the Grandeur directly
add = scope:target.court_grandeur_current
}
}
#Increase from number of other courts using the Language (1.5 per court).
add = {
value = scope:courts_with_language
multiply = 1.5
}
#Arbitrary Geographical Bias - if our courts are not in the same region the score is divided by 2.
divide = {
value = 1
if = {
limit = {
OR = {
#Europe:
AND = {
capital_province = { geographical_region = world_europe_west_britannia }
NOT = { scope:target.capital_province = { geographical_region = world_europe_west_britannia } }
}
AND = {
capital_province = { geographical_region = world_europe_west_germania }
NOT = { scope:target.capital_province = { geographical_region = world_europe_west_germania } }
}
AND = {
capital_province = { geographical_region = world_europe_west_francia }
NOT = { scope:target.capital_province = { geographical_region = world_europe_west_francia } }
}
AND = {
capital_province = { geographical_region = world_europe_west_iberia }
NOT = { scope:target.capital_province = { geographical_region = world_europe_west_iberia } }
}
AND = {
capital_province = { geographical_region = world_europe_north }
NOT = { scope:target.capital_province = { geographical_region = world_europe_north } }
}
AND = {
capital_province = { geographical_region = world_europe_south_east }
NOT = { scope:target.capital_province = { geographical_region = world_europe_south_east } }
}
AND = {
capital_province = { geographical_region = world_europe_south_italy }
NOT = { scope:target.capital_province = { geographical_region = world_europe_south_italy } }
}
#South Asia:
AND = {
capital_province = { geographical_region = world_india_rajastan }
scope:target.capital_province = { geographical_region = world_india_rajastan }
}
AND = {
capital_province = { geographical_region = world_india_bengal }
NOT = { scope:target.capital_province = { geographical_region = world_india_bengal } }
}
AND = {
capital_province = { geographical_region = world_india_deccan }
NOT = { scope:target.capital_province = { geographical_region = world_india_deccan } }
}
AND = {
capital_province = { geographical_region = world_burma }
NOT = { scope:target.capital_province = { geographical_region = world_burma } }
}
AND = {
capital_province = { geographical_region = world_himalaya }
NOT = { scope:target.capital_province = { geographical_region = world_himalaya } }
}
AND = {
capital_province = { geographical_region = world_middle_east }
NOT = { scope:target.capital_province = { geographical_region = world_middle_east } }
}
AND = {
capital_province = { geographical_region = world_middle_east_persia }
NOT = { scope:target.capital_province = { geographical_region = world_middle_east_persia } }
}
#Africa
AND = {
capital_province = { geographical_region = world_africa_north }
NOT = { scope:target.capital_province = { geographical_region = world_africa_north } }
}
AND = {
capital_province = { geographical_region = world_africa_west }
NOT = { scope:target.capital_province = { geographical_region = world_africa_west } }
}
AND = {
capital_province = { geographical_region = world_africa_east }
NOT = { scope:target.capital_province = { geographical_region = world_africa_east } }
}
#Central Asia
AND = {
capital_province = { geographical_region = world_steppe_west }
NOT = { scope:target.capital_province = { geographical_region = world_steppe_west } }
}
AND = {
capital_province = { geographical_region = world_steppe_east }
NOT = { scope:target.capital_province = { geographical_region = world_steppe_east } }
}
AND = {
capital_province = { geographical_region = world_tibet }
NOT = { scope:target.capital_province = { geographical_region = world_tibet } }
}
AND = {
capital_province = { geographical_region = world_asia_china }
NOT = { scope:target.capital_province = { geographical_region = world_asia_china } }
}
AND = {
capital_province = { geographical_region = world_asia_japan }
NOT = { scope:target.capital_province = { geographical_region = world_asia_japan } }
}
AND = {
capital_province = { geographical_region = world_asia_korea }
NOT = { scope:target.capital_province = { geographical_region = world_asia_korea } }
}
AND = {
capital_province = { geographical_region = world_asia_southeast }
NOT = { scope:target.capital_province = { geographical_region = world_asia_southeast } }
}
}
}
add = 1
}
}
# Prefer the status quo slightly. Needs to be last
if = {
limit = {
scope:checking_native_language = yes
has_court_language_of_culture = culture
}
multiply = 1.5
}
else_if = {
limit = {
scope:checking_native_language = no
scope:target = { has_royal_court = yes }
has_same_court_language = scope:target
}
multiply = 1.5
}
min = 1
}
gold_per_culture_county_in_subrealm = {
value = 0
add = {
scope:vassal_speaking_other_language = {
every_sub_realm_county = {
limit = {
culture = scope:vassal_speaking_other_language.culture
}
add = 50
}
}
}
}
## Culture Event Values
culture_tradition_events_0101_tutor_surcharge_value = { value = major_gold_value }
non_tribal_loot_value = {
value = root.var:raid_loot
multiply = not_tribal_raid_prestige_multiplier
multiply = -1
}
tradition_travel_discount = {
value = -1000
}
tradition_tournament_discount = {
value = -2000
}
traditionalist_discount = {
value = -1500
}
court_position_aptitude_eunuch_tradition_value = {
if = {
limit = {
liege.culture ?= {
OR = {
has_cultural_parameter = eunuch_trait_bonuses
has_cultural_parameter = court_machinations_eunuch_trait_bonuses
}
}
}
if = {
limit = {
has_trait = eunuch_1
}
add = {
value = 30
desc = court_position_eunuch_trait
}
}
else_if = {
limit = {
has_trait = beardless_eunuch
}
add = {
value = 30
desc = court_position_beardless_eunuch_trait
}
}
}
}
court_position_aptitude_boon_voyager_trait = {
if = {
limit = {
employer ?= {
is_landless_adventurer = no
has_perk = gracious_host_impeccable_guest_perk
}
}
add = {
value = {
value = 3
multiply = employer.num_of_known_languages
}
desc = gracious_host_impeccable_guest_perk_bonus
}
}
}

View file

@ -0,0 +1,897 @@
starting_gold = {
value = 0
add = {
value = starting_gold_by_income
if = {
limit = {
has_treasury = yes
}
if = {
limit = {
is_independent_ruler = no
highest_held_title_tier < tier_empire # excluding Chinese ministers
}
divide = 4
}
else_if = {
limit = {
is_independent_ruler = yes
NOT = { has_title = title:e_byzantium }
}
multiply = {
value = highest_held_title_tier
subtract = 1
min = 1
}
}
else_if = { # for Chinese ministers
limit = {
highest_held_title_tier = tier_empire
is_independent_ruler = no
is_landed = no
}
add = monumental_gold_value
}
}
min = 1
}
}
starting_treasury = {
value = 0
if = {
limit = {
has_treasury = yes
}
if = {
limit = {
highest_held_title_tier = tier_county
}
add = {
value = major_treasury_value
}
}
else_if = {
limit = {
highest_held_title_tier = tier_duchy
}
add = {
value = massive_treasury_value
}
}
else_if = {
limit = {
highest_held_title_tier = tier_kingdom
}
add = {
value = massive_treasury_value
if = {
limit = {
game_start_date = 1066.9.15
has_title = title:k_egypt
}
multiply = -1
}
else = {
multiply = 2
}
}
}
else_if = {
limit = {
highest_held_title_tier = tier_empire
}
add = {
value = monumental_treasury_value
if = {
limit = {
liege = title:h_china.holder # for ministerial expenses
}
multiply = 3
}
else_if = {
limit = {
is_independent_ruler = yes
}
multiply = 2
}
if = {
limit = {
game_start_date = 1066.9.15
has_title = title:e_byzantium
}
max = 180
}
else_if = {
limit = {
game_start_date = 867.1.1
has_title = title:e_byzantium
}
max = 400
}
else_if = {
limit = {
has_title = title:e_byzantium
}
max = 800
}
}
}
else_if = {
limit = {
highest_held_title_tier = tier_hegemony
}
add = {
value = monumental_treasury_value
multiply = 4.5
}
}
}
}
starting_prestige = {
value = {
# Longer-lived characters start with some inherent prestige.
add = {
value = medium_prestige_value
multiply = {
value = 0
# Bonus for older characters (who have presumably accomplished more).
if = {
limit = { age > 60 }
add = 5
}
else_if = {
limit = { age > 48 }
add = 4
}
else_if = {
limit = { age > 36 }
add = 3
}
else_if = {
limit = { age > 24 }
add = 2
}
else_if = {
limit = { age > 12 }
add = 1
}
# Bonus/penalty for traits.
if = {
limit = {
OR = {
has_trait = arrogant
has_trait = ambitious
}
}
add = 1
}
else_if = {
limit = {
OR = {
has_trait = humble
has_trait = content
}
}
add = -1
}
# Humble/content children shouldn't have a prestige penalty!
min = 0
}
}
# Rulers also gain bonus prestige based on their tier.
add = {
value = medium_prestige_value
multiply = highest_held_title_tier
}
}
}
starting_piety = {
value = {
# All characters start with some about of piety based on how long they have lived a virtuous life.
add = {
value = medium_piety_value
multiply = {
add = num_virtuous_traits
subtract = num_sinful_traits
if = {
limit = { has_trait = zealous }
add = 1
}
else_if = {
limit = { has_trait = cynical }
add = -1
}
}
multiply = {
value = 0
if = {
limit = { age > 60 }
add = 5
}
else_if = {
limit = { age > 48 }
add = 4
}
else_if = {
limit = { age > 36 }
add = 3
}
else_if = {
limit = { age > 24 }
add = 2
}
else_if = {
limit = { age > 12 }
add = 1
}
}
}
# Rulers also gain some Piety based on tier (but less than piety than prestige).
add = {
value = minor_piety_value
multiply = highest_held_title_tier
}
# Nobody starts with negative piety, not even even sinful characters.
min = minor_piety_value
}
}
starting_influence = {
value = {
# Longer-lived characters start with some inherent influence.
add = {
value = medium_influence_value
multiply = {
value = 0
# Bonus for older characters (who have presumably had time to establish themselves more).
if = {
limit = { age > 60 }
add = 5
}
else_if = {
limit = { age > 48 }
add = 4
}
else_if = {
limit = { age > 36 }
add = 3
}
else_if = {
limit = { age > 24 }
add = 2
}
else_if = {
limit = { age > 12 }
add = 1
}
# Bonus/penalty for traits.
if = {
limit = {
OR = {
has_trait = generous
has_trait = deceitful
}
}
add = 1
}
else_if = {
limit = {
OR = {
has_trait = impatient
has_trait = trusting
}
}
add = -1
}
# Children who are impatient/trusting children shouldn't start with negative influence!
min = 0
}
}
}
}
# Starting merit will give merit levels as well. (as opposed to other starting values like starting_prestige)
starting_merit = {
value = 0
# We are making an assumption that the Hegemon does not need Merit applied to them because they already have the Mandate of Heaven.
if = {
limit = {
government_allows = merit
is_faith_dominant_gender = yes
is_adult = yes
this != character:han_30000 # Not for tutorial character
}
# Rulers
if = {
limit = {
is_independent_ruler = no
is_ruler = yes
}
# Title checks
# First - We add a base amount based on tier
# Secondly - We add some more based on tier and age
# Finally - We add a third amount for some randomness and to ensure we have candidates with enough merit for the next tier
switch = {
trigger = primary_title.tier
tier_empire = {
add = empire_starting_merit_value
add = {
value = kingdom_starting_merit_value
multiply = {
value = age
divide = 75
}
}
}
tier_kingdom = {
add = kingdom_starting_merit_value
add = {
value = kingdom_starting_merit_value
multiply = {
value = age
divide = 75
}
}
if = {
limit = {
is_ai = yes
}
if = {
limit = {
static_group_filter = {
group = starting_merit_characters_1
match = 0.2
}
}
multiply = 2
}
else_if = {
limit = {
static_group_filter = {
group = starting_merit_characters_2
match = 0.2
}
}
multiply = 1.5
}
else_if = {
limit = {
static_group_filter = {
group = starting_merit_characters_3
match = 0.2
}
}
multiply = 1.25
}
}
}
tier_duchy = {
add = duchy_starting_merit_value
add = {
value = duchy_starting_merit_value
multiply = {
value = age
divide = 50
}
}
if = {
limit = {
is_ai = yes
}
if = {
limit = {
static_group_filter = {
group = starting_merit_characters_1
match = 0.2
}
}
multiply = 3
}
else_if = {
limit = {
static_group_filter = {
group = starting_merit_characters_2
match = 0.2
}
}
multiply = 2
}
else_if = {
limit = {
static_group_filter = {
group = starting_merit_characters_3
match = 0.2
}
}
multiply = 1.25
}
}
}
tier_county = {
add = county_starting_merit_value
add = {
value = county_starting_merit_value
multiply = {
value = age
divide = 50
}
}
if = {
limit = {
is_ai = yes
}
if = {
limit = {
static_group_filter = {
group = starting_merit_characters_1
match = 0.2
}
}
multiply = 3
}
else_if = {
limit = {
static_group_filter = {
group = starting_merit_characters_2
match = 0.2
}
}
multiply = 2
}
else_if = {
limit = {
static_group_filter = {
group = starting_merit_characters_3
match = 0.25
}
}
multiply = 1.5
}
else_if = {
limit = {
static_group_filter = {
group = starting_merit_characters_4
match = 0.25
}
}
multiply = 1.25
}
}
}
}
}
# Non-rulers
if = {
limit = {
is_courtier = yes
NOR = {
has_council_position = councillor_court_chaplain
has_trait = devoted
}
}
add = sum_of_all_skills_value
add = age
if = {
limit = {
age >= 30
}
multiply = 2
}
if = {
limit = {
has_trait = confucian_education
}
multiply = 2
}
}
}
}
# What cultural acceptance should two cultures start with?
# root = culture 1
# scope:culture = culture 2
starting_culture_acceptance = {
# Cultures start with the baseline as their default acceptance
value = culture_acceptance_baseline
# Historical one-time increases to Cultural Acceptance (added on top of the baseline)
# Note: List the cultures in the same order as they appear in script in common\culture\cultures.
if = {
limit = { current_date >= 1060.1.1 } # Changes for the 1066 bookmark
if = {
limit = { # The Ghaznavids have ruled over Afghan land for a few generations - Let's help them keep it
this = culture:afghan
scope:culture = culture:turkish
}
add = 25
}
if = {
limit = { # The Ghaznavids have ruled over Punjabi land for some time - We don't want them to revolt too quickly
this = culture:punjabi
scope:culture = culture:turkish
}
add = 20
}
}
}
# What cultural acceptance should two cultures drift down towards if above?
# root = culture 1
# scope:culture = culture 2
# this is calculated late in startup after history setup
culture_acceptance_baseline = {
value = 0
if = {
limit = { # To stop errors in observe mode
exists = root
# Set up some scopes we'll need
scope:culture ?= {
trigger_if = {
limit = {
culture_number_of_counties > 0
}
calc_culture_dominant_religion = { save_temporary_scope_as = their_religion }
calc_culture_dominant_faith = { save_temporary_scope_as = their_faith }
}
}
trigger_if = {
limit = {
culture_number_of_counties > 0
}
calc_culture_dominant_religion = { save_temporary_scope_as = our_religion }
calc_culture_dominant_faith = { save_temporary_scope_as = our_faith }
}
}
# Increase base acceptance for sharing the same heritage
if = {
limit = {
has_same_culture_heritage = scope:culture
}
add = {
value = 20 # please update CULTURE_PILLAR_TOOLTIP_HERITAGE_EFFECT if this number changes
desc = ACCEPTANCE_BASELINE_HERITAGE
}
}
# Increase base acceptance for sharing same language
if = {
limit = {
has_same_culture_language = scope:culture
}
add = {
value = 10 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes
desc = ACCEPTANCE_BASELINE_LANGUAGE
}
}
# Increase base acceptance for sharing same language origin
if = {
limit = {
NOT = { has_same_culture_language = scope:culture }
has_cultural_parameter = anglic_group_language_param
scope:culture = { has_cultural_parameter = anglic_group_language_param }
}
add = {
value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes
desc = ACCEPTANCE_BASELINE_LANGUAGE_ANGLIC
}
}
# Increase base acceptance for sharing same language origin
if = {
limit = {
NOT = { has_same_culture_language = scope:culture }
has_cultural_parameter = goidelic_group_language_param
scope:culture = { has_cultural_parameter = goidelic_group_language_param }
}
add = {
value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes
desc = ACCEPTANCE_BASELINE_LANGUAGE_GOIDELIC
}
}
# Increase base acceptance for sharing same language origin
if = {
limit = {
NOT = { has_same_culture_language = scope:culture }
has_cultural_parameter = brythonic_group_language_param
scope:culture = { has_cultural_parameter = brythonic_group_language_param }
}
add = {
value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes
desc = ACCEPTANCE_BASELINE_LANGUAGE_BRYTHONIC
}
}
# Increase base acceptance for sharing same language origin
if = {
limit = {
NOT = { has_same_culture_language = scope:culture }
has_cultural_parameter = french_group_language_param
scope:culture = { has_cultural_parameter = french_group_language_param }
}
add = {
value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes
desc = ACCEPTANCE_BASELINE_LANGUAGE_FRENCH
}
}
# Increase base acceptance for sharing same language origin
if = {
limit = {
NOT = { has_same_culture_language = scope:culture }
has_cultural_parameter = middle_german_group_language_param
scope:culture = { has_cultural_parameter = middle_german_group_language_param }
}
add = {
value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes
desc = ACCEPTANCE_BASELINE_LANGUAGE_MIDDLE_GERMAN
}
}
# Increase base acceptance for sharing same language origin
if = {
limit = {
NOT = { has_same_culture_language = scope:culture }
has_cultural_parameter = east_hispanic_group_language_param
scope:culture = { has_cultural_parameter = east_hispanic_group_language_param }
}
add = {
value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes
desc = ACCEPTANCE_BASELINE_LANGUAGE_EAST_HISPANIC
}
}
# Increase base acceptance for sharing same language origin
if = {
limit = {
NOT = { has_same_culture_language = scope:culture }
has_cultural_parameter = occitanic_group_language_param
scope:culture = { has_cultural_parameter = occitanic_group_language_param }
}
add = {
value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes
desc = ACCEPTANCE_BASELINE_LANGUAGE_OCCITANIC
}
}
# Increase base acceptance for sharing same language origin
if = {
limit = {
NOT = { has_same_culture_language = scope:culture }
has_cultural_parameter = lausatian_group_language_param
scope:culture = { has_cultural_parameter = lausatian_group_language_param }
}
add = {
value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes
desc = ACCEPTANCE_BASELINE_LANGUAGE_LAUSATIAN
}
}
# Increase base acceptance for sharing same language origin
if = {
limit = {
NOT = { has_same_culture_language = scope:culture }
has_cultural_parameter = west_hispanic_group_language_param
scope:culture = { has_cultural_parameter = west_hispanic_group_language_param }
}
add = {
value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes
desc = ACCEPTANCE_BASELINE_LANGUAGE_WEST_HISPANIC
}
}
# Increase base acceptance for sharing same language origin
if = {
limit = {
NOT = { has_same_culture_language = scope:culture }
has_cultural_parameter = basque_group_language_param
scope:culture = { has_cultural_parameter = basque_group_language_param }
}
add = {
value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes
desc = ACCEPTANCE_BASELINE_LANGUAGE_VASCONIC
}
}
# Increase base acceptance for sharing same language origin
if = {
limit = {
NOT = { has_same_culture_language = scope:culture }
has_cultural_parameter = middle_hispanic_group_language_param
scope:culture = { has_cultural_parameter = middle_hispanic_group_language_param }
}
add = {
value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes
desc = ACCEPTANCE_BASELINE_LANGUAGE_MIDDLE_HISPANIC
}
}
# Increase base acceptance for sharing same language origin
if = {
limit = {
NOT = { has_same_culture_language = scope:culture }
has_cultural_parameter = italo_dalmatian_group_language_param
scope:culture = { has_cultural_parameter = italo_dalmatian_group_language_param }
}
add = {
value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes
desc = ACCEPTANCE_BASELINE_LANGUAGE_ITALO_DALMATIAN
}
}
# Increase base acceptance for sharing same language origin
if = {
limit = {
NOT = { has_same_culture_language = scope:culture }
has_cultural_parameter = albanian_group_language_param
scope:culture = { has_cultural_parameter = albanian_group_language_param }
}
add = {
value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes
desc = ACCEPTANCE_BASELINE_LANGUAGE_ALBANIAN
}
}
# Increase base acceptance for sharing same language origin
if = {
limit = {
NOT = { has_same_culture_language = scope:culture }
has_cultural_parameter = low_german_group_language_param
scope:culture = { has_cultural_parameter = low_german_group_language_param }
}
add = {
value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes
desc = ACCEPTANCE_BASELINE_LANGUAGE_LOW_GERMAN
}
}
# Increase base acceptance for sharing same language origin
if = {
limit = {
NOT = { has_same_culture_language = scope:culture }
has_cultural_parameter = high_german_group_language_param
scope:culture = { has_cultural_parameter = high_german_group_language_param }
}
add = {
value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes
desc = ACCEPTANCE_BASELINE_LANGUAGE_HIGH_GERMAN
}
}
# Increase base acceptance for sharing the same ethos if cultures are present within the same geographical area
if = {
limit = {
has_same_culture_ethos = scope:culture
OR = {
cultures_share_relevant_region_trigger = yes
#In case cultures are bordering each other in two different regions
any_culture_county = {
any_neighboring_county = {
culture = scope:culture
}
}
}
}
add = {
value = 10
desc = ACCEPTANCE_BASELINE_ETHOS
}
}
# General Faith acceptance modifiers
if = { # Same Religion
limit = {
exists = scope:their_religion
scope:our_religion ?= scope:their_religion
root = {
any_culture_county = {
percent >= 0.5
religion = scope:our_religion
}
}
scope:culture = {
any_culture_county = {
percent >= 0.5
religion = scope:our_religion
}
}
}
add = {
value = 5
desc = ACCEPTANCE_BASELINE_RELIGION
}
}
if = { # Same exact Faith
limit = {
exists = scope:their_faith
scope:our_faith ?= scope:their_faith
root = {
any_culture_county = {
percent >= 0.5
faith = scope:our_faith
}
}
scope:culture = {
any_culture_county = {
percent >= 0.5
faith = scope:our_faith
}
}
}
add = {
value = 10
desc = ACCEPTANCE_BASELINE_FAITH
}
}
if = { # Eastern faiths
limit = {
scope:our_religion ?= {
is_in_family = rf_eastern
}
scope:their_religion ?= {
is_in_family = rf_eastern
}
any_culture_county = {
percent >= 0.5
title_province = {
religion = {
is_in_family = rf_eastern
}
}
}
scope:culture = {
any_culture_county = {
percent >= 0.5
title_province = {
religion = {
is_in_family = rf_eastern
}
}
}
}
}
add = {
value = 5
desc = ACCEPTANCE_BASELINE_EASTERN_RELIGION
}
}
if = { # Pluralistic close faiths
limit = {
scope:our_faith ?= {
has_doctrine = doctrine_pluralism_pluralistic
}
scope:their_faith ?= {
has_doctrine = doctrine_pluralism_pluralistic
}
any_culture_county = {
percent >= 0.5
title_province = {
faith = {
has_doctrine = doctrine_pluralism_pluralistic
}
}
}
scope:culture = {
any_culture_county = {
percent >= 0.5
title_province = {
faith = {
has_doctrine = doctrine_pluralism_pluralistic
}
}
}
}
OR = {
cultures_share_relevant_region_trigger = yes
#In case cultures are bordering each other in two different regions
any_culture_county = {
any_neighboring_county = {
culture = scope:culture
}
}
}
}
add = {
value = 10
desc = ACCEPTANCE_BASELINE_CLOSE_PLURALISTS
}
}
}
}