religions outfitted

This commit is contained in:
Magpie490 2024-11-16 19:09:11 +00:00
parent c770f78a27
commit 54da5c3a5b
110 changed files with 68595 additions and 23 deletions

View file

@ -866,6 +866,106 @@
}
}
against_all_odds = {
icon = core_tenet_against_all_odds
is_shown = {
religion_tag = anglican_religion
}
piety_cost = {
value = faith_tenet_cost_low
# Multiplier for keeping same tenet
if = {
limit = { has_doctrine = against_all_odds }
multiply = faith_unchanged_doctrine_cost_mult
}
}
traits = {
virtues = { just = 2 }
sins = { arbitrary = 2 }
}
parameters = {
easier_to_convert_faith_in_hills_forests = yes
easier_to_convert_culture_in_same_faith_hills_forests = yes
harder_to_convert_faith_away_in_hills_forests = yes
sanctioned_false_conversion = yes
}
character_modifier = {
hills_attrition_mult = -0.5
hills_levy_size = 0.3
hills_advantage = 5
forest_attrition_mult = -0.5
forest_levy_size = 0.3
forest_advantage = 5
}
}
for_king_and_country = {
icon = core_tenet_for_king_and_country
is_shown = {
religion_tag = anglican_religion
}
piety_cost = {
value = faith_tenet_cost_low
# Multiplier for keeping same tenet
if = {
limit = { has_doctrine = against_all_odds }
multiply = faith_unchanged_doctrine_cost_mult
}
}
traits = {
virtues = { just = 2 }
sins = { arbitrary = 2 }
}
parameters = {
legalism_modified_law_costs = yes
legalism_modified_law_costs_2 = yes
legalism_reduced_faction_virtues = yes
legalism_increased_faction_sins = yes
legalism_trust_just_leader_active = yes
excommunication_active = yes
}
}
last_knights_of_britain = {
icon = core_tenet_songs_of_roland
is_shown = {
religion_tag = anglican_religion
}
piety_cost = {
value = faith_tenet_cost_low
# Multiplier for keeping same tenet
if = {
limit = { has_doctrine = last_knights_of_britain }
multiply = faith_unchanged_doctrine_cost_mult
}
}
traits = {
virtues = { brave = 2 }
sins = { craven = 2 }
}
character_modifier = {
prowess = 4
tolerance_advantage_mod = 2
accolade_glory_gain_mult = 0.1
}
parameters = {
clergy_can_fight = yes
cheaper_holy_wars_active = yes
great_holy_wars_active = yes
ghw_no_hof_conversion_buffs_active = yes
pilgrimage_decision_active = yes
}
}
tenet_people_of_the_book = {
icon = core_tenet_legalism
is_shown = {
@ -908,7 +1008,7 @@
value = faith_tenet_cost_low
# Multiplier for keeping same tenet
if = {
limit = { has_doctrine = tenet_universal_scripture }
limit = { has_doctrine = one_king_to_rule_them_all }
multiply = faith_unchanged_doctrine_cost_mult
}
}
@ -967,7 +1067,7 @@
# Multiplier for keeping same tenet
if = {
limit = { has_doctrine = tenet_pursuit_of_power }
limit = { has_doctrine = tenet_restore_the_crown }
multiply = faith_unchanged_doctrine_cost_mult
}
}
@ -1005,7 +1105,7 @@
# Multiplier for keeping same tenet
if = {
limit = { has_doctrine = tenet_pursuit_of_power }
limit = { has_doctrine = tenet_songs_of_roland }
multiply = faith_unchanged_doctrine_cost_mult
}
}
@ -1030,7 +1130,7 @@
# Multiplier for keeping same tenet
if = {
limit = { has_doctrine = tenet_struggle_submission }
limit = { has_doctrine = tenet_the_first_age }
multiply = faith_unchanged_doctrine_cost_mult
}
}
@ -1056,7 +1156,7 @@
# Multiplier for keeping same tenet
if = {
limit = { has_doctrine = tenet_struggle_submission }
limit = { has_doctrine = tenet_lorekeepers }
multiply = faith_unchanged_doctrine_cost_mult
}
}
@ -2434,6 +2534,101 @@
}
}
the_queen_of_summer = {
icon = the_queen_of_summer
is_shown = {
religion_tag = wicca_religion
}
piety_cost = {
value = faith_tenet_cost_low
# Multiplier for keeping same tenet
if = {
limit = { has_doctrine = the_queen_of_summer }
multiply = faith_unchanged_doctrine_cost_mult
}
}
parameters = {
believes_in_harmony_with_nature_invisible = yes
piety_from_feasts_active = yes
mandatory_feast_attendance = yes
allows_brewery = yes
}
character_modifier = {
forest_advantage = 5
forest_attrition_mult = -0.25
taiga_advantage = 5
taiga_attrition_mult = -0.25
jungle_advantage = 5
jungle_attrition_mult = -0.25
build_gold_cost = 0.1
county_opinion_add = 5
vassal_opinion = 5
courtier_opinion = 5
}
}
king_of_winter = {
icon = the_king_of_winter
is_shown = {
religion_tag = wicca_religion
}
piety_cost = {
value = faith_tenet_cost_low
# Multiplier for keeping same tenet
if = {
limit = { has_doctrine = king_of_winter }
multiply = faith_unchanged_doctrine_cost_mult
}
}
character_modifier = {
prowess = 4
tolerance_advantage_mod = 2
}
parameters = {
clergy_can_fight = yes
vows_of_poverty_active = yes
unlock_voluntary_laampdom_faith = yes
}
traits = {
virtues = { generous = 2 }
sins = { greedy = 2 }
}
}
the_book_of_shadows = {
icon = core_tenet_alexandrian_catechism
is_shown = {
religion_tag = wicca_religion
}
piety_cost = {
value = faith_tenet_cost_low
# Multiplier for keeping same tenet
if = {
limit = { has_doctrine = the_book_of_shadows }
multiply = faith_unchanged_doctrine_cost_mult
}
}
parameters = {
tenet_esotericism_mystic_education = yes
}
character_modifier = {
monthly_learning_lifestyle_xp_gain_mult = 0.2
learning_per_stress_level = 2
}
traits = {
virtues = {
scholar
lifestyle_mystic = { weight = 1 }
}
}
}
tenet_ritual_celebrations = {
icon = core_tenet_ritual_celebrations

View file

@ -112,6 +112,11 @@ special_tolerance = {
hostility_override_special_doctrine_catholic_rite = 0
}
}
special_doctrine_via_media = {
parameters = {
hostility_override_special_doctrine_christian = 1
}
}
special_doctrine_christian = {
visible = no
}

View file

@ -38,7 +38,6 @@
virtues = { forgiving compassionate chaste }
sins = { vengeful sadistic lustful }
}
reserved_male_names = { #put witch names here later
Andrew Antoninus Bartolomeus Benedict Christian Christopher Clement Constantine David Demetrius Eustace George Gregory
Hans Isaac Joakim Jacob John Jordan Joseph Laurence Magnus Marcus Martin Matthew Michael Nicholas Patrick Paul Peter Philip
@ -253,13 +252,13 @@
#holy_site = segrada_familia
#Special Tolerance | placeholder
#doctrine = special_doctrine_ecumenical_christian
doctrine = special_doctrine_esoteric_witchcraft
doctrine = special_doctrine_via_media
doctrine = special_doctrine_christian
#Tenets | placeholder
doctrine = tenet_vows_of_poverty
doctrine = tenet_armed_pilgrimages
doctrine = tenet_pursuit_of_power
doctrine = against_all_odds
doctrine = for_king_and_country
doctrine = last_knights_of_britain
holy_order_names = { #placeholder
{ name = "holy_order_knights_templar" coat_of_arms = "ho_knights_templar" }

View file

@ -39,10 +39,10 @@
doctrine = doctrine_funeral_stoic
traits = {
virtues = { forgiving compassionate chaste }
sins = { vengeful sadistic lustful }
virtues = { }
sins = { }
}
reserved_male_names = { #put witch names here later
Andrew Antoninus Bartolomeus Benedict Christian Christopher Clement Constantine David Demetrius Eustace George Gregory
Hans Isaac Joakim Jacob John Jordan Joseph Laurence Magnus Marcus Martin Matthew Michael Nicholas Patrick Paul Peter Philip

View file

@ -35,8 +35,8 @@
doctrine = doctrine_funeral_stoic
traits = {
virtues = { forgiving compassionate chaste }
sins = { vengeful sadistic lustful }
virtues = { forgiving compassionate lustful }
sins = { vengeful sadistic chaste }
}
reserved_male_names = { #put larp names here later

View file

@ -35,8 +35,8 @@
doctrine = doctrine_funeral_stoic
traits = {
virtues = { forgiving compassionate chaste }
sins = { vengeful sadistic lustful }
virtues = { }
sins = { }
}
reserved_male_names = { #put witch names here later

View file

@ -35,8 +35,8 @@
doctrine = doctrine_funeral_stoic
traits = {
virtues = { forgiving compassionate chaste }
sins = { vengeful sadistic lustful }
virtues = { }
sins = { }
}
reserved_male_names = { #put witch names here later
@ -257,9 +257,9 @@
doctrine = special_doctrine_esoteric_witchcraft
#Tenets | placeholder
doctrine = tenet_vows_of_poverty
doctrine = tenet_armed_pilgrimages
doctrine = tenet_pursuit_of_power
doctrine = the_queen_of_summer
doctrine = king_of_winter
doctrine = the_book_of_shadows
holy_order_names = { #placeholder
{ name = "holy_order_knights_templar" coat_of_arms = "ho_knights_templar" }

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,126 @@

#Childhood
childhood_personality_age = 3
childhood_education_start_age = 6
adulthood_start_age = 16
age_plus_1 = {
value = age
add = 1
}
age_plus_3 = {
value = age
add = 3
}
age_plus_5 = {
value = age
add = 5
}
age_plus_10 = {
value = age
add = 10
}
age_plus_25 = {
value = age
add = 25
}
age_minus_1 = {
value = age
subtract = 1
}
age_minus_3 = {
value = age
subtract = 3
}
age_minus_5 = {
value = age
subtract = 5
}
age_minus_10 = {
value = age
subtract = 10
}
age_minus_25 = {
value = age
subtract = 25
}
age_dif_child_up = {
value = age
multiply = 1.4
}
age_dif_child_down = {
value = age
divide = 1.2
}
age_dif_child_up_friend = {
value = age
multiply = 1.3
}
age_dif_child_down_friend = {
value = age
divide = 1.3
}
years_to_adulthood = {
value = adulthood_start_age
subtract = age
min = 0
}
less_than_two_years_to_adulthood_value = {
value = adulthood_start_age
subtract = 2
}
# Calculates the difference between the current scope and scope:comparator, with greater age difference resulting in lower negative numbers. Made to use with ordered lists to find characters close in age.
age_difference = {
value = age
subtract = scope:comparator.age
abs = yes
multiply = -1
}
grand_wedding_timeout = {
value = 3 #please update GRAND_WEDDING_PROMISE_INFO loc if this changes
if = {
limit = {
scope:spouse_1.age <= scope:spouse_2.age
}
add = scope:spouse_1.years_to_adulthood
}
else = {
add = scope:spouse_2.years_to_adulthood
}
}
grand_wedding_timeout_alt = {
value = 3 #please update GRAND_WEDDING_PROMISE_INFO loc if this changes
if = {
limit = {
scope:temp_marriage_scope.age <= scope:temp_marriage_scope.betrothed.age
}
add = scope:temp_marriage_scope.years_to_adulthood
}
else = {
add = scope:temp_marriage_scope.betrothed.years_to_adulthood
}
}
grand_wedding_timeout_notification = {
value = grand_wedding_timeout
multiply = 365
subtract = 1
}
grand_wedding_timeout_notification_alt = {
value = grand_wedding_timeout_alt
multiply = 365
subtract = 1
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,256 @@

low_high_wealth_cutoff = 50 # The mid-point between the minimum wealth of an artifact and the maximum wealth of an artifact. Currently minimum and maximum are 0 and 100, respectively.
reforge_artifact_cost = {
value = { # Base cost is the missing durability - It shouldn't matter how often, or when, you repair an artifact
value = scope:artifact.artifact_max_durability
subtract = scope:artifact.artifact_durability
desc = "BASE"
}
if = { # Multiply base cost with artifact rarity - Except for trinkets
limit = {
scope:artifact = { rarity = illustrious }
}
multiply = {
value = 4
desc = reforge_artifact_durability_desc
}
}
else_if = {
limit = {
scope:artifact = { rarity = famed }
}
multiply = {
value = 3
desc = reforge_artifact_durability_desc
}
}
else_if = {
limit = {
scope:artifact = { rarity = masterwork }
}
multiply = {
value = 2
desc = reforge_artifact_durability_desc
}
}
}
# Used by AI when scoring artifacts for equipping
# Will be added to the score of
# code calculation: quality + wealth + (rarity * NDefines::NInventory::ARTIFACT_RARITY_AI_SCORE_MULT) + Scripted Template ai_score (if artifact has a scripted template)
# The score of this will be added to the score of above
# Best artifact will be selected to be equipped, and only artifacts with scores above 0 will be equipped.
# root: character - owner of the Artifact
# scope:artifact: artifact
# scope:current_weight: is the score from the code calculation
artifact_ai_will_equip_score = {
if = { # To prevent the AI from equipping actively detrimental artifacts
limit = {
exists = scope:artifact
scope:artifact = {
has_variable = cursed_artifact
}
}
add = {
value = -10000
}
}
}
# Used by AI when scoring artifacts for reforging
# Will be added to the score of
# code calculation: quality + wealth + (rarity * NDefines::NInventory::ARTIFACT_RARITY_AI_SCORE_MULT) + Scripted Template ai_score (if artifact has a scripted template)
# The score of this will be added to the score of above
# Best artifact will be selected to be reforged, and only artifacts with scores above 0 will be reforged.
# Only artifacts that are not good enough for equipping, will be considered for reforging
# root: character - owner of the Artifact
# scope:artifact: artifact
# scope:current_weight: is the score from the code calculation
artifact_ai_will_reforge_score = {
if = {
limit = {
scope:artifact = {
artifact_slot_type = miscellaneous
}
}
multiply = {
value = 0
}
}
if = {
limit = {
root = {
gold < 200
}
}
multiply = {
value = 0
}
}
if = {
limit = {
root = {
is_at_war = yes
}
}
multiply = {
value = 0
}
}
}
artifact_rarity = {
value = 1
if = {
limit = { rarity = common }
add = 1
}
else_if = {
limit = { rarity = masterwork }
add = 2
}
else_if = {
limit = { rarity = famed }
add = 3
}
else_if = {
limit = { rarity = illustrious }
add = 4
}
}
cheese_artifact_strength = {
value = scope:cheese_artifact.artifact_max_durability
subtract = scope:cheese_artifact.artifact_durability
multiply = -1
}
very_low_mummy_quality = 0
low_mummy_quality = 100
medium_mummy_quality = 250
high_mummy_quality = 500
very_high_mummy_quality = 1000
mummy_quality = {
value = 0
# Am I a good person?
if = {
limit = {
num_virtuous_traits >= 1
}
add = 50
}
if = { # 100
limit = {
num_virtuous_traits >= 2
}
add = 50
}
if = { # 250
limit = {
num_virtuous_traits >= 3
}
add = 250
}
# Am I a bad person?
if = {
limit = {
num_sinful_traits >= 1
}
add = -25
}
if = { # -50
limit = {
num_sinful_traits >= 2
}
add = -25
}
if = { # -100
limit = {
num_sinful_traits >= 3
}
add = -50
}
# Am I a prestigious person?
if = {
limit = {
highest_held_title_tier >= tier_county
}
add = 25
}
if = { # 50
limit = {
highest_held_title_tier >= tier_duchy
}
add = 25
}
if = { # 100
limit = {
highest_held_title_tier >= tier_kingdom
}
add = 50
}
if = { # 250
limit = {
highest_held_title_tier >= tier_empire
}
add = 150
}
# Am I a HoF?
if = {
limit = {
primary_title = { is_head_of_faith = yes }
}
add = 100
}
# Traits that would make someone a good mummy probably
if = {
limit = {
has_trait = pilgrim
NOT = {
faith = { has_doctrine_parameter = forbidden_from_pilgrimage }
}
}
add = 25
}
if = {
limit = {
has_trait = tourney_participant
}
add = 25
}
if = { # Other lifestyles get 25
limit = {
any_trait_in_category = {
category = lifestyle
count >= 1
}
}
add = 25
}
if = {
limit = {
OR = {
has_trait = education_intrigue_5
has_trait = education_diplomacy_5
has_trait = education_stewardship_5
has_trait = education_martial_5
has_trait = education_learning_5
}
}
add = 25
}
#Living Legend and Saints get more value
if = {
limit = {
OR = {
has_trait = legend
has_trait = saint
}
}
multiply = 1.5
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,60 @@

bastard_legitimacy_change_cutoff_age = 6
real_father_suspicion_base_value = 50
husband_suspicion_base_value = 3
bastard_legitimization_prestige_cost = 150
house_head_legitimize_acceptance_base_value = -100
house_head_legitimize_approval_rating = {
value = house_head_legitimize_acceptance_base_value
if = {
limit = {
scope:the_house_head = scope:the_legitimizer
}
add = 1000
}
add = {
value = scope:the_legitimizer.prestige_level
multiply = 20
}
if = {
limit = {
scope:the_house_head = {
opinion = {
target = scope:the_legitimizer
value >= 50
}
}
}
add = 51
}
if = {
limit = {
scope:the_house_head = {
opinion = {
target = scope:the_bastard
value >= 80
}
}
}
add = 51
}
if = {
limit = {
scope:the_house_head = {
opinion = {
target = scope:the_legitimizer
value <= 0
}
}
}
add = -30
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,8 @@
# Referenced by code. Scoring for the legacy screen
# Root is the played character
legacy_score = {
value = 0
add = prestige_level
add = piety_level
add = dynasty.dynasty_prestige_level
}

View file

@ -0,0 +1,159 @@
# For use with our new hybrid-skill duel system
diplomacy_martial = {
value = 0
add = diplomacy
add = martial
divide = 2
}
diplomacy_stewardship = {
value = 0
add = diplomacy
add = stewardship
divide = 2
}
diplomacy_intrigue = {
value = 0
add = diplomacy
add = intrigue
divide = 2
}
diplomacy_learning = {
value = 0
add = diplomacy
add = learning
divide = 2
}
diplomacy_prowess = {
value = 0
add = diplomacy
add = prowess
divide = 2
}
martial_stewardship = {
value = 0
add = martial
add = stewardship
divide = 2
}
martial_intrigue = {
value = 0
add = martial
add = intrigue
divide = 2
}
martial_learning = {
value = 0
add = martial
add = learning
divide = 2
}
martial_prowess = {
value = 0
add = martial
add = prowess
divide = 2
}
stewardship_intrigue = {
value = 0
add = stewardship
add = intrigue
divide = 2
}
stewardship_learning = {
value = 0
add = stewardship
add = learning
divide = 2
}
stewardship_prowess = {
value = 0
add = stewardship
add = prowess
divide = 2
}
intrigue_learning = {
value = 0
add = intrigue
add = learning
divide = 2
}
intrigue_prowess = {
value = 0
add = intrigue
add = prowess
divide = 2
}
learning_prowess = {
value = 0
add = learning
add = prowess
divide = 2
}
random_nickname_chance = {
value = primary_title.tier
add = {
value = age
divide = 10
}
add = prestige_level
add = piety_level
if = {
limit = {
prestige_level >= 3
has_trait = conqueror
}
add = 10
}
if = {
limit = {
prestige_level >= 4
has_trait = conqueror
}
add = 10
}
if = {
limit = {
primary_title.tier >= tier_duchy
}
add = primary_title.tier
}
if = {
limit = {
is_ai = no
}
add = 1
}
if = {
limit = {
has_game_rule = random_nickname_frequency_halved
}
multiply = 0.5
}
else_if = {
limit = {
has_game_rule = random_nickname_frequency_quartered
}
multiply = 0.25
}
else_if = {
limit = {
has_game_rule = random_nickname_frequency_doubled
}
multiply = 2
}
}

View file

@ -0,0 +1,10 @@
# Check for an enemy Knight with at least 80% of our Prowess to be our opponent/wound-inflicter in combat events
prowess_for_combat_event_opponent = {
value = prowess
multiply = 0.8
}
vastly_outnumbered_combat_side_threshold = {
value = side_strength
multiply = 5
}

View file

@ -0,0 +1,192 @@
##################################################
# Weights
# Control values.
## For default weights.
task_contract_weight_default_value = 50
task_contract_weight_standard_bonus_value = 300
task_contract_weight_slight_bonus_value = 100
task_contract_weight_massive_bonus_value = 700
## For contracts that are a bit shinier, but also quite a bit more specialised — stuff that won't be able to appear as often so we want to weight it up when it does.
task_contract_weight_interesting_almost_rare_value = 100
task_contract_weight_interesting_somewhat_rare_value = 200
task_contract_weight_interesting_quite_rare_value = 300
task_contract_weight_interesting_very_rare_value = 500
## For contract employer traits.
task_contract_weight_bonus_employer_has_associated_traits_value = 50
task_contract_weight_malus_employer_has_associated_traits_value = -25
task_contract_weight_employer_associated_traits_min_value = -50
task_contract_weight_employer_associated_traits_max_value = 50
## Change our weight by tier.
task_contract_weight_by_tier_value = {
## Weight up kings and emperors, if we can get 'em.
if = {
limit = { highest_held_title_tier >= tier_kingdom }
add = 2
}
## And dukes somewhat.
else_if = {
limit = { highest_held_title_tier >= tier_duchy }
add = 1.5
}
## Weight down barons, as they're dramatically less interesting to get work from.
else_if = {
limit = { highest_held_title_tier <= tier_barony }
add = 0.01
}
else = { add = 1 }
}
## For contract employers already being your contact, has to be very high to overcome the above values
task_contract_weight_employer_contact_list_value = {
if = {
limit = { is_contact_of = root }
add = 10000
}
}
# Government weighting values.
## Special contracts.
laamp_contracts_weight_up_mercenary_value = {
if = {
limit = { has_realm_law_flag = laamp_contracts_weight_up_mercenary }
add = task_contract_weight_standard_bonus_value
}
}
laamp_contracts_weight_up_transport_value = {
if = {
limit = { has_realm_law_flag = laamp_contracts_weight_up_transport }
add = task_contract_weight_standard_bonus_value
}
if = {
limit = {
domicile = { has_domicile_parameter = receives_more_escort_contracts }
}
add = task_contract_weight_slight_bonus_value
}
}
laamp_contracts_weight_up_criminal_value = {
if = {
limit = { has_realm_law_flag = laamp_contracts_weight_up_criminal }
add = task_contract_weight_standard_bonus_value
}
# Otherwise, make criminal contracts a bit less likely — unless you're in dire straits...
else_if = {
limit = { gold >= 100 }
add = {
value = task_contract_weight_standard_bonus_value
multiply = -0.75
}
}
}
laamp_contracts_weight_up_criminal_massive_value = {
if = {
limit = { has_realm_law_flag = laamp_contracts_weight_up_criminal }
add = task_contract_weight_massive_bonus_value
}
# Otherwise, make criminal contracts a bit less likely — unless you're in dire straits...
else_if = {
limit = { gold >= 100 }
add = {
value = task_contract_weight_massive_bonus_value
multiply = -0.75
}
}
}
## Diplo contracts.
laamp_contracts_weight_up_diplomacy_value = {
if = {
limit = { has_realm_law_flag = laamp_contracts_weight_up_diplomacy }
add = task_contract_weight_standard_bonus_value
}
}
laamp_contracts_weight_up_diplomacy_slight_value = {
if = {
limit = { has_realm_law_flag = laamp_contracts_weight_up_diplomacy_slight }
add = task_contract_weight_slight_bonus_value
}
}
## Martial contracts.
laamp_contracts_weight_up_martial_value = {
if = {
limit = { has_realm_law_flag = laamp_contracts_weight_up_martial }
add = task_contract_weight_standard_bonus_value
}
}
laamp_contracts_weight_up_martial_slight_value = {
if = {
limit = { has_realm_law_flag = laamp_contracts_weight_up_martial_slight }
add = task_contract_weight_slight_bonus_value
}
}
## Stewardship contracts.
laamp_contracts_weight_up_stewardship_value = {
if = {
limit = { has_realm_law_flag = laamp_contracts_weight_up_stewardship }
add = task_contract_weight_standard_bonus_value
}
}
## Intrigue contracts.
laamp_contracts_weight_up_intrigue_value = {
if = {
limit = { has_realm_law_flag = laamp_contracts_weight_up_intrigue }
add = task_contract_weight_standard_bonus_value
}
}
## Learning contracts.
laamp_contracts_weight_up_learning_value = {
if = {
limit = { has_realm_law_flag = laamp_contracts_weight_up_learning }
add = task_contract_weight_standard_bonus_value
}
}
## Prowess contracts.
laamp_contracts_weight_up_prowess_value = {
if = {
limit = { has_realm_law_flag = laamp_contracts_weight_up_prowess }
add = task_contract_weight_standard_bonus_value
}
}
# Hygiene values.
## Would this character unguardedly let others know what wealth they have?
laamp_contract_would_signpost_own_prosperity_value = {
# Weight up.
## Traits that broadcast their wealth.
if = {
limit = { has_trait = arrogant }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = ambitious }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = improvident }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = profligate }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
# Weight down.
## Traits that hide their prosperity.
if = {
limit = { has_trait = humble }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = content }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = greedy }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = deceitful }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
# Restrictions.
min = task_contract_weight_employer_associated_traits_min_value
max = task_contract_weight_employer_associated_traits_max_value
}

View file

@ -0,0 +1,73 @@

marshal_task_side_effect_cooldown = 365 #Number of days minimum before the Marshal can fire a side effect event from a task again
marshal_task_modifier_duration = 1825 #Number of days that modifiers set by the marshal task should last for by default
chancellor_task_side_effect_cooldown = 365
chancellor_task_modifier_duration = 1825
steward_task_side_effect_cooldown = 365
steward_task_modifier_duration = 1825
spymaster_task_side_effect_cooldown = 365
spymaster_task_modifier_duration = 1825
court_chaplain_task_side_effect_cooldown = 365
court_chaplain_task_modifier_duration = 1825
council_scaled_monthly_income = {
add = liege.highest_held_title_tier
subtract = 2
min = 0.5
}
council_scaled_by_liege_tier = {
add = liege.highest_held_title_tier
subtract = 1
min = 1
}
council_scaled_skill_value = {
add = liege.highest_held_title_tier
subtract = 1
}
council_friend_impact_percentage = 20
council_best_friend_impact_percentage = 30
council_rival_impact_percentage = -20
council_nemesis_impact_percentage = -30
council_reliable_house_percentage = 10
council_task_fabricate_claim_relative_strength = {
value = max_military_strength
multiply = 1.2
}
council_scaled_by_liege_tier_not_admin = {
value = council_scaled_by_liege_tier
if = {
limit = { government_allows = administrative }
multiply = 0
}
}
council_scaled_admin_value = {
value = 0 # This value should be 0 for anyone who isn't admin
if = {
limit = {
government_allows = administrative
}
add = 1
if = {
limit = {
liege = { highest_held_title_tier >= tier_empire }
}
multiply = 2
}
}
}

View file

@ -0,0 +1,129 @@
######################
# County Corruption values
######################
miniscule_county_control_loss = -5
minor_county_control_loss = -10
medium_county_control_loss = -20
major_county_control_loss = -30
extreme_county_control_loss = -40
massive_county_control_loss = -50
monumental_county_control_loss = -75
miniscule_county_control_gain = 5
minor_county_control_gain = 10
medium_county_control_gain = 20
major_county_control_gain = 30
extreme_county_control_gain = 40
massive_county_control_gain = 50
monumental_county_control_gain = 75
low_county_control = 33
medium_county_control = 66
full_county_control = 100
low_county_control_limit = 35
high_county_control_limit = 95
high_control_county_corruption_removal_chance = 35
max_county_corruption_modifiers_at_once = 3
script_county_control = {
value = 0
add = county_control
}
county_corruption_modifier_count = {
if = {
limit = {
has_county_modifier = county_corruption_inefficient_tax_collection_modifier
}
add = 1
}
if = {
limit = {
has_county_modifier = county_corruption_deserting_levies_modifier
}
add = 1
}
if = {
limit = {
has_county_modifier = county_corruption_smuggling_ring_modifier
}
add = 1
}
if = {
limit = {
has_county_modifier = county_corruption_inefficient_census_modifier
}
add = 1
}
if = {
limit = {
has_county_modifier = county_corruption_lack_of_sheriffs_modifier
}
add = 1
}
if = {
limit = {
has_county_modifier = county_corruption_lack_of_courts_modifier
}
add = 1
}
if = {
limit = {
has_county_modifier = county_corruption_thieves_guild_modifier
}
add = 1
}
if = {
limit = {
has_county_modifier = county_corruption_unsafe_highways_modifier
}
add = 1
}
if = {
limit = {
has_county_modifier = county_corruption_uncooperative_guilds_modifier
}
add = 1
}
if = {
limit = {
has_county_modifier = county_corruption_lackluster_administration_modifier
}
add = 1
}
}
county_control_corruption_gain_chance = {
add = low_county_control_limit
#Account for actual county control
subtract = county_control # At low_county_control_limit Control, there is a 0 percent chance of gaining Corruption
divide = {
add = 5 # A base of approximately 25% chance of gaining corruption per year at 0 Control
}
divide = { # Further reduce the chance of corruption per corruption modifier the County already has
add = county_corruption_modifier_count
multiply = 2
min = 1
}
}
in_debt_county_corruption_gain_chance = {
value = 3
add = { #Gold should always be a negative value at this point
value = 0
subtract = holder.gold
multiply = 0.005 #Make it 1% more likely per -200 gold
max = 5
}
#Make it linearly less likely to accrue additional modifiers for each modifiers you have
divide = {
add = 1
add = county_corruption_modifier_count
}
}

View file

@ -0,0 +1,386 @@
############################
# AMENITIES COST VALUES
############################
# BASE VALUES
base_court_amenities_cost = {
value = sub_realm_size
divide = {
add = 4
subtract = {
add = 0.25
multiply = court_grandeur_current_level
}
}
if = { # Add a baseline depending on rank
limit = {
highest_held_title_tier = tier_empire
}
add = 20
}
else = {
add = 10
}
if = {
limit = {
culture = {
has_cultural_era_or_later = culture_era_late_medieval
}
}
multiply = {
value = 1.75
}
}
else_if = {
limit = {
culture = {
has_cultural_era_or_later = culture_era_high_medieval
}
}
multiply = {
value = 1.5
}
}
else_if = {
limit = {
culture = {
has_cultural_era_or_later = culture_era_early_medieval
}
}
multiply = {
value = 1.25
}
}
}
court_amenities_cost_level_1 = {
value = base_court_amenities_cost
divide = 96
min = 0.2
if = {
limit = {
government_has_flag = government_is_tribal
}
min = 0.4
}
}
court_amenities_cost_level_1_fashion = {
value = court_amenities_cost_level_1
if = {
limit = {
has_character_flag = court_free_fashion
}
min = 0
multiply = 0
}
}
court_amenities_cost_level_1_food = {
value = court_amenities_cost_level_1
if = {
limit = {
has_character_modifier = rivers_of_wine_modifier
}
multiply = 0.5
}
if = {
limit = {
OR = {
has_character_modifier = employer_booner_food_taster_2_modifier
has_character_modifier = employer_booner_food_taster_3_modifier
}
}
multiply = 0.75
}
}
court_amenities_cost_level_1_lodgings = {
value = court_amenities_cost_level_1
if = {
limit = {
OR = {
has_character_modifier = employer_booner_seneschal_2_modifier
has_character_modifier = employer_booner_seneschal_3_modifier
}
}
multiply = 0.75
}
}
court_amenities_cost_level_1_servants = {
value = court_amenities_cost_level_1
if = {
limit = {
OR = {
has_character_modifier = employer_booner_cupbearer_2_modifier
has_character_modifier = employer_booner_cupbearer_3_modifier
}
}
multiply = 0.75
}
}
court_amenities_cost_level_2 = {
value = base_court_amenities_cost
divide = 48
min = 0.4
if = {
limit = {
government_has_flag = government_is_tribal
}
min = 0.8
}
}
court_amenities_cost_level_2_fashion = {
value = court_amenities_cost_level_2
if = {
limit = {
has_character_flag = court_cheaper_fashion
}
multiply = 0.8
}
}
court_amenities_cost_level_2_food = {
value = court_amenities_cost_level_2
if = {
limit = {
has_character_flag = court_cheaper_food
}
multiply = 0.8
}
if = {
limit = {
has_character_modifier = rivers_of_wine_modifier
}
multiply = 0.5
}
if = {
limit = {
OR = {
has_character_modifier = employer_booner_food_taster_2_modifier
has_character_modifier = employer_booner_food_taster_3_modifier
}
}
multiply = 0.75
}
}
court_amenities_cost_level_2_lodgings = {
value = court_amenities_cost_level_2
if = {
limit = {
has_character_modifier = lodgings_epidemics_resistance_modifier_1
}
multiply = 0.85
}
if = {
limit = {
has_character_modifier = lodgings_epidemics_resistance_modifier_2
}
multiply = 0.75
}
if = {
limit = {
OR = {
has_character_modifier = employer_booner_seneschal_2_modifier
has_character_modifier = employer_booner_seneschal_3_modifier
}
}
multiply = 0.75
}
}
court_amenities_cost_level_2_servants = {
value = court_amenities_cost_level_2
if = {
limit = {
has_character_flag = court_cheaper_servants
}
multiply = 0.8
}
if = {
limit = {
OR = {
has_character_modifier = employer_booner_cupbearer_2_modifier
has_character_modifier = employer_booner_cupbearer_3_modifier
}
}
multiply = 0.75
}
}
court_amenities_cost_level_3 = {
value = base_court_amenities_cost
divide = 32
min = 0.6
if = {
limit = {
government_has_flag = government_is_tribal
}
min = 1.2
}
}
court_amenities_cost_level_3_food = {
value = court_amenities_cost_level_3
if = {
limit = {
has_character_modifier = rivers_of_wine_modifier
}
multiply = 0.5
}
if = {
limit = {
OR = {
has_character_modifier = employer_booner_food_taster_2_modifier
has_character_modifier = employer_booner_food_taster_3_modifier
}
}
multiply = 0.75
}
}
court_amenities_cost_level_3_lodgings = {
value = court_amenities_cost_level_3
if = {
limit = {
OR = {
has_character_modifier = employer_booner_seneschal_2_modifier
has_character_modifier = employer_booner_seneschal_3_modifier
}
}
multiply = 0.75
}
}
court_amenities_cost_level_3_servants = {
value = court_amenities_cost_level_3
if = {
limit = {
OR = {
has_character_modifier = employer_booner_cupbearer_2_modifier
has_character_modifier = employer_booner_cupbearer_3_modifier
}
}
multiply = 0.75
}
}
court_amenities_cost_level_4 = {
value = base_court_amenities_cost
divide = 24
min = 0.8
if = {
limit = {
government_has_flag = government_is_tribal
}
min = 1.6
}
}
court_amenities_cost_level_4_food = {
value = court_amenities_cost_level_4
if = {
limit = {
has_character_modifier = rivers_of_wine_modifier
}
multiply = 0.5
}
if = {
limit = {
OR = {
has_character_modifier = employer_booner_food_taster_2_modifier
has_character_modifier = employer_booner_food_taster_3_modifier
}
}
multiply = 0.75
}
}
court_amenities_cost_level_4_lodgings = {
value = court_amenities_cost_level_4
if = {
limit = {
OR = {
has_character_modifier = employer_booner_seneschal_2_modifier
has_character_modifier = employer_booner_seneschal_3_modifier
}
}
multiply = 0.75
}
}
court_amenities_cost_level_4_servants = {
value = court_amenities_cost_level_4
if = {
limit = {
OR = {
has_character_modifier = employer_booner_cupbearer_2_modifier
has_character_modifier = employer_booner_cupbearer_3_modifier
}
}
multiply = 0.75
}
}
############################
# FASHION COSTS
############################
court_fashion_acceptable_cost = {
value = court_amenities_cost_level_1_fashion
}
court_fashion_decent_cost = {
value = court_amenities_cost_level_2_fashion
}
court_fashion_good_cost = {
value = court_amenities_cost_level_3
}
court_fashion_fantastic_cost = {
value = court_amenities_cost_level_4
}
############################
# FOOD QUALITY COSTS
############################
court_food_quality_modest_cost = {
value = court_amenities_cost_level_1_food
}
court_food_quality_decent_cost = {
value = court_amenities_cost_level_2_food
}
court_food_quality_lavish_cost = {
value = court_amenities_cost_level_3_food
}
court_food_quality_exotic_cost = {
value = court_amenities_cost_level_4_food
}
############################
# LODGING STANDARTS COSTS
############################
court_lodging_standards_small_cost = {
value = court_amenities_cost_level_1_lodgings
}
court_lodging_standards_middling_cost = {
value = court_amenities_cost_level_2_lodgings
}
court_lodging_standards_spacious_cost = {
value = court_amenities_cost_level_3_lodgings
}
court_lodging_standards_grand_cost = {
value = court_amenities_cost_level_4_lodgings
}
############################
# COURT SERVANTS COSTS
############################
court_servants_few_cost = {
value = court_amenities_cost_level_1_servants
}
court_court_servants_some_cost = {
value = court_amenities_cost_level_2_servants
}
court_court_servants_many_cost = {
value = court_amenities_cost_level_3_servants
}
court_servants_endless_cost = {
value = court_amenities_cost_level_4_servants
}
# Referenced from code
# root is the character
# Determines how long amenity cooldowns are in months
court_amenity_cooldown_months = {
value = 12
}

View file

@ -0,0 +1,20 @@
court_grandeur_rank_4_min_level = 9
court_grandeur_rank_3_min_level = 6
court_grandeur_rank_2_min_level = 3
current_cgv_above_expected_exact_value = {
value = court_grandeur_current
subtract = court_grandeur_minimum_expected
}
indebt_guest_interaction_lost_test_grandeur_cost_value = { value = minor_court_grandeur_loss }
# Note: base chance is 50, so this works out at 50 + [this value] = guestimated likelihood (i.e., before traits and such) before the AI will consider using this interaction.
indebt_guest_interaction_likely_success_control_value = 25
indebt_guest_interaction_get_intrigue_difference_value = {
# Grab scope:actor's intrigue.
value = scope:actor.intrigue
# And then remove scope:recipient's.
subtract = scope:recipient.intrigue
}

View file

@ -0,0 +1,754 @@

############################
# MINOR TITLE COSTS
############################
minor_court_position_salary = {
add = {
value = 0.25
desc = COURT_POSITION_SALARY_BREAKDOWN_BASE
format = "BASE_VALUE_FORMAT_DECIMALS"
}
if = {
limit = {
scope:liege.sub_realm_size >= 120
}
multiply = {
value = 1.6
desc = enormous_realm_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
else_if = {
limit = {
scope:liege.sub_realm_size >= 90
}
multiply = {
value = 1.4
desc = large_realm_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
else_if = {
limit = {
scope:liege.sub_realm_size >= 60
}
multiply = {
value = 1.2
desc = medium_realm_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
else_if = {
limit = {
scope:liege.sub_realm_size >= 30
}
multiply = {
value = 1.1
desc = small_realm_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
if = {
limit = {
scope:liege = {
culture = {
has_cultural_era_or_later = culture_era_late_medieval
}
}
}
multiply = {
value = 1.75
desc = culture_era_late_medieval_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
else_if = {
limit = {
scope:liege = {
culture = {
has_cultural_era_or_later = culture_era_high_medieval
}
}
}
multiply = {
value = 1.5
desc = culture_era_high_medieval_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
else_if = {
limit = {
scope:liege = {
culture = {
has_cultural_era_or_later = culture_era_early_medieval
}
}
}
multiply = {
value = 1.25
desc = culture_era_early_medieval_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
if = {
limit = {
scope:liege = {
highest_held_title_tier >= tier_empire
}
}
multiply = {
value = 1.25
desc = empire_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
if = {
limit = {
scope:liege = {
government_has_flag = government_is_tribal
}
}
multiply = {
value = 0.25
desc = tribal_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_MINUS_POSITIVE"
}
}
if = {
limit = {
scope:liege = {
culture = {
has_cultural_parameter = cheaper_court_positions
}
}
}
multiply = {
value = 0.8
desc = esteemed_hospitality_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_MINUS_POSITIVE"
}
}
}
medium_court_position_salary = {
add = {
value = 0.5
desc = COURT_POSITION_SALARY_BREAKDOWN_BASE
format = "BASE_VALUE_FORMAT_DECIMALS"
}
if = {
limit = {
scope:liege.sub_realm_size >= 120
}
multiply = {
value = 1.6
desc = enormous_realm_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
else_if = {
limit = {
scope:liege.sub_realm_size >= 90
}
multiply = {
value = 1.4
desc = large_realm_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
else_if = {
limit = {
scope:liege.sub_realm_size >= 60
}
multiply = {
value = 1.2
desc = medium_realm_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
else_if = {
limit = {
scope:liege.sub_realm_size >= 30
}
multiply = {
value = 1.1
desc = small_realm_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
if = {
limit = {
scope:liege = {
culture = {
has_cultural_era_or_later = culture_era_late_medieval
}
}
}
multiply = {
value = 1.75
desc = culture_era_late_medieval_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
else_if = {
limit = {
scope:liege = {
culture = {
has_cultural_era_or_later = culture_era_high_medieval
}
}
}
multiply = {
value = 1.5
desc = culture_era_high_medieval_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
else_if = {
limit = {
scope:liege = {
culture = {
has_cultural_era_or_later = culture_era_early_medieval
}
}
}
multiply = {
value = 1.25
desc = culture_era_early_medieval_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
if = {
limit = {
scope:liege = {
highest_held_title_tier >= tier_empire
}
}
multiply = {
value = 1.25
desc = empire_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
if = {
limit = {
scope:liege = {
government_has_flag = government_is_tribal
}
}
multiply = {
value = 0.25
desc = tribal_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_MINUS_POSITIVE"
}
}
if = {
limit = {
scope:liege = {
culture = {
has_cultural_parameter = cheaper_court_positions
}
}
}
multiply = {
value = 0.8
desc = esteemed_hospitality_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_MINUS_POSITIVE"
}
}
}
major_court_position_salary = {
add = {
value = 1.0
desc = COURT_POSITION_SALARY_BREAKDOWN_BASE
format = "BASE_VALUE_FORMAT_DECIMALS"
}
if = {
limit = {
scope:liege.sub_realm_size >= 120
}
multiply = {
value = 1.6
desc = enormous_realm_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
else_if = {
limit = {
scope:liege.sub_realm_size >= 90
}
multiply = {
value = 1.4
desc = large_realm_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
else_if = {
limit = {
scope:liege.sub_realm_size >= 60
}
multiply = {
value = 1.2
desc = medium_realm_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
else_if = {
limit = {
scope:liege.sub_realm_size >= 30
}
multiply = {
value = 1.1
desc = small_realm_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
if = {
limit = {
scope:liege = {
culture = {
has_cultural_era_or_later = culture_era_late_medieval
}
}
}
multiply = {
value = 1.75
desc = culture_era_late_medieval_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
else_if = {
limit = {
scope:liege = {
culture = {
has_cultural_era_or_later = culture_era_high_medieval
}
}
}
multiply = {
value = 1.5
desc = culture_era_high_medieval_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
else_if = {
limit = {
scope:liege = {
culture = {
has_cultural_era_or_later = culture_era_early_medieval
}
}
}
multiply = {
value = 1.25
desc = culture_era_early_medieval_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
if = {
limit = {
scope:liege = {
highest_held_title_tier >= tier_empire
}
}
multiply = {
value = 1.25
desc = empire_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
if = {
limit = {
scope:liege = {
government_has_flag = government_is_tribal
}
}
multiply = {
value = 0.25
desc = tribal_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_MINUS_POSITIVE"
}
}
if = {
limit = {
scope:liege = {
culture = {
has_cultural_parameter = cheaper_court_positions
}
}
}
multiply = {
value = 0.8
desc = esteemed_hospitality_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_MINUS_POSITIVE"
}
}
}
court_position_physician_salary = {
add = {
value = 0.1
desc = COURT_POSITION_SALARY_BREAKDOWN_BASE
format = "BASE_VALUE_FORMAT_DECIMALS"
}
if = {
limit = { exists = scope:liege }
if = {
limit = {
scope:liege.culture = {
has_cultural_era_or_later = culture_era_late_medieval
}
}
multiply = {
value = 1.75
desc = culture_era_late_medieval_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
else_if = {
limit = {
scope:liege.culture = {
has_cultural_era_or_later = culture_era_high_medieval
}
}
multiply = {
value = 1.5
desc = culture_era_high_medieval_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
else_if = {
limit = {
scope:liege.culture = {
has_cultural_era_or_later = culture_era_early_medieval
}
}
multiply = {
value = 1.25
desc = culture_era_early_medieval_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
if = {
limit = {
scope:liege = {
highest_held_title_tier >= tier_empire
}
}
multiply = {
value = 1.25
desc = empire_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
if = {
limit = {
scope:liege = {
government_has_flag = government_is_tribal
}
}
multiply = {
value = 0.25
desc = tribal_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_MINUS_POSITIVE"
}
}
if = {
limit = {
scope:liege.culture = {
has_cultural_parameter = cheaper_court_positions
}
}
multiply = {
value = 0.8
desc = esteemed_hospitality_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_MINUS_POSITIVE"
}
}
}
}
court_position_antiquarian_salary = {
add = {
value = 0.15
desc = COURT_POSITION_SALARY_BREAKDOWN_BASE
format = "BASE_VALUE_FORMAT_DECIMALS"
}
if = {
limit = {
scope:liege.sub_realm_size >= 120
}
multiply = {
value = 1.6
desc = enormous_realm_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
else_if = {
limit = {
scope:liege.sub_realm_size >= 90
}
multiply = {
value = 1.4
desc = large_realm_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
else_if = {
limit = {
scope:liege.sub_realm_size >= 60
}
multiply = {
value = 1.2
desc = medium_realm_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
else_if = {
limit = {
scope:liege.sub_realm_size >= 30
}
multiply = {
value = 1.1
desc = small_realm_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
if = {
limit = {
scope:liege = {
culture = {
has_cultural_era_or_later = culture_era_late_medieval
}
}
}
multiply = {
value = 1.75
desc = culture_era_late_medieval_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
else_if = {
limit = {
scope:liege = {
culture = {
has_cultural_era_or_later = culture_era_high_medieval
}
}
}
multiply = {
value = 1.5
desc = culture_era_high_medieval_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
else_if = {
limit = {
scope:liege = {
culture = {
has_cultural_era_or_later = culture_era_early_medieval
}
}
}
multiply = {
value = 1.25
desc = culture_era_early_medieval_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
if = {
limit = {
scope:liege = {
highest_held_title_tier >= tier_empire
}
}
multiply = {
value = 1.25
desc = empire_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE"
}
}
if = {
limit = {
scope:liege = {
government_has_flag = government_is_tribal
}
}
multiply = {
value = 0.25
desc = tribal_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_MINUS_POSITIVE"
}
}
if = {
limit = {
scope:liege = {
culture = {
has_cultural_parameter = cheaper_court_positions
}
}
}
multiply = {
value = 0.8
desc = esteemed_hospitality_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_MINUS_POSITIVE"
}
}
}
court_position_travel_leader_salary = {
add = {
value = 0.1
desc = COURT_POSITION_SALARY_BREAKDOWN_BASE
format = "BASE_VALUE_FORMAT_DECIMALS"
}
if = {
limit = {
scope:liege = {
culture = {
has_cultural_parameter = cheaper_court_positions
}
}
}
multiply = {
value = 0.8
desc = esteemed_hospitality_salary_mod
format = "BASE_VALUE_FORMAT_DECIMALS_MINUS_POSITIVE"
}
}
}
minor_court_position_task_prestige_salary = 0.2
minor_court_position_prestige_salary = 0.5
medium_court_position_prestige_salary = 1.0
major_court_position_prestige_salary = 2.0
minor_court_position_piety_salary = 0.5
medium_court_position_piety_salary = 1.0
major_court_position_piety_salary = 2.0
minor_court_position_prestige_cost = -0.2
minor_court_position_prestige_revoke_cost = {
value = 25
if = {
limit = {
exists = this
has_character_flag = temporary_court_position_cost_removal
}
multiply = 0
}
}
medium_court_position_prestige_revoke_cost = {
value = 75
if = {
limit = {
exists = this
has_character_flag = temporary_court_position_cost_removal
}
multiply = 0
}
}
major_court_position_prestige_revoke_cost = {
value = 200
if = {
limit = {
exists = this
has_character_flag = temporary_court_position_cost_removal
}
multiply = 0
}
}
# INFLUENCE - EP3
minor_court_position_influence_salary = 0.5
medium_court_position_influence_salary = 1.0
major_court_position_influence_salary = 2.0
minor_court_position_influence_cost = -0.2
minor_court_position_influence_revoke_cost = 25
medium_court_position_influence_revoke_cost = 75
major_court_position_influence_revoke_cost = 200
############################
# COURT POSITION EFFECTIVENESS LEVELS
############################
terrible_effectiveness = 1
poor_effectiveness = 2
average_effectiveness = 3
good_effectiveness = 4
excellent_effectiveness = 5
garuda_prowess_svalue = 8
executioner_control_value = {
scope:actor = {
every_court_position_holder = {
type = executioner_court_position
add = this.aptitude:executioner_court_position
}
}
multiply = 3
}
executioner_control_value_tooltip = { # Keep identical to executioner_control_value
every_court_position_holder = {
type = executioner_court_position
add = this.aptitude:executioner_court_position
}
multiply = 3
}
############################
# COURT POSITION OPINIONS
############################
regular_court_position_opinion = 5
ceremonial_court_position_opinion = 10
regular_camp_officer_opinion = 2
high_camp_officer_opinion = 5
court_jester_position_opinion = {
scope:employee = {
if = {
limit = {
has_no_particular_noble_roots_trigger = yes
}
value = 5
}
else = {
value = -20
}
}
}
adjust_court_position_score_for_unity = {
if = {
limit = {
scope:liege = { government_has_flag = government_is_clan }
scope:employee = {
house ?= scope:liege.house
ai_wants_high_unity = yes
}
}
add = 25
}
else_if = {
limit = {
scope:liege = { government_has_flag = government_is_clan }
scope:employee = {
NOT ={ house ?= scope:liege.house }
ai_wants_low_unity = yes
}
}
add = 25
}
}

View file

@ -0,0 +1,878 @@

# 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
NOT = { 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 = {
NOT = { 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 = {
NOT = { 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
NOT = { 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
}
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
}
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 = 50
tradition_base_cost = 2000
tradition_double_base_cost = {
value = tradition_base_cost
multiply = 2
}
tradition_incompatible_ethos_penalty = 2000
tradition_unfulfilled_criteria_penalty = 3000
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 = { # TODO AO This is an abomination, replace with the below when it works
limit = {
holder = {
OR = {
this = scope:actor
is_vassal_or_below_of = scope:actor
}
}
}
add = 1
}
#save_temporary_scope_as = the_culture_value
#scope:actor = {
# every_sub_realm_county = {
# limit = { culture = scope:the_culture_value }
# add = 1
# }
#}
}
culture_realm_size_larger_30_percent = {
add = culture_realm_size
multiply = 1.3
}
culture_realm_size_cost_scopes = {
every_culture_county = { # TODO AO This is an abomination, replace with the below when it works
limit = {
holder = {
OR = {
this = root
is_vassal_or_below_of = root
}
}
}
add = 1
}
#save_temporary_scope_as = the_culture_value
#root = {
# every_sub_realm_county = {
# limit = { culture = scope:the_culture_value }
# 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
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 = {
exists = dynasty
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 = {
exists = liege
culture = liege.culture
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 = scope:total_counties
}
if = {
limit = { scope:checking_native_language = no }
subtract = scope:my_language_counties
}
#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 = {
NOT = { 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 = {
NOT = { 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 = {
NOT = { 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
}
NOT = { 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 } }
}
}
}
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
}
}
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 = {
exists = liege
liege.culture = {
has_cultural_parameter = eunuch_trait_bonuses
}
has_trait = eunuch_1
}
add = {
value = 30
desc = court_position_eunuch_trait
}
}
else_if = {
limit = {
exists = liege
liege.culture = {
has_cultural_parameter = eunuch_trait_bonuses
}
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,103 @@

# Accuse the Krstjani of Heresy
accuse_the_krstjani_of_heresy_cancellation_cooldown_value = 10
accuse_the_krstjani_of_heresy_failure_cooldown_value = 30
accuse_the_krstjani_of_heresy_critical_failure_cooldown_value = 50
# Negotiate the Danelaw
negotiate_the_danelaw_preferable_opponent_value = {
value = 0
# Add 75 for every held duchy in k_england.
every_held_title = {
limit = {
tier = tier_duchy
kingdom = title:k_england
}
add = 75
}
# 50 for every directly held county in k_england.
every_held_title = {
limit = {
tier = tier_county
kingdom = title:k_england
}
add = 50
}
# And 25 for every vassalised county in k_england.
every_vassal = {
limit = {
any_held_title = {
tier = tier_county
kingdom = title:k_england
}
}
every_held_title = {
limit = {
tier = tier_county
kingdom = title:k_england
}
add = 25
}
}
}
standard_commission_artifact_cooldown_time = {
value = 1825
#if = {
# limit = {
# root.culture = {
# has_cultural_parameter = more_frequent_hunts
# }
# }
# multiply = 0.5
#}
}
found_witch_coven_member_count_value = {
value = 4
}
found_witch_coven_member_percent_value = {
value = 0.6
}
found_witch_coven_member_percent_display_value = {
value = found_witch_coven_member_percent_value
multiply = 100
}
invite_knights_decision_standard_value = {
value = 12
if = {
limit = {
root = {
dynasty ?= { has_dynasty_perk = ep2_activities_legacy_5 }
involved_activity ?= { has_activity_type = activity_tournament }
}
}
add = 6
}
}
invite_knights_decision_upper_value = {
value = invite_knights_decision_standard_value
add = 3
}
fp3_antagonize_character_interaction_cooldown = {
value = 2
if = {
limit = { NOT = { any_character_struggle = { is_struggle_type = persian_struggle } } }
add = 3
}
}
invite_poets_decision_standard_value = {
value = 14
}
invite_poets_decision_upper_value = {
value = invite_poets_decision_standard_value
add = 4
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,10 @@

#Values used for checking distance with the 'squared_distance' trigger.
squared_distance_small = 22500 #150 map-pixels. Roughly one Wales away (top to bottom).
squared_distance_medium = 62500 #250 map-pixels. Roughly one Ireland away (top to bottom).
squared_distance_large = 422500 #650 map-pixels. Roughly one France away (top to bottom).
squared_distance_huge = 722500 #850 map-pixels. Roughly one Holy Roman Empire away (left to right).
squared_distance_almost_massive = 1440000 #1200 map-pixels. Roughly 1.5 Holy Roman Empire away (left to right).
squared_distance_massive = 2402500 #1550 map-pixels.
squared_distance_monstrous = 9000000 #3000 map-pixels

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,114 @@
###############
# DYNASTY
###############
# Dynasty Warfare CB Discount Perk
warfare_legacy_2_discount = 0.8 # 20% discount
# Dynasty Glory Marriage Acceptance Perk
glory_legacy_1_marriage_acceptance = 30
# Dynasty Kin Personal Scheme Success Chance on Dynasty Perk
kin_legacy_4_success_chance = 30
# Dynasty House Scheme Success Chance on Cultural Paramater
cultural_house_personal_scheme_success_chance = 30
# Dynasty Blood 4 extra Genetic Trait chance
blood_legacy_4_chance = 5
blood_legacy_4_extra_player_chance = 5
# What age does Graceful Aging start
kin_legacy_5_start_age = 30
# How often should the effect fire
kin_legacy_5_every_x_year = 5
# Calculate whether the effect should be applied this year
kin_legacy_5_age_modulo = {
value = age
modulo = kin_legacy_5_every_x_year
}
erudition_legacy_5_percentage = 10
customs_legacy_percentage = 30
fp1_adventure_legacy_2_success_chance_seduction = 15
fp1_adventure_legacy_2_prestige_value = {
value = 100
if = {
limit = {
exists = scope:target.primary_title
}
multiply = {
value = scope:target.primary_title.tier
add = 1
}
}
if = {
limit = {
scope:target = {
NOT = {
exists = scope:target.primary_title
}
exists = scope:target.primary_spouse
NOT = {
scope:target.primary_spouse = prev
}
exists = scope:target.primary_spouse.primary_title
}
}
multiply = {
value = scope:target.primary_spouse.primary_title.tier
add = 1
}
}
if = {
limit = {
any_liege_or_above = {
scope:target = {
OR = {
is_close_family_of = prev
is_consort_of = prev
}
}
}
}
multiply = 1.5
}
if = {
limit = {
scope:target = {
is_courtier_of = prev
}
}
multiply = 0.5
}
}
ep2_activities_legacy_2_grand_weddings_discount_value = 0.5
ep2_activities_legacy_2_grand_weddings_acceptance_boost_value = 15
ep2_activities_legacy_1_pilgrimages_discount_value = 0.5
ep2_activities_legacy_1_pilgrimages_learning_add_value = 2
ep2_activities_legacy_1_pilgrimages_learning_learning_per_holy_site_value = 2
ep2_activities_legacy_1_pilgrimages_learning_visitable_holy_sites_cap_value = 5
ep2_activities_legacy_1_pilgrimages_learning_cap_value = {
value = ep2_activities_legacy_1_pilgrimages_learning_learning_per_holy_site_value
multiply = ep2_activities_legacy_1_pilgrimages_learning_visitable_holy_sites_cap_value
}
ep2_activities_legacy_3_tours_modifier_duration_value = 20
#FP3 Values
khvarenah_legacy_marriage_acceptance = 10
khvarenah_legacy_aptitude = 10

View file

@ -0,0 +1,70 @@
#Values used in the education of children
matching_childhood_trait_modifier_value = 20
mismatching_childhood_trait_modifier_value = -20
educator_skill_modifier_factor = 0.4
educator_learning_skill_modifier_factor = 0.2
#Values to trigger outcome events from (How well did the child do?)
education_level_1 = 7 # Required for education rank 2
education_level_2 = 12 # Required for education rank 3
education_level_3 = 17 # Required for education rank 4
#One-time bonuses / penalties
education_small_bonus = 1
education_medium_bonus = 2
education_large_bonus = 3
education_small_penalty = -1
education_medium_penalty = -2
education_large_penalty = -3
#Value for balancing point conversion between educations
point_conversion_factor = 0.5
child_education_conversion_chance = {
add = 0.1
if = {
limit = {
age < 14
}
multiply = 0.2
multiply = 0.3
}
if = {
limit = {
age < 13
}
multiply = 0.4
multiply = 0.5
}
if = {
limit = {
age < 12
}
multiply = 0.6
multiply = 0.7
}
if = {
limit = {
age < 11
}
multiply = 0.8
multiply = 0.9
}
}
child_education_conversion_tooltip_chance = {
add = 1
if = {
limit = {
age >= 15
}
subtract = 1
}
else_if = {
limit = {
age > 10
}
subtract = child_education_conversion_chance
}
}

View file

@ -0,0 +1,325 @@
weapon_inspiration_average_skill_value = {
value = martial
add = {
value = prowess
multiply = 2
}
divide = 2
}
armor_inspiration_average_skill_value = {
value = martial
add = {
value = prowess
multiply = 2
}
divide = 2
}
book_inspiration_average_skill_value = {
value = learning
if = {
limit = {
has_variable = legendary_author
}
add = 1000
}
}
weaver_inspiration_average_skill_value = {
value = diplomacy
}
adventure_inspiration_average_skill_value = {
value = prowess
multiply = 3
add = {
value = diplomacy
multiply = 1.5
}
add = {
value = learning
multiply = 1.5
}
divide = 4
}
artisan_inspiration_average_skill_value = {
value = stewardship
}
smith_inspiration_average_skill_value = {
value = stewardship
multiply = 2
add = {
value = prowess
multiply = 2
}
add = diplomacy
divide = 4
}
alchemy_inspiration_average_skill_value = {
value = learning
}
low_inspiration_skill = 8
medium_inspiration_skill = 12
high_inspiration_skill = 16
#This is how much var:artifact_quality needs to have been improved in events to correspond to high or medium skill.
medium_adventurer_epic_quality_level = 6
high_adventurer_epic_quality_level = 8
more_expensive_inspirations_multiplier_value = 0.5
artifact_brooch_value = {
value = 0
# Base score of up to 50 based on brooch quality.
add = {
value = scope:quality
multiply = 0.5
}
# Brooches made out of certain materials gain bonus points.
if = {
limit = { has_artifact_feature = decoration_material_wire_gold }
add = 25
}
else_if = {
limit = { has_artifact_feature = decoration_material_wire_electrum }
add = 15
}
else_if = {
limit = { has_artifact_feature = decoration_material_wire_silver }
add = 10
}
if = {
# brooches set with gems gain up to 25 points based on the wealth/rarity of the gemstones.
limit = { has_artifact_feature = brooch_decoration_centerpiece_and_adornment }
add = {
value = scope:wealth
multiply = 0.25
}
}
else_if = {
# brooches decorating with filigree gain up to 20 points based on quality, or the artisan's skill.
limit = { has_artifact_feature = brooch_decoration_centerpiece }
add = {
value = scope:quality
multiply = 0.20
}
}
else_if = {
# brooches decorating with just an adornment gain up to 15 points based on wealth/rarity of the adornment
limit = { has_artifact_feature = brooch_decoration_adornment }
add = {
value = scope:wealth
multiply = 0.15
}
}
else = {
# Assume brooch value is just based on wealth
add = {
value = scope:wealth
multiply = 0.10
}
}
}
artifact_wealth_quality_average_value = {
if = {
limit = {
exists = var:wealth
exists = var:quality
}
value = var:wealth
add = var:quality
multiply = 0.5
}
else_if = {
limit = {
exists = scope:wealth
exists = scope:quality
}
value = scope:wealth
add = scope:quality
multiply = 0.5
}
else_if = {
limit = {
exists = var:quality
}
value = var:quality
}
else_if = {
limit = {
exists = scope:quality
}
value = scope:quality
}
else_if = {
limit = {
exists = var:wealth
}
value = var:wealth
}
else_if = {
limit = {
exists = scope:wealth
}
value = scope:wealth
}
else = {
value = 20
}
}
artifact_wealth_quality_combined_value = {
value = 0
if = {
limit = { exists = scope:wealth }
add = scope:wealth
}
if = {
limit = { exists = scope:quality }
add = scope:quality
}
}
# Modifiers to decide what armor type someone wants to make/is created
artifact_armor_type_mail_weight_value = {
value = 0
if = {
limit = {
current_date >= 1100.1.1 #Chainmail arrives in India during 12th century
culture_has_south_asian_heritage_pillar_trigger = yes
}
add = 10
}
}
artifact_armor_type_plate_weight_value = {
value = 0
if = {
limit = {
#Full plate armor developed and became more wide-spread (mostly) during the late middle ages
current_date >= 1250.1.1
}
add = 10
}
if = {
limit = {
#Full plate armor developed and became more wide-spread (mostly) during the late middle ages
current_date >= 1300.1.1
}
add = 10
}
if = {
limit = {
#Mostly used in Europe (at least initially)
culture_has_european_heritage_pillar_trigger = yes
}
multiply = 2
}
}
artifact_armor_type_scale_weight_value = {
value = 0
if = {
limit = {
#Fairly common everywhere, but use in Europe had declined
culture_has_european_heritage_pillar_trigger = yes
NOR = {
culture = { has_cultural_pillar = heritage_byzantine }
culture = { has_cultural_pillar = heritage_caucasian }
culture = { has_cultural_pillar = heritage_turkic }
}
}
add = -10
}
if = {
limit = {
# Much more commonly used by the nomadic mongols
culture = { has_cultural_pillar = heritage_mongolic }
}
add = 30
}
}
artifact_armor_type_lamellar_weight_value = {
value = 0
if = {
#More common in the Middle East and Asia
limit = {
OR = {
culture_has_mena_heritage_pillar_trigger = yes
culture_has_asian_heritage_pillar_trigger = yes
}
}
add = 30
}
}
artifact_armor_type_laminar_weight_value = {
value = 0
if = {
#More common in the Middle East and Asia
limit = {
OR = {
culture_has_asian_heritage_pillar_trigger = yes
culture = { has_cultural_pillar = heritage_ugro_permian }
culture_has_mena_heritage_pillar_trigger = yes
}
}
add = 30
}
}
artifact_armor_type_brigandine_weight_value = {
value = 0
if = {
limit = {
culture_has_mena_heritage_pillar_trigger = yes
culture_has_asian_heritage_pillar_trigger = yes
}
add = 30
}
if = {
limit = {
OR = {
AND = {
current_date >= 1240.1.1 #Reached eastern Europe after the Mongol invasion
culture_has_east_european_heritage_pillar_trigger = yes
}
AND = {
current_date >= 1270.1.1 #Reached the rest of Europe some centuries later
culture_has_european_heritage_pillar_trigger = yes
}
}
}
add = 10
}
}
# Used to set quality and wealth for banners found after a battle
conquered_banner_value = {
value = 10
if = {
limit = {
scope:epic_loser = { highest_held_title_tier >= tier_empire }
}
add = 90
}
if = {
limit = {
scope:epic_loser = { highest_held_title_tier = tier_kingdom }
}
add = 60
}
if = {
limit = {
scope:epic_loser = { highest_held_title_tier = tier_duchy }
}
add = 20
}
}
artifact_durability_percent = {
value = artifact_durability
divide = artifact_max_durability
}

View file

@ -0,0 +1,687 @@
# Referenced from code, in code value will be clamped between NRoyalCourt::COURT_GRANDEUR_MIN and NRoyalCourt::COURT_GRANDEUR_MAX
# root = character calculating for
court_grandeur_minimum_expected_value = {
value = sub_realm_size
divide = 4
if = { # Elective Empires have slightly lower expectations (i.e. the HRE)
limit = {
any_held_title = {
tier = tier_empire
has_title_law_flag = elective_succession_law
}
}
divide = 2
}
if = { # Add a baseline depending on rank
limit = {
highest_held_title_tier = tier_empire
}
add = 20
}
else = {
add = 10
}
if = {
limit = {
government_has_flag = government_is_tribal
}
multiply = 0
add = court_grandeur_current
}
}
# Referenced from code for the multiplier of above/below expected court grandeur level modifiers
court_grandeur_level_difference_modifier_multiplier = {
value = 1
if = { # Small realms receives larger bonuses for being above their expected level
limit = {
court_grandeur_current_level >= court_grandeur_minimum_expected_level
}
value = 100 # Realm size baseline
divide = {
value = sub_realm_size
min = 1
}
min = 1
max = 4
}
else = { # Big realms receives larger penalties for being below their expected level
value = sub_realm_size
multiply = 0.025
min = 1
max = 4
}
}
delusions_of_grandeur_level_difference = {
value = court_grandeur_minimum_expected_level
add = 6
}
ep1_court_grandeur_marriage_acceptance_value = {
scope:actor = {
add = court_grandeur_current_level
subtract = court_grandeur_minimum_expected_level
multiply = 5
if = {
limit = {
scope:recipient.faith = {
faith_hostility_level = {
target = scope:actor.faith
value = faith_astray_level
}
}
}
divide = 2
}
else_if = {
limit = {
scope:recipient.faith = {
faith_hostility_level = {
target = scope:actor.faith
value = faith_hostile_level
}
}
}
divide = 3
}
else_if = {
limit = {
scope:recipient.faith = {
faith_hostility_level = {
target = scope:actor.faith
value = faith_evil_level
}
}
}
divide = 4
}
}
}
ep1_court_grandeur_marriage_acceptance_value_penalty = {
scope:actor = {
add = court_grandeur_current_level
subtract = court_grandeur_minimum_expected_level
multiply = 10
}
}
grandeur_loss_on_succession_value = {
value = -10
if = { # 100 Dread makes you lose 5 more grandeur
limit = {
dread > 0
}
subtract = {
value = dread
divide = 20
}
}
if = { # 100 Tyranny makes you lose 10 more grandeur
limit = {
tyranny > 0
}
subtract = {
value = tyranny
divide = 10
}
}
if = {
limit = {
exists = primary_heir
primary_heir = {
has_trait = ambitious
}
}
multiply = 0.5
}
if = {
limit = {
exists = primary_title
primary_title = {
has_order_of_succession = election
}
}
multiply = 0.5
}
}
# The unmodified, average cost of sponsoring an Inspiration.
basic_fund_inspiration_cost = {
value = 100
}
inspiration_cost_skill_multiplier = 0.5
quality_bonus_per_skill_level_value = 2 # A character with an average skill value of 20 will produce artifacts with +40 quality
# Calculates the total number of characters in the world who have an active Inspiration.
num_world_inspired_characters_value = {
value = 0
every_inspired_character = {
limit = { has_completed_inspiration = no }
add = 1
}
}
# Calculates the total number of characters in the world who currently have a Royal Court.
num_world_royal_courts_value = {
value = 0
every_character_with_royal_court = {
add = 1
}
}
# How many new inspirations can be created by inspiration_system.0005 each year if we are below the limit.
max_new_inspirations_per_year_value = {
value = 3 # 16% of the existing world region have a chance to get an inspired character
add = {
value = 15 #if every royal court is wealthy enough, we generate 1x nb of world region inspired characters
multiply = {
value = 0
add = {
every_character_with_royal_court = {
limit = {
OR = {
is_ai = no
AND = {
is_ai = yes
short_term_gold >= ai_inspiration_desired_gold_value
}
}
}
add = 1
}
divide = {
every_character_with_royal_court = {
add = 1
}
min = 1 # security to avoid dividing by 0 if there is none royal court
}
}
}
ceiling = yes
}
}
# The 'ideal' limit for how many total inspirations will exist in the world at a time, per royal court.
# Scripted effects can bring us over this value, but inspiration_system.0005 will not generate new inspirations until we fall back under it.
ideal_total_inspirations_per_royal_court_value = 1.875
ideal_total_world_inspirations = {
value = num_world_royal_courts_value
multiply = ideal_total_inspirations_per_royal_court_value
}
# How many months an inspired character will wait around in a court for before moving on to a new one.
inspired_character_recent_arrival_duration_value = {
value = 15
# Adds -3 or +3 months, if they are (im)patient.
if = {
limit = { has_trait = impatient }
subtract = 3
}
else_if = {
limit = { has_trait = patient }
add = 3
}
# Adds between +3 and -3 months before moving on, based on ai_energy.
add = {
value = ai_energy
multiply = -0.03
round = yes
}
}
# How many years a courtier must serve in a specific court to get the court type trait
years_to_gain_court_type_trait = 5
# The trigger to check time served ("days_since_joined_court") needs days, so we convert the years here
days_to_gain_court_type_trait = {
add = years_to_gain_court_type_trait
multiply = 365
}
cgv_level_threshold_court_type_trait_1 = 5
cgv_level_threshold_court_type_trait_2 = 8
# Court Type Values
court_intrigue_spymaster_task_bonus = 20
court_administrative_steward_task_bonus = 30
# Hold Court Grace Values
hold_court_grace_period_years = 1825
hold_court_grace_period_comparison = {
value = 1
add = {
value = current_year
subtract = var:last_hold_court_date
subtract = hold_court_grace_period_years # 5
multiply = 0.1
min = 0
max = 1
}
# example
# 1066 - 1054 = 12 - 5 = 7 * 0.1 = 0.7 + 1 = 1.7
# subtract 5 as this is the hard cooldown, we only want to increase weight for years beyond that
# modifier caps at 2 (10 years since last hold court)
}
# To be used for court positions that are very mobile and requires a healthy and strong body
court_position_aptitude_high_penalty_value = {
if = {
limit = {
is_playable_character = yes
}
add = {
value = -20
desc = court_position_landed_penalty
}
}
if = {
limit = {
has_trait = maimed
}
add = {
value = -25
desc = court_position_maimed_trait
}
}
if = {
limit = {
has_trait = wounded_3
}
add = {
value = -25
desc = court_position_wounded_3_trait
}
}
else_if = {
limit = {
has_trait = wounded_2
}
add = {
value = -15
desc = court_position_wounded_2_trait
}
}
#Wounded_1 is ok since it's not a serious injury... yet
if = {
limit = {
has_trait = blind
}
add = {
value = -50
desc = court_position_blind_trait
}
}
if = {
limit = {
has_trait = infirm
}
add = {
value = -75
desc = court_position_infirm_trait
}
}
}
# To be used for court positions that are NOT very mobile and doesn't really require a strong/healthy body
court_position_aptitude_low_penalty_value = {
if = {
limit = {
is_playable_character = yes
}
add = {
value = -20
desc = court_position_landed_penalty
}
}
if = {
limit = {
has_trait = maimed
}
add = {
value = -15
desc = court_position_maimed_trait
}
}
if = {
limit = {
has_trait = wounded_3
}
add = {
value = -15
desc = court_position_wounded_3_trait
}
}
else_if = {
limit = {
has_trait = wounded_2
}
add = {
value = -10
desc = court_position_wounded_2_trait
}
}
#Wounded_1 is ok since it's not a serious injury... yet
if = {
limit = {
has_trait = infirm
}
add = {
value = -75
desc = court_position_infirm_trait
}
}
}
court_position_candidate_score_base_value = {
scope:liege = {
# Not very likely to hire rivals
if = {
limit = {
has_relation_rival = scope:employee
}
add = -1000
}
if = {
limit = {
NOT = { exists = scope:firing_court_position }
scope:employee = { has_any_court_position = yes }
}
add = -150
}
}
}
# Aptitude goes from 1 to 5, so the score here goes from 4 to 20 (except significantly discouraging hiring someone who isn't the best)
court_position_candidate_aptitude_value = {
scope:employee = {
# Does the liege have a better candidate that they should be hiring instead?
if = {
limit = {
scope:highest_available_aptitude > scope:employee_aptitude
}
add = -125
}
# More likely to pick a courtier with a high aptitude, less likely to pick one with low
add = {
value = scope:employee_aptitude
multiply = 4
}
}
}
court_position_debt_considerations_value = {
scope:liege = {
if = {
limit = {
debt_level >= 5
}
add = -5000
}
else_if = {
limit = {
debt_level >= 4
}
add = -1000
}
else_if = {
limit = {
debt_level >= 3
}
add = -500
}
else_if = {
limit = {
debt_level >= 2
}
add = -200
}
else_if = {
limit = {
debt_level >= 1
}
add = -50
}
if = { # Needs money for WAR!
limit = {
ai_has_conqueror_personality = yes
}
add = -100
}
}
}
court_position_seneschal_debt_considerations_value = { # Regardless of debt, having a seneschal is good if your control is abysmal
scope:liege = {
if = {
limit = {
is_at_war = no
NOT = {
any_held_title = {
tier = tier_county
county_control < 100
}
}
}
if = {
limit = {
debt_level >= 5
}
add = -5000
}
else_if = {
limit = {
debt_level >= 4
}
add = -1000
}
else_if = {
limit = {
debt_level >= 3
}
add = -500
}
else_if = {
limit = {
debt_level >= 2
}
add = -200
}
else_if = {
limit = {
debt_level >= 1
}
add = -50
}
}
}
}
# This is balanced against a typical base score of 50
# And a typical skill score of 12 (aptitude of 3)
# We want to sit at roughly 10% of income spent
# So 10% income spent needs to give -62 score
# So the cost of them all we multiply by 600, for 10% = -60
# While the cost of the position itself with 100. 5 positions of 2% each will then each get -2
court_position_liege_score_base_value = {
value = 0
scope:liege = {
subtract = {
# Less likely to hire for the really expensive positions
# But this is a pretty minor impact
value = 100
multiply = scope:percent_of_monthly_gold_income
}
subtract = {
# Value decreases as cost of all positions increase
value = 600
if = {
limit = {
ai_should_focus_on_building_in_their_capital = yes
}
add = 400
}
multiply = scope:percent_of_monthly_gold_income_all_positions
}
}
}
order_mass_eviction_decision_cost_value = 350
exoticise_a_grand_hall_decision_cost_value = {
# A nicely hefty base cost.
value = massive_gold_value
# Modified down a bit for architect.
if = {
limit = { has_trait = architect }
multiply = 0.75
}
}
# Check the guts of the value inside a sub-value so that we can script a fallback.
ep1_decision_0111_proportional_cgv_actual_gain_value = {
value = 0
# Add the target's CGV.
add = court_grandeur_current
# Subtract root's CGV to get the difference.
subtract = root.court_grandeur_current
# Reduce it down a bit.
multiply = 0.5
# Round it out.
round = yes
}
ep1_decision_0111_proportional_cgv_gain_value = {
value = 0
# Import the real tally from elsewhere.
add = ep1_decision_0111_proportional_cgv_actual_gain_value
# Fallback: we can't set a minimum, since we can have values either side of zero. If we hit zero, default to 1 instead.
if = {
limit = {
ep1_decision_0111_proportional_cgv_actual_gain_value = 0
}
add = 1
}
}
ep1_decision_0111_proportional_prestige_cost_value = {
# Carry over our CGV differential.
value = ep1_decision_0111_proportional_cgv_gain_value
# Invert it: if you lose CGV, we want you to gain prestige, and if you gain CGV, you should lose prestige.
multiply = -1
# Whilst we're here (and numbers are low), round things.
round = yes
# Make the cost a noteworthy fraction.
multiply = 50
}
ep1_flavour_0001_scion_minimum_age_value = 18
ep1_flavour_0001_scion_parent_minimum_age_value = {
# Base of 20 for something kinda sensible.
value = 20
# Plus the scion's minimum age.
add = ep1_flavour_0001_scion_minimum_age_value
}
# Scripted value used so we can reference it in a custom tooltip.
ep1_flavour_0021_courts_lose_opinion_value = 20
# Aaaaand a further linked value so that the loc plays nicely; otherwise we get a double negative of "loses -20".
ep1_flavour_0021_courts_lose_opinion_actual_value = {
value = ep1_flavour_0021_courts_lose_opinion_value
multiply = -1
}
# Scripted value used so we can reference it in a custom tooltip.
ep1_flavour_0021_courts_gain_opinion_value = 20
# As the name says... value of gained prestige per level of food amenities at feasts!
ep1_feast_prestige_per_food_amenities_value = {
value = medium_prestige_gain
if = {
limit = {
amenity_level = { type = court_food_quality value >= max_amenity_level }
}
add = {
value = medium_prestige_gain
multiply = 0.4
}
}
else_if = {
limit = {
amenity_level = { type = court_food_quality value = very_high_amenity_level }
}
add = {
value = medium_prestige_gain
multiply = 0.25
}
}
else_if = {
limit = {
amenity_level = { type = court_food_quality value = medium_amenity_level }
}
add = {
value = medium_prestige_gain
multiply = -0.25
}
}
else_if = {
limit = {
amenity_level = { type = court_food_quality value <= low_amenity_level }
}
add = {
value = medium_prestige_gain
multiply = -0.4
}
}
}
challenge_for_artifact_prestige_cost_value = {
value = 150
scope:target = {
if = {
limit = { rarity = masterwork }
multiply = 2
}
else_if = {
limit = { rarity = famed }
multiply = 3
}
else_if = {
limit = { rarity = illustrious }
multiply = 4
}
}
}
challenge_for_artifact_prestige_limit_value = {
value = challenge_for_artifact_prestige_cost_value
divide = 3
min = 150
}
ep1_fund_inspiration_2100_rival_difference = {
add = scope:other_inspiration_owner.inspiration.inspiration_gold_invested
subtract = scope:inspiration_owner.inspiration.inspiration_gold_invested
}
50_percent_of_owned_gold = {
value = current_gold_value
multiply = 0.5
min = 1
}
80_percent_of_owned_gold = {
value = current_gold_value
multiply = 0.8
min = 1
}

View file

@ -0,0 +1,126 @@
###################
# FACTION VALUES #
###################
base_discontent_progress = 3
minor_discontent_gain = 10
medium_discontent_gain = 20
major_discontent_gain = 30
minor_discontent_loss = -10
medium_discontent_loss = -20
major_discontent_loss = -30
massive_discontent_loss = -50
faction_war_white_peace_cooldown = 5 # years
faction_war_defeat_cooldown = 10 # years
faction_nation_fracturing_war_white_peace_cooldown = 15 # years
faction_nation_fracturing_war_defeat_cooldown = 30 # years
liberty_war_victory_cooldown = 5
# Values for the AI to evaluate how powerful factions are relative to each other.
faction_power_minimal = {
value = faction_power_threshold
multiply = 0.25
}
faction_power_halfway_threshold = {
value = faction_power_threshold
multiply = 0.50
}
faction_power_pushing_threshold = {
value = faction_power_threshold
multiply = 0.75
}
faction_weight_factor_power_minimal_penalty = 0.5
faction_weight_factor_power_halfway_threshold = 1.20 # +20% total faction weight
faction_weight_factor_power_pushing_threshold = 1.5 # +50% total faction weight
faction_weight_factor_power_exceeds_threshold = 2 # +100% total faction weight
faction_discontent_for_extra_power = {
value = base_discontent_progress
multiply = { # We want discontent to increase gradually as a faction grows their military power.
value = faction_power
subtract = faction_power_threshold
divide = faction_power_threshold # To get the % over the power threshold we are.
multiply = 4 # At 25% bonus faction power, discontent increases 100% faster (compared to the base gain).
}
round = yes # To avoid having it say +0...
max = 10 # Minimum 8 months to reach 100% discontent (no insta-revolts, no matter how powerful the faction is).
}
total_county_levies = {
value = 0
# Get the base levies from each province.
every_in_de_jure_hierarchy = {
limit = {
tier = tier_barony
}
title_province = {
add = building_levies
}
}
# Levy size multipliers (excluding ruler-specific modifiers, such as Martial skill).
multiply = {
# 100% Levy Base
value = 1
# Adds bonus levies from Development (at base 20 development, +20% levies).
add = {
add = development_level
multiply = 0.01
}
# Adds bonus levies from cultural innovations.
if = {
limit = {
culture = {
has_innovation = innovation_bannus
}
}
add = 0.1
}
}
}
county_levies_to_raise = {
value = total_county_levies
# Will summon between 75% and 175% of total county levy strength, depending on how much they hate you (most commonly will be 95-110% though, scores between -20 and -35 are the most common)
multiply = {
value = county_opinion
multiply = -0.01
add = 0.5
}
min = {
value = building_max_garrison
multiply = 1.2
}
}
county_maa_to_raise = {
value = total_county_levies
# Based on county levy strength, summon an appropiate number of MAAs that scales with popular opinion.
multiply = {
value = county_opinion
multiply = -0.00003
}
round = yes
min = 1
}
peasant_war_victory_county_control_loss = -75
peasant_war_starts_county_control_loss = -25
liege_opinion_value = {
value = scope:opinion_of_current_liege
}
# How many years of truce do you get with a faction's members for appointing their leader as co-emperor?
faction_counter_offer_appointed_co_emperor_value = 10

View file

@ -0,0 +1,183 @@
slower_game_rule_value = 0.5
significantly_slower_game_rule_value = 0.25
faster_game_rule_value = 2
significantly_faster_game_rule_value = 4
random_harm_spiteful_diverse_skilled_value = 15
random_harm_spiteful_multi_skilled_value = 18
random_harm_spiteful_specialist_skilled_value = 23
random_harm_spiteful_perks_in_tree_total_value = 20
harm_game_rule_likelihood_minor_increase_value = 0.1
harm_game_rule_likelihood_medium_increase_value = 0.25
harm_game_rule_likelihood_major_increase_value = 0.4
harm_game_rule_likelihood_value = {
value = 0
# Set a base from the for various game rule configurations.
## Default.
if = {
limit = {
OR = {
has_game_rule = harm_dangerous
has_game_rule = harm_spiteful
}
}
add = 1
}
## Reduced.
else_if = {
limit = { has_game_rule = harm_illusion_of_safety }
add = 0.25
}
## Disabled.
### Covered in the trigger.
## Increased.
else_if = {
limit = {
OR = {
has_game_rule = harm_tragic
has_game_rule = harm_tragically_spiteful
}
}
add = 1.5
}
## Increased even further for interesting characters.
if = {
limit = {
# Must have an appropriate game rule.
OR = {
has_game_rule = harm_spiteful
has_game_rule = harm_tragically_spiteful
}
}
# And be suitably worthwhile!
## Highly skilled.
if = {
limit = {
calc_true_if = {
amount >= 4
diplomacy >= random_harm_spiteful_diverse_skilled_value
martial >= random_harm_spiteful_diverse_skilled_value
stewardship >= random_harm_spiteful_diverse_skilled_value
intrigue >= random_harm_spiteful_diverse_skilled_value
learning >= random_harm_spiteful_diverse_skilled_value
prowess >= random_harm_spiteful_diverse_skilled_value
}
calc_true_if = {
amount >= 2
diplomacy >= random_harm_spiteful_multi_skilled_value
martial >= random_harm_spiteful_multi_skilled_value
stewardship >= random_harm_spiteful_multi_skilled_value
intrigue >= random_harm_spiteful_multi_skilled_value
learning >= random_harm_spiteful_multi_skilled_value
prowess >= random_harm_spiteful_multi_skilled_value
}
OR = {
diplomacy >= random_harm_spiteful_specialist_skilled_value
martial >= random_harm_spiteful_specialist_skilled_value
stewardship >= random_harm_spiteful_specialist_skilled_value
intrigue >= random_harm_spiteful_specialist_skilled_value
learning >= random_harm_spiteful_specialist_skilled_value
prowess >= random_harm_spiteful_specialist_skilled_value
}
}
add = harm_game_rule_likelihood_medium_increase_value
}
## Positive genetic traits.
### First, we check number.
#### We don't tolerate excess.
if = {
limit = { num_of_good_genetic_traits >= 2 }
add = harm_game_rule_likelihood_minor_increase_value
}
#### Let alone impractical excess.
else_if = {
limit = { num_of_good_genetic_traits >= 3 }
add = harm_game_rule_likelihood_medium_increase_value
}
### Then we check quality.
#### Some buffs.
if = {
limit = {
OR = {
has_trait = beauty_good_1
has_trait = intellect_good_1
has_trait = physique_good_1
}
}
add = harm_game_rule_likelihood_minor_increase_value
}
#### Clearly doing some breeding.
else_if = {
limit = {
OR = {
has_trait = beauty_good_2
has_trait = intellect_good_2
has_trait = physique_good_2
}
}
add = harm_game_rule_likelihood_medium_increase_value
}
#### Remember: you opted into this.
else_if = {
limit = {
OR = {
has_trait = beauty_good_3
has_trait = intellect_good_3
has_trait = physique_good_3
}
}
add = harm_game_rule_likelihood_major_increase_value
}
## Notable levels of prestige or piety.
if = {
limit = {
OR = {
prestige_level >= max_prestige_level
piety_level >= max_piety_level
}
}
add = harm_game_rule_likelihood_minor_increase_value
}
## Very young or getting old & in charge of an important realm.
if = {
limit = {
OR = {
AND = {
age <= 28
OR = {
highest_held_title_tier >= tier_kingdom
realm_size >= monumental_realm_size
}
}
AND = {
age >= 66
OR = {
highest_held_title_tier >= tier_kingdom
realm_size >= monumental_realm_size
}
}
}
}
add = harm_game_rule_likelihood_medium_increase_value
}
## Has capped out a noble number of perk trees.
if = {
limit = {
calc_true_if = {
amount >= 2
perks_in_diplomacy_lifestyle >= random_harm_spiteful_perks_in_tree_total_value
perks_in_martial_lifestyle >= random_harm_spiteful_perks_in_tree_total_value
perks_in_stewardship_lifestyle >= random_harm_spiteful_perks_in_tree_total_value
perks_in_intrigue_lifestyle >= random_harm_spiteful_perks_in_tree_total_value
perks_in_learning_lifestyle >= random_harm_spiteful_perks_in_tree_total_value
}
}
add = harm_game_rule_likelihood_medium_increase_value
}
}
# But uhhh, make sure it never gets too ungodly kill-crazy.
max = 2.5
}

View file

@ -0,0 +1,186 @@
###################
# GOVERNMENT VALUES #
###################
clan_government_levies_default = 0.04
clan_government_levies_player = 0.25
clan_government_tax_default = 0.02
clan_government_tax_player = 0.25
clan_government_tax_collector_aptitude_multiplier = {
value = {
if = {
limit = {
check_tax_collector_aptitude = {
CHARACTER = scope:tax_collector
VALUE = 5
}
}
add = 15
}
else_if = {
limit = {
check_tax_collector_aptitude = {
CHARACTER = scope:tax_collector
VALUE = 4
}
}
add = 10
}
else_if = {
limit = {
check_tax_collector_aptitude = {
CHARACTER = scope:tax_collector
VALUE = 3
}
}
add = 6
}
else_if = {
limit = {
check_tax_collector_aptitude = {
CHARACTER = scope:tax_collector
VALUE = 2
}
}
add = 3
}
else_if = {
limit = {
check_tax_collector_aptitude = {
CHARACTER = scope:tax_collector
VALUE = 1
}
}
add = 1
}
else = {
add = 0
}
}
}
clan_government_levies_max_possible = {
value = clan_government_levies_default
}
clan_government_tax_max_possible = {
value = clan_government_tax_default
}
default_tax_obligation_ai_will_do = {
value = 1
if = {
limit = {
scope:is_current_obligation = yes
}
add = 1
}
}
tax_obligation_base_ai_will_do = {
value = default_tax_obligation_ai_will_do
subtract = scope:num_slots_with_obligation # Give the AI some variety
}
tax_obligation_half_of_slot = {
value = scope:num_vassal_slots
divide = 2
}
#Feudal government values
exempt_feudal_tax = 0
low_feudal_tax = 0.025
normal_feudal_tax = 0.1
high_feudal_tax = 0.15
extortionate_feudal_tax = 0.25
feudal_tax_exempt_level = 0
feudal_tax_low_level = 1
feudal_tax_normal_level = 2
feudal_tax_high_level = 3
feudal_tax_extortionate_level = 4
feudal_levies_exempt_level = 0
feudal_levies_low_level = 1
feudal_levies_normal_level = 2
feudal_levies_high_level = 3
feudal_levies_extortionate_level = 4
scutage_contract_tax = 0.5
scutage_contract_tax_tooltip = {
value = scutage_contract_tax
multiply = 100
}
scutage_contract_levies = -0.75
scutage_contract_levies_tooltip = {
value = scutage_contract_levies
multiply = 100
multiply = -1
}
march_contract_taxes = -0.5
march_contract_taxes_tooltip = {
value = march_contract_taxes
multiply = 100
multiply = -1
}
castellan_contract_levies = 0.5
castellan_contract_levies_tooltip = {
value = castellan_contract_levies
multiply = 100
}
palatinate_contract_taxes = -0.2
palatinate_contract_levies = -0.2
palatinate_contract_taxes_tooltip = {
value = palatinate_contract_taxes
multiply = 100
multiply = -1
}
fortification_rights_contract_taxes = -0.10
fortification_rights_contract_taxes_tooltip = {
value = fortification_rights_contract_taxes
multiply = 100
multiply = -1
}
succession_rights_contract_law_cost = 0.25
succession_rights_contract_law_cost_tooltip = {
value = succession_rights_contract_law_cost
multiply = 100
}
war_declaration_rights_allowed_cost_reduction = 0.5
war_declaration_rights_allowed_cost_reduction_tooltip = {
value = war_declaration_rights_allowed_cost_reduction
multiply = 100
}
max_contract_changes = 3
family_entrepreneurship_tax = 1
family_entrepreneurship_tax_tooltip = {
value = family_entrepreneurship_tax
multiply = 100
}
centralized_power_levies = 0.5
centralized_power_levies_tooltip = {
value = centralized_power_levies
multiply = 100
}
centralized_power_tax = -1
ghazi_religious_war_cost_reduction = 0.5
ghazi_religious_war_cost_reduction_tooltip = {
value = ghazi_religious_war_cost_reduction
multiply = 100
}
ghazi_prestige_cost_increments = 0.25
ghazi_prestige_cost_increments_tooltip = {
value = ghazi_prestige_cost_increments
multiply = 100
}
#maguh_development_value = {
# value = 0.01
# multiply = clan_government_tax_collector_aptitude_multiplier
#}

View file

@ -0,0 +1,53 @@

#Domesday Book Quality Levels
stewardship_domain_special_1500_domesday_perfect_quality = 24
stewardship_domain_special_1500_domesday_excellent_quality = 20
stewardship_domain_special_1500_domesday_high_quality = 15
stewardship_domain_special_1500_domesday_mediocre_quality = 10
stewardship_domain_special_1500_domesday_poor_quality = 5
#How much more monthly tax would character have to pay to their liege if obligation level was increased
stewardship_duty_5021_monthly_tax_difference = {
value = 0
if = {
limit = { vassal_contract_obligation_level:feudal_government_taxes = feudal_tax_exempt_level }
add = low_feudal_tax
subtract = feudal_tax_exempt_level
}
else_if = {
limit = { vassal_contract_obligation_level:feudal_government_taxes = feudal_tax_low_level }
add = normal_feudal_tax
subtract = low_feudal_tax
}
else_if = {
limit = { vassal_contract_obligation_level:feudal_government_taxes = feudal_tax_normal_level }
add = high_feudal_tax
subtract = normal_feudal_tax
}
else = { #Else because vassal obligation doesn't go any higher
add = extortionate_feudal_tax
subtract = high_feudal_tax
}
multiply = monthly_character_income
}
#5 years of tax difference
stewardship_duty_5021_big_money = {
value = stewardship_duty_5021_monthly_tax_difference
multiply = 120 #120 months = 10 years
divide = 5
ceiling = yes
multiply = 5
}
#2.5 years of tax difference
stewardship_duty_5021_small_money = {
value = stewardship_duty_5021_monthly_tax_difference
multiply = 60 #60 months = 5 years
divide = 5
ceiling = yes
multiply = 5
}

View file

@ -0,0 +1,228 @@

#Values used for checking relative strengths of neighbors
hold_court_8010_75_strength_value = {
value = ROOT.max_military_strength
multiply = 0.75
}
hold_court_8010_border_length_value = {
value = 0
every_sub_realm_county = {
limit = { hold_court_8010_county_trigger = yes }
add = 1
}
if = {
limit = { has_trait = paranoid }
add = 1
}
if = {
limit = { has_trait = lazy }
add = 1
}
if = {
limit = { has_trait = craven }
add = 1
}
if = {
limit = { is_powerful_vassal = yes }
add = 1
}
}
hold_court_holding_cost_cheaper_value = {
value = main_building_tier_1_cost
multiply = 0.8
}
hold_court_holding_cost_half_value = {
value = main_building_tier_1_cost
multiply = 0.8
divide = 2
}
hold_court_holding_cost_double_value = {
value = main_building_tier_1_cost
multiply = 2
}
hold_court_holding_cost_architect_cheaper_value = {
value = main_building_tier_1_cost
multiply = 0.6
}
hold_court_holding_cost_architect_expensive_value = {
value = main_building_tier_1_cost
multiply = 1.2
}
hold_court_8180_contract_weak_value = {
value = 2
}
hold_court_8180_contract_average_value = {
value = 3
}
hold_court_8180_contract_good_value = {
value = 4
}
hold_court_8180_contract_great_value = {
value = 5
}
hold_court_8180_contract_value = {
value = 0
if = {
limit = { scope:contract_lord.var:hc_8180_contract_var = 1 }
add = hold_court_8180_contract_good_value
}
if = {
limit = { scope:contract_lord.var:hc_8180_contract_var = 2 }
add = hold_court_8180_contract_weak_value
}
if = {
limit = { scope:contract_lord.var:hc_8180_contract_var = 3 }
add = hold_court_8180_contract_weak_value
}
if = {
limit = { scope:contract_lord.var:hc_8180_contract_var = 4 }
add = hold_court_8180_contract_average_value
}
if = {
limit = { scope:contract_lord.var:hc_8180_contract_var = 5 }
add = hold_court_8180_contract_good_value
}
if = {
limit = { scope:contract_lord.var:hc_8180_contract_var = 6 }
add = hold_court_8180_contract_good_value
}
if = {
limit = { scope:contract_lord.var:hc_8180_contract_var = 7 }
add = hold_court_8180_contract_average_value
}
if = {
limit = { scope:contract_lord.var:hc_8180_contract_var = 8 }
add = hold_court_8180_contract_average_value
}
if = {
limit = { scope:contract_lord.var:hc_8180_contract_var = 9 }
add = hold_court_8180_contract_great_value
}
if = {
limit = { scope:contract_lord.var:hc_8180_contract_var = 10 }
add = hold_court_8180_contract_average_value
}
if = {
limit = { scope:contract_lord.var:hc_8180_contract_var = 11 }
add = hold_court_8180_contract_average_value
}
}
hold_court_8180_artifact_value = {
value = scope:vassal_artifact.var:quality
divide = 2
}
court_8190_vassal_modifier_value = {
value = 0
subtract = steward_promote_culture_base_total
multiply = -0.10
}
court_8190_county_value = {
value = 0
if = {
limit = {
any_realm_county = { culture = scope:other_vassal.culture }
}
every_realm_county = {
limit = { culture = scope:other_vassal.culture }
add = 1
}
}
}
court_8200_pope_modifier_value = {
value = 0
subtract = court_chaplain_conversion_base_total
multiply = -0.15
}
court_8200_vassal_modifier_value = {
value = 0
subtract = court_chaplain_conversion_base_total
multiply = -0.10
}
court_8200_county_value = {
value = 0
if = {
limit = {
any_realm_county = { faith = scope:infidel_vassal.faith }
}
every_realm_county = {
limit = { faith = scope:infidel_vassal.faith }
add = 1
}
}
}
court_8260_faction_value = {
value = 0
if = {
limit = { exists = scope:vassal_faction }
scope:vassal_faction = {
every_faction_member = { add = 1 }
}
}
}
court_8090_half_building_cost_value = {
value = medium_gold_value
divide = 2
max = 50
}
court_8090_discount_building_cost_value = {
value = medium_gold_value
divide = 3
multiply = 2
max = 65
}
hold_court_8330_other_vassals_count = {
value = 0
every_vassal = {
limit = {
NOR = {
has_vassal_stance = barons_and_minor_landholders
trigger_if = {
limit = { exists = scope:vassal_1 }
has_same_vassal_stance_as_trigger = { COMPARE = scope:vassal_1 }
}
trigger_if = {
limit = { exists = scope:vassal_2 }
has_same_vassal_stance_as_trigger = { COMPARE = scope:vassal_2 }
}
}
}
add = 1
}
}
initial_petitioners_value = 3
petitioner_total_chain_length_value = {
value = initial_petitioners_value
# Add the start and end events.
add = 2
}
petitioner_current_progress_value = {
value = scope:event_chain_progress
add = 1
}

View file

@ -0,0 +1,99 @@

#Holy Order standard values
holy_order_barony_number_soft_threshold = 10
#Setup values
holy_order_gold_cost = {
value = 500
if = {
limit = {
is_ai = yes
}
add = -300
}
# Remove cost if there's a free credit available.
if = {
limit = { has_character_modifier = next_free_ho_hire_modifier }
multiply = 0
}
}
holy_order_piety_cost = {
value = 1000
if = {
limit = {
is_ai = yes
}
add = -600
}
# Remove cost if there's a free credit available.
if = {
limit = { has_character_modifier = next_free_ho_hire_modifier }
multiply = 0
}
}
holy_order_starting_gold = {
value = 250
}
cancel_holy_order_piety_cost = {
value = 500
}
#Holy Order province calculations
holy_order_barony_value_calculation = {
value = 0
add = scope:request_target.major_gold_value
add = {
value = scope:request_target.medium_gold_value
multiply = {
value = county.development_level
multiply = 0.1
}
}
if = {
limit = {
title_province = {
has_holding_type = castle_holding
}
}
multiply = 1.2
}
if = {
limit = {
title_province = {
OR = {
has_building = castle_02
has_building = city_02
}
}
}
multiply = 1.2
}
if = {
limit = {
title_province = {
OR = {
has_building = castle_03
has_building = city_03
}
}
}
multiply = 1.4
}
if = {
limit = {
title_province = {
OR = {
has_building = castle_04
has_building = city_04
}
}
}
multiply = 1.6
}
max = massive_gold_max_value
}

View file

@ -0,0 +1,809 @@
golden_obligation_value = {
if = {
limit = {
ransom_cost_value < medium_gold_value
ransom_cost_value > minor_gold_value
}
value = minor_gold_value
}
else_if = {
limit = {
ransom_cost_value < medium_gold_value
ransom_cost_value < minor_gold_value
}
value = ransom_cost_value
}
else = {
value = medium_gold_value
}
}
golden_obligation_value_check_current_situation = {
add = gold
max = golden_obligation_value
}
ransom_cost_value = {
value = ransom_cost
# Some cultures are better at ransoming than others.
if = {
limit = {
exists = imprisoner
imprisoner.culture = { has_cultural_parameter = can_demand_higher_ransoms_from_lower_tiers }
# Kings and emperors are already worth more, so we just boost landless and ducal-tier or below.
OR = {
NOT = { exists = liege }
highest_held_title_tier <= tier_duchy
}
}
multiply = 1.5
}
# Rich guests can pay a bit more...
if = {
limit = {
NOT = { exists = liege }
gold >= 100
}
add = 90
}
#increase it if the imprisoner has a Haggler Officer employed
if = {
limit = {
exists = scope:imprisoner
scope:imprisoner ?= {
employs_court_position = person_haggler_camp_officer
}
}
multiply = {
value = scope:imprisoner.court_position:person_haggler_camp_officer.aptitude:person_haggler_camp_officer
add = 1
divide = 15
add = 1
}
}
if = {
limit = {
imprisoner ?= {
employs_court_position = person_haggler_camp_officer
}
}
multiply = {
value = imprisoner.court_position:person_haggler_camp_officer.aptitude:person_haggler_camp_officer
add = 1
divide = 15
add = 1
}
}
#decrease it if the imprisoned has a Haggler Officer employed
if = {
limit = {
OR = {
AND = {
exists = scope:imprisoner
scope:recipient ?= scope:imprisoner
}
AND = {
exists = imprisoner
scope:recipient ?= imprisoner
}
}
scope:actor ?= {
employs_court_position = person_haggler_camp_officer
}
}
divide = {
value = scope:actor.court_position:person_haggler_camp_officer.aptitude:person_haggler_camp_officer
add = 1
divide = 10
add = 1
}
}
#decrease it if the imprisoned has a Haggler Officer employed
if = {
limit = {
OR = {
AND = {
exists = scope:imprisoner
scope:actor ?= scope:imprisoner
}
AND = {
exists = imprisoner
scope:actor ?= imprisoner
}
}
scope:recipient ?= {
employs_court_position = person_haggler_camp_officer
}
}
divide = {
value = scope:recipient.court_position:person_haggler_camp_officer.aptitude:person_haggler_camp_officer
add = 1
divide = 10
add = 1
}
}
}
current_situation_gold_ransom = {
if = {
limit = {
NOT = {
exists = liege
}
}
add = gold
}
else_if = {
limit = {
is_ruler = no
}
add = liege.gold
}
else = {
add = gold
}
max = ransom_cost_value
}
half_ransom_cost_value = {
value = {
add = ransom_cost_value
divide = 2
min = 1
}
}
half_increased_ransom_cost_value = {
value = {
add = increased_ransom_cost_value
divide = 2
min = 1
}
}
increased_ransom_cost_value = {
value = {
add = ransom_cost_value
multiply = 1.5
}
}
increased_ransom_cost = {
value = {
add = ransom_cost
multiply = 1.5
}
}
#reverse all ransom_cost_value calculations leaving just the haggler value and show it in all ransom interation windows
haggler_ransom_cost_modifier = {
value = ransom_cost_value
# Rich guests can pay a bit more...
if = {
limit = {
NOT = { exists = liege }
gold >= 100
}
subtract = 90
}
if = {
limit = {
exists = imprisoner
imprisoner.culture = { has_cultural_parameter = can_demand_higher_ransoms_from_lower_tiers }
# Kings and emperors are already worth more, so we just boost landless and ducal-tier or below.
OR = {
NOT = { exists = liege }
highest_held_title_tier <= tier_duchy
}
}
divide = 1.5
}
subtract = ransom_cost
}
grant_title_opinion_sum_baronies = {
if = { # if no other titles present, calc for baronies
limit = {
any_in_list = {
list = titles_to_grant
tier = tier_barony
}
}
every_in_list = {
list = titles_to_grant
limit = {
tier = tier_barony
}
add = 20 # barony grant opinion
}
}
}
grant_title_opinion_sum_counties = {
if = { # if no higher titles present, calc for counties
limit = {
any_in_list = {
list = titles_to_grant
tier = tier_county
}
}
every_in_list = {
list = titles_to_grant
limit = {
tier = tier_county
}
add = 40 # county grant opinion
}
}
}
grant_title_opinion_sum_duchies = {
if = {
limit = {
any_in_list = {
list = titles_to_grant
tier = tier_duchy
}
}
every_in_list = {
list = titles_to_grant
limit = {
tier = tier_duchy
}
add = 60 # county grant opinion
}
}
}
grant_title_opinion_sum_kingdoms = {
if = {
limit = {
any_in_list = {
list = titles_to_grant
tier = tier_kingdom
}
}
every_in_list = {
list = titles_to_grant
limit = {
tier = tier_kingdom
}
add = 80 # kingdom grant opinion
}
}
}
grant_title_opinion_sum_empires = {
if = {
limit = {
any_in_list = {
list = titles_to_grant
tier = tier_empire
}
}
every_in_list = {
list = titles_to_grant
limit = {
tier = tier_empire
}
add = 100 # empire grant opinion
}
}
}
# Used in the corresponding character interaction
# when granting a title to the member of a faction.
grant_title_opinion_sum_discontent_calc = {
value = 0
add = {
if = {
limit = {
grant_title_opinion_sum_empires > 0
}
add = {
value = grant_title_opinion_sum_empires
multiply = 0.6
}
}
if = {
limit = {
grant_title_opinion_sum_kingdoms > 0
}
add = {
value = grant_title_opinion_sum_kingdoms
divide = 2
}
}
if = {
limit = {
grant_title_opinion_sum_duchies > 0
}
add = {
value = grant_title_opinion_sum_duchies
divide = 3
}
}
if = {
limit = {
grant_title_opinion_sum_counties > 0
}
add = {
value = grant_title_opinion_sum_counties
divide = 4
}
}
if = {
limit = {
grant_title_opinion_sum_baronies > 0
}
add = {
value = grant_title_opinion_sum_baronies
divide = 4
}
}
}
# Discontent should *drop* when someone is granted a title
multiply = -1
}
courtly_vassal_lowborn_grant_penalty = {
if = {
limit = {
any_in_list = {
list = titles_to_grant
tier >= tier_county
}
}
every_in_list = {
list = titles_to_grant
limit = {
tier = tier_county
}
add = -5
}
every_in_list = {
list = titles_to_grant
limit = {
tier = tier_duchy
}
add = -20
}
every_in_list = {
list = titles_to_grant
limit = {
tier > tier_duchy
}
add = -50
}
}
}
number_of_courtly_vassals = {
value = 0
every_vassal = {
limit = {
has_vassal_stance = courtly
}
add = 1
}
}
number_of_participating_courtly_vassals = {
value = 0
every_vassal = {
limit = {
has_vassal_stance = courtly
is_participant_in_activity = root.involved_activity
}
add = 1
}
}
number_of_glory_hound_vassals = {
value = 0
every_vassal = {
limit = {
has_vassal_stance = glory_hound
}
add = 1
}
}
number_of_participating_glory_hound_vassals = {
value = 0
every_vassal = {
limit = {
has_vassal_stance = glory_hound
is_participant_in_activity = root.involved_activity
}
add = 1
}
}
number_of_parochial_vassals = {
value = 0
every_vassal = {
limit = {
has_vassal_stance = parochial
}
add = 1
}
}
number_of_participating_parochial_vassals = {
value = 0
every_vassal = {
limit = {
has_vassal_stance = parochial
is_participant_in_activity = root.involved_activity
}
add = 1
}
}
number_of_zealot_vassals = {
value = 0
every_vassal = {
limit = {
has_vassal_stance = zealot
}
add = 1
}
}
number_of_participating_zealot_vassals = {
value = 0
every_vassal = {
limit = {
has_vassal_stance = zealot
is_participant_in_activity = root.involved_activity
}
add = 1
}
}
number_of_minority_vassals = {
value = 0
every_vassal = {
limit = {
has_vassal_stance = minority
}
add = 1
}
}
number_of_barons_and_minor_landholders_vassals = {
value = 0
every_vassal = {
limit = {
has_vassal_stance = barons_and_minor_landholders
}
add = 1
}
}
council_position_locked_value = {
value = 25
}
marriage_fertile_age_value = {
value = {
add = 16
subtract = scope:secondary_recipient.age
add = scope:secondary_actor.age
}
}
marriage_fertile_age_reverse_value = {
value = {
add = 16
subtract = scope:secondary_actor.age
add = scope:secondary_recipient.age
}
}
marriage_female_fertility_cutoff_age_value = {
value = {
add = define:NChildbirth|MAX_FEMALE_REPRODUCTION_AGE
add = -3
if = {
limit = {
has_trait = fecund
}
add = 5
}
if = {
limit = {
exists = dynasty
dynasty = {
has_dynasty_perk = blood_legacy_5
}
}
add = 5
}
}
}
offer_vassalage_acceptance_value = {
value = {
add = -35
if = {
limit = {
scope:actor.culture = {
cultural_acceptance = { target = scope:recipient.culture value >= 80 }
}
}
add = {
value = 33
}
}
else_if = {
limit = {
scope:actor.culture = {
cultural_acceptance = { target = scope:recipient.culture value >= 70 }
}
}
add = {
value = 30
}
}
else_if = {
limit = {
scope:actor.culture = {
cultural_acceptance = { target = scope:recipient.culture value >= 60 }
}
}
add = {
value = 25
}
}
else_if = {
limit = {
scope:actor.culture = {
cultural_acceptance = { target = scope:recipient.culture value >= 50 }
}
}
add = {
value = 20
}
}
else_if = {
limit = {
scope:actor.culture = {
cultural_acceptance = { target = scope:recipient.culture value >= 40 }
}
}
add = {
value = 15
}
}
else_if = {
limit = {
scope:actor.culture = {
cultural_acceptance = { target = scope:recipient.culture value >= 30 }
}
}
add = {
value = 10
}
}
else_if = {
limit = {
scope:actor.culture = {
cultural_acceptance = { target = scope:recipient.culture value >= 20 }
}
}
add = {
value = 8
}
}
else_if = {
limit = {
scope:actor.culture = {
cultural_acceptance = { target = scope:recipient.culture value >= 10 }
}
}
add = {
value = 5
}
}
}
}
vassal_claim_liege_title_interaction_highlight_value = {
value = {
add = monumental_prestige_value
if = {
limit = {
scope:actor.prestige_level > scope:recipient.prestige_level
}
subtract = {
value = medium_prestige_value
multiply = scope:actor.prestige_level
}
}
else_if = {
limit = {
scope:actor.prestige_level < scope:recipient.prestige_level
}
add = {
value = medium_prestige_value
multiply = scope:recipient.prestige_level
}
}
}
}
script_current_military_strength = {
value = {
add = current_military_strength
}
}
one_and_a_half_times_current_military_strength = {
value = {
add = current_military_strength
multiply = 1.5
}
}
twice_current_military_strength = {
value = {
add = current_military_strength
multiply = 2
}
}
fifty_percent_more_of_current_military_strength = {
value = {
add = current_military_strength
multiply = 1.5
}
}
eighty_percent_of_current_military_strength = {
value = {
add = current_military_strength
multiply = 0.8
}
}
a_third_of_current_military_strength = {
value = {
add = current_military_strength
multiply = 0.3
}
}
forty_percent_of_current_military_strength = {
value = {
add = current_military_strength
multiply = 0.4
}
}
fifty_percent_of_current_military_strength = {
value = {
add = current_military_strength
multiply = 0.5
}
}
eighty_percent_of_max_military_strength = {
value = {
add = max_military_strength
multiply = 0.8
}
}
fifty_percent_of_max_military_strength = {
value = {
add = max_military_strength
multiply = 0.5
}
}
twenty_percent_of_max_military_strength = {
value = {
add = max_military_strength
multiply = 0.2
}
}
designate_heir_cost = 1000
designate_heir_admin_prestige_cost = 500
designate_heir_admin_influence_cost = 150
designate_heir_laamp_prestige_cost = 150
marry_close_family_tiers_acceptance_value = {
value = 0
scope:secondary_actor = {
save_temporary_scope_as = tier_comparison_first
every_close_family_member = {
even_if_dead = yes
if = {
limit = {
highest_held_title_tier > scope:tier_comparison_first.highest_held_title_tier
}
save_temporary_scope_as = tier_comparison_first
}
}
}
scope:secondary_recipient = {
save_temporary_scope_as = tier_comparison_second
every_close_family_member = {
even_if_dead = yes
if = {
limit = {
highest_held_title_tier > scope:tier_comparison_second.highest_held_title_tier
}
save_temporary_scope_as = tier_comparison_second
}
}
}
add = scope:tier_comparison_first.highest_held_title_tier
subtract = scope:tier_comparison_second.highest_held_title_tier
if = {
limit = {
scope:recipient = { is_close_family_of = scope:secondary_recipient }
}
multiply = 30
}
else = {
multiply = 20
}
}
elope_close_family_tiers_acceptance_value = {
value = 0
scope:actor = {
save_temporary_scope_as = tier_comparison_first
every_close_family_member = {
even_if_dead = yes
if = {
limit = {
highest_held_title_tier > scope:tier_comparison_first.highest_held_title_tier
}
save_temporary_scope_as = tier_comparison_first
}
}
}
scope:recipient = {
save_temporary_scope_as = tier_comparison_second
every_close_family_member = {
even_if_dead = yes
if = {
limit = {
highest_held_title_tier > scope:tier_comparison_second.highest_held_title_tier
}
save_temporary_scope_as = tier_comparison_second
}
}
}
add = scope:tier_comparison_first.highest_held_title_tier
subtract = scope:tier_comparison_second.highest_held_title_tier
multiply = 25
}

View file

@ -0,0 +1,10 @@
scheme_starting_opportunities_per_intrigue_threshold_value = 15
scheme_starting_opportunities_per_intrigue_increment_value = 5
#Depravity Tracking
intrigue_depravity_compassionate_loss_threshold = 3
intrigue_depravity_threshold = 3
#Deceit Tracking
intrigue_deception_honest_loss_threshold = 3
intrigue_deception_threshold = 3

View file

@ -0,0 +1,12 @@

################################
# Almohads
################################
almohad_appearance_base_chance = 1
titles_held_in_k_maghreb = {
every_sub_realm_county = {
limit = { kingdom = title:k_maghreb }
add = 1
}
}

View file

@ -0,0 +1,615 @@
##############
# LAW VALUES #
##############
# Scaling value used to calculate realm law cost changes.
subrealm_size_modifier = {
every_sub_realm_county = {
add = 10
}
max = 900
if = {
limit = {
culture = { has_cultural_parameter = cheaper_to_change_laws }
}
multiply = 0.5
}
}
# Learning: Base Law Cost Reduction
learning_law_cost_modifier = {
value = 0
subtract = learning
add = 8
divide = 50
min = -0.5
}
#Faith: The modifier used to calculate the Legalism modifier if the character's faith has Legalism
legalism_law_cost_modifier = {
value = 0
add = num_sinful_traits
subtract = num_virtuous_traits
divide = 10
min = -0.3
}
#Faith: Religious Law
religious_legal_pronouncements_modifier = -0.1
#Faith: Natural Primitivism
natural_primitivism_modifier = 1.5
#Crown Authority Change
increase_crown_authority_prestige_base = 100
increase_crown_authority_prestige_cost = {
add = {
desc = "BASE_VALUE"
value = increase_crown_authority_prestige_base
format = "BASE_VALUE_FORMAT"
}
# Realm Size Penalty: +10 Prestige cost per county controlled by you(r vassals)
if = {
limit = {
NOT = {
culture = { has_cultural_parameter = cheaper_to_change_laws }
}
}
add = {
desc = "realm_size"
format = "BREAKDOWN_FORMAT_REALM_SIZE_PRESTIGE_COST"
value = subrealm_size_modifier
}
}
if = { #Reduced penalty from Tradition (for tooltip)
limit = {
culture = { has_cultural_parameter = cheaper_to_change_laws }
}
add = {
desc = "realm_size"
format = "TRADITION_BREAKDOWN_LAW_REALM_SIZE_COST"
value = subrealm_size_modifier
}
}
# Learning Modifier (2% more expensive for each skill point below 8 Learning)
if = {
limit = {
learning < 8
}
add = {
desc = "poor_learning_law_cost_tooltip"
value = {
add = increase_crown_authority_prestige_base
add = subrealm_size_modifier
}
multiply = learning_law_cost_modifier
}
}
else_if = { # (2% less expensive for each skill point below 8 Learning)
limit = {
learning > 8
}
add = {
desc = "learning_law_cost_tooltip"
value = {
add = increase_crown_authority_prestige_base
add = subrealm_size_modifier
}
multiply = learning_law_cost_modifier
}
}
# Tenet Modifiers
if = {
limit = {
faith = {
has_doctrine_parameter = legalism_modified_law_costs
}
}
add = {
desc = "rite_legalism_law_cost_tooltip"
value = {
add = increase_crown_authority_prestige_base
add = subrealm_size_modifier
}
multiply = legalism_law_cost_modifier
}
}
if = {
limit = {
faith = {
has_doctrine_parameter = natural_primitivism_law_cost_increase
}
}
multiply = {
desc = "rite_primitivism_law_cost_tooltip"
value = natural_primitivism_modifier
}
}
if = {
limit = {
is_independent_ruler = no
vassal_contract_has_flag = locked_to_partition
}
multiply = {
desc = "succession_rights_forced_partition"
value = 1.25 # succession_rights_contract_law_cost = 0.25
}
}
if = {
limit = {
faith = {
has_doctrine_parameter = religious_legal_pronouncements_law_cost_reduction
}
}
multiply = {
desc = "rite_pronouncements_law_cost_tooltip"
value = 0.9 # religious_legal_pronouncements_modifier = -0.1
}
}
# Apply All-Things cooldown breaker multiplier.
if = {
limit = {
has_variable = crown_authority_cooldown
culture = { has_innovation = innovation_all_things }
}
# If the tally exists, multiply by that.
if = {
limit = { has_variable = authority_cooldown_break_tally }
multiply = {
desc = "breaking_authority_cooldown"
value = var:authority_cooldown_break_tally
}
}
# Otherwise, multiply by the stock tally base.
else = {
multiply = {
desc = "breaking_authority_cooldown"
value = authority_cooldown_breaker_value
}
}
}
# Character Modifier Bonuses
if = {
limit = { has_character_modifier = yearly_benevolent_forgiveness_modifier }
multiply = {
desc = "character_modifiers_law_cost_tooltip"
value = 0.9 # yearly_benevolent_forgiveness_modifier = -10%
}
}
# Character Modifier Maluses
if = {
limit = { has_character_modifier = vassal_distrust_modifier }
multiply = {
desc = "character_modifiers_law_cost_tooltip"
value = 1.1 # vassal_distrust_modifier = +10%
}
}
}
#Tribal Authority Change
increase_tribal_authority_prestige_base = 200
increase_tribal_authority_prestige_cost = {
add = {
desc = "BASE_VALUE"
value = increase_tribal_authority_prestige_base
format = "BASE_VALUE_FORMAT"
}
# +10 Prestige cost per county controlled by you(r vassals)
add = {
desc = "realm_size"
format = "BREAKDOWN_FORMAT_REALM_SIZE_PRESTIGE_COST"
value = subrealm_size_modifier
}
# Learning Modifier (2% more expensive for each skill point below 8 Learning)
if = {
limit = {
learning < 8
}
add = {
desc = "poor_learning_law_cost_tooltip"
value = {
add = increase_crown_authority_prestige_base
add = subrealm_size_modifier
}
multiply = learning_law_cost_modifier
}
}
else_if = { # (2% less expensive for each skill point below 8 Learning)
limit = {
learning > 8
}
add = {
desc = "learning_law_cost_tooltip"
value = {
add = increase_crown_authority_prestige_base
add = subrealm_size_modifier
}
multiply = learning_law_cost_modifier
}
}
# Tenet Modifiers
if = {
limit = {
faith = {
has_doctrine_parameter = legalism_modified_law_costs
}
}
add = {
desc = "rite_legalism_law_cost_tooltip"
value = {
add = increase_crown_authority_prestige_base
add = subrealm_size_modifier
}
multiply = legalism_law_cost_modifier
}
}
if = {
limit = {
faith = {
has_doctrine_parameter = natural_primitivism_law_cost_increase
}
}
add = {
desc = "rite_primitivism_law_cost_tooltip"
value = natural_primitivism_modifier
}
}
if = {
limit = {
faith = {
has_doctrine_parameter = religious_legal_pronouncements_law_cost_reduction
}
}
multiply = {
desc = "rite_pronouncements_law_cost_tooltip"
value = 0.9 # religious_legal_pronouncements_modifier = -0.1
}
}
# Apply All-Things cooldown breaker multiplier.
if = {
limit = {
has_variable = tribal_authority_cooldown
culture = { has_innovation = innovation_all_things }
}
# If the tally exists, multiply by that.
if = {
limit = { has_variable = authority_cooldown_break_tally }
multiply = {
desc = "breaking_authority_cooldown"
value = var:authority_cooldown_break_tally
}
}
# Otherwise, multiply by the stock tally base.
else = {
multiply = {
desc = "breaking_authority_cooldown"
value = authority_cooldown_breaker_value
}
}
}
# Character Modifier Bonuses
if = {
limit = { has_character_modifier = yearly_benevolent_forgiveness_modifier }
multiply = {
desc = "character_modifiers_law_cost_tooltip"
value = 0.9 # yearly_benevolent_forgiveness_modifier = -10%
}
}
# Character Modifier Maluses
if = {
limit = { has_character_modifier = vassal_distrust_modifier }
multiply = {
desc = "character_modifiers_law_cost_tooltip"
value = 1.1 # vassal_distrust_modifier = +10%
}
}
}
#Succession Law Change
change_succession_law_prestige_base = 500
@title_succession_law_mult = 3 #How many times more expensive is it to add custom title succession than change your realm succession?
change_succession_law_prestige_cost = {
add = {
desc = "BASE_VALUE"
value = change_succession_law_prestige_base
format = "BASE_VALUE_FORMAT"
}
#Clans pay more
if = {
limit = {
government_has_flag = government_is_clan
}
add = {
desc = "clan_government_cost_tooltip"
value = change_succession_law_prestige_base
multiply = 4
}
}
#Calculate the Legalism modifier if relevant
if = {
limit = {
faith = {
has_doctrine_parameter = legalism_modified_law_costs
}
}
add = {
desc = "rite_legalism_law_cost_tooltip"
value = change_succession_law_prestige_base
multiply = legalism_law_cost_modifier
}
}
if = {
limit = {
faith = {
has_doctrine_parameter = natural_primitivism_law_cost_increase
}
}
add = {
desc = "rite_primitivism_law_cost_tooltip"
value = natural_primitivism_modifier
}
}
if = {
limit = {
is_independent_ruler = no
vassal_contract_has_flag = locked_to_partition
}
multiply = {
desc = "succession_rights_forced_partition"
value = 1.25 # succession_rights_contract_law_cost = 0.25
}
}
if = {
limit = {
faith = {
has_doctrine_parameter = religious_legal_pronouncements_law_cost_reduction
}
}
multiply = {
desc = "rite_pronouncements_law_cost_tooltip"
value = 0.9 # religious_legal_pronouncements_modifier = -0.1
}
}
}
change_title_succession_law_prestige_cost = {
add = {
desc = "BASE_VALUE"
value = change_succession_law_prestige_base
multiply = @title_succession_law_mult
}
#Calculate the Legalism modifier if relevant
if = {
limit = {
faith = {
has_doctrine_parameter = legalism_modified_law_costs
}
}
add = {
desc = "rite_legalism_law_cost_tooltip"
value = change_succession_law_prestige_base
multiply = legalism_law_cost_modifier
multiply = @title_succession_law_mult
}
}
if = {
limit = {
faith = {
has_doctrine_parameter = natural_primitivism_law_cost_increase
}
}
add = {
desc = "rite_primitivism_law_cost_tooltip"
value = natural_primitivism_modifier
}
}
if = {
limit = {
is_independent_ruler = no
vassal_contract_has_flag = locked_to_partition
}
multiply = {
desc = "succession_rights_forced_partition"
value = 1.25 # succession_rights_contract_law_cost = 0.25
}
}
if = {
limit = {
faith = {
has_doctrine_parameter = religious_legal_pronouncements_law_cost_reduction
}
}
multiply = {
desc = "rite_pronouncements_law_cost_tooltip"
value = 0.9 # religious_legal_pronouncements_modifier = -0.1
}
}
}
@hre_title_succession_law_mult = 20
change_hre_title_succession_law_prestige_cost = {
add = {
desc = "BASE_VALUE"
value = change_succession_law_prestige_base
multiply = @hre_title_succession_law_mult
}
#Calculate the Legalism modifier if relevant
if = {
limit = {
faith = {
has_doctrine_parameter = legalism_modified_law_costs
}
}
add = {
desc = "rite_legalism_law_cost_tooltip"
value = change_succession_law_prestige_base
multiply = legalism_law_cost_modifier
multiply = @hre_title_succession_law_mult
}
}
if = {
limit = {
faith = {
has_doctrine_parameter = natural_primitivism_law_cost_increase
}
}
add = {
desc = "rite_primitivism_law_cost_tooltip"
value = natural_primitivism_modifier
}
}
if = {
limit = {
faith = {
has_doctrine_parameter = religious_legal_pronouncements_law_cost_reduction
}
}
multiply = {
desc = "rite_pronouncements_law_cost_tooltip"
value = 0.9 # religious_legal_pronouncements_modifier = -0.1
}
}
}
admin_law_prestige_base_cost = 200
admin_law_realm_size_cost = {
value = realm_size
max = admin_law_prestige_base_cost # Realm size can double the cost
if = {
limit = {
culture = { has_cultural_parameter = cheaper_to_change_laws }
}
multiply = 0.5
}
}
admin_law_prestige_cost = {
add = {
desc = "BASE_VALUE"
value = admin_law_prestige_base_cost
format = "BASE_VALUE_FORMAT"
}
# Realm Size Penalty: +10 Prestige cost per county controlled by you(r vassals)
if = {
limit = {
NOT = {
culture = { has_cultural_parameter = cheaper_to_change_laws }
}
}
add = {
desc = "realm_size"
format = "BREAKDOWN_FORMAT_REALM_SIZE_PRESTIGE_COST"
value = admin_law_realm_size_cost
}
}
if = { #Reduced penalty from Tradition (for tooltip)
limit = {
culture = { has_cultural_parameter = cheaper_to_change_laws }
}
add = {
desc = "realm_size"
format = "TRADITION_BREAKDOWN_LAW_REALM_SIZE_COST"
value = admin_law_realm_size_cost
}
}
# Learning Modifier (2% more expensive for each skill point below 8 Learning)
if = {
limit = {
learning < 8
}
add = {
desc = "poor_learning_law_cost_tooltip"
value = {
add = admin_law_prestige_base_cost
add = admin_law_realm_size_cost
}
multiply = learning_law_cost_modifier
}
}
else_if = { # (2% less expensive for each skill point below 8 Learning)
limit = {
learning > 8
}
add = {
desc = "learning_law_cost_tooltip"
value = {
add = admin_law_prestige_base_cost
add = admin_law_realm_size_cost
}
multiply = learning_law_cost_modifier
}
}
# Tenet Modifiers
if = {
limit = {
faith = {
has_doctrine_parameter = legalism_modified_law_costs
}
}
add = {
desc = "rite_legalism_law_cost_tooltip"
value = {
add = admin_law_prestige_base_cost
add = admin_law_realm_size_cost
}
multiply = legalism_law_cost_modifier
}
}
if = {
limit = {
faith = {
has_doctrine_parameter = natural_primitivism_law_cost_increase
}
}
multiply = {
desc = "rite_primitivism_law_cost_tooltip"
value = natural_primitivism_modifier
}
}
if = {
limit = {
faith = {
has_doctrine_parameter = religious_legal_pronouncements_law_cost_reduction
}
}
multiply = {
desc = "rite_pronouncements_law_cost_tooltip"
value = 0.9 # religious_legal_pronouncements_modifier = -0.1
}
}
# Character Modifier Bonuses
if = {
limit = { has_character_modifier = yearly_benevolent_forgiveness_modifier }
multiply = {
desc = "character_modifiers_law_cost_tooltip"
value = 0.9 # yearly_benevolent_forgiveness_modifier = -10%
}
}
# Character Modifier Maluses
if = {
limit = { has_character_modifier = vassal_distrust_modifier }
multiply = {
desc = "character_modifiers_law_cost_tooltip"
value = 1.1 # vassal_distrust_modifier = +10%
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,61 @@
memory_default_duration = {
value = 5
if = {
limit = {
OR = {
is_ruler = yes
any_close_family_member = {
is_ruler = yes
}
any_spouse = {
is_ruler = yes
}
}
}
add = 125
}
if = {
limit = {
highest_held_title_tier >= tier_duchy
}
add = 25
}
if = {
limit = {
any_relation = {
type = rival
is_ai = no
}
}
add = 25
}
if = {
limit = {
any_relation = {
type = friend
is_ai = no
}
}
add = 25
}
if = {
limit = {
any_relation = {
type = ward
is_ai = no
}
}
add = 25
}
if = {
limit = {
OR = {
is_ai = no
any_parent = {
is_ai = no
}
}
}
add = 195
}
}

View file

@ -0,0 +1,703 @@
######################
# Men-at-Arms Values #
######################
#########
# Costs #
#########
@high_maint_mult = 3
### Base Cost Values
@skirmisher_recruitment_cost = 45
@skirmisher_low_maint_cost = 0.15
@skirmisher_high_maint_cost = @[skirmisher_low_maint_cost * high_maint_mult]
@archers_recruitment_cost = 55
@archers_low_maint_cost = 0.2
@archers_high_maint_cost = @[archers_low_maint_cost * high_maint_mult]
@pikemen_recruitment_cost = 75
@pikemen_low_maint_cost = 0.3
@pikemen_high_maint_cost = @[pikemen_low_maint_cost * high_maint_mult]
@heavy_infantry_recruitment_cost = 90
@heavy_infantry_low_maint_cost = 0.4
@heavy_infantry_high_maint_cost = @[heavy_infantry_low_maint_cost * high_maint_mult]
@light_cavalry_recruitment_cost = 85
@light_cavalry_low_maint_cost = 0.35
@light_cavalry_high_maint_cost = @[light_cavalry_low_maint_cost * high_maint_mult]
@heavy_cavalry_recruitment_cost = 200
@heavy_cavalry_low_maint_cost = 0.7
@heavy_cavalry_high_maint_cost = @[heavy_cavalry_low_maint_cost * high_maint_mult]
@siege_weapons_recruitment_cost = 60
@siege_weapons_low_maint_cost = 0.1
@siege_weapons_high_maint_cost = @[siege_weapons_low_maint_cost * high_maint_mult]
### Base MAA
skirmisher_recruitment_cost = @[skirmisher_recruitment_cost]
skirmisher_low_maint_cost = @[skirmisher_low_maint_cost]
skirmisher_high_maint_cost = @[skirmisher_high_maint_cost]
bowmen_recruitment_cost = @[archers_recruitment_cost]
bowmen_low_maint_cost = @[archers_low_maint_cost]
bowmen_high_maint_cost = @[archers_high_maint_cost]
crossbowmen_recruitment_cost = @[archers_recruitment_cost * 1.6]
crossbowmen_low_maint_cost = @[archers_low_maint_cost * 1.5]
crossbowmen_high_maint_cost = @[archers_high_maint_cost * 1.5]
pikemen_recruitment_cost = @[pikemen_recruitment_cost]
pikemen_low_maint_cost = @[pikemen_low_maint_cost]
pikemen_high_maint_cost = @[pikemen_high_maint_cost]
heavy_infantry_recruitment_cost = @[heavy_infantry_recruitment_cost]
heavy_infantry_low_maint_cost = @[heavy_infantry_low_maint_cost]
heavy_infantry_high_maint_cost = @[heavy_infantry_high_maint_cost]
light_cavalry_recruitment_cost = @[light_cavalry_recruitment_cost]
light_cavalry_low_maint_cost = @[light_cavalry_low_maint_cost]
light_cavalry_high_maint_cost = @[light_cavalry_high_maint_cost]
heavy_cavalry_recruitment_cost = @[heavy_cavalry_recruitment_cost]
heavy_cavalry_low_maint_cost = @[heavy_cavalry_low_maint_cost]
heavy_cavalry_high_maint_cost = @[heavy_cavalry_high_maint_cost]
### Siege Weapons MAA
onager_recruitment_cost = @[siege_weapons_recruitment_cost]
onager_low_maint_cost = @[siege_weapons_low_maint_cost]
onager_high_maint_cost = @[siege_weapons_high_maint_cost]
mangonel_recruitment_cost = @[siege_weapons_recruitment_cost * 1.1]
mangonel_low_maint_cost = @[siege_weapons_low_maint_cost * 1.1]
mangonel_high_maint_cost = @[siege_weapons_high_maint_cost * 1.1]
trebuchet_recruitment_cost = @[siege_weapons_recruitment_cost * 1.3]
trebuchet_low_maint_cost = @[siege_weapons_low_maint_cost * 1.3]
trebuchet_high_maint_cost = @[siege_weapons_high_maint_cost * 1.3]
bombard_recruitment_cost = @[siege_weapons_recruitment_cost * 1.6]
bombard_low_maint_cost = @[siege_weapons_low_maint_cost * 1.6]
bombard_high_maint_cost = @[siege_weapons_high_maint_cost * 1.6]
### Cultural MAA
huscarls_recruitment_cost = @[heavy_infantry_recruitment_cost * 1.28]
huscarls_low_maint_cost = @[heavy_infantry_low_maint_cost * 1.28]
huscarls_high_maint_cost = @[heavy_infantry_high_maint_cost * 1.28]
landsknecht_recruitment_cost = @[pikemen_recruitment_cost * 1.2]
landsknecht_low_maint_cost = @[pikemen_low_maint_cost * 1.2]
landsknecht_high_maint_cost = @[pikemen_high_maint_cost * 1.2]
longbowmen_recruitment_cost = @[archers_recruitment_cost * 1.2]
longbowmen_low_maint_cost = @[archers_low_maint_cost * 1.2]
longbowmen_high_maint_cost = @[archers_high_maint_cost * 1.2]
goedendag_recruitment_cost = @[skirmisher_recruitment_cost + 0]
goedendag_low_maint_cost = @[skirmisher_low_maint_cost + 0]
goedendag_high_maint_cost = @[skirmisher_high_maint_cost + 0]
gendarme_recruitment_cost = @[heavy_cavalry_recruitment_cost * 1.2]
gendarme_low_maint_cost = @[heavy_cavalry_low_maint_cost * 1.2]
gendarme_high_maint_cost = @[heavy_cavalry_high_maint_cost * 1.2]
chasseur_recruitment_cost = @[light_cavalry_recruitment_cost * 1.3]
chasseur_low_maint_cost = @[light_cavalry_low_maint_cost * 1.3]
chasseur_high_maint_cost = @[light_cavalry_high_maint_cost * 1.3]
picchieri_recruitment_cost = @[pikemen_recruitment_cost * 1.3]
picchieri_low_maint_cost = @[pikemen_low_maint_cost * 1.3]
picchieri_high_maint_cost = @[pikemen_high_maint_cost * 1.3]
praetorian_recruitment_cost = @[heavy_infantry_recruitment_cost * 2]
praetorian_low_maint_cost = @[heavy_infantry_low_maint_cost * 2]
praetorian_high_maint_cost = @[heavy_infantry_high_maint_cost * 2]
caballero_recruitment_cost = @[light_cavalry_recruitment_cost + 0]
caballero_low_maint_cost = @[light_cavalry_low_maint_cost * 1.1]
caballero_high_maint_cost = @[light_cavalry_high_maint_cost * 1.1]
mulaththamun_recruitment_cost = @[light_cavalry_recruitment_cost + 0]
mulaththamun_low_maint_cost = @[light_cavalry_low_maint_cost * 1.1]
mulaththamun_high_maint_cost = @[light_cavalry_high_maint_cost * 1.1]
paiks_recruitment_cost = @[archers_recruitment_cost * 1.1]
paiks_low_maint_cost = @[archers_low_maint_cost * 1.1]
paiks_high_maint_cost = @[archers_high_maint_cost * 1.1]
archers_of_the_nile_recruitment_cost = @[archers_recruitment_cost * 1.1]
archers_of_the_nile_low_maint_cost = @[archers_low_maint_cost * 1.1]
archers_of_the_nile_high_maint_cost = @[archers_high_maint_cost * 1.1]
sahel_rider_recruitment_cost = @[light_cavalry_recruitment_cost + 5]
sahel_rider_low_maint_cost = @[light_cavalry_low_maint_cost * 1.1]
sahel_rider_high_maint_cost = @[light_cavalry_high_maint_cost * 1.1]
cataphract_recruitment_cost = @[heavy_cavalry_recruitment_cost * 1.3]
cataphract_low_maint_cost = @[heavy_cavalry_low_maint_cost * 1.3]
cataphract_high_maint_cost = @[heavy_cavalry_high_maint_cost * 1.3]
monaspa_recruitment_cost = @[heavy_cavalry_recruitment_cost * 1.25]
monaspa_low_maint_cost = @[heavy_cavalry_low_maint_cost * 1.25]
monaspa_high_maint_cost = @[heavy_cavalry_high_maint_cost * 1.25]
hobelar_recruitment_cost = @[light_cavalry_recruitment_cost * 1.1]
hobelar_low_maint_cost = @[light_cavalry_low_maint_cost * 1.1]
hobelar_high_maint_cost = @[light_cavalry_high_maint_cost * 1.1]
schiltron_recruitment_cost = @[pikemen_recruitment_cost * 1.5]
schiltron_low_maint_cost = @[pikemen_low_maint_cost * 1.5]
schiltron_high_maint_cost = @[pikemen_high_maint_cost * 1.5]
metsanvartija_recruitment_cost = @[archers_recruitment_cost * 1.1]
metsanvartija_low_maint_cost = @[archers_low_maint_cost * 1.1]
metsanvartija_high_maint_cost = @[archers_high_maint_cost * 1.1]
horse_archers_recruitment_cost = @[skirmisher_recruitment_cost * 3]
horse_archers_low_maint_cost = @[skirmisher_low_maint_cost * 3]
horse_archers_high_maint_cost = @[skirmisher_high_maint_cost * 3]
ayyar_recruitment_cost = @[heavy_infantry_recruitment_cost - 15]
ayyar_low_maint_cost = @[heavy_infantry_low_maint_cost * 0.9]
ayyar_high_maint_cost = @[heavy_infantry_high_maint_cost * 0.9]
mubarizun_recruitment_cost = @[heavy_infantry_recruitment_cost * 1.2]
mubarizun_low_maint_cost = @[heavy_infantry_low_maint_cost * 1.2]
mubarizun_high_maint_cost = @[heavy_infantry_high_maint_cost * 1.2]
druzhina_recruitment_cost = @[heavy_infantry_recruitment_cost * 1.3]
druzhina_low_maint_cost = @[heavy_infantry_low_maint_cost * 1.3]
druzhina_high_maint_cost = @[heavy_infantry_high_maint_cost * 1.3]
hussar_recruitment_cost = @[light_cavalry_recruitment_cost * 1.3]
hussar_low_maint_cost = @[light_cavalry_low_maint_cost * 1.3]
hussar_high_maint_cost = @[light_cavalry_high_maint_cost * 1.3]
horn_warrior_recruitment_cost = @[skirmisher_recruitment_cost + 0]
horn_warrior_low_maint_cost = @[skirmisher_low_maint_cost + 0]
horn_warrior_high_maint_cost = @[skirmisher_high_maint_cost + 0]
bush_hunter_recruitment_cost = @[archers_recruitment_cost + 0]
bush_hunter_low_maint_cost = @[archers_low_maint_cost * 1.1]
bush_hunter_high_maint_cost = @[archers_high_maint_cost * 1.1]
shomer_recruitment_cost = @[skirmisher_recruitment_cost + 0]
shomer_low_maint_cost = @[skirmisher_low_maint_cost + 0]
shomer_high_maint_cost = @[skirmisher_high_maint_cost + 0]
khandayat_recruitment_cost = @[heavy_infantry_recruitment_cost * 1.2]
khandayat_low_maint_cost = @[heavy_infantry_low_maint_cost * 1.2]
khandayat_high_maint_cost = @[heavy_infantry_high_maint_cost * 1.2]
garudas_recruitment_cost = @[heavy_infantry_recruitment_cost * 1.28]
garudas_low_maint_cost = @[heavy_infantry_low_maint_cost * 1.28]
garudas_high_maint_cost = @[heavy_infantry_high_maint_cost * 1.28]
mountaineer_recruitment_cost = @[heavy_infantry_recruitment_cost * 1.2]
mountaineer_low_maint_cost = @[heavy_infantry_low_maint_cost * 1.2]
mountaineer_high_maint_cost = @[heavy_infantry_high_maint_cost * 1.2]
guinea_warrior_recruitment_cost = @[skirmisher_recruitment_cost * 1.2]
guinea_warrior_low_maint_cost = @[skirmisher_low_maint_cost * 1.2]
guinea_warrior_high_maint_cost = @[skirmisher_high_maint_cost * 1.2]
sarawit_recruitment_cost = @[heavy_infantry_recruitment_cost * 1.2]
sarawit_low_maint_cost = @[heavy_infantry_low_maint_cost * 1.2]
sarawit_high_maint_cost = @[heavy_infantry_high_maint_cost * 1.2]
abudrar_recruitment_cost = @[skirmisher_recruitment_cost * 1.8]
abudrar_low_maint_cost = @[skirmisher_low_maint_cost * 1.8]
abudrar_high_maint_cost = @[skirmisher_high_maint_cost * 1.8]
zbrojnosh_recruitment_cost = @[heavy_infantry_recruitment_cost * 1.1]
zbrojnosh_low_maint_cost = @[heavy_infantry_low_maint_cost * 1.1]
zbrojnosh_high_maint_cost = @[heavy_infantry_high_maint_cost * 1.1]
palace_guards_recruitment_cost = @[heavy_infantry_recruitment_cost * 1.2]
palace_guards_low_maint_cost = @[heavy_infantry_low_maint_cost * 1.2]
palace_guards_high_maint_cost = @[heavy_infantry_high_maint_cost * 1.2]
chu_ko_nu_recruitment_cost = @[archers_recruitment_cost * 1.5]
chu_ko_nu_low_maint_cost = @[archers_low_maint_cost * 1.5]
chu_ko_nu_high_maint_cost = @[archers_high_maint_cost * 1.5]
bondi_recruitment_cost = @[pikemen_recruitment_cost * 0.67]
bondi_low_maint_cost = @[pikemen_low_maint_cost * 0.67]
bondi_high_maint_cost = @[pikemen_high_maint_cost * 0.67]
vigmen_recruitment_cost = @[archers_recruitment_cost * 1.1]
vigmen_low_maint_cost = @[archers_low_maint_cost * 1.1]
vigmen_high_maint_cost = @[archers_high_maint_cost * 1.1]
varangian_veterans_recruitment_cost = @[heavy_infantry_recruitment_cost * 1.67]
varangian_veterans_low_maint_cost = @[heavy_infantry_low_maint_cost * 1.67]
varangian_veterans_high_maint_cost = @[heavy_infantry_high_maint_cost * 1.67]
jomsviking_pirates_recruitment_cost = @[skirmisher_recruitment_cost * 1.4]
jomsviking_pirates_low_maint_cost = @[skirmisher_low_maint_cost * 1.4]
jomsviking_pirates_high_maint_cost = @[skirmisher_high_maint_cost * 1.4]
tawashi_recruitment_cost = @[light_cavalry_recruitment_cost * 1.1]
tawashi_low_maint_cost = @[light_cavalry_low_maint_cost * 1.1]
tawashi_high_maint_cost = @[light_cavalry_high_maint_cost * 1.1]
ayrudzi_recruitment_cost = @[light_cavalry_recruitment_cost]
ayrudzi_low_maint_cost = @[light_cavalry_low_maint_cost]
ayrudzi_high_maint_cost = @[light_cavalry_high_maint_cost]
conrois_recruitment_cost = @[heavy_cavalry_recruitment_cost * 0.85]
conrois_low_maint_cost = @[heavy_cavalry_low_maint_cost * 0.85]
conrois_high_maint_cost = @[heavy_cavalry_high_maint_cost * 0.85]
akritai_recruitment_cost = @[skirmisher_recruitment_cost * 0.9]
akritai_low_maint_cost = @[skirmisher_low_maint_cost * 0.9]
akritai_high_maint_cost = @[skirmisher_high_maint_cost * 0.9]
skoutatoi_recruitment_cost = @[pikemen_recruitment_cost * 1.1]
skoutatoi_low_maint_cost = @[pikemen_low_maint_cost * 1.1]
skoutatoi_high_maint_cost = @[pikemen_high_maint_cost * 1.1]
ballistrai_recruitment_cost = @[archers_recruitment_cost * 1.15]
ballistrai_low_maint_cost = @[archers_low_maint_cost * 0.75]
ballistrai_high_maint_cost = @[archers_high_maint_cost * 0.75]
asawira_recruitment_cost = 300
asawira_low_maint_cost = 1
asawira_high_maint_cost = 3
### Regional MAA
camel_rider_recruitment_cost = @[light_cavalry_recruitment_cost + 0]
camel_rider_low_maint_cost = @[light_cavalry_low_maint_cost * 0.8]
camel_rider_high_maint_cost = @[light_cavalry_high_maint_cost * 0.8]
war_elephant_recruitment_cost = @[heavy_cavalry_recruitment_cost * 2]
war_elephant_low_maint_cost = @[heavy_cavalry_low_maint_cost * 1.2]
war_elephant_high_maint_cost = @[heavy_cavalry_high_maint_cost * 1.4]
guanch_vaulter_recruitment_cost = @[skirmisher_recruitment_cost * 1.2]
guanch_vaulter_low_maint_cost = @[skirmisher_low_maint_cost * 1.2]
guanch_vaulter_high_maint_cost = @[skirmisher_high_maint_cost * 1.2]
###Accolade MaA
accolade_skirmisher_recruitment_cost = @[skirmisher_recruitment_cost * 2]
accolade_bowmen_recruitment_cost = @[archers_recruitment_cost * 2]
accolade_crossbowmen_recruitment_cost = @[archers_recruitment_cost * 1.6 * 2]
accolade_pikemen_recruitment_cost = @[pikemen_recruitment_cost * 2]
accolade_heavy_infantry_recruitment_cost = @[heavy_infantry_recruitment_cost * 2]
accolade_light_cavalry_recruitment_cost = @[light_cavalry_recruitment_cost * 2]
accolade_heavy_cavalry_recruitment_cost = @[heavy_cavalry_recruitment_cost * 2]
accolade_camel_rider_recruitment_cost = @[light_cavalry_recruitment_cost * 2]
accolade_siege_weapons_recruitment_cost = @[siege_weapons_recruitment_cost * 2]
accolade_war_elephant_recruitment_cost = @[heavy_cavalry_recruitment_cost * 4]
accolade_horse_archers_recruitment_cost = @[skirmisher_recruitment_cost * 3 * 2]
varangian_guards_recruitment_cost = @[heavy_infantry_recruitment_cost * 0.8]
varangian_guards_low_maint_cost = @[heavy_infantry_low_maint_cost * 0.8]
varangian_guards_high_maint_cost = @[heavy_infantry_high_maint_cost * 0.8]
handpicked_faithful_recruitment_cost = @[heavy_infantry_recruitment_cost * 0.75]
handpicked_faithful_low_maint_cost = @[heavy_infantry_low_maint_cost * 0.75]
handpicked_faithful_high_maint_cost = @[heavy_infantry_high_maint_cost * 0.75]
##############
# AI Weights #
##############
culture_ai_weight_skirmishers = {
value = -10
if = { # Cultures that favours skirmishers
limit = {
culture = {
OR = {
has_cultural_pillar = heritage_baltic
has_cultural_pillar = heritage_ugro_permian
has_cultural_pillar = heritage_balto_finnic
}
}
}
add = 20
}
if = { # Cultures that dislike skirmishers
limit = {
culture = {
OR = {
has_cultural_pillar = heritage_central_germanic
has_cultural_pillar = heritage_frankish
has_cultural_pillar = heritage_iberian
has_cultural_pillar = heritage_latin
}
}
}
add = -60
}
if = { # Cultures with a special MaA of that type should avoid the base version of the unit
limit = {
culture = {
culture_has_skirmisher_maa = yes
}
}
add = -500
}
}
culture_ai_weight_archers = {
value = 0
if = { # Cultures that favours archers
limit = {
culture = {
OR = {
has_cultural_pillar = heritage_west_germanic
has_cultural_pillar = heritage_brythonic
has_cultural_pillar = heritage_east_african
has_cultural_pillar = heritage_indo_aryan
has_cultural_pillar = heritage_dravidian
has_cultural_pillar = heritage_burman
has_cultural_pillar = heritage_chinese
}
}
}
add = 40
}
if = { # Cultures that dislike archers
limit = {
OR = {
culture = { has_cultural_pillar = heritage_central_germanic }
culture = { has_cultural_pillar = heritage_frankish }
}
}
add = -60
}
if = { # Cultures with a special MaA of that type should avoid the base version of the unit
limit = {
culture = {
culture_has_archer_maa = yes
}
}
add = -500
}
}
culture_ai_weight_heavy_infantry = {
value = 0
if = { # Cultures that favours heavy infantry
limit = {
culture = {
OR = {
has_cultural_pillar = heritage_central_germanic
has_cultural_pillar = heritage_north_germanic
has_cultural_pillar = heritage_west_germanic
has_cultural_pillar = heritage_east_slavic
}
}
}
add = 40
}
if = { # Cultures with a special MaA of that type should avoid the base version of the unit
limit = {
culture = {
culture_has_heavy_infantry_maa = yes
}
}
add = -500
}
}
culture_ai_weight_pikemen = {
value = 0
if = { # Cultures that favours spearmen
limit = {
OR = {
culture = { has_cultural_pillar = heritage_central_germanic }
culture = { has_cultural_pillar = heritage_latin }
}
}
add = 40
}
if = { # Cultures with a special MaA of that type should avoid the base version of the unit
limit = {
culture = {
culture_has_pikemen_maa = yes
}
}
add = -500
}
}
culture_ai_weight_light_cavalry = {
value = 20
if = { # Cultures that REALLY like light cavalry
limit = {
OR = {
culture = { has_cultural_pillar = heritage_iranian }
# Steppe cultures
culture = { has_cultural_pillar = heritage_turkic }
culture = { has_cultural_pillar = heritage_mongolic }
}
}
add = 80
}
if = { # Cultures that favours light cavalry
limit = {
culture = {
OR = {
has_cultural_pillar = heritage_arabic
has_cultural_pillar = heritage_iranian
has_cultural_pillar = heritage_berber
has_cultural_pillar = heritage_iberian
has_cultural_pillar = heritage_indo_aryan
}
}
}
add = 40
}
if = { # Cultures that dislike light cavalry
limit = {
OR = {
culture = { has_cultural_pillar = heritage_central_germanic }
culture = { has_cultural_pillar = heritage_tibetan }
culture = { has_cultural_pillar = heritage_baltic }
culture = { has_cultural_pillar = heritage_burman }
culture = { has_cultural_pillar = heritage_somalian }
}
}
add = -60
}
if = { # Cultures with a special MaA of that type should avoid the base version of the unit
limit = {
culture = {
culture_has_light_cavalry_maa = yes
}
}
add = -500
}
if = { # Cultures with a preference for Camel Riders should buy those over normal light cavalry
limit = {
culture = {
has_innovation = innovation_war_camels
}
OR = {
culture = { has_cultural_pillar = heritage_arabic }
culture = { has_cultural_pillar = heritage_berber }
}
}
add = -200
}
}
culture_ai_weight_heavy_cavalry = {
value = 0
if = { # Cultures that REALLY like heavy cavalry
limit = {
OR = {
culture = { has_cultural_pillar = heritage_iranian }
# Steppe cultures
culture = { has_cultural_pillar = heritage_turkic }
culture = { has_cultural_pillar = heritage_mongolic }
}
}
add = 80
}
if = { # Cultures that favours heavy cavalry
limit = {
OR = {
culture = { has_cultural_pillar = heritage_central_germanic }
culture = { has_cultural_pillar = heritage_frankish }
culture = { has_cultural_pillar = heritage_indo_aryan }
}
}
add = 40
}
if = { # Cultures that dislike heavy cavalry
limit = {
culture = {
OR = {
has_cultural_pillar = heritage_tibetan
has_cultural_pillar = heritage_baltic
has_cultural_pillar = heritage_south_slavic
has_cultural_pillar = heritage_sahelian
has_cultural_pillar = heritage_senegambian
has_cultural_pillar = heritage_west_african
has_cultural_pillar = heritage_yoruba
has_cultural_pillar = heritage_somalian
has_cultural_pillar = heritage_east_african
has_cultural_pillar = heritage_burman
}
}
}
add = -60
}
if = { # Cultures with a special MaA of that type should avoid the base version of the unit
limit = {
culture = {
culture_has_heavy_cavalry_maa = yes
}
}
add = -500
}
}
culture_ai_weight_camels = {
value = 20
if = { # Cultures that favours camel riders
limit = {
OR = {
culture = { has_cultural_pillar = heritage_arabic }
culture = { has_cultural_pillar = heritage_berber }
}
}
add = 80
}
}
culture_ai_weight_elephants = {
value = 0
if = { # Cultures that favours war elephants
limit = {
OR = {
culture = { has_cultural_pillar = heritage_dravidian }
culture = { has_cultural_pillar = heritage_indo_aryan }
culture = { has_cultural_pillar = heritage_burman }
}
}
add = 60
}
}
culture_ai_weight_vigmen = {
value = 60
if = { # Cultures that favours heavy infantry
limit = {
any_sub_realm_county = { is_coastal_county = yes }
}
add = 20
}
}
counter_synergy_ai_weight_archers = {
value = 0
if = {
limit = {
number_maa_regiments_of_base_type = {
type = heavy_infantry
value >= 3
}
NOT = { #no need to add more if i.e. regional or inherited maa of that type already exists
number_maa_regiments_of_base_type = {
type = archers
value >= 1
}
}
}
add = 60
}
}
counter_synergy_ai_weight_pikemen = {
value = 0
if = {
limit = {
number_maa_regiments_of_base_type = {
type = archers
value >= 3
}
NOT = { #no need to add more if i.e. regional or inherited maa of that type already exists
number_maa_regiments_of_base_type = {
type = pikemen
value >= 1
}
}
}
add = 60
}
}
counter_synergy_ai_weight_heavy_infantry = {
value = 0
if = {
limit = {
OR = {
number_maa_regiments_of_base_type = {
type = heavy_cavalry
value >= 3
}
number_maa_regiments_of_base_type = {
type = light_cavalry
value >= 3
}
}
NOT = { #no need to add more if i.e. regional or inherited maa of that type already exists
number_maa_regiments_of_base_type = {
type = heavy_infantry
value >= 1
}
}
}
add = 60
}
}
counter_synergy_ai_weight_light_cavalry = {
value = 0
if = {
limit = {
number_maa_regiments_of_base_type = {
type = skirmishers
value >= 3
}
NOT = { #no need to add more if i.e. regional or inherited maa of that type already exists
number_maa_regiments_of_base_type = {
type = light_cavalry
value >= 1
}
}
}
add = 60
}
}
###################
# Provisions Costs #
###################
#TODO_CD_EP3; these can't actually be used due to some kind of load order issue: they're synced in each file instead. We should file a bug and see if Code can fix.
provisions_cost_infantry_cheap = 3
provisions_cost_infantry_moderate = 7
provisions_cost_infantry_expensive = 12
provisions_cost_infantry_bankrupting = 15
provisions_cost_cavalry_cheap = 7
provisions_cost_cavalry_moderate = 15
provisions_cost_cavalry_expensive = 21
provisions_cost_cavalry_bankrupting = 30
# Generally used for siege weapons & adjacent similar stuff.
## Cheaper than cavalry, as they need less support infrastructure than mounted troops, but more expensive than infantry — tools may not eat but heavy supplies still need transporting, proofing against the elements, etc, whilst hard-to-find engineers may not put up with common grub.
provisions_cost_special_cheap = 6
provisions_cost_special_moderate = 12
provisions_cost_special_expensive = 18
provisions_cost_special_bankrupting = 24

View file

@ -0,0 +1,225 @@
#######################
# MONGOL VALUES
#######################
# Conquering things
# Drinking mare's milk
# Destroying civilisations
# Fighting
# Chance of Mongols appearing per year between 1180 and 1250
temujin_appearance_base_chance = 1
# Weight used in selecting targets for the automated Mongol invasions
mongol_invasion_target_character_weight = {
value = 0.001
every_sub_realm_county = {
if = {
limit = {
title_province = {
geographical_region = special_mongol_empire_start_region
}
}
add = 10000
}
else_if = {
limit = {
title_province = {
geographical_region = special_mongol_empire_conquest_region_prio_1
}
}
add = 5000
}
else_if = {
limit = {
title_province = {
geographical_region = special_mongol_empire_conquest_region_prio_2
}
}
add = 3000
}
else_if = {
limit = {
title_province = {
geographical_region = special_mongol_empire_conquest_region_prio_3
}
}
add = 2000
}
else_if = {
limit = {
title_province = {
geographical_region = special_mongol_empire_conquest_region_prio_4
}
}
add = 1000
}
else_if = {
limit = {
title_province = {
geographical_region = special_mongol_empire_conquest_region_prio_5
}
}
add = 500
}
else_if = {
limit = {
title_province = {
geographical_region = special_mongol_empire_conquest_region_cleanup
}
}
add = 250
}
else_if = {
limit = {
title_province = {
geographical_region = world_tibet
}
}
add = -100
}
}
}
# Mongol breakup succession score
mongol_breakup_succession_score = {
# Prioritize the actual heir
if = {
limit = {
exists = scope:old_mongol_emperor.primary_heir
this = scope:old_mongol_emperor.primary_heir
}
add = 100
}
# A bonus for being of the same house
if = {
limit = {
exists = house
house = scope:old_mongol_emperor.house
}
add = 50
}
# Prioritize siblings
if = {
limit = {
is_sibling_of = scope:old_mongol_emperor
}
add = 100
}
# Children of children of the old khan gain some priority
else_if = {
limit = {
any_parent = {
any_parent = {
this = scope:old_mongol_emperor
}
}
}
add = 50
}
else_if = {
limit = {
is_close_family_of = scope:old_mongol_emperor
}
add = 30
}
else_if = {
limit = {
is_close_or_extended_family_of = scope:old_mongol_emperor
}
add = 15
}
# Skill bonuses
add = sum_of_all_skills_value
# Gender preference, can't check for realm law so using faith
if = {
limit = {
is_female = yes
scope:old_mongol_emperor.faith = {
has_doctrine_parameter = male_dominated_law
}
}
multiply = 0.1
}
else_if = {
limit = {
scope:old_mongol_emperor.faith = {
has_doctrine_parameter = female_dominated_law
}
}
multiply = 0.1
}
# A penalty for not being the same culture, mongol, or an accepted culture
if = {
limit = {
NOR = {
culture = scope:old_mongol_emperor.culture
culture = culture:mongol
culture = {
cultural_acceptance = {
target = scope:old_mongol_emperor.culture
value >= 75
}
}
}
}
multiply = 0.1
}
# Not adult
if = {
limit = {
is_adult = no
}
multiply = 0.1
}
# Ill health
if = {
limit = {
OR = {
has_contagious_deadly_disease_trigger = yes
has_epidemic_disease_trigger = yes
health <= poor_health
has_trait = infirm
has_trait = incapable
}
}
multiply = 0.01
}
}
temujin_soldier_female_chance = {
if = {
limit = {
NOT = { dummy_female = { can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:temujin } } }
dummy_male = { can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:temujin } }
}
add = 0
}
else_if = {
limit = {
dummy_female = { can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:temujin } }
NOT = { dummy_male = { can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:temujin } } }
}
add = 100
}
else = {
add = 50
}
}
mongol_successor_faith_chance = {
value = 0
save_temporary_scope_as = county_faith_check
add = {
scope:faith_changer = {
every_vassal = {
faith = scope:county_faith_check.faith
}
add = 5
}
}
}

View file

@ -0,0 +1,5 @@
##################################################
# Send Poem Interaction
# This needs to be synced with @send_poem_cooldown_years_value in 00_poetry_opinions.txt.
send_poem_cooldown_years_value = 5

View file

@ -0,0 +1,4 @@

dungeon_events_on_action_chance = {
add = 50
}

View file

@ -0,0 +1,38 @@
#############
# SAHARA & SAHEL
#############
local_slave_gold_value = { #How much would a colossal slave raid fetch from this place?
value = monthly_income
multiply = 10
#Sensible max-mins.
min = 30
max = 100
#Give a whole number.
ceiling = yes
}
slaver_reparations_value = {
value = monthly_character_income
#Sensible max-mins.
min = 10
max = 120
#Give a whole number.
ceiling = yes
}
selfish_liege_slave_gold_value = {
value = monthly_income
multiply = 5
#Sensible max-mins.
min = 15
max = 80
#Give a whole number.
ceiling = yes
}

View file

@ -0,0 +1,44 @@
# Default relation opinions
default_friend_opinion = 15
default_rival_opinion = -15
default_lover_opinion = 15
#Rivalry score adjustments
minor_rival_score_gain = 10
medium_rival_score_gain = 20
major_rival_score_gain = 30
massive_rival_score_gain = 40
#Rivalry score diff thresholds
minor_story_owner_advantage = 10
medium_story_owner_advantage = 30
major_story_owner_advantage = 50
minor_target_rival_advantage = -10
medium_target_rival_advantage = -30
major_target_rival_advantage = -50
# Existing Relationship Tallies
sum_friends_and_rivals_tally_value = {
value = 0
every_relation = {
type = friend
add = 1
}
every_relation = {
type = rival
add = 1
}
}
sum_potential_friends_and_potential_rivals_tally_value = {
value = 0
every_relation = {
type = potential_friend
add = 1
}
every_relation = {
type = potential_rival
add = 1
}
}
getwomanmangirlboy_age_threshold_value = 20

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,6 @@

#Zealous Tracking
scholarship_zealous_threshold = -3
#Cynical Tracking
scholarsip_cynical_threshold = 3

View file

@ -0,0 +1,179 @@
############################
# COMBAT SETTINGS
############################
# By default, how much % extra do we pump it up when someone is risking injury? Occurs *after* it has been determined that they may be injured, and just increases that chance.
starting_injury_bonus = 10
# How much of a gap do you need, initially, between you and your opponent in order to win?
starting_success_threshold = 125
# How many rounds can the single combat go before it enters sudden death?
round_cap_limit = 4
# When does it get easier to injure yourself, and by how much?
round_injury_bonus_lower = 3
round_injury_bonus_lowest = 4
round_injury_adjustment_lower = 10
round_injury_adjustment_lowest = 30
# When does it get easier to win, and by how much?
round_success_threshold_lower = 3
round_success_threshold_lowest = 4
round_success_adjustment_lower = -15
round_success_adjustment_lowest = -20
############################
# SINGLE COMBAT SKILL RATINGS
############################
low_scsk = low_skill_rating
mediocre_scsk = mediocre_skill_rating
medium_scsk = medium_skill_rating
decent_scsk = decent_skill_rating
high_scsk = high_skill_rating
very_high_scsk = very_high_skill_rating
extremely_high_scsk = extremely_high_skill_rating
############################
# COMBAT ROLLS
############################
# Injury Risk values
injury_risk_none = 0
injury_risk_low = 25
injury_risk_medium = 50
injury_risk_high = 75
injury_risk_very_high = 100
# Duel Success values
duel_success_none = 0
duel_success_low = 25
duel_success_medium = 50
duel_success_high = 75
duel_success_very_high = 100
############################
# DESC THRESHOLDS
############################
sc_defender_injury_check_actual = {
value = scope:sc_defender.var:sc_defender_injury_risk_check
subtract = scope:sc_defender.var:sc_defender_duel_success_score
}
sc_attacker_injury_check_actual = {
value = scope:sc_attacker.var:sc_attacker_injury_risk_check
subtract = scope:sc_attacker.var:sc_attacker_duel_success_score
}
single_combat_injury_very_unlikely_value = -50
single_combat_injury_unlikely_value = -10
single_combat_injury_neutral_value = 10
single_combat_injury_likely_value = 40
single_combat_success_almost_impossible_value = -70
single_combat_success_very_unlikely_value = -45
single_combat_success_unlikely_value = -20
single_combat_success_likely_value = 20
single_combat_success_very_likely_value = 45
single_combat_success_almost_certain_value = 70
############################
# COMBAT MOVE WEIGHTING CONTROLS
############################
sce_regular_combat_repeat_down_weight = -750
############################
# COMBAT MOVE AI WEIGHTS
############################
sce_ai_mod_trait_weight_light = 25
sce_ai_mod_trait_weight_medium = 50
sce_ai_mod_trait_weight_heavy = 75
sce_ai_mod_trait_down_weight_medium = -50
############################
# COMBAT MOVE SPECIAL EFFECTS VALUES
############################
combat_move_pocket_silver_value = 20
combat_move_reason_you_suck_speech_value = {
value = diplomacy
# Every 1pts of diplomacy gives 5 prestige.
multiply = 5
}
combat_move_butchery_dread_value = {
value = prowess
# Every 2pts of prowess gives a point of dread.
divide = 2
# Up to a sensible maximum.
max = 10
}
combat_move_blade_dance_value = {
value = prowess
# Every 1pts of prowess gives 5 prestige.
multiply = 5
}
# Since this doesn't refere to a true threshold, a malus means incrementing the number (bringing you closer to the eventual target).
combat_move_wound_threshold_malus_1 = 30
combat_move_wound_threshold_malus_2 = 40
combat_move_wound_threshold_malus_3 = 50
# Since this doesn't refere to a true threshold, a bonus means decrementing the number (bringing you further away from the eventual target).
combat_move_wound_threshold_bonus_1 = -30
combat_move_wound_threshold_bonus_2 = -40
combat_move_wound_threshold_bonus_3 = -50
############################
# MISC
############################
# Calculates a character's prowess, plus the number of traits they have with beneficial special combat moves.
sce_has_single_combat_special_traits_value = {
value = prowess
# Blademaster.
if = {
limit = { has_trait = lifestyle_blademaster }
add = 10
}
# Hunter.
if = {
limit = { has_trait = lifestyle_hunter }
add = 10
}
# Berserker.
if = {
limit = { has_trait = berserker }
add = 10
}
# Shieldmaiden.
if = {
limit = { has_trait = shieldmaiden }
add = 10
}
# Varangian.
if = {
limit = { has_trait = varangian }
add = 10
}
# Deviant.
if = {
limit = { has_trait = deviant }
add = 10
}
# Viking.
if = {
limit = { has_trait = viking }
add = 10
}
}

View file

@ -0,0 +1,159 @@
############################
# STRESS CHANGES
############################
miniscule_stress_gain = 10
minor_stress_gain = 20
medium_stress_gain = 40
major_stress_gain = 60
massive_stress_gain = 100
monumental_stress_gain = 150
miniscule_stress_loss = -5
minor_stress_loss = -10
medium_stress_loss = -20
major_stress_loss = -40
massive_stress_loss = -60
monumental_stress_loss = -100
#Thresholds
minor_stress_gain_threshold = 100
medium_stress_gain_threshold = 200
major_stress_gain_threshold = 300
max_stress_gain_threshold = 400
#Values to be used in "stress_impact"
miniscule_stress_impact_gain = 10
minor_stress_impact_gain = 20
medium_stress_impact_gain = 40
major_stress_impact_gain = 80
massive_stress_impact_gain = 100
miniscule_stress_impact_loss = -5
minor_stress_impact_loss = -15
medium_stress_impact_loss = -30
major_stress_impact_loss = -65
massive_stress_impact_loss = -100
# For certain traits 'nullifying' most of a medium stress gain, but some left for flavor.
sub_medium_stress_impact_loss = -30
sub_medium_stress_impact_gain = 30
refund_perks_stress_impact = 100
mental_break_opt_out_stress_gain = 25
hunt_stress_loss_value = -30
meager_feast_stress_loss_value = -10
feast_stress_loss_value = -30
medium_feast_stress_loss_value = -35
lavish_feast_stress_loss_value = -40
exotic_feast_stress_loss_value = -45
activity_stress_loss_impact = -15
activity_stress_gain_impact = 15
#Duration of stress-induced opinion penalties in days
default_stress_opinion_duration = 3650
#Cost of changing a child's traits
child_trait_change_stress_penalty = 30
depart_from_own_trait_stress_cost = 10
#Stress trigger values
very_low_stress = 10
low_stress = 25
lower_than_baseline_stress = 50
normal_baseline_stress = 75
higher_than_baseline_stress = 100
low_medium_stress = 125
medium_stress = 150
high_medium_stress = 175
high_stress = 200
very_high_stress = 250
extremely_high_stress = 300
# Mental Break values
stress_threshold_cooldown_duration = {
value = 1824 # 1 day less than 5 years
if = {
limit = {
has_perk = mental_resilience_perk
}
add = 1095 # 3 years extra
}
floor = yes # Should be unneccessary, but ensures it's an int
}
stress_threshold_cooldown_duration_in_years = {
value = 5
if = {
limit = {
has_perk = mental_resilience_perk
}
add = 3
}
}
stress_threshold_second_check_timing = {
value = 1825 # 5 years
if = {
limit = {
has_perk = mental_resilience_perk
}
add = 1095 # 3 years extra
}
floor = yes # Should be unneccessary, but ensures it's an int
}
generous_title_grant_value = {
value = 0
# Base stress value scaled on title tier.
every_in_list = {
list = target_titles
add = {
value = 0
if = {
limit = { this.tier = tier_county }
add = minor_stress_loss # 10 base
}
else_if = {
limit = { this.tier = tier_duchy }
add = {
value = medium_stress_loss
multiply = 1.25 # 25 base
}
}
else_if = {
limit = { this.tier = tier_kingdom }
add = {
value = major_stress_loss
multiply = 2 # 80 base
}
}
else_if = {
limit = { this.tier = tier_empire }
add = {
value = monumental_stress_loss
multiply = 2 # 200 base
}
}
# Lose more stress for giving away titles of your primary tier; lose less stress for giving away titles far below your primary in tier.
multiply = {
value = this.tier
add = 1
divide = scope:actor.primary_title.tier
}
# Round to the nearest multiple of 5.
divide = 5
round = yes
multiply = 5
# For a Duke, this will be x1.25 for Duchies (-30) and x1 for Counties(-10)
# For a King, this will be x1.25 for a Kingdom (-100), x1 for a Duchy (-25) and x0.75 for Counties(-10)
# For an Emperor, this will be x1.25 for an Empire(-200), x1 for a Kingdom(-80), x0.75 for a Duchy(-20) and x0.4 for a Counties (-5)
}
}
}

View file

@ -0,0 +1,174 @@
##################################################
# Struggle Scripted Values
##################################################
##################################################
# Agnostic Values
# Since we never take points away from catalysts, we only need them in the positive.
minimal_struggle_catalyst_gain = 1
minor_struggle_catalyst_gain = 3
medium_struggle_catalyst_gain = 5
major_struggle_catalyst_gain = 10
massive_struggle_catalyst_gain = 25
monumental_struggle_catalyst_gain = 50
# "over time" values for balancing passage of time catalysts.
minimal_struggle_catalyst_over_time_gain = 1
minor_struggle_catalyst_over_time_gain = 2
medium_struggle_catalyst_over_time_gain = 3
major_struggle_catalyst_over_time_gain = 5
massive_struggle_catalyst_over_time_gain = 10
monumental_struggle_catalyst_over_time_gain = 20
# Special values for syncing catalysts between phases that need different values than the standard for balancing purposes.
catalyst_forming_alliance_between_supporter_detractor_rulers_value = 2
catalyst_fp3_yearly_time_out_ending_drift = {
value = 1
# If we're past 960, bump it up.
if = {
limit = { current_year >= 960 }
add = 1
}
# If we're past 1000, really bump it up.
## Remember that this is cumulative.
if = {
limit = { current_year >= 1000 }
add = 3
}
}
# Mess around with the AI's priorities for war targets.
## We mostly apply this in nakedly aggressive wars; AI with claims or de jure rights elsewhere shouldn't want to forgo them completely.
struggle_wars_prioritise_struggle_targets_value = {
value = 1
# If scope:attacker is involved in a struggle, we tank how much they want to attack non-struggle characters.
if = {
limit = {
scope:attacker = {
any_character_struggle = {
involvement = involved
is_secondary_character_involvement_neither_trigger = { CHAR = scope:defender }
}
}
}
multiply = 0.25
}
# And scope:defender is an interloper in the same struggle, we double-dip.
if = {
limit = {
scope:attacker = {
any_character_struggle = {
involvement = involved
is_secondary_character_involvement_interloper_trigger = { CHAR = scope:defender }
}
}
}
multiply = 1.5
}
# Agenda impact
if = {
limit = {
scope:attacker = {
any_character_struggle = {
involvement = involved
}
}
}
multiply = {
value = 0
if = {
limit = {
scope:attacker = {
any_character_struggle = {
phase_has_catalyst = catalyst_winning_large_conquest_war
}
has_character_flag = agenda_towards_escalation
}
}
add = 2
}
else_if = {
limit = {
scope:attacker = {
any_character_struggle = {
phase_has_catalyst = catalyst_winning_large_conquest_war
}
}
}
add = 0.25
}
}
}
}
##################################################
# Catalyst Values
catalyst_forming_alliance_with_major_uninvolved_power_power_realm_size_value = { value = massive_realm_size }
catalyst_cooldown_between_significant_character_deaths_years_value = 25
##################################################
# Phase Values
# Sundry bonuses for council tasks and such.
boost_county_conversion_phase_bonus_value = {
value = court_chaplain_conversion_base_total
multiply = 0.25
}
boost_county_conversion_phase_malus_value = {
value = court_chaplain_conversion_base_total
multiply = -0.25
}
# Used for random weighting.
add_X_per_sub_realm_struggle_county_value = {
every_sub_realm_county = {
limit = {
any_county_struggle = { this = root }
}
add = 2
}
}
fp2_struggle_0011_gift_cost_value = { value = major_gold_value }
fp2_struggle_compromise_ending_minimal_empire_size = 5
# What we show in loc.
fp3_caliph_gets_cheaper_subjugation_cb_show_value = 0.2
# What we actually use in script.
fp3_caliph_gets_cheaper_subjugation_cb_actual_value = {
value = 1
subtract = fp3_caliph_gets_cheaper_subjugation_cb_show_value
}
# Empower viziers.
fp3_empower_viziers_swing_value = 25
##################################################
# FP3 Control Values
# At what threshold of house heads do we activate successively larger antagonistic house catalysts?
catalyst_yearly_influential_house_is_antagonistic_major_control_value = 10
catalyst_yearly_influential_house_is_antagonistic_medium_control_value = 6
catalyst_yearly_influential_house_is_antagonistic_minor_control_value = 3
catalyst_yearly_influential_house_is_antagonistic_minimal_control_value = 1
# At what threshold of house heads do we activate successively larger harmonious house catalysts?
catalyst_yearly_influential_house_is_harmonious_major_control_value = 10
catalyst_yearly_influential_house_is_harmonious_medium_control_value = 6
catalyst_yearly_influential_house_is_harmonious_minor_control_value = 3
catalyst_yearly_influential_house_is_harmonious_minimal_control_value = 1
sub_realm_size_value = {
value = sub_realm_size
}
caliph_realm_size_value = {
value = title:d_sunni.holder.realm_size
}

View file

@ -0,0 +1,5 @@
recommended_num_maa_regiments_value = {
# 1 for counts, 2 for dukes, 3 for kings, 4 for emperors
value = highest_held_title_tier
subtract = 1
}

View file

@ -0,0 +1,173 @@
tier_unlanded = 0
tier_barony = 1
tier_county = 2
tier_duchy = 3
tier_kingdom = 4
tier_empire = 5
highest_held_title_tier_plus_one = {
value = highest_held_title_tier
add = 1
max = tier_empire
}
highest_held_title_tier_minus_one = {
value = highest_held_title_tier
subtract = 1
min = tier_unlanded
}
# Referenced in code, what % of a title's counties you need to own to create it
# Note: First item with 'desc' is considered the base and will be shown as 'neutral'
# root = creating character
# scope:title = the title
create_title_counties_percentage = {
scope:title = {
if = {
limit = {
OR = {
tier = tier_duchy
tier = tier_kingdom
}
}
add = {
value = 0.5
desc = CREATE_TITLE_PERCENTAGE_BASE_DUCHY_KINGDOM
}
if = {
limit = { # Do you have Legitimacy?
root ?= {
has_legitimacy = yes
}
}
if = {
limit = {
root = {
has_legitimacy_flag = extra_reduced_title_creation_cost
}
}
add = {
value = -0.25 #25%
desc = CREATE_TITLE_PERCENTAGE_LEGITIMACY_DISCOUNT_EXTRA_REDUCED
}
}
else_if = {
limit = {
root = { has_legitimacy_flag = very_reduced_title_creation_cost }
}
add = {
value = -0.20 #30%
desc = CREATE_TITLE_PERCENTAGE_LEGITIMACY_DISCOUNT_VERY_REDUCED
}
}
else_if = {
limit = {
root = { has_legitimacy_flag = reduced_title_creation_cost }
}
add = {
value = -0.15 #35%
desc = CREATE_TITLE_PERCENTAGE_LEGITIMACY_DISCOUNT_REDUCED
}
}
else = {
#If you're level 2/1/0 or don't have Legitimacy you get no discounts
add = {
value = 0.0
desc = CREATE_TITLE_PERCENTAGE_LEGITIMACY_DISCOUNT_NONE
}
}
}
else = {
#If you're level 2/1/0 or don't have Legitimacy you get no discounts
add = {
# We add 0 with a 'desc', so we show up in the GUI and people understand legitimacy is a way to improve this
value = 0.0
desc = CREATE_TITLE_PERCENTAGE_LEGITIMACY_DISCOUNT_NONE
}
}
}
else_if = { #Smaller discounts for Empires
limit = {
tier = tier_empire
}
add = {
value = 0.8
desc = CREATE_TITLE_PERCENTAGE_BASE_EMPIRE
}
if = {
limit = { # Do you have Legitimacy?
root = {
has_legitimacy = yes
}
}
if = {
limit = {
root = {
has_legitimacy_flag = extra_reduced_title_creation_cost
}
}
add = {
value = -0.15 #65%
desc = CREATE_TITLE_PERCENTAGE_LEGITIMACY_DISCOUNT_EXTRA_REDUCED
}
}
else_if = {
limit = {
root = { has_legitimacy_flag = very_reduced_title_creation_cost }
}
add = {
value = -0.10 #70%
desc = CREATE_TITLE_PERCENTAGE_LEGITIMACY_DISCOUNT_VERY_REDUCED
}
}
else_if = {
limit = {
root = { has_legitimacy_flag = reduced_title_creation_cost }
}
add = {
value = -0.05 #75%
desc = CREATE_TITLE_PERCENTAGE_LEGITIMACY_DISCOUNT_REDUCED
}
}
else = {
#If you're level 1/0 or don't have Legitimacy you get no discounts
add = {
value = 0.0
desc = CREATE_TITLE_PERCENTAGE_LEGITIMACY_DISCOUNT_NONE
}
}
}
else = {
#If you're level 1/0 or don't have Legitimacy you get no discounts
add = {
# We add 0 with a 'desc', so we show up in the GUI and people understand legitimacy is a way to improve this
value = 0.0
desc = CREATE_TITLE_PERCENTAGE_LEGITIMACY_DISCOUNT_NONE
}
}
}
}
}
# Referenced in code, what % of a title's counties you need to own to usurp it
# root = creating character
# scope:title = the title
usurp_title_counties_percentage = {
scope:title = {
if = {
limit = {
OR = {
tier = tier_duchy
tier = tier_kingdom
}
}
add = 0.5
}
else_if = {
limit = {
tier = tier_empire
}
add = 0.8
}
}
}

View file

@ -0,0 +1,10 @@
#Trait xp
miniscule_trait_xp = 1
minor_trait_xp = 3
medium_trait_xp = 5
major_trait_xp = 10
massive_trait_xp = 20 #Rarely ever use
#XP needed for trait level
trait_second_level = 50
trait_third_level = 100

View file

@ -0,0 +1,164 @@
traveler_rank_up_1_threshold = 10
traveler_rank_up_2_threshold = 20
traveler_rank_up_3_threshold = 30
traveler_rank_up_4_threshold = 40
traveler_rank_up_5_threshold = 50
traveler_rank_up_6_threshold = 60
traveler_rank_up_7_threshold = 70
traveler_rank_up_8_threshold = 80
traveler_rank_up_9_threshold = 90
traveler_rank_up_10_threshold = 100
# Read time constants
@hills_danger_value = 45
@mountains_danger_value = 65
@desert_danger_value = 50
@desert_mountains_danger_value = 65
@jungle_danger_value = 65
@forest_danger_value = 45
@taiga_danger_value = 55
@wetlands_danger_value = 65
@steppe_danger_value = 50
@floodplains_danger_value = 35
@drylands_danger_value = 35
@epidemic_danger_value = 80
@high_reduction_constant = -1
@medium_reduction_constant = @[2 / 3 * -1]
@low_reduction_constant = @[1 / 3 * -1]
# Script values other files can reference
hills_danger_value = @hills_danger_value
mountains_danger_value = @mountains_danger_value
desert_danger_value = @desert_danger_value
desert_mountains_danger_value = @desert_mountains_danger_value
jungle_danger_value = @jungle_danger_value
forest_danger_value = @forest_danger_value
taiga_danger_value = @taiga_danger_value
wetlands_danger_value = @wetlands_danger_value
steppe_danger_value = @steppe_danger_value
floodplains_danger_value = @floodplains_danger_value
drylands_danger_value = @drylands_danger_value
epidemic_danger_value = @epidemic_danger_value
ocean_danger_value = 75
coastal_sea_danger_value = 50
low_sea_danger_reduction = -25
medium_sea_danger_reduction = -45
hills_high_danger_reduction = @[hills_danger_value * high_reduction_constant]
hills_medium_danger_reduction = @[hills_danger_value * medium_reduction_constant -2]
hills_low_danger_reduction = @[hills_danger_value * low_reduction_constant +1]
mountains_high_danger_reduction = @[mountains_danger_value * high_reduction_constant]
mountains_medium_danger_reduction = @[mountains_danger_value * medium_reduction_constant +1]
mountains_low_danger_reduction = @[mountains_danger_value * low_reduction_constant -2]
desert_high_danger_reduction = @[desert_danger_value * high_reduction_constant]
desert_medium_danger_reduction = @[desert_danger_value * medium_reduction_constant +1]
desert_low_danger_reduction = @[desert_danger_value * low_reduction_constant -2]
desert_mountains_high_danger_reduction = @[desert_mountains_danger_value * high_reduction_constant]
desert_mountains_medium_danger_reduction = @[desert_mountains_danger_value * medium_reduction_constant +1]
desert_mountains_low_danger_reduction = @[desert_mountains_danger_value * low_reduction_constant -2]
jungle_high_danger_reduction = @[jungle_danger_value * high_reduction_constant]
jungle_medium_danger_reduction = @[jungle_danger_value * medium_reduction_constant +1]
jungle_low_danger_reduction = @[jungle_danger_value * low_reduction_constant -2]
forest_high_danger_reduction = @[forest_danger_value * high_reduction_constant]
forest_medium_danger_reduction = @[forest_danger_value * medium_reduction_constant -2]
forest_low_danger_reduction = @[forest_danger_value * low_reduction_constant +1]
taiga_high_danger_reduction = @[taiga_danger_value * high_reduction_constant]
taiga_medium_danger_reduction = @[taiga_danger_value * medium_reduction_constant -1]
taiga_low_danger_reduction = @[taiga_danger_value * low_reduction_constant -1]
wetlands_high_danger_reduction = @[wetlands_danger_value * high_reduction_constant]
wetlands_medium_danger_reduction = @[wetlands_danger_value * medium_reduction_constant +1]
wetlands_low_danger_reduction = @[wetlands_danger_value * low_reduction_constant -2]
steppe_high_danger_reduction = @[steppe_danger_value * high_reduction_constant]
steppe_medium_danger_reduction = @[steppe_danger_value * medium_reduction_constant +1]
steppe_low_danger_reduction = @[steppe_danger_value * low_reduction_constant -2]
floodplains_high_danger_reduction = @[floodplains_danger_value * high_reduction_constant]
floodplains_medium_danger_reduction = @[floodplains_danger_value * medium_reduction_constant +1]
floodplains_low_danger_reduction = @[floodplains_danger_value * low_reduction_constant -2]
drylands_high_danger_reduction = @[drylands_danger_value * high_reduction_constant]
drylands_medium_danger_reduction = @[drylands_danger_value * medium_reduction_constant +1]
drylands_low_danger_reduction = @[drylands_danger_value * low_reduction_constant -2]
epidemic_high_danger_reduction = @[epidemic_danger_value * high_reduction_constant]
epidemic_medium_danger_reduction = @[epidemic_danger_value * medium_reduction_constant +1]
epidemic_low_danger_reduction = @[epidemic_danger_value * low_reduction_constant -2]
# Travel Option Cost Scripted Values
low_travel_option_base_cost = 2
medium_travel_option_base_cost = 5
high_travel_option_base_cost = 10
tier_multiplier = {
value = primary_title.tier
subtract = 1
min = 1
}
very_low_travel_option_cost = {
value = low_travel_option_cost
multiply = 0.5
}
low_travel_option_cost = {
value = low_travel_option_base_cost
multiply = tier_multiplier
if = {
limit = {
has_perk = well_prepared_perk
}
multiply = 0.75
}
}
medium_travel_option_cost = {
value = medium_travel_option_base_cost
multiply = tier_multiplier
if = {
limit = {
has_perk = well_prepared_perk
}
multiply = 0.75
}
}
high_travel_option_cost = {
value = high_travel_option_base_cost
multiply = tier_multiplier
if = {
limit = {
has_perk = well_prepared_perk
}
multiply = 0.75
}
}
struggle_low_danger_impact = {
value = 15
}
struggle_medium_danger_impact = {
value = 30
}
struggle_high_danger_impact = {
value = 50
}
food_poison_value = {
value = 15
subtract = health
if = {
limit = {
has_perk = iron_constitution_perk
}
add = -5
}
}

View file

@ -0,0 +1,113 @@
###################
# UNITY VALUES #
###################
# BASE HOUSE UNITY VALUES
miniscule_unity_value = 1
minor_unity_value = 2
medium_unity_value = 4
major_unity_value = 6
massive_unity_value = 10
miniscule_unity_loss = {
value = 0
subtract = miniscule_unity_value
}
minor_unity_loss = {
value = 0
subtract = minor_unity_value
}
medium_unity_loss = {
value = 0
subtract = medium_unity_value
}
major_unity_loss = {
value = 0
subtract = major_unity_value
}
massive_unity_loss = {
value = 0
subtract = massive_unity_value
}
miniscule_unity_gain = miniscule_unity_value
minor_unity_gain = minor_unity_value
medium_unity_gain = medium_unity_value
major_unity_gain = major_unity_value
massive_unity_gain = massive_unity_value
unity_house_head_multiplier_value = 2 # How much more of an impact house heads have on house unity
number_of_landed_house_members_value = {
value = 0
house = {
every_house_member = {
limit = {
is_landed_or_landless_administrative = yes
}
add = 1
}
}
}
number_of_landed_house_unity_members_value = {
value = 0
every_house_member = {
limit = {
is_landed_or_landless_administrative = yes
}
add = 1
max = 10
}
desc = MODIFIER_DEFINITION_MAIN_DESC_HOUSE_UNITY
}
# EFFECTS AND PARAMETER VALUES
unity_antagonistic_cb_cost_display_value = -30
unity_antagonistic_cb_cost_value = {
value = 1
add = {
value = unity_antagonistic_cb_cost_display_value
divide = 100
}
}
unity_competitive_cb_cost_display_value = -15
unity_competitive_cb_cost_value = {
value = 1
add = {
value = unity_competitive_cb_cost_display_value
divide = 100
}
}
unity_friendly_cb_cost_display_value = 15
unity_friendly_cb_cost_value = {
value = 1
add = {
value = unity_friendly_cb_cost_display_value
divide = 100
}
}
unity_harmonious_cb_cost_display_value = 30
unity_harmonious_cb_cost_value = {
value = 1
add = {
value = unity_harmonious_cb_cost_display_value
divide = 100
}
}
unity_antagonistic_invasion_cooldown_value = {
value = 10
}
clan_powerful_vassal_no_alliance_opinion_penalty_value = {
value = -30
}
clan_vassal_no_alliance_opinion_penalty_value = {
value = -15
}
unity_major_decision_piety_cost = { value = 200 }
unity_minor_decision_piety_cost = { value = 100 }

View file

@ -0,0 +1,63 @@

visit_settlement_minimum_cooldown_days = 90 #3 months
visit_settlement_minimum_cooldown_months = 3 #Sync with visit_settlement_minimum_cooldown_days
visit_settlement_small_cooldown_days = 180 #6 months
visit_settlement_small_cooldown_months = 6 #Sync with visit_settlement_small_cooldown_days
visit_settlement_medium_cooldown_days = 365 #1 year
visit_settlement_medium_cooldown_year = 1 #Sync with visit_settlement_medium_cooldown_days
visit_settlement_cooldown_days = 730 #2 years
visit_settlement_large_cooldown_days = 1460 #4 years
num_contracts_spawned_value = 2
old_adventurer_stashed_gold_value = 50
old_adventurer_stashed_provisions_value = 1000
many_followers_value = 15
visit_settlement_provision_refill_value = {
value = provision_refill_value
multiply = 1.5
}
#Provisions split into percentages, steps of 20%
twenty_percent_provisions_value = {
value = max_provisions
multiply = 0.2
}
forty_percent_provisions_value = {
value = max_provisions
multiply = 0.4
}
sixty_percent_provisions_value = {
value = max_provisions
multiply = 0.6
}
eighty_percent_provisions_value = {
value = max_provisions
multiply = 0.8
}
#Used to calculate quarter of the provisions needed for you to reach max provisions, maxed at 2000
quarter_to_max_provisions_value = {
value = root.domicile.max_provisions
subtract = root.domicile.provisions
divide = 4
max = 2000
}
#Used to calculate half of the provisions needed for you to reach max provisions
half_to_max_provisions_value = {
value = root.domicile.max_provisions
subtract = root.domicile.provisions
divide = 2
}
visit_settlement_skill_gain_cap_value = 5
laamp_ai_spending_pants_value = 500
visit_settlement_piety_gain_value = {
value = major_piety_gain
divide = root.var:visit_settlement_church_donation
}

View file

@ -0,0 +1,914 @@
##############
# WAR VALUES #
##############
# Truce Durations
## Since we want these to work out to nice, even numbers, we calc them manually rather than use multipliers.
standard_truce_duration_days = {
value = 1825
# Deductions.
## Flexible truces perk.
if = {
limit = {
scope:attacker = { has_perk = flexible_truces_perk }
}
add = -450
}
## Certain struggle phases.
if = {
limit = {
scope:attacker = {
any_character_struggle = {
is_struggle_parameter_active_secondary_character_involvement_either_trigger = {
PARAMETER = truces_by_involved_or_interlopers_within_region_shorter
CHAR = scope:defender
}
}
}
}
add = -900
}
if = {
limit = {
scope:attacker = {
any_character_struggle = {
is_struggle_parameter_active_secondary_character_involvement_either_trigger = {
PARAMETER = truces_by_involved_or_interlopers_within_region_longer
CHAR = scope:defender
}
}
}
}
add = 900
}
# A truce should at least give a 2-year breather.
min = 730
if = {
limit = {
scope:attacker = {
any_character_war = {
primary_attacker = scope:attacker
primary_defender = scope:defender
using_cb = fp2_border_raid
}
}
}
multiply = 2
}
}
#Victory Prestige Experience Gain
mongol_invasion_cb_prestige_experience_gain = 10
#Ally contribution prestige gain
mongol_invasion_cb_ally_prestige = 100
#Prestige gain
mongol_invasion_cb_prestige_gain = 250
#White peace prestige values
mongol_invasion_cb_prestige_white_peace = -100
# Determined Independence Cultural Tradition
determined_independence_defensive_advantage_value = 15
#############
# Raid
#############
# Practiced Pirates Cultural Tradition
not_tribal_raid_prestige_multiplier = 1.5
raid_gold_value = { #How much cash does this settlement generate in a raid?
value = monthly_income
multiply = 10
#Sensible max-mins.
min = 30
max = 100
#Give a whole number.
ceiling = yes
}
tour_tax_gold_value = {
value = monthly_income
multiply = 4
#Give a whole number.
ceiling = yes
}
viking_conquest_ai_score_value = {
value = 1
scope:attacker = {
if = {
limit = {
can_use_viking_invasion_cbs_trigger = yes
}
if = {
limit = { NOT = { culture = scope:defender.culture } }
add = 0.5
if = {
limit = {
NOT = { culture = { has_same_culture_heritage = scope:defender.culture } }
}
add = 0.5
}
}
if = {
limit = { NOT = { faith = scope:defender.faith } }
add = 0.5
if = {
limit = { NOT = { faith.religion = scope:defender.faith.religion } }
add = 0.5
}
}
if = {
limit = {
scope:defender.faith = {
has_doctrine_parameter = unreformed
}
}
multiply = 0.2
}
if = {
limit = {
scope:defender.faith = scope:attacker.faith
}
multiply = 0.2
}
if = { # Russian Vikings stay home
limit = {
scope:attacker = {
capital_province = {
geographical_region = world_europe_east
}
NOT = {
character_is_realm_neighbor = scope:defender
}
}
}
multiply = 0.1
}
if = { # Norsemen should prefer their historical targets
limit = {
scope:attacker = {
OR = {
capital_province = {
geographical_region = world_europe_north
}
capital_province = {
geographical_region = world_europe_west
}
capital_province = {
geographical_region = world_europe_west_francia
}
capital_province = {
geographical_region = world_europe_west_germania
}
}
}
scope:defender = {
OR = {
capital_province = {
geographical_region = world_europe_west
}
capital_province = {
geographical_region = world_europe_west_francia
}
capital_province = {
geographical_region = world_europe_west_germania
}
}
}
}
multiply = 10
}
if = { # Norsemen should not rush the Pope...
limit = {
scope:attacker.faith.religion = faith:norse_pagan.religion
scope:defender = {
has_title = title:k_papal_state
}
}
multiply = 0.01
}
}
# Haesteinn needs to stop merc'ing East Francia when the resulting kingdom simply will not last.
if = {
limit = { this = character:6878 }
# Assuming the player hasn't opted into batshit Vikings.
if = {
limit = {
NOT = { has_game_rule = fp1_scandi_adventurers_apocalyptic }
}
# Tell him to calm it down a bit and pick a damned duchy realm or something.
if = {
limit = {
scope:defender = {
OR = {
realm_size >= massive_realm_size
highest_held_title_tier >= tier_kingdom
}
}
}
multiply = 0
}
# ... and a bit of bonus score if said-realm is an NPC Mercia to get him to behave a bit more historically.
if = {
limit = {
scope:defender = {
primary_title = title:d_hereford
is_independent_ruler = yes
is_ai = yes
}
}
multiply = 100
}
}
# ... in which case, go extra wild.
else_if = {
limit = { has_game_rule = fp1_scandi_adventurers_apocalyptic }
# Nothing but a shiny new kingdom will satisfy apocalypse-Haesteinn.
if = {
limit = {
scope:defender = { highest_held_title_tier <= tier_duchy }
}
multiply = 0
}
}
}
}
}
struggle_conquest_ai_score_value = {
value = 1
scope:attacker = {
# Are they a different faith than me?
if = {
limit = {
NOT = { faith = scope:defender.faith }
}
add = 1
}
# Are they a different culture than me?
if = {
limit = {
NOT = { culture = scope:defender.culture }
}
add = 1
}
# Do I have a negative relationship with them?
if = {
limit = { has_relation_nemesis = scope:defender }
add = 2
}
else_if = {
limit = {
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:defender }
}
add = 1
}
# Do I have a positive relationship with them?
if = {
limit = {
OR = {
has_relation_soulmate = scope:defender
has_relation_best_friend = scope:defender
}
}
add = -5
}
else_if = {
limit = {
has_any_good_relationship_with_character_trigger = { CHARACTER = scope:defender }
}
add = -1
}
# Multiply this up or down per the phase.
## Some phases make people hunger for violence...
if = {
limit = {
any_character_struggle = {
is_struggle_type = iberian_struggle
is_struggle_phase = struggle_iberia_phase_hostility
}
# Unless you're just not that sort of person.
NOR = {
has_trait = content
has_trait = compassionate
}
}
multiply = 2
}
## ... but in others, it seems abhorrent.
if = {
limit = {
any_character_struggle = {
is_struggle_type = iberian_struggle
OR = {
is_struggle_phase = struggle_iberia_phase_compromise
is_struggle_phase = struggle_iberia_phase_conciliation
}
}
NOR = {
has_trait = ambitious
has_trait = callous
has_trait = sadistic
}
}
multiply = 0.5
}
}
}
byzantium_conquests_ai_score_value = {
value = 1
# Are we part of the Roman empire?
if = {
limit = {
scope:attacker = {
# We only care about governors and above, so don't worry about counts even if they're within the empire.
highest_held_title_tier >= tier_duchy
# Now check title ownership.
OR = {
has_title = title:e_byzantium
has_title = title:e_roman_empire
any_liege_or_above = {
OR = {
has_title = title:e_byzantium
has_title = title:e_roman_empire
}
}
# Account for the 4th crusade.
## Y'know, roughly.
AND = {
NOT = {
exists = title:e_byzantium
}
primary_title = {
OR = {
empire = title:e_byzantium
empire = title:e_latin_empire
}
}
OR = {
culture = { has_cultural_pillar = heritage_byzantine }
culture = culture:greek
culture = {
any_parent_culture_or_above = {
this = culture:greek
}
}
}
}
}
}
}
# Ok, cool. Now let's set some historical priorities.
every_target_title = {
title_province = {
# Constantinople is king.
if = {
limit = { county = title:c_byzantion }
add = 100
}
## We literally do not care about Rome: New York beats OG York, New Rome beats OG Rome.
# Next, we prioritise Anatolia.
else_if = {
limit = { geographical_region = ghw_region_anatolia }
add = 5
}
# Then Greece and the Balkans.
else_if = {
limit = {
OR = {
geographical_region = ghw_region_greece
geographical_region = ghw_region_thessalonika
geographical_region = custom_eastern_balkans
}
}
add = 4.5
}
# Then Syria and co.
else_if = {
limit = { geographical_region = custom_roman_syria_palestina }
add = 4
}
# Egypt.
else_if = {
limit = { geographical_region = custom_roman_aegyptus }
add = 3.5
}
# Mesopotamia.
else_if = {
limit = { geographical_region = custom_roman_mesopotamia }
add = 3
}
# Illyria.
else_if = {
limit = { geographical_region = custom_roman_illyricum }
add = 2.5
}
# North Africa.
else_if = {
limit = {
OR = {
geographical_region = custom_roman_cyrenaica
geographical_region = custom_roman_africa
geographical_region = custom_roman_mauretania
}
}
add = 2
}
# Italy.
else_if = {
limit = { geographical_region = ghw_region_italy }
add = 1.8
}
# Iberia.
else_if = {
limit = { geographical_region = custom_roman_hispania }
add = 1.5
}
# The remainder.
## Anything we missed in the east.
else_if = {
# You say "why not use Eastern Roman Empire borders?", I say, if the players are gonna obsess over historical borders then so too shall the AI.
limit = { geographical_region = custom_theodosian_ere }
add = 1
}
## Then total.
else_if = {
limit = { geographical_region = custom_roman_empire }
add = 0.5
}
# And _otherwise_, we probably don't want to even look at this thing.
## May be overridden by weird preferance combination from other values, but generally we'll hopefully get a fairly insular, naval gazing Rome.
}
}
}
}
muslim_invasions_prefer_nonmuslims_ai_score_value = {
value = 1
if = {
limit = {
scope:attacker.religion = religion:islam_religion
}
every_in_list = {
list = target_titles
if = {
limit = {
OR = {
AND = {
tier = tier_county
NOT = { holder.top_liege.religion = religion:islam_religion }
any_county_province = {
geographical_region = ghw_region_holy_land
}
}
AND = {
tier > tier_county
any_in_de_jure_hierarchy = {
tier = tier_county
NOT = { holder.top_liege.religion = religion:islam_religion }
any_county_province = {
geographical_region = ghw_region_holy_land
}
}
}
}
}
add = 1000
}
else_if = {
limit = {
OR = {
AND = {
tier = tier_county
NOT = { holder.top_liege.religion = religion:islam_religion }
any_county_province = {
OR = {
geographical_region = ghw_region_anatolia
geographical_region = world_india
}
}
}
AND = {
tier > tier_county
any_in_de_jure_hierarchy = {
tier = tier_county
NOT = { holder.top_liege.religion = religion:islam_religion }
any_county_province = {
OR = {
geographical_region = ghw_region_anatolia
geographical_region = world_india
}
}
}
}
}
}
add = 200
}
else_if = {
limit = {
OR = {
AND = {
tier = tier_county
NOT = { holder.top_liege.religion = religion:islam_religion }
}
AND = {
tier > tier_county
any_in_de_jure_hierarchy = {
tier = tier_county
NOT = { holder.top_liege.religion = religion:islam_religion }
}
}
}
}
add = 2
}
}
}
}
# Raid for captives
raid_for_captives_ai_score_value = {
value = 10
scope:attacker = {
if = {
limit = {
piety < 0
}
add = 15
}
if = {
limit = {
ai_zeal >= medium_positive_ai_value
piety < 500
}
add = 5
}
if = {
limit = {
ai_zeal >= very_high_positive_ai_value
}
add = ai_zeal
}
if = {
limit = {
piety > 500
}
multiply = 0.5
}
if = {
limit = {
ai_zeal < 0
NOT = {
piety < -100
}
}
multiply = 0
}
}
}
# Artifact wars
relic_artifact_war_ai_score_value = {
value = 10
scope:attacker = {
if = {
limit = {
ai_greed > 0
}
add = {
value = ai_greed
divide = 2
}
}
if = {
limit = {
ai_zeal > 0
}
add = ai_zeal
}
}
}
artifact_war_ai_score_value = {
value = 10
scope:attacker = {
if = {
limit = {
ai_greed > 0
}
add = {
value = ai_greed
divide = 2
}
}
if = {
limit = {
ai_vengefulness > 0
}
add = ai_vengefulness
}
}
}
#############
# Vassalization CB
#############
vassalize_default_size = 4
vassalize_growth_per_innovation = 3
vassalization_size_limit = {
value = vassalize_default_size
scope:attacker = {
if = {
limit = {
culture = {
has_innovation = innovation_casus_belli
}
}
add = vassalize_growth_per_innovation
}
if = {
limit = {
culture = {
has_innovation = innovation_chronicle_writing
}
}
add = vassalize_growth_per_innovation
}
if = {
limit = {
culture = {
has_innovation = innovation_divine_right
}
}
add = vassalize_growth_per_innovation
}
if = {
limit = {
culture = {
has_innovation = innovation_rightful_ownership
}
}
add = vassalize_growth_per_innovation
}
}
}
#############
# GHWs
#############
third_of_defenders_strength = {
value = ghw_defenders_strength
multiply = 0.33
}
#############
# Siege
#############
siege_base_capture_chance = {
value = 35
# Dynasty Perk: Practiced Kidnappers
if = {
limit = {
scope:occupant = {
exists = dynasty
dynasty = { has_dynasty_perk = fp1_pillage_legacy_3 }
}
}
add = 20
}
# Cultural Parameter: State Ransoms
if = {
limit = {
OR = {
# Either you're involved in large groups of the holding surrendering...
scope:barony.culture = { has_cultural_parameter = knights_die_less_but_are_captured_more }
# ... or you know your liege will pay your ransom.
scope:barony.holder.culture = { has_cultural_parameter = knights_die_less_but_are_captured_more }
}
# Ransoms or no, the primary participants & their heirs know better than to surrender.
character_is_potential_valuable_prisoner = no
# And independent characters likewise have no incentive.
is_independent_ruler = no
}
add = 50
}
}
raid_base_capture_chance = {
value = 20
if = {
limit = {
exists = root.army_commander
}
# Trait: Viking
if = {
limit = { root.army_commander = { has_trait = viking } }
add = 5
}
# Dynasty Perk: Practiced Kidnappers
if = {
limit = {
exists = root.army_commander.dynasty
root.army_commander.dynasty = { has_dynasty_perk = fp1_pillage_legacy_3 }
}
add = 20
}
}
}
county_control_loss_value = {
value = -40
# Dynasty Perk: No Quarter
if = {
limit = {
root = {
exists = dynasty
dynasty = { has_dynasty_perk = fp1_pillage_legacy_5 }
}
}
add = -40
}
}
raid_county_control_loss_value = {
value = -10
# Dynasty Perk: No Quarter
if = {
limit = {
scope:raider ?= {
exists = dynasty
dynasty = { has_dynasty_perk = fp1_pillage_legacy_5 }
}
}
add = -20
}
}
#############
# CB Costs
#############
scale_10_war_defender_win = {
value = 10
if = {
limit= {
scope:defender.culture = {
has_cultural_parameter = more_fame_for_successful_defensive_wars
}
}
multiply = 2
}
}
######################
# AI Decision Making #
######################
# The two effects below are to be used in combination as "root_military_strength_higher_than_value > target_military_strength_root_value" to check player vs enemy strength
root_military_strength_higher_than_value = { # Once again joe saves the day or erm, script.
value = 0
add = max_military_strength # Add num of troops
if = {
limit = {
any_ally = {
NOT = { has_truce = scope:target_military }
}
}
every_ally = {
limit = {
NOT = { has_truce = scope:target_military }
}
add = max_military_strength
}
}
if = {
limit = { exists = var:ai_strength_multiplier }
multiply = var:ai_strength_multiplier # 1.25 == 25% stronger than, remember to potty train your script and have it remove the variable after usage!!
}
}
target_military_strength_root_value = { # One above calcs player strength (plus multiplier), this one is enemy strenth
value = 0
add = scope:target_military.max_military_strength # this should be a character, probably a top liege
if = {
limit = {
any_ally = {
NOT = { has_truce = root }
}
}
every_ally = {
limit = {
NOT = { has_truce = root }
}
add = max_military_strength
}
}
}
war_attacker_total_strength_value = {
value = 0
every_war_attacker = { add = max_military_strength }
}
war_defender_total_strength_value = {
value = 0
every_war_defender = { add = max_military_strength }
}
war_attacker_total_strength_halved_value = {
value = war_attacker_total_strength_value
divide = 2
}
war_defender_total_strength_halved_value = {
value = war_defender_total_strength_value
divide = 2
}
war_attacker_total_strength_tenth_value = {
value = war_attacker_total_strength_value
divide = 10
}
war_defender_total_strength_tenth_value = {
value = war_defender_total_strength_value
divide = 10
}
war_attacker_total_current_strength_value = {
value = 0
every_war_attacker = { add = current_military_strength }
}
war_defender_total_current_strength_value = {
value = 0
every_war_defender = { add = current_military_strength }
}
war_attacker_total_current_strength_halved_value = {
value = war_attacker_total_current_strength_value
divide = 2
}
war_defender_total_current_strength_halved_value = {
value = war_defender_total_current_strength_value
divide = 2
}
war_attacker_total_current_strength_tenth_value = {
value = war_attacker_total_current_strength_value
divide = 10
}
war_defender_total_current_strength_tenth_value = {
value = war_defender_total_current_strength_value
divide = 10
}
war_attacker_total_current_strength_divided_by_defender_value = {
value = war_attacker_total_current_strength_value
divide = war_defender_total_current_strength_value
round = yes
}
war_defender_total_current_strength_divided_by_attacker_value = {
value = war_defender_total_current_strength_value
divide = war_attacker_total_current_strength_value
round = yes
}
war_total_participants_current_strength_value = {
value = 0
every_war_participant = { add = current_military_strength }
}
total_war_attacker_strength_value = {
value = 0
every_character_war = {
limit = { prev = primary_defender }
every_war_attacker = { add = current_military_strength }
}
}
total_war_enemy_strength_value = {
value = 0
every_war_enemy = { add = current_military_strength }
}

View file

@ -0,0 +1,146 @@
###################################
# Character Weighting Values
# For a given character, each value will return a given score based on how relevant/important that character is to ROOT given the situation.
###################################
# Weight List:
# captured_combatant_weights_for_root_participant - For evaluating importance of prisoners captured during war, for the participants of that war.
# captured_combatant_weights_for_root_nonparticipant - For evaluating importance of prisoners captured during war for noncombatants (e.g., relatives of the prisoner).
# slain_combatant_weights_for_root_participant - For evaluating importance of casualties slain during war, for the participants of that war.
# slain_combatant_weights_for_root_nonparticipant - For evaluating importance of casualties slain during war for noncombatants (e.g., relatives of the deceased).
captured_combatant_weights_for_root_participant = {
value = 0
if = {
limit = {
# Captured primary participants are worth 100% warscore, so are absolute #1 priority.
exists = scope:combat_war
OR = {
this = scope:combat_war.primary_attacker
this = scope:combat_war.primary_defender
}
}
add = 5000
}
if = {
limit = {
# Captured heirs of primary participants are worth 50% warscore, so are #2 priority.
exists = scope:combat_war
OR = {
is_heir_of = scope:combat_war.primary_attacker
is_heir_of = scope:combat_war.primary_defender
}
}
add = 1000
}
if = { limit = { this = root.player_heir } # My own heir is of 3rd importance, since they are very important in the long term but not immediately relevant to the ongoing war.
add = 500
}
if = {
limit = {
# The person I just defeated in combat is of 4th importance, since they are defeated 'for good' (for the moment).
exists = scope:combat_loser
this = scope:combat_loser
}
add = 100
}
if = { limit = { is_close_family_of = root}
add = 50
}
if = { limit = { is_of_major_interest_to_root_trigger = yes }
add = 10
}
if = { limit = { is_of_minor_interest_to_root_trigger = yes}
add = 5
}
add = this.highest_held_title_tier
}
captured_combatant_weights_for_root_nonparticipant = {
value = 0
if = { limit = { this = root.player_heir }
add = 1000
}
if = { limit = { is_heir_of = root }
add = 500
}
if = { limit = { is_of_major_interest_to_root_trigger = yes }
add = 100
}
if = { limit = { is_consort_of = root }
add = 50
}
if = { limit = { is_child_of = root }
add = 25
}
if = { limit = { is_of_minor_interest_to_root_trigger = yes }
add = 10
}
if = { limit = { is_courtier_of = root }
add = 1
}
add = this.highest_held_title_tier
}
slain_combatant_weights_for_root_participant = {
value = 0
if = {
limit = {
# Slain primary participants do not give warscore, but can change the outcome of the ongoing war (esp. if their successors are reluctant to continue the war).
exists = scope:combat_war
OR = {
this = scope:combat_war.primary_attacker
this = scope:combat_war.primary_defender
}
}
add = 1000
}
if = { limit = { this = root.player_heir } # I care about my heir in the long-term, even if not immediately relevant.
add = 500
}
if = {
limit = {
# If I killed the person I just fought in battle, I don't have to worry about them any more!
exists = scope:combat_loser
this = scope:combat_loser
}
add = 100
}
if = { limit = { is_close_family_of = root}
add = 50
}
if = { limit = { is_of_major_interest_to_root_trigger = yes }
add = 10
}
if = { limit = { is_of_minor_interest_to_root_trigger = yes}
add = 5
}
add = this.highest_held_title_tier
}
slain_combatant_weights_for_root_nonparticipant = {
value = 0
if = { limit = { this = root.player_heir }
add = 1000
}
if = { limit = { is_heir_of = root }
add = 500
}
if = { limit = { is_of_major_interest_to_root_trigger = yes }
add = 100
}
if = { limit = { is_consort_of = root }
add = 50
}
if = { limit = { is_child_of = root }
add = 25
}
if = { limit = { is_of_minor_interest_to_root_trigger = yes }
add = 10
}
if = { limit = { is_courtier_of = root }
add = 1
}
add = this.highest_held_title_tier
}

View file

@ -0,0 +1,16 @@
house_feud_death_counter_value = {
value = var:house_feud_death_counter
}
house_feud_kill_counter_value = {
value = var:house_feud_kill_counter
}
house_feud_balance_value = {
value = house_feud_kill_counter_value
subtract = house_feud_death_counter_value
}
house_feud_small_counter_value = 0.5
house_feud_medium_counter_value = 1
house_feud_big_counter_value = 2

View file

@ -0,0 +1,55 @@
event_troop_150_root_scale = {
value = 150
multiply = {
value = root.primary_title.tier
}
}
event_troop_150_vassal_scale = {
value = 150
multiply = {
value = scope:vassal.primary_title.tier
}
}
event_troop_100_root_scale = {
value = 100
multiply = {
value = root.primary_title.tier
}
}
event_troop_100_vassal_scale = {
value = 100
multiply = {
value = scope:vassal.primary_title.tier
}
}
event_troop_50_root_scale = {
value = 50
multiply = {
value = root.primary_title.tier
}
}
event_troop_50_vassal_scale = {
value = 50
multiply = {
value = scope:vassal.primary_title.tier
}
}
event_troop_25_root_scale = {
value = 25
multiply = {
value = root.primary_title.tier
}
}
event_troop_25_vassal_scale = {
value = 25
multiply = {
value = scope:vassal.primary_title.tier
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,403 @@

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 > 12}
add = 1
}
else_if = {
limit = { age > 24}
add = 2
}
else_if = {
limit = { age > 36}
add = 3
}
else_if = {
limit = { age > 48}
add = 4
}
else_if = {
limit = { age > 60}
add = 5
}
# 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 > 12}
add = 1
}
else_if = {
limit = { age > 24}
add = 2
}
else_if = {
limit = { age > 36}
add = 3
}
else_if = {
limit = { age > 48}
add = 4
}
else_if = {
limit = { age > 60}
add = 5
}
}
}
# 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 > 12}
add = 1
}
else_if = {
limit = { age > 24}
add = 2
}
else_if = {
limit = { age > 36}
add = 3
}
else_if = {
limit = { age > 48}
add = 4
}
else_if = {
limit = { age > 60}
add = 5
}
# 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
}
}
# Rulers also gain bonus prestige based on their tier.
add = {
value = medium_prestige_value
multiply = highest_held_title_tier
}
}
}
# 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
exists = scope:culture
# Set up some scopes we'll need
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 }
}
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 }
}
}
}
# 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 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:our_religion
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:our_faith
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 = {
exists = scope:our_religion
exists = scope:their_religion
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 = {
exists = scope:our_faith
exists = scope:their_faith
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
}
}
}
}

View file

@ -0,0 +1,84 @@
## Referenced from code, in code value will be clamped between NRoyalCourt::COURT_GRANDEUR_MIN and NRoyalCourt::COURT_GRANDEUR_MAX
## root = character calculating for
#court_grandeur_minimum_expected_value = {
# value = 50
#}
#
#ep1_court_grandeur_marriage_acceptance_value = 50
#
## Referenced from code for the multiplier of above/below expected court grandeur level modifiers
#court_grandeur_level_difference_modifier_multiplier = {
# value = sub_realm_size
# multiply = 0.01
#}
0_levels_above_expected_level = {
value = court_grandeur_minimum_expected_level
}
1_levels_above_expected_level = {
value = court_grandeur_minimum_expected_level
add = 1
}
2_levels_above_expected_level = {
value = court_grandeur_minimum_expected_level
add = 2
}
3_levels_above_expected_level = {
value = court_grandeur_minimum_expected_level
add = 3
}
4_levels_above_expected_level = {
value = court_grandeur_minimum_expected_level
add = 4
}
5_levels_above_expected_level = {
value = court_grandeur_minimum_expected_level
add = 5
}
6_levels_above_expected_level = {
value = court_grandeur_minimum_expected_level
add = 6
}
7_levels_above_expected_level = {
value = court_grandeur_minimum_expected_level
add = 7
}
9_levels_above_expected_level = {
value = court_grandeur_minimum_expected_level
add = 9
}
1_levels_below_expected_level = {
value = court_grandeur_minimum_expected_level
subtract = 1
}
3_levels_below_expected_level = {
value = court_grandeur_minimum_expected_level
subtract = 3
}
5_levels_below_expected_level = {
value = court_grandeur_minimum_expected_level
subtract = 5
}
7_levels_below_expected_level = {
value = court_grandeur_minimum_expected_level
subtract = 7
}
9_levels_below_expected_level = {
value = court_grandeur_minimum_expected_level
subtract = 9
}
cp_bonus_aptitude_value = 10

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,123 @@
ruler_designer_general_skill_value_cost = {
value = 0
if = {
limit = {
scope:value > 0
scope:value < 5
}
add = 2
multiply = scope:value
}
else_if = {
limit = {
scope:value > 4
scope:value < 9
}
add = 4
multiply = {
value = scope:value
subtract = 4
}
add = 8
}
else_if = {
limit = {
scope:value > 8
scope:value < 13
}
add = 7
multiply = {
value = scope:value
subtract = 8
}
add = 24
}
else_if = {
limit = {
scope:value > 12
scope:value < 17
}
add = 11
multiply = {
value = scope:value
subtract = 12
}
add = 52
}
else_if = {
limit = {
scope:value > 16
}
add = 17
multiply = {
value = scope:value
subtract = 16
}
add = 96
}
}
ruler_designer_diplomacy_skill_value_cost = { value = ruler_designer_general_skill_value_cost }
ruler_designer_martial_skill_value_cost = { value = ruler_designer_general_skill_value_cost }
ruler_designer_stewardship_skill_value_cost = { value = ruler_designer_general_skill_value_cost }
ruler_designer_intrigue_skill_value_cost = { value = ruler_designer_general_skill_value_cost }
ruler_designer_learning_skill_value_cost = { value = ruler_designer_general_skill_value_cost }
ruler_designer_prowess_skill_value_cost = {
value = 0
if = {
limit = {
scope:value > 0
scope:value < 5
}
add = 1
multiply = scope:value
}
else_if = {
limit = {
scope:value > 4
scope:value < 9
}
add = 2
multiply = {
value = scope:value
subtract = 4
}
add = 4
}
else_if = {
limit = {
scope:value > 8
scope:value < 13
}
add = 4
multiply = {
value = scope:value
subtract = 8
}
add = 12
}
else_if = {
limit = {
scope:value > 12
scope:value < 17
}
add = 7
multiply = {
value = scope:value
subtract = 12
}
add = 28
}
else_if = {
limit = {
scope:value > 16
}
add = 11
multiply = {
value = scope:value
subtract = 16
}
add = 56
}
}

View file

@ -0,0 +1,355 @@
#Needs to be loaded after
################
# Stop War attacker chance calculation
################
stop_war_diplomacy_modifier = {
value = diplomacy
multiply = 5
}
stop_war_relation_penalties = {
# Opinion Penalties
if = {
limit = {
opinion = {
target = scope:actor
value < -49
}
}
add = -50
}
else_if = {
limit = {
opinion = {
target = scope:actor
value < 0
}
}
add = -25
}
# Relationship Penalty
if = {
limit = {
has_relation_rival = scope:actor
}
add = -100
}
}
stop_war_relation_bonuses = {
# Opinion Bonuses
if = {
limit = {
opinion = {
target = scope:actor
value >= 50
}
}
add = 50
}
else_if = {
limit = {
opinion = {
target = scope:actor
value > 0
}
}
add = 25
}
# Relationship Bonus
if = {
limit = {
has_relation_friend = scope:actor
}
add = 25
}
}
#Calculated in scope:recipient
stop_war_attacker_likelihood_calculation = {
if = {
# Cowed characters always accept.
limit = {
has_dread_level_towards = {
target = scope:actor
level = 2
}
}
value = 100
}
else = {
# Calculate chance of character accepting.
# Penalties are added first, which then get reduced by Intimidation (if applicable).
# Then bonuses are added, and finally circumstantial modifiers.
###################
# Negative Values #
###################
subtract = stop_war_diplomacy_modifier
add = stop_war_relation_penalties
# Trait Penalties
if = {
limit = {
has_trait = stubborn
}
add = -50
}
if = {
limit = {
has_trait = ambitious
}
add = -30
}
if = {
limit = {
has_trait = disloyal
}
add = -25
}
#########################
# Indimidation Modifier #
#########################
if = {
limit = {
has_dread_level_towards = {
target = scope:actor
level = 1
}
}
multiply = 0.5 # Reduces all current penalties by 50%
}
###################
# Positive Values #
###################
# Liege's Diplomacy
add = scope:actor.stop_war_diplomacy_modifier
add = stop_war_relation_bonuses
# Traits
if = {
limit = {
has_trait = fickle
}
add = 30
}
if = {
limit = {
has_trait = loyal
}
add = 50
}
#######################
# Other Circumstances #
#######################
# Warscore
if = {
limit = {
exists = scope:target
}
subtract = scope:target.attacker_war_score
}
# Admin
if = {
limit = {
is_governor = yes
}
add = 50
if = {
limit = {
scope:target = { has_realm_law = imperial_bureaucracy_3 }
}
add = 30
}
else_if = {
limit = {
scope:target = { has_realm_law = imperial_bureaucracy_2 }
}
add = 20
}
else_if = {
limit = {
scope:target = { has_realm_law = imperial_bureaucracy_1 }
}
add = 10
}
}
#TODO: Strong claim/Weak claim difference
#TODO: Laws
min = 5
max = 95
}
}
stop_war_defender_likelihood_calculation = {
if = {
# Cowed characters always accept.
limit = {
has_dread_level_towards = {
target = scope:actor
level = 2
}
}
value = 100
}
else_if = {
#If it's a war over the defender's last county, they won't say yes.
if = {
limit = {
exists = scope:target
any_held_title = {
count = 1
tier = tier_county
always = yes
save_temporary_scope_as = last_county_title
}
scope:target.casus_belli = {
any_target_title = {
this = scope:last_county_title
}
}
}
value = 0
}
}
else = {
# Calculate chance of character accepting.
# Penalties are added first, which then get reduced by Intimidation (if applicable).
# Then bonuses are added, and finally circumstantial modifiers.
###################
# Negative Values #
###################
subtract = stop_war_diplomacy_modifier
add = stop_war_relation_penalties
# Traits
if = {
limit = {
has_trait = arrogant
}
add = -50
}
if = {
limit = {
has_trait = ambitious
}
add = -30
}
if = {
limit = {
has_trait = disloyal
}
add = -25
}
if = {
limit = {
has_trait = greedy
}
add = -20
}
#########################
# Intimidation Modifier #
#########################
if = {
limit = {
has_dread_level_towards = {
target = scope:actor
level = 1
}
}
multiply = 0.75 # Reduces all current penalties by 25% (Intentionally less than the 50% reduction for attackers, because defenders have more to lose).
}
###################
# Positive Values #
###################
# Liege's Diplomacy
add = scope:actor.stop_war_diplomacy_modifier
add = stop_war_relation_bonuses
# Traits
if = {
limit = {
has_trait = humble
}
add = 20
}
if = {
limit = {
has_trait = loyal
}
add = 50
}
#######################
# Other Circumstances #
#######################
# Warscore
if = {
limit = {
exists = scope:target
}
subtract = scope:target.defender_war_score
}
# Admin
if = {
limit = {
is_governor = yes
}
add = 50
if = {
limit = {
scope:target = { has_realm_law = imperial_bureaucracy_3 }
}
add = 30
}
else_if = {
limit = {
scope:target = { has_realm_law = imperial_bureaucracy_2 }
}
add = 20
}
else_if = {
limit = {
scope:target = { has_realm_law = imperial_bureaucracy_1 }
}
add = 10
}
}
#TODO: Strong claim/Weak claim difference
#TODO: Laws
min = 1
max = 95
}
}
stop_war_attacker_bribe_size = {
value = medium_gold_value
multiply = 2
}
stop_war_defender_bribe_size = {
value = medium_gold_value
multiply = 4
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,209 @@
#######################################
# KNIGHTLY ACCOLADE VALUES
#######################################
accolade_low_value = 5
accolade_medium_value = 10
accolade_high_value = 20
accolade_prowess_requirement_value = 8
accolade_prowess_requirement_high_value = 15
accolade_opinion_multiplier_value = {
value = 0
## Below the minimum opinion, we don't want to factor them in at all.
if = {
limit = {
reverse_opinion = {
target = scope:owner
value < -25
}
}
# Here, we do nothing. Zero is the desired multiplier.
}
## Below the recommended opinion, we like them less.
else_if = {
limit = {
reverse_opinion = {
target = scope:owner
value < 10
}
}
add = 0.5
}
## Above the nepotistic opinion, we prioritise their wants more heavily.
else_if = {
limit = {
reverse_opinion = {
target = scope:owner
value >= 90
}
}
add = 2
}
## Or else they're in the default range, so x1 is good enough.
else = { add = 1 }
}
accolade_uninteresting_base_value = 0
accolade_standard_base_value = 200
accolade_fascinating_base_value = 400
accolade_must_have_base_value = 800
accolade_weighted_up_in_earlier_eras_value = {
value = 0
culture ?= {
# If we're in the TE, weight this attribute up a bit.
if = {
limit = {
NOT = { has_cultural_era_or_later = culture_era_early_medieval }
}
add = 50
}
# If we're in the EME, weight this attribute up even further.
if = {
limit = {
NOT = { has_cultural_era_or_later = culture_era_high_medieval }
}
add = 100
}
}
}
accolade_weighted_up_in_later_eras_value = {
value = 0
culture ?= {
# If we're in the HME, weight this attribute up a bit.
if = {
limit = { has_cultural_era_or_later = culture_era_high_medieval }
add = 100
}
# If we're in the LME, weight this attribute up even further.
if = {
limit = { has_cultural_era_or_later = culture_era_late_medieval }
add = 200
}
}
}
maa_accolade_minimum_martial_value = medium_skill_rating
###############
# COMMON ATTRIBUTES
###############
accolade_agent_acceptance_chance_bonus = accolade_medium_value
accolade_agent_acceptance_chance_bonus_high = accolade_high_value
accolade_invite_courtiers_value = accolade_high_value
accolade_imprisonment_chance_value = 15
accolade_imprisonment_chance_value_high = 25
accolade_wise_educator_prestige = 100
accolade_wise_educator_prestige_high = 250
accolade_wise_educator_prowess = 1
accolade_wise_educator_prowess_high = 3
accolade_white_peace_prestige_value = major_prestige_value
accolade_seduction_vulnerability_value = 15
accolade_politicker_join_scheme_value = 25
accolade_charmer_fertility_value = 0.25
accolade_charmer_fertility_high_value = 0.5
accolade_charmer_attraction_opinion_value = accolade_medium_value
accolade_charmer_attraction_opinion_high_value = accolade_high_value
accolade_piety_reduction_value = 0.5
accolade_piety_reduction_value_high = 0.25
###############
# SKILLED ATTRIBUTES
###############
accolade_scales_of_power_value = -10
accolade_scales_of_power_value_high = -15
accolade_development_growth_on_tournament_completion_value = 50
accolade_development_level_on_tournament_completion_value = 1
accolade_county_control_gain_value = medium_county_control_gain
accolade_contender_trait_xp_low_value = 10
accolade_contender_trait_xp_medium_value = 15
accolade_contender_trait_xp_high_value = 20
accolade_all_knights_trait_xp_low_value = 5
accolade_all_knights_trait_xp_high_value = 10
###############
# MAA ATTRIBUTES
###############
accolade_hostile_knight_death_in_battle_low_value = 0.25
accolade_hostile_knight_death_in_battle_medium_value = 0.5
accolade_hostile_knight_death_in_battle_high_value = 0.75
accolade_hostile_knight_death_in_battle_actual_low_value = {
value = accolade_hostile_knight_death_in_battle_low_value
add = 1
}
accolade_hostile_knight_death_in_battle_actual_medium_value = {
value = accolade_hostile_knight_death_in_battle_medium_value
add = 1
}
accolade_hostile_knight_death_in_battle_actual_high_value = {
value = accolade_hostile_knight_death_in_battle_high_value
add = 1
}
###############
# EMINENT ATTRIBUTES
###############
acclaimed_knight_hunt_danger_value = 10
acclaimed_knight_hunt_danger_value_high = 15
accolade_tournament_invite_acceptance_value = 20
accolade_feast_wedding_invite_acceptance_value = 20
acclaimed_knight_prestige_from_victory_value = miniscule_prestige_value
acclaimed_knight_prestige_from_victory_value_high = minor_prestige_value
accolade_defends_family_low_value = -0.25
accolade_defends_family_medium_value = -0.5
accolade_defends_family_high_value = -0.75
accolade_defends_family_actual_low_value = {
value = accolade_defends_family_low_value
add = 1
}
accolade_defends_family_actual_medium_value = {
value = accolade_defends_family_medium_value
add = 1
}
accolade_defends_family_actual_high_value = {
value = accolade_defends_family_high_value
add = 1
}
num_accolades_multiplier = {
value = 0
every_accolade = {
limit = {
is_accolade_active = no
NOT = { exists = accolade_successor }
has_potential_accolade_successors = no
NOT = {
primary_type = {
this = accolade_type:house_knight_attribute
}
}
}
add = 1
if = {
limit = {
accolade_rank = 3
}
add = 1
}
else_if = {
limit = {
accolade_rank > 3
}
add = 2
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,86 @@
tour_stop_value = { # the cost of adding a tour stop
value = medium_gold_value
if = {
limit = { exists = scope:province }
if = {
limit = { "scope:previous_province.squared_distance(scope:province)" <= squared_distance_small }
multiply = 0.25
}
if = {
limit = {
"scope:previous_province.squared_distance(scope:province)" > squared_distance_small
"scope:previous_province.squared_distance(scope:province)" <= squared_distance_medium
}
multiply = 0.45
}
if = {
limit = {
"scope:previous_province.squared_distance(scope:province)" > squared_distance_medium
"scope:previous_province.squared_distance(scope:province)" <= squared_distance_large
}
multiply = 0.65
}
if = {
limit = {
"scope:previous_province.squared_distance(scope:province)" > squared_distance_large
"scope:previous_province.squared_distance(scope:province)" <= squared_distance_huge
}
multiply = 0.85
}
if = {
limit = {
"scope:previous_province.squared_distance(scope:province)" > squared_distance_huge
"scope:previous_province.squared_distance(scope:province)" <= squared_distance_almost_massive
}
multiply = 1.05
}
if = {
limit = {
"scope:previous_province.squared_distance(scope:province)" > squared_distance_almost_massive
"scope:previous_province.squared_distance(scope:province)" <= squared_distance_massive
}
multiply = 1.25
}
#Klingenberg -> Jerusalem
if = {
limit = {
"scope:previous_province.squared_distance(scope:province)" > squared_distance_massive
"scope:previous_province.squared_distance(scope:province)" <= squared_distance_monstrous
}
multiply = 1.55
}
#Klingenberg -> Kanchipuram
if = {
limit = { "scope:previous_province.squared_distance(scope:province)" > squared_distance_monstrous }
multiply = 2.05
}
}
multiply = activity_cost_scale_by_era
}
welcome = 3
neutral = 2
suspicious = 1
tour_entourage_weight_value = {
value = 100
add = standard_travel_entourage_additions
if = {
limit = {
OR = {
has_trait = gregarious
has_trait = lifestyle_reveler
has_trait = gluttonous
}
}
add = 10
}
if = {
limit = {
is_close_family_of = scope:host
}
add = 20
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,923 @@
actor_current_military_strength = {
value = {
add = scope:actor.current_military_strength
}
}
recipient_current_military_strength = {
value = {
add = scope:recipient.current_military_strength
}
}
actor_ally_military_strength = {
value = 0
scope:actor = {
every_ally = { add = current_military_strength }
}
}
recipient_ally_military_strength = {
value = 0
scope:recipient = {
every_ally = { add = current_military_strength }
}
}
max_strength_ninety_percent_value = {
value = max_military_strength
multiply = 0.9
}
max_strength_seventy_five_percent_value = {
value = max_military_strength
multiply = 0.9
}
current_strength_ninety_percent_value = {
value = current_military_strength
multiply = 0.9
}
current_strength_seventy_five_percent_value = {
value = current_military_strength
multiply = 0.9
}
current_strength_with_allies_value = {
value = current_military_strength
every_ally = { add = current_military_strength }
}
current_allies_strength_value = {
value = 0
every_ally = { add = current_military_strength }
}
current_strength_with_allies_fifty_percent_value = {
value = current_military_strength
every_ally = { add = current_military_strength }
multiply = 0.5
}
current_strength_with_allies_seventy_five_percent_value = {
value = current_military_strength
every_ally = { add = current_military_strength }
multiply = 0.75
}
recipient_strength_divided_by_actors_value = {
value = 1
add = {
value = scope:recipient.current_military_strength # 1828
scope:recipient = {
every_ally = { add = current_military_strength }
}
divide = {
value = scope:actor.current_military_strength # 1382
scope:actor = {
every_ally = { add = current_military_strength }
}
min = 1
}
# 1828 / 1382 = 1.32
subtract = 1 # 1.32 - 1 = 0.32
multiply = 100 # 0.32 * 100 = 32
max = 50
min = -50
}
max = 20
}
hostage_secondary_recipient_place_in_succession = {
scope:recipient.primary_title = {
if = {
limit = {
place_in_line_of_succession = { target = scope:secondary_recipient value = 1 }
}
add = 4
}
else_if = {
limit = {
place_in_line_of_succession = { target = scope:secondary_recipient value = 2 }
}
add = 3
}
else_if = {
limit = {
place_in_line_of_succession = { target = scope:secondary_recipient value = 3 }
}
add = 2
}
else = { add = 1 }
}
}
hostage_secondary_actor_place_in_succession = {
scope:actor.primary_title = {
if = {
limit = {
place_in_line_of_succession = { target = scope:secondary_actor value = 1 }
}
add = 4
}
else_if = {
limit = {
place_in_line_of_succession = { target = scope:secondary_actor value = 2 }
}
add = 3
}
else_if = {
limit = {
place_in_line_of_succession = { target = scope:secondary_actor value = 3 }
}
add = 2
}
else = { add = 1 }
}
}
demand_hostage_acceptance_value = {
value = 10
if = {
limit = {
NOR = { # Close in power
scope:actor.current_strength_ninety_percent_value > scope:recipient.current_military_strength
scope:actor.current_military_strength < scope:recipient.current_strength_ninety_percent_value
}
}
add = 10
}
}
bp2_yearly_6203_levy_size = {
value = 250
multiply = {
value = 0
add = scope:home_court.primary_title.tier
if = {
limit = {
scope:home_court.culture = {
has_cultural_era_or_later = culture_era_high_medieval
}
}
add = 1
}
else_if = {
limit = {
scope:home_court.culture = {
has_cultural_era_or_later = culture_era_late_medieval
}
}
add = 1
}
subtract = 1
min = 1
}
}
bp2_yearly_6203_skirmishers_size = {
value = 1
multiply = {
value = 0
add = scope:home_court.primary_title.tier
if = {
limit = {
scope:home_court.culture = {
has_cultural_era_or_later = culture_era_high_medieval
}
}
add = 1
}
else_if = {
limit = {
scope:home_court.culture = {
has_cultural_era_or_later = culture_era_late_medieval
}
}
add = 1
}
subtract = 1
min = 1
}
}
# Determine how much Prestige the Warden receives
# root - hostage
# scope:warden - warden
# scope:home_court - home court
hostage_prestige_income_value = {
# Defines
# < 20 - 0.1 per month
# 20-49 - 0.5 per month
# >= 50 - 1 per month
value = 0
if = {
limit = {
# No gain within dynasty
bp2_hostage_benefits_valid_trigger = yes
}
# Dynasty Level Difference
if = {
limit = { bp2_warden_dynasty_renown_lower_trigger = { WARDEN = scope:warden HOME_COURT = home_court } }
add = {
value = scope:home_court.dynasty.dynasty_prestige_level
subtract = scope:warden.dynasty.dynasty_prestige_level
min = 1
multiply = 15
desc = HOSTAGE_DYNASTY_PRESTIGE_LEVEL_DIFFERENCES
}
}
# Tier Difference
if = {
limit = { bp2_warden_title_tier_lower_trigger = { WARDEN = scope:warden HOME_COURT = home_court } }
add = {
value = scope:home_court.primary_title.tier
subtract = scope:warden.primary_title.tier
min = 1
multiply = 15
desc = HOSTAGE_TIER_DIFFERENCES_REASON
}
}
# Prestige Level Difference
if = {
limit = { bp2_warden_prestige_level_lower_trigger = { WARDEN = scope:warden HOME_COURT = home_court } }
add = {
value = scope:home_court.prestige_level
subtract = scope:warden.prestige_level
min = 1
multiply = 15
desc = HOSTAGE_PRESTIGE_DIFFERENCES_REASON
}
}
# Hostage from Liege or above
if = {
limit = {
scope:home_court = { is_liege_or_above_of = scope:warden }
}
add = {
value = 15
desc = HOSTAGE_LIEGE_OF_WARDEN
}
}
if = {
limit = {
scope:warden = { has_character_flag = halved_hostage_prestige_income }
}
add = -25
}
}
}
# Determines how much Piety the Warden receives
# root - hostage
# scope:warden - warden
# scope:home_court - home court
hostage_piety_income_value = {
# Defines
# < 20 - 0.1 per month
# 20-49 - 0.5 per month
# >= 50 - 1 per month
value = 0
if = {
limit = {
# No gain within same dynasty
bp2_hostage_benefits_valid_trigger = yes
# Piety gain only for lower renown or rank
OR = {
bp2_warden_dynasty_renown_lower_trigger = {
WARDEN = scope:warden
HOME_COURT = scope:home_court
}
bp2_warden_title_tier_lower_trigger = {
WARDEN = scope:warden
HOME_COURT = scope:home_court
}
}
}
# Faith Hostility
if = {
limit = { scope:warden.faith != scope:home_court.faith }
if = {
limit = {
scope:warden.faith = {
faith_hostility_level = {
target = scope:home_court.faith
value = faith_hostile_level
}
}
}
add = 10
}
else_if = {
limit = {
scope:warden.faith = {
faith_hostility_level = {
target = scope:home_court.faith
value = faith_evil_level
}
}
}
add = 20
}
}
# Dynasty Renown Difference
if = {
limit = { bp2_warden_dynasty_renown_lower_trigger = { WARDEN = scope:warden HOME_COURT = home_court } }
add = 10
}
# Title Difference
if = {
limit = { bp2_warden_title_tier_lower_trigger = { WARDEN = scope:warden HOME_COURT = home_court } }
add = 10
}
}
}
# Determines how much Renown the Warden's Dynasty receives
# root - hostage
# scope:warden - warden
# scope:home_court - home court
hostage_renown_income_value = {
# Defines
# < 20 - nothing
# 20-49 - 0.25 per month
# >= 50 - 0.5 per month
value = 0
if = {
limit = { bp2_hostage_benefits_valid_trigger = yes } # No gain within same dynasty
# Dynasty Renown Difference
if = {
limit = { bp2_warden_dynasty_renown_lower_trigger = { WARDEN = scope:warden HOME_COURT = home_court } }
add = {
value = scope:home_court.dynasty.dynasty_prestige_level
subtract = scope:warden.dynasty.dynasty_prestige_level
min = 1
multiply = 20
desc = HOSTAGE_DYNASTY_PRESTIGE_LEVEL_DIFFERENCES
}
}
# Title Tier Difference
if = {
limit = { bp2_warden_title_tier_lower_trigger = { WARDEN = scope:warden HOME_COURT = home_court } }
add = {
value = scope:home_court.primary_title.tier
subtract = scope:warden.primary_title.tier
min = 1
multiply = 10
desc = HOSTAGE_TIER_DIFFERENCES_REASON
}
}
}
}
# Sorts hostages by relevance in various character lists
# root - hostage
hostage_value = {
value = 0
# Age inversed, younger is better, over 25 is bad
if = {
limit = { age != 25 }
add = {
value = 25
subtract = age
}
desc = HOSTAGE_AGE_REASON
}
# Bonus for young children
if = {
limit = { age <= 12 }
add = {
value = 10
desc = HOSTAGE_CHILD_REASON
}
}
# Bonus for own children
if = {
limit = { is_child_of = scope:home_court }
add = {
value = 20
desc = HOSTAGE_OWN_CHILD_REASON
}
}
# Bonus for own grandchildren
else_if = {
limit = { is_grandchild_of = scope:home_court }
add = {
value = 10
desc = HOSTAGE_OWN_GRANDCHILD_REASON
}
}
# Line of succession
if = {
limit = { is_heir_of = scope:home_court }
add = {
value = 10
scope:home_court.primary_title = {
if = {
limit = {
place_in_line_of_succession = { target = scope:hostage value = 1 }
}
add = 90
}
else_if = {
limit = {
place_in_line_of_succession = { target = scope:hostage value = 2 }
}
add = 40
}
else_if = {
limit = {
place_in_line_of_succession = { target = scope:hostage value = 3 }
}
add = 15
}
}
desc = HOSTAGE_SUCCESSION_PLACE_REASON
}
}
# Non-inheriting
if = {
limit = {
OR = {
has_trait_with_flag = can_not_marry
switch = {
trigger = is_female
yes = {
scope:home_court = { has_realm_law = male_only_law }
}
no = {
scope:home_court = { has_realm_law = female_only_law }
}
}
}
}
add = {
value = -50
desc = HOSTAGE_RECIPIENT_SEX_REASON
}
}
# Sickly
if = {
limit = {
OR = {
has_trait = sickly
has_weak_physical_health_traits_trigger = yes
has_short_disease_trigger = yes
has_serious_disease_trigger = yes
has_trait = incapable
has_trait = infirm
health <= poor_health
}
}
add = {
value = -25
desc = HOSTAGE_SICK_REASON
}
}
# Bad genes
if = {
limit = {
OR = {
has_trait = physique_bad
has_trait = intellect_bad
has_trait = beauty_bad
has_trait = inbred
}
}
add = {
value = -15
desc = HOSTAGE_BAD_GENES_REASON
}
}
# Good genes/healthy
if = {
limit = {
OR = {
has_trait = physique_good
has_trait = beauty_good
has_trait = intellect_good
has_trait = fecund
}
}
add = {
value = 15
desc = HOSTAGE_GOOD_GENES_REASON
}
}
# Good genes/healthy
if = {
limit = { health >= good_health }
add = {
value = 10
if = {
limit = { health >= excellent_health }
add = 10
}
desc = HOSTAGE_HEALTHY_REASON
}
}
# Dynasty Level Difference
if = {
limit = { bp2_warden_dynasty_renown_lower_trigger = { WARDEN = scope:warden HOME_COURT = scope:home_court } }
add = {
value = scope:home_court.dynasty.dynasty_prestige_level
subtract = scope:warden.dynasty.dynasty_prestige_level
min = 1
multiply = 20
desc = HOSTAGE_RENOWN_DIFFERENCES_REASON
}
}
# Tier Difference
if = {
limit = { bp2_warden_title_tier_lower_trigger = { WARDEN = scope:warden HOME_COURT = scope:home_court } }
add = {
value = scope:home_court.primary_title.tier
subtract = scope:warden.primary_title.tier
min = 1
multiply = 20
desc = HOSTAGE_TIER_DIFFERENCES_REASON
}
}
# Prestige Level Difference
if = {
limit = { bp2_warden_prestige_level_lower_trigger = { WARDEN = scope:warden HOME_COURT = scope:home_court } }
add = {
value = scope:home_court.prestige_level
subtract = scope:warden.prestige_level
min = 1
multiply = 20
desc = HOSTAGE_PRESTIGE_DIFFERENCES_REASON
}
}
# Independence
if = {
limit = {
scope:home_court = { is_independent_ruler = yes }
}
add = {
value = 10
desc = HOSTAGE_HOME_COURT_INDEPENDENT_RULER_REASON
}
}
# Neighboring
if = {
limit = {
scope:home_court = { character_is_land_realm_neighbor = scope:warden }
}
add = {
value = 10
desc = HOSTAGE_HOME_COURT_NEIGHBORING_RULER_REASON
}
}
# Hostage from Liege or above
if = {
limit = {
scope:home_court = { is_liege_or_above_of = scope:warden }
}
add = {
value = 50
desc = HOSTAGE_HOME_COURT_LIEGE_REASON
}
}
}
# Positive actor interaction
interaction_actor_hostage_value = {
value = 0
if = {
limit = { exists = scope:secondary_actor }
scope:actor = { save_temporary_scope_as = home_court }
scope:recipient = { save_temporary_scope_as = warden }
scope:secondary_actor = { save_temporary_scope_as = hostage }
add = scope:hostage.hostage_value
ceiling = yes
}
}
# Negative recipient interaction
interaction_recipient_hostage_value = {
value = 0
if = {
limit = { exists = scope:secondary_recipient }
scope:actor = { save_temporary_scope_as = warden }
scope:recipient = { save_temporary_scope_as = home_court }
scope:secondary_recipient = { save_temporary_scope_as = hostage }
add = scope:hostage.hostage_value
floor = yes
multiply = -1 # Negative as hostage value makes home court more reluctant
}
}
# Positive actor interaction
war_actor_hostage_value = {
value = 0
if = {
limit = { exists = scope:secondary_actor }
scope:actor = { save_temporary_scope_as = home_court }
scope:recipient = { save_temporary_scope_as = warden }
scope:secondary_actor = { save_temporary_scope_as = hostage }
add = scope:hostage.hostage_value
ceiling = yes
}
if = { # Cowardly characters more willing to use hostages
limit = {
exists = scope:warden
scope:warden.ai_boldness < 0
}
add = {
value = scope:warden.ai_boldness
multiply = 0.2
}
desc = HOSTAGE_AI_VALUE_MODIFIER_BOLDNESS
}
if = { # Compassionate characters are less willing to use hostages
limit = {
exists = scope:warden
scope:warden.ai_compassion > 0
}
add = {
value = scope:warden.ai_compassion
multiply = -0.2
}
desc = HOSTAGE_AI_VALUE_MODIFIER_COMPASSION
}
if = { # Greedy characters are more willing to gain but not give hostage
limit = {
exists = scope:warden
scope:warden.ai_greed != 0
}
add = {
value = scope:warden.ai_greed
multiply = 0.2
}
desc = HOSTAGE_AI_VALUE_MODIFIER_GREED
}
if = { # Honorable characters are more willing to use hostages, dishonorable only to take them
limit = {
exists = scope:warden
scope:warden.ai_honor != 0
}
add = {
value = scope:warden.ai_honor
if = {
limit = { scope:warden.ai_honor < 0 }
multiply = -0.2
}
else = { multiply = 0.2 }
}
desc = HOSTAGE_AI_VALUE_MODIFIER_HONOR
}
if = { # Honorable characters are more willing to use hostages, dishonorable only when to take them
limit = {
exists = scope:home_court
scope:home_court.ai_honor > 0
exists = scope:warden
scope:home_court = { is_vassal_of = scope:warden }
scope:warden = { has_realm_law_flag = vassal_refusal_is_treason }
}
add = {
value = scope:home_court.ai_honor
if = {
limit = { scope:warden.ai_honor < 0 }
multiply = -0.2
}
else = { multiply = 0.2 }
}
desc = HOSTAGE_REALM_LAW_REASON
}
if = { # Rational characters are more willing to use hostages
limit = {
exists = scope:warden
scope:warden.ai_rationality != 0
}
add = {
value = scope:warden.ai_rationality
multiply = 0.2
}
desc = HOSTAGE_AI_VALUE_MODIFIER_RATIONALITY
}
if = { # Special trait bonus
limit = {
scope:home_court = { has_trait = education_diplomacy_5 }
}
add = {
value = 50
}
desc = HOSTAGE_HOME_COURT_EDUCATION_REASON
}
divide = 10
min = 1
max = {
value = 15
if = {
limit = {
scope:home_court = { has_trait = education_diplomacy_5 }
}
add = 10
}
}
round = yes
}
# Negative recipient interaction
war_recipient_hostage_value = {
value = 0
if = {
limit = { exists = scope:secondary_recipient }
scope:actor = { save_temporary_scope_as = warden }
scope:recipient = { save_temporary_scope_as = home_court }
scope:secondary_recipient = { save_temporary_scope_as = hostage }
add = scope:hostage.hostage_value
floor = yes
multiply = -1 # Negative as hostage value makes home court more reluctant
}
# -7
if = { # Cowardly characters more willing to use hostages
limit = {
exists = scope:home_court
scope:home_court.ai_boldness < 0
}
add = {
value = scope:home_court.ai_boldness
multiply = -0.2
}
desc = HOSTAGE_AI_VALUE_MODIFIER_BOLDNESS
}
if = { # Compassionate characters are less willing to use hostages
limit = {
exists = scope:home_court
scope:home_court.ai_compassion > 0
}
add = {
value = scope:home_court.ai_compassion
multiply = -0.2
}
desc = HOSTAGE_AI_VALUE_MODIFIER_COMPASSION
}
if = { # Greedy characters are more willing to gain but not give hostage
limit = {
exists = scope:home_court
scope:home_court.ai_greed != 0
}
add = {
value = scope:home_court.ai_greed
multiply = -0.2
}
desc = HOSTAGE_AI_VALUE_MODIFIER_GREED
}
if = { # Honorable characters are more willing to use hostages, dishonorable only to take them
limit = {
exists = scope:home_court
scope:home_court.ai_honor != 0
}
add = {
value = scope:home_court.ai_honor
multiply = 0.2
}
desc = HOSTAGE_AI_VALUE_MODIFIER_HONOR
}
if = { # Honorable characters are more willing to use hostages, dishonorable only when to take them
limit = {
exists = scope:home_court
scope:home_court.ai_honor > 0
exists = scope:warden
scope:home_court = { is_vassal_of = scope:warden }
scope:warden = { has_realm_law_flag = vassal_refusal_is_treason }
}
add = {
value = scope:home_court.ai_honor
multiply = 0.2
}
desc = HOSTAGE_REALM_LAW_REASON
}
if = { # Rational characters are more willing to use hostages
limit = {
exists = scope:home_court
scope:home_court.ai_rationality != 0
}
add = {
value = scope:home_court.ai_rationality
multiply = 0.2
}
desc = HOSTAGE_AI_VALUE_MODIFIER_RATIONALITY
}
divide = 10
max = -1
min = -15
round = yes
}
# Negative recipient interaction
interaction_relative_hostage_value = {
value = 0
add = interaction_actor_hostage_value
subtract = interaction_recipient_hostage_value
round = yes
}
# Negative recipient interaction
call_to_arms_hostage_value = {
home_court = { save_temporary_scope_as = home_court }
warden = { save_temporary_scope_as = warden }
save_temporary_scope_as = hostage
value = hostage_value
}
bp2_hostage_loyalty_hook_chance_value = {
value = 20
# Time - max +35
if = {
limit = {
hostage_duration = { years >= 2 }
}
add = 5
}
if = {
limit = {
hostage_duration = { years >= 4 }
}
add = 5
}
if = {
limit = {
hostage_duration = { years >= 6 }
}
add = 5
}
if = {
limit = {
hostage_duration = { years >= 8 }
}
add = 5
}
if = {
limit = {
hostage_duration = { years >= 10 }
}
add = 10
}
if = {
limit = {
hostage_duration = { years >= 14 }
}
add = 10
}
# Traits - max +30
if = {
limit = { has_trait = loyal }
add = 10
}
else_if = {
limit = { has_trait = disloyal }
add = -10
}
if = {
limit = { has_trait = trusting }
add = 10
}
else_if = {
limit = { has_trait = paranoid }
add = -10
}
if = {
limit = { has_trait = just }
add = 10
}
else_if = {
limit = { has_trait = arbitrary }
add = -10
}
# Opinion - max +33
if = {
limit = { exists = scope:warden_opinion }
add = {
value = scope:warden_opinion
multiply = 0.33
}
}
}
hostage_adulthood_retained_halved_prestige_duration_value = 10
offer_hostage_military_strength_value = {
value = current_military_strength
multiply = 1.5
}
demand_hostage_military_strength_value = {
value = current_military_strength
multiply = 0.65
}
hostage_tier_check_value = {
value = highest_held_title_tier
subtract = 1
min = tier_county
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,204 @@
wayfarer_the_real_threat_value = {
value = 1
if = {
limit = { is_landed = yes }
add = {
add = 100
multiply = primary_title.tier
}
}
if = {
limit = { has_relation_rival = root }
add = 100
}
if = {
limit = { is_close_family_of = root }
add = 100
}
if = {
limit = { has_any_court_position = yes }
add = 10
}
}
max_regiment_count_plus_one = {
value = maa_regiments_max_count
add = 1
}
battle_poi_number_value = {
value = 3500
if = {
limit = {
current_year > 1400
}
multiply = 6
}
else_if = {
limit = {
current_year > 1300
}
multiply = 5
}
else_if = {
limit = {
current_year > 1200
}
multiply = 4
}
else_if = {
limit = {
current_year > 1100
}
multiply = 3
}
else_if = {
limit = {
current_year > 1000
}
multiply = 2
}
}
inspection_levy_reward_value = {
value = 150
multiply = {
value = root.highest_held_title_tier
subtract = 1
}
multiply = {
value = current_year
subtract = 900
divide = 100
floor = yes
}
min = 100
max = 2000
}
extra_building_resources_value = {
value = 0
if = {
limit = {
has_variable = extra_building_resources
}
add = var:extra_building_resources
}
min = 1
desc = MODIFIER_DEFINITION_EXTRA_BUILDING_RESOURCES
}
court_brewmaster_multiplier = {
value = 1
if = {
limit = {
any_court_position_holder = {
type = court_brewmaster_court_position
aptitude = {
court_position = court_brewmaster_court_position
value >= 4
}
}
}
multiply = 1.25
}
else_if = {
limit = {
any_court_position_holder = {
type = court_brewmaster_court_position
aptitude = {
court_position = court_brewmaster_court_position
value >= 3
}
}
}
multiply = 1.2
}
else_if = {
limit = {
any_court_position_holder = {
type = court_brewmaster_court_position
aptitude = {
court_position = court_brewmaster_court_position
value >= 2
}
}
}
multiply = 1.15
}
else_if = {
limit = {
any_court_position_holder = {
type = court_brewmaster_court_position
aptitude = {
court_position = court_brewmaster_court_position
value >= 1
}
}
}
multiply = 1.1
}
else_if = {
limit = {
any_court_position_holder = {
type = court_brewmaster_court_position
}
}
multiply = 1.05
}
}
brewery_counter_value = {
value = current_year
scope:brewery_county ?= {
subtract = var:brewery_counter_var
}
}
brewery_counter_25 = {
value = current_year
subtract = var:brewery_counter_var
divide = 25
floor = yes
multiply = 25
}
church_investment_value = {
value = current_year
subtract = var:church_investment_year_var
divide = 2
ceiling = yes
min = 1
desc = MODIFIER_DEFINITION_CHURCH_INVESTMENTS
}
of_the_people_perk_value = {
value = 0
add = diplomacy
multiply = 10
min = 50
}
bosporan_kingdom_modifier_scale_value = {
value = 1
every_house_member = {
every_held_title = {
limit = {
tier = tier_county
title_province = { geographical_region = black_sea_coast_region }
}
add = 1
}
}
max = 15
desc = MODIFIER_DEFINITION_BOSPORAN_KINGDOM
}

View file

@ -0,0 +1,756 @@
# Dependencies:
# _basic_values.txt
# When their health drop too low and they're slated for death, a character will die within 15-50 days (based on DEATH_MAXIMUM_DELAY , DEATH_MINIMUM_DELAY and DEATH_CHECK_INTERVAL in defines)
######################
# Diseases
######################
#### TREATMENT PROCESS SPEED ###
#The speed should most likely be under the minimum delay between health check and death DEATH_MINIMUM_DELAY (15)
court_physician_search_min = 7
court_physician_search_max = 10
physician_treatment_delay_ruler_min = 2
physician_treatment_delay_ruler_max = 4
physician_treatment_delay_subject_min = 6 #Subject span should be after ruler span so ruler's own treatment is always first
physician_treatment_delay_subject_max = 15
### RECOVERY TIMES ###
minimum_recovery_time = 51 #Needs to be higher than 50 (the longest amount of days between health change and death, so that a character can't recover before they're slated to be checked for death)
ill_recovery_min = minimum_recovery_time
ill_recovery_max = 365
pneumonic_recovery_min = minimum_recovery_time
pneumonic_recovery_max = 250
gout_ridden_recovery_min = { #1 year
value = minimum_recovery_time
add = 314
}
gout_ridden_recovery_max = 10950 #30 years
smallpox_min_recovery_time = minimum_recovery_time
smallpox_max_recovery_time = 150
bubonic_plague_min_recovery_time = minimum_recovery_time
bubonic_plague_max_recovery_time = 150
measles_min_recovery_time = minimum_recovery_time
measles_max_recovery_time = 100
dysentery_min_recovery_time = minimum_recovery_time
dysentery_max_recovery_time = 100
ergotism_min_recovery_time = minimum_recovery_time
ergotism_max_recovery_time = 150
### CONTAGION ###
smallpox_contagion_min = 15 #If there is a physician, the character should be likely to meet them before first spread
smallpox_contagion_max = 65
bubonic_plague_contagion_min = 15 #If there is a physician, the character should be likely to meet them before first spread
bubonic_plague_contagion_max = 45 #Shorter than smallpox because you die faster
physician_contagion_prevention_value = {
add = physician_base_skill_factor #Between 1 for average skill and 3 for high skill
if = {
limit = {
AND = {
has_trait = lifestyle_physician
has_trait_xp = {
trait = lifestyle_physician
value >= 100
}
}
}
multiply = 2
}
else_if = {
limit = {
OR = {
AND = {
has_trait = lifestyle_physician
has_trait_xp = {
trait = lifestyle_physician
value >= 50
}
}
AND = {
has_trait = lifestyle_mystic
has_trait_xp = {
trait = lifestyle_mystic
value >= 100
}
}
}
}
multiply = 1.5
}
else_if = {
limit = {
OR = {
has_trait = lifestyle_physician
AND = {
has_trait = lifestyle_mystic
has_trait_xp = {
trait = lifestyle_mystic
value >= 50
}
}
has_trait = lifestyle_herbalist
}
}
multiply = 1.3
}
else_if = {
limit = {
has_trait = lifestyle_mystic
}
multiply = 1.1
}
max = 7.5
}
#####################
# Treatments
#####################
######################
# Court Physician
######################
high_skill_court_physician_cost = {
value = medium_gold_value
if = {
limit = {
has_perk = anatomical_studies_perk
}
multiply = 0.5
}
}
low_skill_court_physician_cost = {
value = minor_gold_value
if = {
limit = {
has_perk = anatomical_studies_perk
}
multiply = 0.5
}
}
physician_base_skill_factor = {
# 1 for an average learning skill character without traits
# 0.2 min for low learning
# ~3 for high skill character without traits
add = learning
divide = average_skill_rating #At average skill rating, we have a factor of 1
if = {
limit = { learning >= high_skill_rating } #At high skill rating, they become 30% better
multiply = 1.3
}
min = 0.2
}
physician_safe_treatment_skill_factor = {
# 1 for an average learning skill character without traits
# 0.2 min for low learning
# ~3 for high skill character without traits
# ~12 for high skill character with best trait (physician_3)
value = physician_base_skill_factor
if = {
limit = {
AND = {
has_trait = lifestyle_physician
has_trait_xp = {
trait = lifestyle_physician
value >= 100
}
}
}
multiply = 4
}
else_if = {
limit = {
OR = {
AND = {
has_trait = lifestyle_physician
has_trait_xp = {
trait = lifestyle_physician
value >= 50
}
}
AND = {
has_trait = lifestyle_mystic
has_trait_xp = {
trait = lifestyle_mystic
value >= 100
}
}
}
}
multiply = 2
}
else_if = {
limit = {
OR = {
has_trait = lifestyle_physician
AND = {
has_trait = lifestyle_mystic
has_trait_xp = {
trait = lifestyle_mystic
value >= 50
}
}
has_trait = lifestyle_herbalist
}
}
multiply = 1.5
}
else_if = {
limit = {
has_trait = lifestyle_mystic
}
multiply = 1.2
}
if = {
limit = {
liege ?= {
domicile ?= {
has_domicile_building_or_higher = bath_04
}
}
}
multiply = 1.4
}
else_if = {
limit = {
liege ?= {
domicile ?= {
has_domicile_building_or_higher = bath_01
}
}
}
multiply = 1.2
}
if = {
limit = {
exists = liege
liege = { has_perk = anatomical_studies_perk }
}
multiply = 2
}
}
#################
# Weight
################
#These values are used to calculate the target weight that characters will trend towards once every three years
underweight_threshold = 0
overweight_threshold = 0
feast_weight_modifier_value = {
add = 5
# You have a lot of very desirable food
if = {
limit = {
scope:activity.activity_host = {
has_royal_court = yes
has_dlc_feature = royal_court
amenity_level = {
type = court_food_quality
value >= 5
}
}
}
add = 3
}
# You have a lot of food in general
else_if = {
limit = {
scope:activity.activity_host = {
has_royal_court = yes
has_dlc_feature = royal_court
amenity_level = {
type = court_food_quality
value >= 3
}
}
}
add = 2
}
# It's a smaller amount of food, but it's still a feast
else_if = {
limit = {
scope:activity.activity_host = {
has_royal_court = yes
has_dlc_feature = royal_court
amenity_level = {
type = court_food_quality
value <= 1
}
}
}
add = -1
}
}
hunt_weight_modifier_value = -4
cake_shaft_modifier_value = 4
character_weight_base_value = {
add = 0
#Any modifiers that will affect weight?
if = {
limit = {
is_ai = yes # Players gaining weight is handled through health.5004
has_character_modifier = gaining_weight_modifier
}
add = 35
}
if = {
limit = {
is_ai = yes # Players losing weight is handled through health.5005
has_character_modifier = losing_weight_modifier
}
add = -35
}
if = {
limit = {
has_character_modifier = fasting_bad_modifier
}
add = -10
}
#Do you have a food taster? For some reason your plate is always weirdly empty since you employed them...
if = {
limit = {
employs_court_position = food_taster_court_position
}
add = -5
}
#Any activities attended/other things that will affect weight?
if = {
limit = {
has_variable = character_weight_variable
}
add = var:character_weight_variable
}
# PRISON/STARVATION
if = {
limit = {
is_imprisoned = yes
}
if = {
limit = {
is_in_prison_type = dungeon
}
add = -75
}
else = {
add = -30
}
}
# DISEASE
if = {
limit = {
has_trait = consumption
}
add = -75
}
if = {
limit = {
has_trait = cancer
}
add = -50
}
if = {
limit = {
has_trait = great_pox
}
add = -35
}
if = {
limit = {
has_trait = leper
}
add = -15
}
# Court amenities, weight gain from court_food_quality
if = {
limit = {
has_royal_court = yes
has_dlc_feature = royal_court
court_owner = {
amenity_level = { type = court_food_quality value = 3 }
}
}
add = 3
}
else_if = {
limit = {
has_royal_court = yes
has_dlc_feature = royal_court
court_owner = {
amenity_level = { type = court_food_quality value = 4 }
}
}
add = 5
}
else_if = {
limit = {
has_royal_court = yes
has_dlc_feature = royal_court
court_owner = {
amenity_level = { type = court_food_quality value = 5 }
}
}
add = 7
}
########
#Trait check
########
#ADD
if = {
limit = { has_trait = gluttonous }
add = 50
}
if = {
limit = { has_trait = comfort_eater }
add = 25
}
if = {
limit = { has_trait = drunkard }
add = 20
}
if = {
limit = { has_trait = hashishiyah }
add = 20
}
if = {
limit = { has_trait = lazy }
add = 10
}
if = {
limit = { has_trait = greedy }
add = 10
}
if = {
limit = { has_trait = calm }
add = 10
}
if = {
limit = { has_trait = trusting }
add = 10
}
if = {
limit = { has_trait = gregarious }
add = 10
}
if = {
limit = { has_trait = patient }
add = 5
}
if = {
limit = { has_trait = arrogant }
add = 5
}
if = {
limit = { has_trait = ambitious }
add = 5
}
if = {
limit = {
has_trait = lifestyle_reveler
}
add = 5
if = {
limit = {
has_trait_xp = {
trait = lifestyle_reveler
value >= 100
}
}
add = 15
}
else_if = {
limit = {
has_trait_xp = {
trait = lifestyle_reveler
value >= 50
}
}
add = 10
}
}
#SUBTRACT
if = {
limit = { has_trait = shy }
add = -5
}
if = {
limit = { has_trait = zealous }
add = -5
}
if = {
limit = { has_trait = craven }
add = -5
}
if = {
limit = { has_trait = impatient }
add = -10
}
if = {
limit = { has_trait = fickle}
add = -10
}
if = {
limit = { has_trait = vengeful }
add = -10
}
if = {
limit = { has_trait = wrathful }
add = -10
}
if = {
limit = { has_trait = humble }
add = -10
}
if = {
limit = { has_trait = content }
add = -15
}
if = {
limit = { has_trait = generous }
add = -15
}
if = {
limit = { has_trait = diligent }
add = -15 # Further 'moderation' impact below.
}
if = {
limit = { has_trait = temperate }
add = -20 # Further 'moderation' impact below.
}
if = {
limit = { has_trait = reclusive }
add = -20
}
if = {
limit = { has_trait = paranoid }
add = -25
}
if = {
limit = { has_trait = inappetetic }
add = -50
}
# MODERATION - reduces weight if overweight, and increases it if underweight
if = {
limit = {
has_trait = athletic
}
multiply = 0.8
}
if = {
limit = {
has_trait = whole_of_body
}
multiply = 0.75
}
if = {
limit = { is_very_young_character = yes }
multiply = 0.33
}
if = {
limit = { is_young_character = yes }
multiply = 0.66
}
if = {
limit = { is_aging_character = yes }
multiply = 1.5
}
if = {
limit = {
has_trait = physique_good_1
}
multiply = 0.9
}
if = {
limit = {
has_trait = physique_good_2
}
multiply = 0.8
}
if = {
limit = {
has_trait = physique_good_3
}
multiply = 0.7
}
if = {
limit = {
has_trait = temperate
}
multiply = 0.9
}
if = {
limit = {
has_trait = diligent
}
multiply = 0.9
}
#Bad physique has the opposite effect, making you skew even further towards extremes
if = {
limit = {
has_trait = physique_bad_1
}
multiply = 1.1
}
if = {
limit = {
has_trait = physique_bad_2
}
multiply = 1.2
}
if = {
limit = {
has_trait = physique_bad_3
}
multiply = 1.3
}
}
base_weight_plus = {
add = base_weight
add = 10
}
base_weight_minus = {
add = base_weight
add = -10
}
#The actual value that will be looked at
character_weight_target_value = {
add = character_weight_base_value
#To even the numbers out some if you have "good" and/or active traits
if = {
limit = {
OR = {
character_weight_base_value < base_weight_minus
character_weight_base_value > base_weight_plus
}
}
if = {
limit = { #You weigh too little
character_weight_base_value < base_weight_minus
}
if = {
limit = { has_trait = lifestyle_hunter }
add = 2
if = {
limit = {
hunt_lifestyle_track_greater_equal_trigger = { TRACK = hunter GREATER_EQUAL = 50 }
}
add = 2
}
if = {
limit = {
hunt_lifestyle_track_greater_equal_trigger = { TRACK = hunter GREATER_EQUAL = 100 }
}
add = 2
}
}
if = {
limit = {
has_lifestyle = martial_lifestyle
}
add = 10
}
}
else = { #You weigh too much
if = {
limit = { has_trait = lifestyle_hunter }
if = {
limit = {
hunt_lifestyle_track_greater_equal_trigger = { TRACK = hunter GREATER_EQUAL = 50 }
}
add = -2
}
if = {
limit = {
hunt_lifestyle_track_greater_equal_trigger = { TRACK = hunter GREATER_EQUAL = 100 }
}
add = -2
}
else = {
add = -2
}
}
if = {
limit = {
has_lifestyle = martial_lifestyle
}
add = -10
}
}
}
}
# Pregnancy
pregnancy_month = {
value = pregnancy_days
divide = 30
floor = yes
min = 1
}
vigorous_sex_age_difference_value = {
value = age
subtract = 25
}
harm_event_random_list_low_odd_success_value = 40
harm_event_random_list_low_odd_failure_value = 60
harm_event_random_list_medium_odd_success_value = 60
harm_event_random_list_medium_odd_failure_value = 40
harm_event_random_list_high_odd_success_value = 70
harm_event_random_list_high_odd_failure_value = 30

View file

@ -0,0 +1,44 @@

#Central Asia Decision values
greatest_of_khans_target_counties = 100
invite_claimants_decision_prestige_value = {
if = {
limit = { highest_held_title_tier = tier_empire }
add = monumental_prestige_value
}
else_if = {
limit = { highest_held_title_tier = tier_kingdom }
add = massive_prestige_value
}
else_if = {
limit = { highest_held_title_tier = tier_duchy }
add = major_prestige_value
}
else_if = {
limit = { highest_held_title_tier = tier_county }
add = medium_prestige_value
}
}
# Adopt Feudalism
convert_to_feudalism_development_requirement = {
value = 10
if = {
limit = {
holder = {
any_neighboring_top_liege_realm_owner = {
OR = {
government_has_flag = government_is_feudal
government_has_flag = government_is_clan
}
}
}
}
subtract = 5
}
}
convert_whole_realm_to_feudalism_west_african_pagan_decision_vassal_count_value = 6
convert_whole_realm_to_feudalism_west_african_pagan_decision_wa_capital_development_value = terrible_development_level

View file

@ -0,0 +1,287 @@
#####################
# PILGRIMAGE VALUES #
#####################
# Reward values
short_pilgrimage_piety_gain = {
value = medium_piety_gain
if = {
limit = {
exists = dynasty
dynasty = {
has_dynasty_perk = erudition_legacy_4
}
}
multiply = 1.3
}
}
#Needs to be synced with the x_pilgrimage_piety_multiplier below to display the actual increase in %
medium_pilgrimage_piety_gain = {
value = medium_piety_gain
multiply = 1.5
if = {
limit = {
exists = dynasty
dynasty = {
has_dynasty_perk = erudition_legacy_4
}
}
multiply = 1.3
}
}
medium_pilgrimage_piety_multiplier = { value = 50 }
long_pilgrimage_piety_gain = {
value = medium_piety_gain
multiply = 2.5
if = {
limit = {
exists = dynasty
dynasty = {
has_dynasty_perk = erudition_legacy_4
}
}
multiply = 1.3
}
}
long_pilgrimage_piety_multiplier = { value = 150 }
very_long_pilgrimage_piety_gain = {
value = medium_piety_gain
multiply = 3.5
if = {
limit = {
exists = dynasty
dynasty = {
has_dynasty_perk = erudition_legacy_4
}
}
multiply = 1.3
}
}
very_long_pilgrimage_piety_multiplier = { value = 250 }
#This needs to be synced with cost/length multipliers in the Solo Pilgrimage phase cost in the activity_types\pilgrimage.txt file
pilgrimage_length_cost_tier_1 = {
value = scope:host.medium_gold_value
multiply = 0.2
}
#Praha -> Cologne
pilgrimage_length_cost_tier_2 = {
value = scope:host.medium_gold_value
multiply = 0.4
}
pilgrimage_length_cost_tier_3 = {
value = scope:host.medium_gold_value
multiply = 0.6
}
pilgrimage_length_cost_tier_4 = {
value = scope:host.medium_gold_value
multiply = 0.8
}
pilgrimage_length_cost_tier_5 = {
value = scope:host.medium_gold_value
multiply = 1
}
#Klingenberg -> Jerusalem
pilgrimage_length_cost_tier_6 = {
value = scope:host.medium_gold_value
multiply = 1.2
}
#Klingenberg -> Kanchipuram
pilgrimage_length_cost_tier_7 = {
value = scope:host.medium_gold_value
multiply = 1.5
}
pilgrimage_low_pious_multiplier = { value = 1.1 }
#Make sure the multiplier values sync up with the multiplier_tt values to display the Reward Tiers as percentages
pilgrimage_low_pious_multiplier_tt = {
value = pilgrimage_low_pious_multiplier
multiply = 100
subtract = 100
}
pilgrimage_mid_pious_multiplier = { value = 1.25 }
#Make sure the multiplier values sync up with the multiplier_tt values to display the Reward Tiers as percentages
pilgrimage_mid_pious_multiplier_tt = {
value = pilgrimage_mid_pious_multiplier
multiply = 100
subtract = 100
}
pilgrimage_high_pious_multiplier = { value = 1.75 }
#Make sure the multiplier values sync up with the multiplier_tt values to display the Reward Tiers as percentages
pilgrimage_high_pious_multiplier_tt = {
value = pilgrimage_high_pious_multiplier
multiply = 100
subtract = 100
}
pilgrimage_perfect_pious_multiplier = { value = 2.5 }
#Make sure the multiplier values sync up with the multiplier_tt values to display the Reward Tiers as percentages
pilgrimage_perfect_pious_multiplier_tt = {
value = pilgrimage_perfect_pious_multiplier
multiply = 100
subtract = 100
}
pilgrimage_low_pious_trait_xp_value = { value = medium_trait_xp }
pilgrimage_mid_pious_trait_xp_value = { value = major_trait_xp }
pilgrimage_high_pious_trait_xp_value = { value = massive_trait_xp }
pilgrimage_perfect_pious_trait_xp_value = {
value = massive_trait_xp
multiply = 2
}
pilgrimage_low_worldly_acceptance_value = { value = 1 }
pilgrimage_mid_worldly_acceptance_value = { value = 3 }
pilgrimage_high_worldly_acceptance_value = { value = 5 }
pilgrimage_perfect_worldly_acceptance_value = { value = 7 }
# Distances to target holy site
long_pilgrimage_max_length = 5000000 # 5M Over this distance, it will be an exceptionally long pilgrimage
medium_pilgrimage_max_length = 1000000 # 1M, slightly larger than 1 'holy roman empire' away
short_pilgrimage_max_length = 100000 # 100K, slightly larger than 1 'ireland' away.
hajj_cooldown_value = 1
pilgrimage_cooldown_value = 5
pilgrimage_entourage_pomp_appropriate_max_value = 5
pilgrimage_entourage_pomp_ceremonial_max_value = 10
pilgrimage_entourage_pomp_throng_max_value = 20
# This one doesn't sync with anything, just presenting it here for consistency/ease of tweaking.
pilgrimage_entourage_pomp_humble_max_value = 7
pilgrimage_entourage_base_set_weighting_value = {
if = {
limit = { bannable_serving_diarch_trigger = no }
# We want to have bodyguards most of all.
if = {
limit = { has_court_position = bodyguard_court_position }
add = 1000
}
if = {
limit = { has_court_position = akolouthos_court_position }
add = 1000
}
# But we'll settle for knights.
else_if = {
limit = {
is_knight = yes
prowess >= high_skill_rating
}
# We keep the weight low, since you'll probably have a good few such knights and we don't want them hogging all the spots.
add = 5
}
# Also maybe someone to just chat to.
## Positive relations.
if = {
limit = {
has_any_good_relationship_with_character_trigger = { CHARACTER = scope:host }
}
# Same faith, standard weight.
if = {
limit = { faith = scope:host.faith }
add = 100
}
# Other faith, _ehhhh_, they're for company but it's still a spiritual shindig.
else = { add = 10 }
}
## Religious figures.
if = {
limit = {
save_temporary_scope_as = current_char
OR = {
liege ?= { cp:councillor_court_chaplain ?= scope:current_char }
AND = {
faith = scope:host.faith
has_trait = devoted
}
}
}
add = 300
}
}
if = {
limit = {
bannable_serving_diarch_trigger = yes
}
add = -5000
}
}
pilgrimage_entourage_extras_set_weighting_value = {
# Same-faith only for all of these.
if = {
limit = {
faith = scope:host.faith
bannable_serving_diarch_trigger = no
}
# Assorted hangers-on.
## Anyone with a court position.
if = {
limit = { has_any_court_position = yes }
add = 50
}
## Zealous courtiers & those with high learning.
if = {
limit = {
OR = {
has_trait = zealous
AND = {
learning >= very_high_skill_rating
NOT = { has_trait = cynical }
}
}
}
add = 25
}
}
if = {
limit = {
bannable_serving_diarch_trigger = yes
}
add = -5000
}
}
pilgrimage_entourage_sodding_everyone_set_weighting_value = {
# Same-faith only for all of these.
if = {
limit = {
faith = scope:host.faith
is_designated_diarch = no
}
# Alright, now we're just grabbing everyone.
## Plus landless councillors.
if = {
limit = { is_councillor = yes }
add = 100
}
## Anyone with a learning education.
if = {
limit = { has_trait = education_learning }
add = 25
}
## Finally, any adult courtier.
if = {
limit = { is_adult = yes }
add = 1
}
}
if = {
limit = {
bannable_serving_diarch_trigger = yes
}
add = -5000
}
}

View file

@ -0,0 +1,3 @@
low_available_loot_value = 5
medium_available_loot_value = 10
high_available_loot_value = 15

View file

@ -0,0 +1,10 @@
feudalize_tribal_holding_interaction_cost = {
value = 500
if = {
limit = {
is_ai = yes
capital_province = { has_holding_type = tribal_holding }
}
add = -250
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,838 @@
##################
# Foreign Affairs
##################
# Foreign Affairs opinion base modifier
chancellor_foreign_affairs_opinion_base = {
add = diplomacy
divide = 2
}
# Bonus to opinion from Adaptive Traditions
chancellor_foreign_affairs_opinion_max_perk_bonus_modifier = {
add = chancellor_foreign_affairs_opinion_base
multiply = {
add = adaptive_traditions_perk_impact_percent
divide = 100
}
}
# Bonus to opinion from Bureaucrats
chancellor_foreign_affairs_opinion_max_erudition_modifier = {
add = chancellor_foreign_affairs_opinion_base
multiply = {
add = erudition_legacy_5_percentage
divide = 100
}
}
# Bonus to opinion from Family Business
chancellor_foreign_affairs_opinion_max_family_business_modifier = {
add = chancellor_foreign_affairs_opinion_base
multiply = {
add = family_business_councillors_percentage
divide = 100
}
}
# Bonus to opinion from FP3 Consulted House Member
chancellor_foreign_affairs_opinion_max_consulted_house_modifier = {
add = chancellor_foreign_affairs_opinion_base
multiply = {
add = consulted_house_councillors_percentage
divide = 100
}
}
# Bonus to opinion from Astounding Presence
chancellor_foreign_affairs_opinion_max_court_fashion_modifier = {
add = chancellor_foreign_affairs_opinion_base
multiply = {
add = 10
divide = 100
}
}
# Calculated max opinion
chancellor_foreign_affairs_opinion_max = {
add = chancellor_foreign_affairs_opinion_base
# Add bonus from Clerical Justification:
if = {
limit = {
scope:councillor_liege = { has_perk = adaptive_traditions_perk }
}
add = chancellor_foreign_affairs_opinion_max_perk_bonus_modifier
}
# Add bonus from Bureaucrats
if = {
limit = {
councillor_liege_has_erudition_legacy_5_perk = yes
}
add = chancellor_foreign_affairs_opinion_max_erudition_modifier
}
# Add bonus from Family Business
if = {
limit = {
councillor_liege_has_family_business_bonus = yes
}
add = chancellor_foreign_affairs_opinion_max_family_business_modifier
}
# Add bonus from FP3 Consulted House
if = {
limit = {
councillor_liege_has_consulted_house_bonus = yes
}
add = chancellor_foreign_affairs_opinion_max_consulted_house_modifier
}
# Add bonus from Astounding Presence
if = {
limit = {
scope:councillor_liege = { has_character_modifier = court_fashion_foreign_modifier }
}
add = chancellor_foreign_affairs_opinion_max_court_fashion_modifier
}
}
# Set to max for AI, or gradual scale for players
chancellor_foreign_affairs_realm_opinion_scale = {
add = 0
if = {
limit = {
scope:councillor_liege = {
is_independent_ruler = no
is_ai = yes
}
}
add = chancellor_foreign_affairs_opinion_max
}
else_if = {
limit = {
scope:councillor_liege = {
is_independent_ruler = no
has_variable = chancellor_foreign_affairs_opinion_value
}
}
add = liege.var:chancellor_foreign_affairs_opinion_value
}
}
chancellor_foreign_affairs_independent_opinion_scale = {
add = 0
if = {
limit = {
scope:councillor_liege = {
is_ai = yes
is_independent_ruler = yes
}
}
add = chancellor_foreign_affairs_opinion_max
}
else_if = {
limit = {
scope:councillor_liege = {
is_independent_ruler = yes
has_variable = chancellor_foreign_affairs_opinion_value
}
}
add = liege.var:chancellor_foreign_affairs_opinion_value
}
}
# Calculate monthly increase
chancellor_foreign_affairs_monthly_increase = {
add = chancellor_foreign_affairs_opinion_max
divide = 24
}
### Prestige gain
# Base prestige gain scale
chancellor_foreign_affairs_prestige_gain_base = {
add = diplomacy
divide = 20
}
# Adaptive Traditions bonus
chancellor_foreign_affairs_prestige_gain_perk_bonus_modifier = {
if = {
limit = { scope:councillor_liege = { has_perk = adaptive_traditions_perk } }
add = chancellor_foreign_affairs_prestige_gain_base
multiply = {
value = adaptive_traditions_perk_impact_percent
divide = 100
}
}
}
# Bureaucrats bonus
chancellor_foreign_affairs_prestige_gain_erudition_modifier = {
if = {
limit = { councillor_liege_has_erudition_legacy_5_perk = yes }
add = chancellor_foreign_affairs_prestige_gain_base
multiply = {
add = erudition_legacy_5_percentage
divide = 100
}
}
}
# Family Business bonus
chancellor_foreign_affairs_prestige_gain_family_business_modifier = {
if = {
limit = { councillor_liege_has_family_business_bonus = yes }
add = chancellor_foreign_affairs_prestige_gain_base
multiply = {
add = family_business_councillors_percentage
divide = 100
}
}
}
# FP3 Consulted House bonus
chancellor_foreign_affairs_prestige_gain_consulted_house_modifier = {
if = {
limit = { councillor_liege_has_consulted_house_bonus = yes }
add = chancellor_foreign_affairs_prestige_gain_base
multiply = {
add = consulted_house_councillors_percentage
divide = 100
}
}
}
# Total prestige gained per month through foreign affairs, including all modifiers
chancellor_foreign_affairs_prestige_total = {
add = chancellor_foreign_affairs_prestige_gain_base
add = chancellor_foreign_affairs_prestige_gain_perk_bonus_modifier
add = chancellor_foreign_affairs_prestige_gain_erudition_modifier
add = chancellor_foreign_affairs_prestige_gain_family_business_modifier
add = chancellor_foreign_affairs_prestige_gain_consulted_house_modifier
}
####################
# Domestic Affairs
####################
chancellor_domestic_affairs_opinion_base = {
add = diplomacy
divide = 2
}
chancellor_domestic_affairs_opinion_chains_of_loyalty_bonus = {
add = chancellor_domestic_affairs_opinion_base
multiply = {
add = chains_of_loyalty_percentage
divide = 100
}
}
chancellor_domestic_affairs_opinion_erudition_bonus = {
add = chancellor_domestic_affairs_opinion_base
multiply = {
add = erudition_legacy_5_percentage
divide = 100
}
}
chancellor_domestic_affairs_opinion_family_business_bonus = {
add = chancellor_domestic_affairs_opinion_base
multiply = {
add = family_business_councillors_percentage
divide = 100
}
}
chancellor_domestic_affairs_opinion_consulted_house_bonus = {
add = chancellor_domestic_affairs_opinion_base
multiply = {
add = consulted_house_councillors_percentage
divide = 100
}
}
chancellor_domestic_affairs_opinion_pandidakterion_bonus = {
add = chancellor_domestic_affairs_opinion_base
multiply = {
add = 20
divide = 100
}
}
chancellor_domestic_affairs_opinion_food_bonus = {
add = chancellor_domestic_affairs_opinion_base
multiply = {
add = 15
divide = 100
}
}
chancellor_domestic_affairs_opinion_cupbearer_bonus = {
add = chancellor_domestic_affairs_opinion_base
multiply = {
add = 20
divide = 100
}
}
chancellor_domestic_affairs_opinion_max = {
add = chancellor_domestic_affairs_opinion_base
if = {
limit = {
scope:councillor_liege = { has_perk = chains_of_loyalty_perk }
}
add = chancellor_domestic_affairs_opinion_chains_of_loyalty_bonus
}
if = {
limit = {
councillor_liege_has_erudition_legacy_5_perk = yes
}
add = chancellor_domestic_affairs_opinion_erudition_bonus
}
if = {
limit = {
councillor_liege_has_family_business_bonus = yes
}
add = chancellor_domestic_affairs_opinion_family_business_bonus
}
if = {
limit = {
councillor_liege_has_consulted_house_bonus = yes
}
add = chancellor_domestic_affairs_opinion_consulted_house_bonus
}
if = {
limit = {
scope:councillor_liege = {
has_title = title:c_byzantion
title:c_byzantion = { has_county_modifier = pandidakterion_university_modifier }
}
}
add = chancellor_domestic_affairs_opinion_pandidakterion_bonus
}
if = {
limit = {
scope:councillor_liege = {
has_character_flag = food_improves_opinion
}
}
add = chancellor_domestic_affairs_opinion_food_bonus
}
}
chancellor_domestic_affairs_opinion_scale = {
value = 0
if = {
limit = {
scope:councillor_liege = {
is_ai = yes
is_independent_ruler = yes
}
}
add = chancellor_domestic_affairs_opinion_max
}
else_if = {
limit = {
scope:councillor_liege = { has_variable = chancellor_domestic_affairs_opinion_value }
}
add = scope:councillor_liege.var:chancellor_domestic_affairs_opinion_value
}
}
chancellor_domestic_affairs_monthly_increase = {
add = chancellor_domestic_affairs_opinion_max
divide = 24
}
chancellor_domestic_affairs_tyranny_base = {
add = diplomacy
#multiply = 2
min = 1
}
chancellor_domestic_affairs_tyranny_chains_of_loyalty_bonus = {
value = 0
if = {
limit = {
scope:councillor_liege = { has_perk = chains_of_loyalty_perk }
}
add = {
value = chancellor_domestic_affairs_tyranny_base
multiply = {
add = chains_of_loyalty_percentage
divide = 100
}
}
}
}
chancellor_domestic_affairs_tyranny_erudition_bonus = {
value = 0
if = {
limit = {
councillor_liege_has_erudition_legacy_5_perk = yes
}
add = {
value = chancellor_domestic_affairs_tyranny_base
multiply = {
add = erudition_legacy_5_percentage
divide = 100
}
}
}
}
chancellor_domestic_affairs_tyranny_family_business_bonus = {
value = 0
if = {
limit = {
councillor_liege_has_family_business_bonus = yes
}
add = {
value = chancellor_domestic_affairs_tyranny_base
multiply = {
add = family_business_councillors_percentage
divide = 100
}
}
}
}
chancellor_domestic_affairs_tyranny_consulted_house_bonus = {
value = 0
if = {
limit = {
councillor_liege_has_consulted_house_bonus = yes
}
add = {
value = chancellor_domestic_affairs_tyranny_base
multiply = {
add = consulted_house_councillors_percentage
divide = 100
}
}
}
}
chancellor_domestic_affairs_tyranny_food_bonus = {
value = 0
if = {
limit = {
scope:councillor_liege = {
has_character_flag = food_improves_opinion
}
}
add = {
value = chancellor_domestic_affairs_tyranny_base
multiply = {
add = 10
divide = 100
}
}
}
}
chancellor_domestic_affairs_tyranny_total = {
add = chancellor_domestic_affairs_tyranny_base
add = chancellor_domestic_affairs_tyranny_chains_of_loyalty_bonus
add = chancellor_domestic_affairs_tyranny_erudition_bonus
add = chancellor_domestic_affairs_tyranny_family_business_bonus
add = chancellor_domestic_affairs_tyranny_consulted_house_bonus
add = chancellor_domestic_affairs_tyranny_food_bonus
}
#####################
# Integrate Title
#####################
chancellor_integrate_title_current_progress = {
value = 0
if = {
limit = { exists = scope:county }
add = scope:county.active_de_jure_drift_progress
}
}
chancellor_integrate_title_progress_gain = {
add = diplomacy
multiply = 0.035
}
chancellor_integrate_title_erudition_bonus = {
add = chancellor_integrate_title_progress_gain
multiply = family_business_councillors_percentage
divide = 100
}
chancellor_integrate_title_family_business_bonus = {
add = chancellor_integrate_title_progress_gain
multiply = family_business_councillors_percentage
divide = 100
}
chancellor_integrate_title_consulted_house_bonus = {
add = chancellor_integrate_title_progress_gain
multiply = consulted_house_councillors_percentage
divide = 100
}
# Relation impact
chancellor_integrate_title_monthly_increase_friend_bonus = {
value = chancellor_integrate_title_progress_gain
multiply = {
add = council_friend_impact_percentage
divide = 100
}
}
chancellor_integrate_title_monthly_increase_best_friend_bonus = {
value = chancellor_integrate_title_progress_gain
multiply = {
add = council_best_friend_impact_percentage
divide = 100
}
}
chancellor_integrate_title_monthly_increase_rival_bonus = {
value = chancellor_integrate_title_progress_gain
multiply = {
add = council_rival_impact_percentage
divide = 100
}
}
chancellor_integrate_title_monthly_increase_nemesis_bonus = {
value = chancellor_integrate_title_progress_gain
multiply = {
add = council_nemesis_impact_percentage
divide = 100
}
}
chancellor_integrate_title_contextual_bonuses = {
# Relation Bonuses/Penalties
if = { # Friend
limit = {
scope:councillor_liege = {
has_relation_friend = scope:councillor
NOT = { has_relation_best_friend = scope:councillor }
}
}
add = {
value = scope:councillor.chancellor_integrate_title_monthly_increase_friend_bonus
desc = COUNCILLOR_IS_YOUR_FRIEND
}
}
if = { # Best Friend
limit = {
scope:councillor_liege = {
has_relation_best_friend = scope:councillor
}
}
add = {
value = scope:councillor.chancellor_integrate_title_monthly_increase_best_friend_bonus
desc = COUNCILLOR_IS_YOUR_BEST_FRIEND
}
}
if = { # Rival
limit = {
scope:councillor_liege = {
has_relation_rival = scope:councillor
NOT = { has_relation_nemesis = scope:councillor }
}
}
add = {
value = scope:councillor.chancellor_integrate_title_monthly_increase_rival_bonus
desc = COUNCILLOR_IS_YOUR_RIVAL
}
}
if = { # Nemesis
limit = {
scope:councillor_liege = {
has_relation_nemesis = scope:councillor
}
}
add = {
value = scope:councillor.chancellor_integrate_title_monthly_increase_nemesis_bonus
desc = COUNCILLOR_IS_YOUR_NEMESIS
}
}
if = {
limit = {
councillor_liege_has_erudition_legacy_5_perk = yes
}
add = {
value = scope:councillor.chancellor_integrate_title_erudition_bonus
desc = INTEGRATE_TITLE_DYNASTY_PERK_BONUS_VALUE
}
}
if = {
limit = {
councillor_liege_has_family_business_bonus = yes
}
add = {
value = scope:councillor.chancellor_integrate_title_family_business_bonus
desc = FAMILY_BUSINESS_BONUS_VALUE
}
}
if = {
limit = {
councillor_liege_has_consulted_house_bonus = yes
}
add = {
value = scope:councillor.chancellor_integrate_title_consulted_house_bonus
desc = CONSULTED_HOUSE_BONUS_VALUE
}
}
# EP3 Promote Integration
if = {
limit = {
scope:county = { has_county_modifier = improve_de_jure_integration_modifier }
scope:councillor_liege = scope:county.holder.top_liege
}
add = {
value = chancellor_integrate_title_consulted_house_bonus
desc = improve_de_jure_integration_modifier
}
}
# EP3 Admin Emperor Bonus
if = {
limit = { # Task instigator is admin top liege
scope:councillor_liege = {
is_independent_ruler = yes
government_allows = administrative
}
}
add = {
value = chancellor_integrate_title_admin_top_liege_bonus
desc = chancellor_integrate_title_admin_top_liege_bonus_desc
}
}
# EP3 Admin Realm County Bonus
if = {
limit = { # Task target is de jure part of an admin empire/kingdom
NOT = {
scope:councillor_liege = { government_allows = administrative }
}
trigger_if = {
limit = { exists = scope:county.empire.holder }
scope:county.empire.holder = { government_allows = administrative }
}
trigger_else = {
scope:county.kingdom.holder ?= {
is_independent_ruler = yes
government_allows = administrative
}
}
}
add = {
value = chancellor_integrate_title_admin_target_bonus
desc = chancellor_integrate_title_admin_target_bonus_desc
}
}
}
#####################
# Bestow Royal Favor
#####################
chancellor_bestow_royal_favor_base = 5
chancellor_bestow_royal_favor_monthly_change = {
value = {
add = scope:councillor.diplomacy
}
}
chancellor_bestow_royal_favor_progress_gain = {
add = diplomacy
multiply = 0.5
}
chancellor_bestow_royal_favor_opinion_increase_per_success_base = {
add = {
value = scope:councillor.diplomacy
multiply = 0.3
min = 1
max = 10
ceiling = yes
}
}
chancellor_bestow_royal_favor_opinion_increase_per_success_grandeur = {
add = {
value = scope:councillor_liege.court_grandeur_current
multiply = 0.05
min = 1
max = 10
ceiling = yes
}
}
chancellor_bestow_royal_favor_opinion_gain_erudition_bonus = {
if = {
limit = { councillor_liege_has_erudition_legacy_5_perk = yes }
add = chancellor_bestow_royal_favor_opinion_increase_per_success_base
multiply = {
add = erudition_legacy_5_percentage
divide = 100
}
round = yes
}
}
chancellor_bestow_royal_favor_opinion_gain_family_business_bonus = {
if = {
limit = { councillor_liege_has_family_business_bonus = yes }
add = chancellor_bestow_royal_favor_opinion_increase_per_success_base
multiply = {
add = erudition_legacy_5_percentage
divide = 100
}
round = yes
}
}
chancellor_bestow_royal_favor_opinion_gain_consulted_house_bonus = {
if = {
limit = { councillor_liege_has_consulted_house_bonus = yes }
add = chancellor_bestow_royal_favor_opinion_increase_per_success_base
multiply = {
add = consulted_house_councillors_percentage
divide = 100
}
round = yes
}
}
chancellor_bestow_royal_favor_opinion_increase_per_success = {
add = chancellor_bestow_royal_favor_opinion_increase_per_success_base
add = chancellor_bestow_royal_favor_opinion_increase_per_success_grandeur
add = chancellor_bestow_royal_favor_opinion_gain_erudition_bonus
add = chancellor_bestow_royal_favor_opinion_gain_family_business_bonus
add = chancellor_bestow_royal_favor_opinion_gain_consulted_house_bonus
}
# Base prestige gain scale
chancellor_bestow_royal_favor_prestige_gain_base = {
add = scope:councillor.diplomacy
divide = 5
ceiling = yes
divide = 10
}
# Vassal's base prestige gain scale (static so we can add a character modifier)
chancellor_bestow_royal_favor_prestige_gain_base_vassal = {
add = 0.5
}
chancellor_bestow_favor_prestige_gain_erudition_modifier = {
if = {
limit = { councillor_liege_has_erudition_legacy_5_perk = yes }
add = chancellor_bestow_royal_favor_prestige_gain_base
multiply = {
add = erudition_legacy_5_percentage
divide = 100
}
}
}
chancellor_bestow_favor_prestige_gain_family_business_modifier = {
if = {
limit = { councillor_liege_has_family_business_bonus = yes }
add = chancellor_bestow_royal_favor_prestige_gain_base
multiply = {
add = family_business_councillors_percentage
divide = 100
}
}
}
chancellor_bestow_favor_prestige_gain_consulted_house_modifier = {
if = {
limit = { councillor_liege_has_consulted_house_bonus = yes }
add = chancellor_bestow_royal_favor_prestige_gain_base
multiply = {
add = consulted_house_councillors_percentage
divide = 100
}
}
}
chancellor_bestow_royal_favor_prestige_total = {
add = chancellor_bestow_royal_favor_prestige_gain_base
add = chancellor_bestow_favor_prestige_gain_erudition_modifier
add = chancellor_bestow_favor_prestige_gain_family_business_modifier
add = chancellor_bestow_favor_prestige_gain_consulted_house_modifier
}
# Relation impact
chancellor_bestow_royal_favor_base_total = {
add = chancellor_bestow_royal_favor_base
add = chancellor_bestow_royal_favor_monthly_change
}
chancellor_bestow_royal_favor_monthly_increase_friend_bonus = {
value = chancellor_bestow_royal_favor_base_total
multiply = {
add = council_friend_impact_percentage
divide = 100
}
}
chancellor_bestow_royal_favor_monthly_increase_best_friend_bonus = {
value = chancellor_bestow_royal_favor_base_total
multiply = {
add = council_best_friend_impact_percentage
divide = 100
}
}
chancellor_bestow_royal_favor_monthly_increase_rival_bonus = {
value = chancellor_bestow_royal_favor_base_total
multiply = {
add = council_rival_impact_percentage
divide = 100
}
}
chancellor_bestow_royal_favor_monthly_increase_nemesis_bonus = {
value = chancellor_bestow_royal_favor_base_total
multiply = {
add = council_nemesis_impact_percentage
divide = 100
}
}
### Learn on the Job modifier
chancellor_learn_on_the_job_scale = {
value = 0
if = {
limit = {
exists = liege
liege = { has_perk = learn_on_the_job_perk }
}
add = diplomacy
multiply = {
add = learn_on_the_job_percentage
divide = 100
}
floor = yes
min = 1
}
}
### Reliable House modifier
chancellor_reliable_house_scale = {
value = 0
if = {
limit = {
exists = liege.dynasty
liege.dynasty = { has_dynasty_perk = fp2_coterie_legacy_2 }
house = liege.house
}
add = diplomacy
multiply = {
add = council_reliable_house_percentage
divide = 100
}
floor = yes
min = 1
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,74 @@

debug_current_dread = {
add = dread
}
debug_number_of_unintimidated_vassals = {
every_vassal = {
limit = {
has_dread_level_towards = {
target = root
level = 0
}
}
add = 1
}
}
debug_number_of_intimidated_vassals = {
every_vassal = {
limit = {
has_dread_level_towards = {
target = root
level = 1
}
}
add = 1
}
}
debug_number_of_cowed_vassals = {
every_vassal = {
limit = {
has_dread_level_towards = {
target = root
level = 2
}
}
add = 1
}
}
debug_percentage_of_dread_affected_vassals = {
every_vassal = {
limit = {
has_dread_level_towards = {
target = root
level > 0
}
}
add = 1
}
divide = {
every_vassal = {
add = 1
}
}
multiply = 100
}
debug_percentage_of_cowed_vassals = {
every_vassal = {
limit = {
has_dread_level_towards = {
target = root
level = 2
}
}
add = 1
}
divide = {
every_vassal = {
add = 1
}
}
multiply = 100
}

View file

@ -0,0 +1,647 @@

######################
# Organize Levies
######################
### Improving Levies
# Base value
marshal_organize_levies_base = {
add = 1
}
marshal_organize_levies_skill_base = {
add = martial
multiply = 2
}
# Erudition bonus
marshal_organize_levies_erudition_bonus = {
if = {
limit = { councillor_liege_has_erudition_legacy_5_perk = yes }
add = {
value = marshal_organize_levies_base
add = marshal_organize_levies_skill_base
multiply = {
add = erudition_legacy_5_percentage
divide = 100
}
}
}
}
# Tradition: Family business
marshal_organize_levies_family_business_bonus = {
if = {
limit = { councillor_liege_has_family_business_bonus = yes }
add = {
value = marshal_organize_levies_base
add = marshal_organize_levies_skill_base
multiply = {
add = family_business_councillors_percentage
divide = 100
}
}
}
}
marshal_organize_levies_consulted_house_bonus = {
if = {
limit = { councillor_liege_has_consulted_house_bonus = yes }
add = {
value = marshal_organize_levies_base
add = marshal_organize_levies_skill_base
multiply = {
add = consulted_house_councillors_percentage
divide = 100
}
}
}
}
marshal_organize_levies_pandidakterion_bonus = {
if = {
limit = {
scope:councillor_liege = {
has_title = title:c_byzantion
title:c_byzantion = { has_county_modifier = pandidakterion_university_modifier }
}
}
add = {
value = marshal_organize_levies_base
add = marshal_organize_levies_skill_base
multiply = {
add = 10
divide = 100
}
}
}
}
# Final value
marshal_organize_levies_modifier_total = {
add = marshal_organize_levies_base
add = marshal_organize_levies_skill_base
add = marshal_organize_levies_erudition_bonus
add = marshal_organize_levies_family_business_bonus
add = marshal_organize_levies_consulted_house_bonus
add = marshal_organize_levies_pandidakterion_bonus
}
### Army maintenance
# Base value
marshal_organize_levies_maintenance_base = {
add = 1
}
marshal_organize_levies_maintenance_skill_base = {
add = martial
}
# Erudition bonus
marshal_organize_levies_maintenance_erudition_bonus = {
if = {
limit = { councillor_liege_has_erudition_legacy_5_perk = yes }
add = {
value = marshal_organize_levies_maintenance_base
add = marshal_organize_levies_maintenance_skill_base
multiply = {
add = erudition_legacy_5_percentage
divide = 100
}
}
}
}
# Tradition: Family business
marshal_organize_levies_maintenance_family_business_bonus = {
if = {
limit = { councillor_liege_has_family_business_bonus = yes }
add = {
value = marshal_organize_levies_maintenance_base
add = marshal_organize_levies_maintenance_skill_base
multiply = {
add = family_business_councillors_percentage
divide = 100
}
}
}
}
# FP3 Consulted House
marshal_organize_levies_maintenance_consulted_house_bonus = {
if = {
limit = { councillor_liege_has_consulted_house_bonus = yes }
add = {
value = marshal_organize_levies_maintenance_base
add = marshal_organize_levies_maintenance_skill_base
multiply = {
add = consulted_house_councillors_percentage
divide = 100
}
}
}
}
task_organize_levies_maintenance_pandidakterion_bonus = {
if = {
limit = {
scope:councillor_liege = {
has_title = title:c_byzantion
title:c_byzantion = { has_county_modifier = pandidakterion_university_modifier }
}
}
add = {
value = marshal_organize_levies_base
add = marshal_organize_levies_skill_base
multiply = {
add = 10
divide = 100
}
}
}
}
# Final value
marshal_organize_levies_maintenance_total = {
add = marshal_organize_levies_maintenance_base
add = marshal_organize_levies_maintenance_skill_base
add = marshal_organize_levies_maintenance_erudition_bonus
add = marshal_organize_levies_maintenance_family_business_bonus
add = marshal_organize_levies_maintenance_consulted_house_bonus
add = task_organize_levies_maintenance_pandidakterion_bonus
}
########################
# Train Commanders
########################
### Overtime Boost MaA
# Base modifier
marshal_maa_overtime_boost_base = {
add = martial
}
# Max value
marshal_maa_overtime_boost_max = {
add = martial
}
# Monthly Increase
marshal_maa_overtime_boost_monthly_increase = {
add = 1
}
# Current
marshal_maa_overtime_boost_scale = {
add = 0
if = {
limit = {
has_variable = marshal_maa_overtime_boost
}
add = var:marshal_maa_overtime_boost
}
}
## Boost Knights
marshal_knights_overtime_boost_scale = {
add = 0
if = {
limit = {
has_variable = marshal_maa_overtime_boost
}
add = var:marshal_maa_overtime_boost
}
}
### Improve commanders
# Base value
marshal_train_commanders_monthly_chance_value_base = {
add = martial
divide = 2
}
# Erudition value
marshal_train_commanders_monthly_chance_erudition_bonus = {
add = marshal_train_commanders_monthly_chance_value_base
multiply = erudition_legacy_5_percentage
divide = 100
}
# Family Business
marshal_train_commanders_monthly_chance_family_business_bonus = {
add = marshal_train_commanders_monthly_chance_value_base
multiply = family_business_councillors_percentage
divide = 100
}
# FP3 Consulted House
marshal_train_commanders_monthly_chance_consulted_house_bonus = {
add = marshal_train_commanders_monthly_chance_value_base
multiply = consulted_house_councillors_percentage
divide = 100
}
# Master of Horse
marshal_train_commanders_monthly_chance_master_of_horse_bonus = {
add = marshal_train_commanders_monthly_chance_value_base
multiply = 10
divide = 100
}
# Total value
marshal_train_commanders_monthly_chance_value = {
value = marshal_train_commanders_monthly_chance_value_base
if = {
limit = {
councillor_liege_has_erudition_legacy_5_perk = yes
}
add = marshal_train_commanders_monthly_chance_erudition_bonus
}
if = {
limit = {
councillor_liege_has_family_business_bonus = yes
}
add = marshal_train_commanders_monthly_chance_family_business_bonus
}
if = {
limit = {
councillor_liege_has_consulted_house_bonus = yes
}
add = marshal_train_commanders_monthly_chance_consulted_house_bonus
}
if = {
limit = {
scope:councillor_liege = {
OR = {
has_character_modifier = employer_booner_master_of_horse_2_modifier
has_character_modifier = employer_booner_master_of_horse_3_modifier
}
}
}
add = marshal_train_commanders_monthly_chance_master_of_horse_bonus
}
}
task_supress_crime_progress = {
add = martial
divide = 10
}
################################
# Increase Control
################################
marshal_increase_control_full_progress = {
if = {
limit = { exists = scope:county }
add = scope:county.monthly_county_control_change
}
}
marshal_increase_control_current_progress = {
value = 0
if = {
limit = { exists = scope:county }
add = scope:county.county_control
}
}
marshal_increase_control_base = 0.2
marshal_increase_county_control_monthly_change = {
add = martial
divide = 30
}
marshal_increase_control_base_total = {
add = marshal_increase_control_base
add = marshal_increase_county_control_monthly_change
}
marshal_increase_control_monthly_increase_friend_bonus = {
if = {
limit = {
scope:councillor_liege = {
has_relation_friend = scope:councillor
NOT = { has_relation_best_friend = scope:councillor }
}
}
add = {
value = marshal_increase_control_base_total
multiply = {
value = council_friend_impact_percentage
divide = 100
}
}
}
}
marshal_increase_control_monthly_increase_best_friend_bonus = {
if = {
limit = {
scope:councillor_liege = {
has_relation_best_friend = scope:councillor
}
}
add = {
value = marshal_increase_control_base_total
multiply = {
value = council_best_friend_impact_percentage
divide = 100
}
}
}
}
marshal_increase_control_monthly_increase_rival_bonus = {
if = {
limit = {
scope:councillor_liege = {
has_relation_rival = scope:councillor
NOT = { has_relation_nemesis = scope:councillor }
}
}
add = {
value = marshal_increase_control_base_total
multiply = {
value = council_rival_impact_percentage
divide = 100
}
}
}
}
marshal_increase_control_monthly_increase_nemesis_bonus = {
if = {
limit = {
scope:councillor_liege = {
has_relation_nemesis = scope:councillor
}
}
add = {
value = marshal_increase_control_base_total
multiply = {
value = council_nemesis_impact_percentage
divide = 100
}
}
}
}
marshal_increase_county_control_perk_bonus_monthly_change = {
value = 0
if = {
limit = {
exists = liege
liege = { has_perk = strict_organization_perk }
}
add = marshal_increase_control_base_total
multiply = {
add = strict_organization_percentage
divide = 100
}
}
}
marshal_increase_county_control_erudition_bonus_monthly_change = {
value = 0
add = marshal_increase_control_base_total
multiply = {
add = erudition_legacy_5_percentage
divide = 100
}
}
marshal_increase_county_control_family_business_bonus_monthly_change = {
value = 0
add = marshal_increase_control_base_total
multiply = {
add = family_business_councillors_percentage
divide = 100
}
}
marshal_increase_county_control_consulted_house_bonus_monthly_change = {
value = 0
add = marshal_increase_control_base_total
multiply = {
add = consulted_house_councillors_percentage
divide = 100
}
}
marshal_increase_county_control_experience_bonus_monthly_change = {
value = 0
add = marshal_increase_control_base_total
multiply = {
add = 10
divide = 100
}
}
marshal_increase_control_total = {
value = marshal_increase_control_base
add = marshal_increase_county_control_monthly_change
add = marshal_increase_control_monthly_increase_friend_bonus
add = marshal_increase_control_monthly_increase_best_friend_bonus
add = marshal_increase_control_monthly_increase_rival_bonus
add = marshal_increase_control_monthly_increase_nemesis_bonus
add = marshal_increase_county_control_perk_bonus_monthly_change
if = {
limit = {
councillor_liege_has_erudition_legacy_5_perk = yes
}
add = marshal_increase_county_control_erudition_bonus_monthly_change
}
if = {
limit = {
councillor_liege_has_family_business_bonus = yes
}
add = marshal_increase_county_control_family_business_bonus_monthly_change
}
if = {
limit = {
has_character_modifier = event_bonus_to_county_control
}
add = marshal_increase_county_control_experience_bonus_monthly_change
}
}
marshal_councillor_county_corruption_value = {
add = martial
divide = 5
}
marshal_county_county_corruption_value = {
if = {
limit = { exists = scope:county }
add = scope:county.county_control
divide = 5
}
}
marshal_remove_county_corruption_chance = {
add = martial
if = {
limit = { exists = scope:county }
add = {
value = scope:county.county_control
}
}
divide = 5
}
marshal_learn_on_the_job_scale = {
value = 0
if = {
limit = {
liege = { has_perk = learn_on_the_job_perk }
}
add = martial
multiply = {
add = learn_on_the_job_percentage
divide = 100
}
floor = yes
min = 1
}
}
marshal_scheme_overtime_boost_scale = {
add = 0
if = {
limit = {
has_variable = marshal_overtime_decrease
}
subtract = var:marshal_overtime_decrease
}
}
# Monthly Increase
marshal_overtime_boost_monthly_increase = {
add = martial
multiply = 0.1
floor = yes
min = 0.1
}
marshal_overtime_decrease_monthly_increase = {
subtract = martial
multiply = 0.05
}
# Max value
marshal_overtime_boost_base = {
add = martial
multiply = 2
}
marshal_manage_guards_max_erudition_bonus = {
if = {
limit = { councillor_liege_has_erudition_legacy_5_perk = yes }
add = marshal_overtime_boost_base
multiply = {
add = erudition_legacy_5_percentage
divide = 100
}
}
}
marshal_manage_guards_max_family_business_bonus = {
if = {
limit = { councillor_liege_has_family_business_bonus = yes }
add = marshal_overtime_boost_base
multiply = {
add = family_business_councillors_percentage
divide = 100
}
}
}
marshal_manage_guards_max_consulted_house_bonus = {
if = {
limit = { councillor_liege_has_consulted_house_bonus = yes }
add = marshal_overtime_boost_base
multiply = {
add = consulted_house_councillors_percentage
divide = 100
}
}
}
marshal_overtime_boost_max = {
add = marshal_overtime_boost_base
add = marshal_manage_guards_max_erudition_bonus
add = marshal_manage_guards_max_family_business_bonus
add = marshal_manage_guards_max_consulted_house_bonus
}
marshal_overtime_boost_scale = {
value = 0
if = {
limit = {
scope:councillor_liege = {
is_ai = yes
is_independent_ruler = yes
}
}
add = marshal_overtime_boost_max
}
else_if = {
limit = {
scope:councillor_liege = { has_variable = marshal_overtime_boost }
}
add = liege.var:marshal_overtime_boost
}
}
marshal_overtime_decrease_base = {
subtract = martial
multiply = 2
floor = yes
min = -40
}
marshal_overtime_decrease_max = {
add = marshal_overtime_decrease_base
subtract = marshal_manage_guards_max_erudition_bonus
subtract = marshal_manage_guards_max_family_business_bonus
subtract = marshal_manage_guards_max_consulted_house_bonus
}
marshal_overtime_decrease_scale = {
value = 0
if = {
limit = {
scope:councillor_liege = {
is_ai = yes
is_independent_ruler = yes
}
}
add = marshal_overtime_decrease_max
}
else_if = {
limit = {
scope:councillor_liege = { has_variable = marshal_overtime_boost }
}
add = liege.var:marshal_overtime_decrease
}
multiply = -1
}
### Reliable House modifier
marshal_reliable_house_scale = {
value = 0
if = {
limit = {
exists = liege.dynasty
liege.dynasty = { has_dynasty_perk = fp2_coterie_legacy_2 }
house = liege.house
}
add = martial
multiply = {
add = council_reliable_house_percentage
divide = 100
}
floor = yes
min = 1
}
}

View file

@ -0,0 +1,411 @@

spouse_skill_rating_1 = {
add = mediocre_skill_rating
}
spouse_skill_rating_2 = {
add = medium_skill_rating
}
spouse_skill_rating_3 = {
add = decent_skill_rating
}
spouse_skill_rating_4 = {
add = very_high_skill_rating
}
inverted_spouse_skill_rating_1 = {
subtract = spouse_skill_rating_1
}
inverted_spouse_skill_rating_2 = {
subtract = spouse_skill_rating_2
}
inverted_spouse_skill_rating_3 = {
subtract = spouse_skill_rating_3
}
inverted_spouse_skill_rating_4 = {
subtract = spouse_skill_rating_4
}
spouse_default_task_diplomacy_scale = {
add = diplomacy
if = {
limit = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
}
multiply = 1.25
}
if = {
limit = {
scope:councillor_liege.culture = { has_cultural_parameter = better_spouses }
}
multiply = 1.25
}
divide = 5
if = {
limit = {
OR = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
scope:councillor_liege.culture = { has_cultural_parameter = better_spouses }
}
}
ceiling = yes
}
else = {
floor = yes
}
min = 1
}
spouse_default_task_martial_scale = {
add = martial
if = {
limit = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
}
multiply = 1.25
}
if = {
limit = {
scope:councillor_liege.culture = { has_cultural_parameter = better_spouses }
}
multiply = 1.25
}
divide = 5
if = {
limit = {
OR = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
scope:councillor_liege.culture = { has_cultural_parameter = better_spouses }
}
}
ceiling = yes
}
else = {
floor = yes
}
min = 1
}
spouse_default_task_intrigue_scale = {
add = intrigue
if = {
limit = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
}
multiply = 1.25
}
if = {
limit = {
scope:councillor_liege.culture = { has_cultural_parameter = better_spouses }
}
multiply = 1.25
}
if = {
limit = {
scope:councillor = {
AND = {
exists = dynasty
dynasty = { has_dynasty_perk = fp3_khvarenah_legacy_3 }
}
}
}
multiply = 1.25
}
divide = 5
if = {
limit = {
OR = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
scope:councillor_liege.culture = { has_cultural_parameter = better_spouses }
}
}
ceiling = yes
}
else = {
floor = yes
}
min = 1
}
spouse_default_task_learning_scale = {
add = learning
if = {
limit = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
}
multiply = 1.25
}
if = {
limit = {
scope:councillor_liege.culture = { has_cultural_parameter = better_spouses }
}
multiply = 1.25
}
divide = 5
if = {
limit = {
OR = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
scope:councillor_liege.culture = { has_cultural_parameter = better_spouses }
}
}
ceiling = yes
}
else = {
floor = yes
}
min = 1
}
spouse_default_task_stewardship_scale = {
add = stewardship
if = {
limit = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
}
multiply = 1.25
}
if = {
limit = {
scope:councillor_liege.culture = { has_cultural_parameter = better_spouses }
}
multiply = 1.25
}
divide = 5
if = {
limit = {
OR = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
scope:councillor_liege.culture = { has_cultural_parameter = better_spouses }
}
}
ceiling = yes
}
else = {
floor = yes
}
min = 1
}
spouse_task_court_politics_scale = {
add = diplomacy
if = {
limit = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
}
multiply = 1.25
}
if = {
limit = {
scope:councillor_liege.culture = { has_cultural_parameter = better_spouses }
}
multiply = 1.25
}
divide = 2
if = {
limit = {
OR = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
scope:councillor_liege.culture = { has_cultural_parameter = better_spouses }
}
}
ceiling = yes
}
else = {
floor = yes
}
min = 1
}
spouse_task_chivalry_scale = {
add = martial
if = {
limit = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
}
multiply = 1.25
}
if = {
limit = {
scope:councillor_liege.culture = { has_cultural_parameter = better_spouses }
}
multiply = 1.25
}
divide = 2
if = {
limit = {
OR = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
scope:councillor_liege.culture = { has_cultural_parameter = better_spouses }
}
}
ceiling = yes
}
else = {
floor = yes
}
min = 1
}
spouse_task_court_intrigue_scale = {
add = intrigue
if = {
limit = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
}
multiply = 1.25
}
if = {
limit = {
scope:councillor_liege.culture = { has_cultural_parameter = better_spouses }
}
multiply = 1.25
}
if = {
limit = {
scope:councillor = {
AND = {
exists = dynasty
dynasty = { has_dynasty_perk = fp3_khvarenah_legacy_3 }
}
}
}
multiply = 1.25
}
divide = 2
if = {
limit = {
OR = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
scope:councillor_liege.culture = { has_cultural_parameter = better_spouses }
}
}
ceiling = yes
}
else = {
floor = yes
}
min = 1
}
spouse_task_manage_domain_scale = {
add = stewardship
if = {
limit = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
}
multiply = 1.25
}
if = {
limit = {
scope:councillor_liege.culture = { has_cultural_parameter = better_spouses }
}
multiply = 1.25
}
divide = 2
if = {
limit = {
OR = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
scope:councillor_liege.culture = { has_cultural_parameter = better_spouses }
}
}
ceiling = yes
}
else = {
floor = yes
}
min = 1
}
spouse_task_patronage_scale = {
add = learning
if = {
limit = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
}
multiply = 1.25
}
if = {
limit = {
scope:councillor_liege.culture = { has_cultural_parameter = better_spouses }
}
multiply = 1.25
}
divide = 2
if = {
limit = {
OR = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
scope:councillor_liege.culture = { has_cultural_parameter = better_spouses }
}
}
ceiling = yes
}
else = {
floor = yes
}
min = 1
}
#Spouse rank up values
councillor_spouse_lifestyle_rank_up_threshold = 4 #Number of half-years the character has to have been performing a task in order to rank up in the relevant skill
councillor_spouse_lifestyle_progress_factor = 0.75 #The factor by which the chance of ranking up each month is multiplied. At 1, one point of progress and one point of skill increase the chance (every six months) by 1%
councillor_spouse_lifestyle_progress_increase = 1 #How much progress is added every time
#FROM EVENTS
opinion_boost_neighboring_ruler_value = {
add = 20
if = {
limit = {
tier_difference = {
target = root
value = -1
}
}
multiply = 2
}
else_if = {
limit = {
tier_difference = {
target = root
value = -2
}
}
multiply = 2.5
}
}
spouse_martial_event_troop_size = {
add = martial
add = prowess
if = {
limit = {
has_trait = strategist
}
multiply = 1.5
}
if = {
limit = {
has_trait = overseer
}
multiply = 1.5
}
if = {
limit = {
has_trait = gallant
}
multiply = 1.5
}
multiply = 10
round = yes
}
councillor_spouse_martial_1005_a_value = {
add = scope:councillor.martial
divide = 2
}

View file

@ -0,0 +1,503 @@

# Values used by the Spymaster tasks and ongoing Scheme Discovery
monthly_scheme_discovery_chance_value = {
# First grab our percentage chance to be discovered.
value = 100
subtract = scheme_secrecy
# Then reduce it to 10% of itself, as it'll be checked very frequently.
multiply = 0.1
}
spymaster_learn_on_the_job_scale = {
value = 0
if = {
limit = {
exists = liege
liege = { has_perk = learn_on_the_job_perk }
}
add = intrigue
multiply = {
add = learn_on_the_job_percentage
divide = 100
}
floor = yes
min = 1
}
}
### Reliable House modifier
spymaster_reliable_house_scale = {
value = 0
if = {
limit = {
exists = liege.dynasty
liege.dynasty = { has_dynasty_perk = fp2_coterie_legacy_2 }
house = liege.house
}
add = intrigue
multiply = {
add = council_reliable_house_percentage
divide = 100
}
floor = yes
min = 1
}
}
#########################################
######## DISRUPT SCHEMES TASK ###########
#########################################
spymaster_disrupt_schemes_hostile_scheme_resistance_base = {
add = 5
}
spymaster_disrupt_schemes_modifier_base_scale = {
add = intrigue
divide = 2
}
spymaster_disrupt_schemes_court_of_shadows_modifier_scale = {
value = 0
if = {
limit = {
exists = liege
liege = { has_perk = court_of_shadows_perk }
}
add = {
value = spymaster_disrupt_schemes_hostile_scheme_resistance_base
add = spymaster_disrupt_schemes_modifier_base_scale
multiply = {
add = court_of_shadows_perk_percentage
divide = 100
}
}
}
}
spymaster_disrupt_schemes_erudition_legacy_5_modifier_scale = {
value = 0
if = {
limit = {
councillor_liege_has_erudition_legacy_5_perk = yes
}
add = {
value = spymaster_disrupt_schemes_hostile_scheme_resistance_base
add = spymaster_disrupt_schemes_modifier_base_scale
multiply = {
add = erudition_legacy_5_percentage
divide = 100
}
}
}
}
spymaster_disrupt_schemes_family_business_modifier_scale = {
value = 0
if = {
limit = {
councillor_liege_has_family_business_bonus = yes
}
add = {
value = spymaster_disrupt_schemes_hostile_scheme_resistance_base
add = spymaster_disrupt_schemes_modifier_base_scale
multiply = {
add = family_business_councillors_percentage
divide = 100
}
}
}
}
spymaster_disrupt_schemes_consulted_house_modifier_scale = {
value = 0
if = {
limit = {
councillor_liege_has_consulted_house_bonus = yes
}
add = {
value = spymaster_disrupt_schemes_hostile_scheme_resistance_base
add = spymaster_disrupt_schemes_modifier_base_scale
multiply = {
add = consulted_house_councillors_percentage
divide = 100
}
}
}
}
spymaster_disrupt_schemes_modifier_final_scale = {
add = spymaster_disrupt_schemes_hostile_scheme_resistance_base
add = spymaster_disrupt_schemes_modifier_base_scale
add = spymaster_disrupt_schemes_court_of_shadows_modifier_scale
add = spymaster_disrupt_schemes_erudition_legacy_5_modifier_scale
add = spymaster_disrupt_schemes_family_business_modifier_scale
add = spymaster_disrupt_schemes_consulted_house_modifier_scale
}
spymaster_disrupt_schemes_scheme_discovery_modifier = {
add = intrigue
}
spymaster_find_secrets_disrupt_schemes_modifier = {
add = intrigue
}
spymaster_find_secrets_disrupt_schemes_modifier_factor = {
value = 100
subtract = {
value = spymaster_find_secrets_disrupt_schemes_modifier
multiply = 3
}
min = 10
divide = 100
}
spymaster_disrupt_schemes_court_of_shadows_scheme_discovery_modifier_scale = {
value = 0
if = {
limit = {
exists = liege
liege = { has_perk = court_of_shadows_perk }
}
add = {
add = spymaster_disrupt_schemes_scheme_discovery_modifier
multiply = {
add = court_of_shadows_perk_percentage
divide = 100
}
}
}
}
spymaster_disrupt_schemes_erudition_legacy_5_discovery_modifier_scale = {
value = 0
if = {
limit = {
councillor_liege_has_erudition_legacy_5_perk = yes
}
add = {
add = spymaster_disrupt_schemes_scheme_discovery_modifier
multiply = {
add = erudition_legacy_5_percentage
divide = 100
}
}
}
}
spymaster_disrupt_schemes_family_business_discovery_modifier_scale = {
value = 0
if = {
limit = {
councillor_liege_has_family_business_bonus = yes
}
add = {
add = spymaster_disrupt_schemes_scheme_discovery_modifier
multiply = {
add = family_business_councillors_percentage
divide = 100
}
}
}
}
spymaster_disrupt_schemes_consulted_house_discovery_modifier_scale = {
value = 0
if = {
limit = {
councillor_liege_has_consulted_house_bonus = yes
}
add = {
add = spymaster_disrupt_schemes_scheme_discovery_modifier
multiply = {
add = consulted_house_councillors_percentage
divide = 100
}
}
}
}
spymaster_disrupt_schemes_total_modifier = {
add = spymaster_disrupt_schemes_scheme_discovery_modifier
add = spymaster_disrupt_schemes_court_of_shadows_scheme_discovery_modifier_scale
add = spymaster_disrupt_schemes_erudition_legacy_5_discovery_modifier_scale
add = spymaster_disrupt_schemes_family_business_discovery_modifier_scale
add = spymaster_disrupt_schemes_consulted_house_discovery_modifier_scale
}
#########################################
######## ESPIONAGE SCHEME TASK ##########
#########################################
spymaster_espionage_modifier_base_scale = {
add = intrigue
multiply = -1
max = -1
}
spymaster_espionage_legacy_bonus = {
value = 0
if = {
limit = {
councillor_liege_has_erudition_legacy_5_perk = yes
}
add = {
value = spymaster_espionage_modifier_base_scale
multiply = {
value = erudition_legacy_5_percentage
divide = 100
}
}
}
}
spymaster_espionage_family_business_bonus = {
value = 0
if = {
limit = {
councillor_liege_has_family_business_bonus = yes
}
add = {
value = spymaster_espionage_modifier_base_scale
multiply = {
value = family_business_councillors_percentage
divide = 100
}
}
}
}
spymaster_espionage_consulted_house_bonus = {
value = 0
if = {
limit = {
councillor_liege_has_consulted_house_bonus = yes
}
add = {
value = spymaster_espionage_modifier_base_scale
multiply = {
value = consulted_house_councillors_percentage
divide = 100
}
}
}
}
spymaster_espionage_court_type_bonus = {
value = 0
if = {
limit = {
has_dlc_feature = royal_court
scope:councillor_liege = {
has_royal_court = yes
has_dlc_feature = royal_court
has_court_type = court_intrigue
court_grandeur_current_level >= 4
}
}
add = {
value = spymaster_espionage_modifier_base_scale
multiply = {
value = court_intrigue_spymaster_task_bonus
divide = 100
}
}
}
}
spymaster_espionage_modifier_final_scale = {
add = spymaster_espionage_modifier_base_scale
add = spymaster_espionage_legacy_bonus
add = spymaster_espionage_family_business_bonus
add = spymaster_espionage_consulted_house_bonus
add = spymaster_espionage_court_type_bonus
}
spymaster_espionage_success_chance_base = {
add = 5
}
spymaster_espionage_success_chance_modifier_base_scale = {
add = {
add = intrigue
multiply = 0.5
}
}
spymaster_espionage_success_chance_legacy_bonus = {
value = 0
if = {
limit = {
councillor_liege_has_erudition_legacy_5_perk = yes
}
add = {
value = spymaster_espionage_success_chance_base
add = spymaster_espionage_success_chance_modifier_base_scale
multiply = {
value = erudition_legacy_5_percentage
divide = 100
}
}
}
}
spymaster_espionage_success_chance_family_business_bonus = {
value = 0
if = {
limit = {
councillor_liege_has_family_business_bonus = yes
}
add = {
value = spymaster_espionage_success_chance_base
add = spymaster_espionage_success_chance_modifier_base_scale
multiply = {
value = family_business_councillors_percentage
divide = 100
}
}
}
}
spymaster_espionage_success_chance_consulted_house_bonus = {
value = 0
if = {
limit = {
councillor_liege_has_consulted_house_bonus = yes
}
add = {
value = spymaster_espionage_success_chance_base
add = spymaster_espionage_success_chance_modifier_base_scale
multiply = {
value = consulted_house_councillors_percentage
divide = 100
}
}
}
}
spymaster_espionage_success_chance_court_type_bonus = {
value = 0
if = {
limit = {
has_dlc_feature = royal_court
scope:councillor_liege = {
has_royal_court = yes
has_dlc_feature = royal_court
has_court_type = court_intrigue
court_grandeur_current_level >= 4
}
}
add = {
value = spymaster_espionage_success_chance_base
add = spymaster_espionage_success_chance_modifier_base_scale
multiply = {
value = court_intrigue_spymaster_task_bonus
divide = 100
}
}
}
}
spymaster_espionage_success_chance_total = {
add = spymaster_espionage_success_chance_base
add = spymaster_espionage_success_chance_modifier_base_scale
add = spymaster_espionage_success_chance_legacy_bonus
add = spymaster_espionage_success_chance_family_business_bonus
add = spymaster_espionage_consulted_house_bonus
add = spymaster_espionage_success_chance_court_type_bonus
}
#########################################
########### FIND SECRET TASK ############
#########################################
spymaster_find_secrets_secret_discovery_chance = {
add = scope:councillor.intrigue
multiply = 5
max = 95
}
spymaster_find_secrets_base = 5
spymaster_find_secrets_monthly_increase = {
add = intrigue
}
spymaster_find_secrets_base_total = {
add = spymaster_find_secrets_base
add = spymaster_find_secrets_monthly_increase
}
# Relation impact
spymaster_find_secrets_monthly_increase_friend_bonus = {
value = spymaster_find_secrets_base_total
multiply = {
add = council_friend_impact_percentage
divide = 100
}
}
spymaster_find_secrets_monthly_increase_best_friend_bonus = {
value = spymaster_find_secrets_base_total
multiply = {
add = council_best_friend_impact_percentage
divide = 100
}
}
spymaster_find_secrets_monthly_increase_rival_bonus = {
value = spymaster_find_secrets_base_total
multiply = {
add = council_rival_impact_percentage
divide = 100
}
}
spymaster_find_secrets_monthly_increase_nemesis_bonus = {
value = spymaster_find_secrets_base_total
multiply = {
add = council_nemesis_impact_percentage
divide = 100
}
}
spymaster_find_secrets_perk_monthly_increase = {
add = spymaster_find_secrets_base_total
multiply = {
add = digging_for_dirt_perk_percentage
divide = 100
}
}
spymaster_find_secrets_erudition_monthly_increase = {
add = spymaster_find_secrets_base_total
multiply = {
add = erudition_legacy_5_percentage
divide = 100
}
}
spymaster_find_secrets_family_business_monthly_increase = {
add = spymaster_find_secrets_base_total
multiply = {
add = family_business_councillors_percentage
divide = 100
}
}
spymaster_find_secrets_consulted_house_monthly_increase = {
add = spymaster_find_secrets_base_total
multiply = {
add = consulted_house_councillors_percentage
divide = 100
}
}
spymaster_court_of_no_secrets_event_increase = {
add = spymaster_find_secrets_base_total
multiply = {
add = 15
divide = 100
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,436 @@

vizier_skill_rating_1 = {
add = mediocre_skill_rating
}
vizier_skill_rating_2 = {
add = medium_skill_rating
}
vizier_skill_rating_3 = {
add = decent_skill_rating
}
vizier_skill_rating_4 = {
add = very_high_skill_rating
}
inverted_vizier_skill_rating_1 = {
subtract = vizier_skill_rating_1
}
inverted_vizier_skill_rating_2 = {
subtract = vizier_skill_rating_2
}
inverted_vizier_skill_rating_3 = {
subtract = vizier_skill_rating_3
}
inverted_vizier_skill_rating_4 = {
subtract = vizier_skill_rating_4
}
vizier_default_task_diplomacy_scale = {
add = diplomacy
if = {
limit = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
}
multiply = 1.25
}
if = {
limit = {
scope:councillor = {
AND = {
exists = dynasty
dynasty = { has_dynasty_perk = fp3_khvarenah_legacy_3 }
}
}
}
multiply = 1.25
}
divide = 5
if = {
limit = {
OR = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
scope:councillor = {
AND = {
exists = dynasty
dynasty = { has_dynasty_perk = fp3_khvarenah_legacy_3 }
}
}
}
}
ceiling = yes
}
else = {
floor = yes
}
min = 1
}
vizier_default_task_martial_scale = {
add = martial
if = {
limit = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
}
multiply = 1.25
}
if = {
limit = {
scope:councillor = {
AND = {
exists = dynasty
dynasty = { has_dynasty_perk = fp3_khvarenah_legacy_3 }
}
}
}
multiply = 1.25
}
divide = 5
if = {
limit = {
OR = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
scope:councillor = {
AND = {
exists = dynasty
dynasty = { has_dynasty_perk = fp3_khvarenah_legacy_3 }
}
}
}
}
ceiling = yes
}
else = {
floor = yes
}
min = 1
}
vizier_default_task_intrigue_scale = {
add = intrigue
if = {
limit = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
}
multiply = 1.25
}
if = {
limit = {
scope:councillor = {
AND = {
exists = dynasty
dynasty = { has_dynasty_perk = fp3_khvarenah_legacy_3 }
}
}
}
multiply = 1.25
}
divide = 5
if = {
limit = {
OR = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
scope:councillor = {
AND = {
exists = dynasty
dynasty = { has_dynasty_perk = fp3_khvarenah_legacy_3 }
}
}
}
}
ceiling = yes
}
else = {
floor = yes
}
min = 1
}
vizier_default_task_learning_scale = {
add = learning
if = {
limit = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
}
multiply = 1.25
}
if = {
limit = {
scope:councillor = {
AND = {
exists = dynasty
dynasty = { has_dynasty_perk = fp3_khvarenah_legacy_3 }
}
}
}
multiply = 1.25
}
divide = 5
if = {
limit = {
OR = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
scope:councillor = {
AND = {
exists = dynasty
dynasty = { has_dynasty_perk = fp3_khvarenah_legacy_3 }
}
}
}
}
ceiling = yes
}
else = {
floor = yes
}
min = 1
}
vizier_default_task_stewardship_scale = {
add = stewardship
if = {
limit = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
}
multiply = 1.25
}
if = {
limit = {
scope:councillor = {
AND = {
exists = dynasty
dynasty = { has_dynasty_perk = fp3_khvarenah_legacy_3 }
}
}
}
multiply = 1.25
}
divide = 5
if = {
limit = {
OR = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
scope:councillor = {
AND = {
exists = dynasty
dynasty = { has_dynasty_perk = fp3_khvarenah_legacy_3 }
}
}
}
}
ceiling = yes
}
else = {
floor = yes
}
min = 1
}
vizier_task_court_politics_scale = {
add = diplomacy
if = {
limit = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
}
multiply = 1.25
}
if = {
limit = {
scope:councillor = {
AND = {
exists = dynasty
dynasty = { has_dynasty_perk = fp3_khvarenah_legacy_3 }
}
}
}
multiply = 1.25
}
divide = 2
if = {
limit = {
OR = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
scope:councillor = {
AND = {
exists = dynasty
dynasty = { has_dynasty_perk = fp3_khvarenah_legacy_3 }
}
}
}
}
ceiling = yes
}
else = {
floor = yes
}
min = 1
}
vizier_task_chivalry_scale = {
add = martial
if = {
limit = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
}
multiply = 1.25
}
if = {
limit = {
scope:councillor = {
AND = {
exists = dynasty
dynasty = { has_dynasty_perk = fp3_khvarenah_legacy_3 }
}
}
}
multiply = 1.25
}
divide = 2
if = {
limit = {
OR = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
scope:councillor = {
AND = {
exists = dynasty
dynasty = { has_dynasty_perk = fp3_khvarenah_legacy_3 }
}
}
}
}
ceiling = yes
}
else = {
floor = yes
}
min = 1
}
vizier_task_court_intrigue_scale = {
add = intrigue
if = {
limit = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
}
multiply = 1.25
}
if = {
limit = {
scope:councillor = {
AND = {
exists = dynasty
dynasty = { has_dynasty_perk = fp3_khvarenah_legacy_3 }
}
}
}
multiply = 1.25
}
divide = 2
if = {
limit = {
OR = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
scope:councillor = {
AND = {
exists = dynasty
dynasty = { has_dynasty_perk = fp3_khvarenah_legacy_3 }
}
}
}
}
ceiling = yes
}
else = {
floor = yes
}
min = 1
}
vizier_task_manage_domain_scale = {
add = stewardship
if = {
limit = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
}
multiply = 1.25
}
if = {
limit = {
scope:councillor = {
AND = {
exists = dynasty
dynasty = { has_dynasty_perk = fp3_khvarenah_legacy_3 }
}
}
}
multiply = 1.25
}
divide = 2
if = {
limit = {
OR = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
scope:councillor = {
AND = {
exists = dynasty
dynasty = { has_dynasty_perk = fp3_khvarenah_legacy_3 }
}
}
}
}
ceiling = yes
}
else = {
floor = yes
}
min = 1
}
vizier_task_patronage_scale = {
add = learning
if = {
limit = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
}
multiply = 1.25
}
if = {
limit = {
scope:councillor = {
AND = {
exists = dynasty
dynasty = { has_dynasty_perk = fp3_khvarenah_legacy_3 }
}
}
}
multiply = 1.25
}
divide = 2
if = {
limit = {
OR = {
scope:councillor_liege = { has_perk = loyalty_and_respect_perk }
scope:councillor = {
AND = {
exists = dynasty
dynasty = { has_dynasty_perk = fp3_khvarenah_legacy_3 }
}
}
}
}
ceiling = yes
}
else = {
floor = yes
}
min = 1
}
#vizier rank up values
councillor_vizier_lifestyle_rank_up_threshold = 4 #Number of half-years the character has to have been performing a task in order to rank up in the relevant skill
councillor_vizier_lifestyle_progress_factor = 0.75 #The factor by which the chance of ranking up each month is multiplied. At 1, one point of progress and one point of skill increase the chance (every six months) by 1%
councillor_vizier_lifestyle_progress_increase = 1 #How much progress is added every time

View file

@ -0,0 +1,122 @@
Script values are simple or complex values that can be referenced virtually anywhere in script that takes a number (and in some cases true/false values).
They come in two main variants; simple static values, and formulas.
== Static values ==
Static values are defined like this:
name_of_scripted_value = value (E.G., "minor_stress_gain = 10")
They're referenced in script by their name:
add_stress = minor_stress_gain
== Formulas ==
For more complex values, it is possible to define mathematical formulas. These allow you to use everything available in the scope you're currently in.
Be careful with these, as they have to be calculated every single time they're evaluated. Complex formulas can be performance intensive.
Formulas do not work for true/false values.
A formula is declared using curly brackets, and follow this format:
name_of_scripted_value = {
# Mathematical operations
add = number/scripted value/scope.something
subtract = ...
multiply = ...
divide = ... # Be careful not to divide by 0
modulo = ...
value = ... # Sets the value to this number
max = ... # Sets the value to this number if it is currently higher. E.G., "max = 10" would cause the number 15 to become 10
min = ... # Sets the value to this number if it is currently lower
round = yes # Rounds to nearest whole number
ceiling = yes # Rounds up (towards positive infinity)
floor = yes # Rounds down (towards negative infinity)
if = { # These operations are executed if the limit is met. You can also put "if" inside an "if"
limit = { some conditions }
add = 5
divide = ...
...
}
else_if = { # If the "if" above is not met, these operations are executed, as long as the limit is met. You can put several "else_if" in a row
limit = { some conditions }
operations...
}
else = { # If the "if" or "else_if" above is not met, these operations are executed
operations...
}
fixed_range = { # Gives a random fixed-point number in the range (E.G., 1.242)
min = ... script value
max = ...
}
integer_range = { # Gives a random fixed-point number in the range (E.G., 1)
min = ...
max = ...
}
}
=== Execution order ===
Operations are executed in the order defined.
Example:
value = {
add = 5
multiply = 4
max = 10
add = 5
}
Would result in "15", since "max = 10" would be applied before the last "add = 5"
=== Inlining ===
Formulas can be written inline wherever scripted values work. So if a formula is only to be used once, there's no need to name it and have it in the scriptvalues folder.
Example:
add_gold = {
value = gold
multiply = { # Yes, you can even inline them in the mathematical operators
value = 1
multiply = 0.5
}
}
=== Chaining ===
You can reference named script formulas using scope chaining. For example, if you were to define this formula:
example_age = {
value = age
}
Then the following would work:
add_gold = {
value = mother.example_age
}
== Ranges ==
Script values can also define ranges.
E.G., add_gold = { 1 5 } will add 1 to 5 gold.
add_gold = { named_value another_named_value } will resolve the named values (including formulas).
Note that you can't inline formulas within a range. E.G., you cannot do add_gold = { { value = 1 add = 2 } some_named_value }. If you need that, use integer_range or fixed_range from the script math system.
== Lists ==
Script values support lists.
E.G., add_gold = { every_child = { add = 1 } } will add as much gold as you have children.
All lists should work, including those defined in script.
Ordered lists also work. E.G.,
add_gold = {
ordered_child = {
order_by = age
max = 3
add = age
}
}
== Scoping ==
You can change scope within script values just as you can in regular script.
Example:
add_gold = {
father = {
any_child = { add = 1 }
}
}
This would add as much gold as your father has children.

Some files were not shown because too many files have changed in this diff Show more