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