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

@ -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
}