namespace = hold_court # Differences in namespace range down to the ongoing CD civil war between whether a range starts at 0 or 1. ## It starts at 001 and goes to 000, damn it, and anyone who says otherwise is a knave and a cur. ################################################## # # RANGES # 0001 - 0100 Setup, Example, & Misc # 1001 - 2000 Shoes # 2001 - 2999 Ewan # 3000 - 4000 Bianca # 4001 - 5000 Isabella # 5001 - 5999 Linnea # 6000 - 6999 Claudia # 7000 - 8000 George # 8001 - 8999 Joe # 9000 - 9999 Oltner # ################################################## ################################################## # Setup, Example, & Misc ################################################## # 0001 - 0010 Example Event # 0011 - 0010 Activity Start # 0021 - 0020 Activity End ################################################## ################################################## # Example Event # by Ewan Cowhig Croft # 0001 - 0010 ################################################## # Example hold court event for studying. hold_court.0001 = { # Court-type events only appear in the Royal Court view, and, for the Hold Court activity, are mandatory. type = court_event # Desc and theming rules are as normal, but since there's no background, there's no need for background overrides. title = hold_court.0001.t desc = hold_court.0001.desc theme = court # Main portraits are unnecessary: we define this stuff via the court_scene block instead. # Secondary portraits may be used as usual. lower_left_portrait = scope:character_c # Hold Court events should be fired from their specific on_action (hold_court_event_selection), but since this is an example, it's left orphaned. orphan = yes # Here, we define how the event appears inside the court view. ## This block exists in the root scope, so you can just define anyone you'd normally have access to/set up in the immediate block here. court_scene = { # Define which character will have the button for starting the event appear over the top of 'em. button_position_character = scope:character_a # Forcibly open the event next. court_event_force_open = yes show_timeout_info = no should_pause_time = yes # Roles defined in \ck3\game\gfx\court_scene\character_roles\, if you want to change them or add new ones. roles = { # First, we take each scoped relevant scoped character. scope:character_a = { # Then we define their role, where they're positioned in the scene. group = petitioners_group # Next, we select their animation override (if applicable: you can leave it to the generic default/role default if defined, though generally you'll want to define this). animation = anger } scope:character_b = { group = petitioners_group animation = rage } # Characters who are not physically present are referred to only via copy links or lower portraits, so we don't bother putting them here. } } # Add the widget to show which court event we're currently at in the chain. widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } weight_multiplier = { base = 1 # Court weightings: plug in a court type that should see this event more often. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic } } immediate = { # As with portraits, we do our general character setup stuff in this event. random_courtier_or_guest = { save_scope_as = character_a } random_courtier_or_guest = { limit = { this != scope:character_a } save_scope_as = character_b } } # Court events, as with all events, require at least one option to display. option = { name = hold_court.0001.a } } ################################################## # Activity Start # by Sean Hughes & Ewan Cowhig Croft # 0011 - 0010 ################################################## # Played at the start of the activity as an intro. hold_court.0011 = { type = court_event title = hold_court.0001.t desc = hold_court.0001.desc theme = realm override_sound = { reference = "event:/SFX/Events/Themes/sfx_event_theme_type_duty" } court_scene = { button_position_character = root court_event_force_open = yes show_timeout_info = no should_pause_time = yes # roles = { # root = { # role = ruler # animation = throne_room_ruler # } # } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } immediate = { # Play the appropriate music cue. if = { limit = { culture = { has_graphical_mena_culture_group_trigger = yes } } play_music_cue = "middleeasterncourt_cue" } else_if = { limit = { culture = { has_graphical_mediterranean_culture_group_trigger = yes } } play_music_cue = "mediterraneancourt_cue" } else_if = { limit = { culture = { has_graphical_india_culture_group_trigger = yes } } play_music_cue = "indiancourt_cue" } else_if = { limit = { culture = { has_graphical_east_asia_culture_group_trigger = yes } } play_music_cue = "mx_cue_tgp_asian_tournament" } ## If we can't find a more specific cue track, default to something more neutral. else = { play_music_cue = "europeancourt_cue" } # Set variable so we know if a player is holding court if = { limit = { has_multiple_players = no } add_character_flag = { flag = holding_court_character_flag days = 5 } } else = { add_character_flag = { flag = holding_court_character_flag years = 1 } } # Tracking for how many petitioners have come through. set_variable = { name = num_petitioners value = initial_petitioners_value } # Start a counting variable for widget progress. set_variable = { name = petitioner_current_progress value = 0 } # Widget setup. ## Set the total length of the chain. save_scope_value_as = { name = event_chain_length value = petitioner_total_chain_length_value } ## Manually set the current widget length. ### Due to code-side shenanigans, we do this a bit awkwardly. save_scope_value_as = { name = event_chain_progress value = 1 } } option = { name = hold_court.0001.a custom_tooltip = hold_court_start_activity # Set up the general flow. hold_court_queue_next_event_effect = yes } option = { name = hold_court.0001.b remove_variable = num_petitioners remove_variable = petitioner_current_progress remove_character_flag = holding_court_character_flag ai_chance = { base = 0 } } } ################################################## # Activity End # by Sean Hughes & Ewan Cowhig Croft # 0021 - 0030 ################################################## # Played at the end of the activity to clean it up. hold_court.0021 = { type = court_event title = hold_court.0021.t desc = hold_court.0021.desc theme = realm override_sound = { reference = event:/SFX/Events/Themes/sfx_event_theme_type_generic } court_scene = { button_position_character = root court_event_force_open = yes show_timeout_info = no should_pause_time = yes # roles = { # root = { # role = ruler # animation = throne_room_ruler # } # } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } immediate = { # Clean up the ol' variable. remove_variable = petitioner_current_progress remove_character_flag = holding_court_character_flag # Update the widget one last time. save_scope_value_as = { name = event_chain_progress value = petitioner_total_chain_length_value } root = { apply_hold_court_grace_effect = yes } } option = { name = hold_court.0021.a # Guaranteed small grandeur reward, in addition to any from events change_current_court_grandeur = minor_court_grandeur_gain # LEGITIMACY GAIN FROM HOLDING COURT if = { limit = { has_legitimacy = yes } add_legitimacy = minor_legitimacy_gain } } } ################################################## # Shoes ################################################## # 1001 - 1010 Indirect Espionage # 1011 - 1020 A Call to War # 1021 - 1030 Dust to Dust # 1031 - 1040 A Traitor Uncovered # 1041 - 1050 God's Own Lands ################################################## ################################################## # Indirect Espionage # by Sean Hughes # 1001 - 1010 ################################################## # Guest arrives in your court, offers to spill rumors in exchange for money. hold_court.1001 = { type = court_event title = hold_court.1001.t desc = hold_court.1001.desc theme = realm override_sound = { reference = event:/SFX/Events/Themes/sfx_event_theme_type_generic } lower_right_portrait = scope:neighboring_ruler court_scene = { button_position_character = scope:rumormonger court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:rumormonger = { group = petitioners_group animation = personality_greedy } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } trigger = { NOT = { has_character_flag = had_event_hold_court_1001 } any_pool_guest = { save_temporary_scope_as = rumor_person is_available_adult = yes any_known_secret = { NOR = { is_known_by = root secret_target ?= scope:rumor_person } secret_target ?= { top_liege ?= { is_landed = yes } top_liege != root.top_liege } } has_court_event_flag = no } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_intrigue } } immediate = { add_character_flag = { flag = had_event_hold_court_1001 years = 10 } random_pool_guest = { limit = { save_temporary_scope_as = rumor_person is_available_adult = yes any_known_secret = { NOR = { is_known_by = root secret_target ?= scope:rumor_person } secret_target ?= { top_liege ?= { is_landed = yes } top_liege != root.top_liege } } has_court_event_flag = no } save_scope_as = rumormonger court_event_character_flag_effect = yes random_known_secret = { limit = { NOR = { is_known_by = root secret_target ?= scope:rumor_person } secret_target ?= { top_liege ?= { is_landed = yes } top_liege != root.top_liege } } secret_target.top_liege = { save_scope_as = neighboring_ruler court_event_character_flag_effect = yes primary_title = { save_scope_as = neighboring_realm } } } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { name = hold_court.1001.a trigger = { trigger_if = { limit = { is_ai = yes } short_term_gold >= major_gold_value } } pay_short_term_gold = { target = scope:rumormonger gold = tiny_gold_value } custom_tooltip = hold_court.1001.a.success.tt hidden_effect = { scope:rumormonger = { every_known_secret = { limit = { NOR = { is_known_by = root secret_target ?= scope:rumor_person } secret_target = { top_liege ?= { is_landed = yes } top_liege != root.top_liege } } reveal_to = root } } } } option = { name = hold_court.1001.a.seducer trigger = { has_trait = seducer might_cheat_on_every_partner_trigger = yes scope:rumormonger = { is_attracted_to_gender_of = root might_cheat_on_every_partner_trigger = yes } } trait = seducer had_sex_with_effect = { CHARACTER = scope:rumormonger PREGNANCY_CHANCE = pregnancy_chance } custom_tooltip = hold_court.1001.a.success.tt hidden_effect = { scope:rumormonger = { every_known_secret = { limit = { NOR = { is_known_by = root secret_target ?= scope:rumor_person } secret_target = { top_liege ?= { is_landed = yes } top_liege != root.top_liege } } reveal_to = root } } } } option = { name = hold_court.1001.b add_dread = minor_dread_gain imprison_character_effect = { TARGET = scope:rumormonger IMPRISONER = root } } option = { name = hold_court.1001.c change_current_court_grandeur = medium_court_grandeur_gain custom_tooltip = hold_court_1001_pool_tt hidden_effect = { scope:rumormonger = { move_to_pool = yes } } } after = { scope:rumormonger = { clear_court_event_participation = yes } scope:neighboring_ruler = { clear_court_event_participation = yes } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # A Call to War # by Sean Hughes # 1011 - 1020 ################################################## scripted_trigger hold_court_1011_valid_neighbour_trigger = { tier < root.primary_title.tier any_claimant = { hold_court_1011_valid_neighbour_claimant_trigger = yes } } scripted_trigger hold_court_1011_valid_neighbour_claimant_trigger = { is_ruler = no is_adult = yes basic_is_available_ai = yes has_court_event_flag = no NOT = { is_courtier_of = root } } # Claimant asks for your help in pushing their claim RIGHT NOW!!! hold_court.1011 = { type = court_event title = hold_court.1011.t desc = hold_court.1011.desc theme = realm override_sound = { reference = event:/SFX/Events/Themes/sfx_event_theme_type_generic } lower_right_portrait = scope:target_character court_scene = { button_position_character = scope:claimant_guest court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:claimant_guest = { group = petitioners_group animation = personality_bold } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 10 } trigger = { any_neighboring_and_across_water_top_liege_realm = { hold_court_1011_valid_neighbour_trigger = yes } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike} } immediate = { random_neighboring_and_across_water_top_liege_realm = { limit = { hold_court_1011_valid_neighbour_trigger = yes } random_claimant = { limit = { hold_court_1011_valid_neighbour_claimant_trigger = yes } save_scope_as = claimant_guest court_event_character_flag_effect = yes } save_scope_as = target_title holder = { save_scope_as = target_character } } hidden_effect = { add_visiting_courtier = scope:claimant_guest scope:claimant_guest = { save_scope_as = courtier } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { name = hold_court.1011.a add_courtier = scope:claimant_guest add_hook = { type = loyalty_hook target = scope:claimant_guest } reverse_add_opinion = { target = scope:target_character modifier = insult_opinion opinion = -25 } show_as_tooltip = { random_list = { desc = courtier_guest_management.0102.a.rl.desc 1 = { show_chance = no desc = courtier_guest_management.0102.a.stay custom_tooltip = courtier_guest_management.0102.a.stay.tt } 1 = { show_chance = no desc = courtier_guest_management.0102.a.leave scope:claimant_guest = { select_and_move_to_pool_effect = yes } } } } hidden_effect = { scope:claimant_guest = { add_character_flag = { flag = courtier_staying_for_claim years = 1 } trigger_event = { id = courtier_guest_management.0103 years = 1 } } } } option = { name = hold_court.1011.b remove_courtier_or_guest = scope:claimant_guest scope:claimant_guest = { add_opinion = { modifier = refusal_opinion target = root opinion = -20 } } scope:target_character = { add_opinion = { modifier = pleased_opinion target = root opinion = 20 } } } option = { name = hold_court.1011.c show_as_tooltip = { add_visiting_courtier = scope:claimant_guest } scope:claimant_guest = { add_opinion = { modifier = kindness_opinion target = root opinion = 10 } } } after = { scope:claimant_guest = { clear_court_event_participation = yes } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # Dust to Dust # by Sean Hughes # 1021 - 1030 ################################################## # Dust to Dust: A peasant asks for financial relief hold_court.1021 = { type = court_event title = hold_court.1021.t desc = hold_court.1021.desc theme = realm override_sound = { reference = event:/SFX/Events/Themes/sfx_event_theme_type_generic } court_scene = { button_position_character = scope:peasant court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:peasant = { group = petitioners_group animation = beg } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } # Portrait left in in order to apply outfit tags. left_portrait = { character = scope:peasant outfit_tags = { beggar_rags } hide_info = yes } trigger = { NOT = { has_character_flag = had_event_hold_court_2001 } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative } } immediate = { add_character_flag = { flag = had_event_hold_court_2001 years = 10 } random_sub_realm_barony = { limit = { county = { holder = root } } save_scope_as = village county = { save_scope_as = county } } hidden_effect = { create_character = { template = servant_character dynasty = none location = root.capital_province gender_female_chance = root_soldier_female_chance save_scope_as = peasant } scope:peasant = { add_trait = peasant_leader change_current_weight = -60 } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { trigger = { stewardship >= high_skill_rating } name = hold_court.1021.a.stewardship skill = stewardship every_sub_realm_county = { custom = county_or_15_dev limit = { OR = { this = scope:county development_level <= 15 } } add_county_modifier = { modifier = hold_court_cropsharing years = 20 } } } option = { name = hold_court.1021.a trigger = { trigger_if = { limit = { is_ai = yes } short_term_treasury_or_gold >= medium_treasury_or_gold_value } } remove_treasury_or_gold = medium_treasury_or_gold_value every_sub_realm_county = { custom = county_or_15_dev limit = { OR = { this = scope:county development_level <= 15 } } add_county_modifier = { modifier = hold_court_grateful_peasants_modifier years = 10 } } change_current_court_grandeur = medium_court_grandeur_gain } option = { name = hold_court.1021.b trigger = { trigger_if = { limit = { is_ai = yes } short_term_treasury_or_gold >= medium_gold_value } } remove_treasury_or_gold = minor_treasury_or_gold_value every_sub_realm_county = { custom = county_or_15_dev limit = { OR = { this = scope:county development_level <= 15 } } add_county_modifier = { modifier = hold_court_free_labor years = 10 } } } option = { name = hold_court.1021.c every_sub_realm_county = { custom = county_or_15_dev limit = { OR = { this = scope:county development_level <= 15 } } add_county_modifier = { modifier = hold_court_ploughs_to_swords years = 10 } } } after = { scope:peasant = { silent_disappearance_effect = yes } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # Ewan # [slightly anachronistic tumbleweed imagery] ################################################## # Bianca ################################################## # 3000 - 3001 A Feast in your Name # 3010 An Unconventional Preacher # 3020 Culture Clash: Offensive Monument # 3030 War Restorations # 3040 Laughs Requested # 3050 A Noble Responsibility # 3060 Addressing the Corruption # 3070 The Child with Two Mothers # 3080 Exhibiting your collection # 3090 - 3091 Celebrating another culture ################################################## ##################################### # A Feast in your Name # # by Bianca Savazzi # # 3000 - 3001 # ##################################### scripted_trigger hold_court_3000_vassal_trigger = { basic_is_available_ai = yes is_adult = yes short_term_gold >= standard_activity_cost has_court_event_flag = no NOT = { has_hook_of_type = { target = root type = favor_hook } } trigger_if = { limit = { exists = root.var:was_promised_a_feast } root.var:was_promised_a_feast = { this != prev } } } # You're approached by a vassal that offers to pay for your next feast hold_court.3000 = { type = court_event title = hold_court.3000.t desc = { first_valid = { triggered_desc = { trigger = { has_trait = blind } desc = hold_court.3000.desc.opening.blind } triggered_desc = { desc = hold_court.3000.desc.opening } } first_valid = { triggered_desc = { trigger = { scope:feast_vassal = { opinion = { target = root value >= 10 } } } desc = hold_court.3000.desc.dislikes } triggered_desc = { desc = hold_court.3000.desc.likes } } } theme = court cooldown = { years = 5 } court_scene = { button_position_character = scope:feast_vassal court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:feast_vassal = { group = petitioners_group animation = happiness } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } weight_multiplier = { base = 1 modifier = { add = 1 has_character_flag = had_event_vassal_2101 # Event where vassal requests a feast } # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic } } trigger = { NOT = { government_has_flag = government_is_mandala } is_landed_or_landless_administrative = yes is_in_civil_war = no is_adult = yes any_vassal = { hold_court_3000_vassal_trigger = yes } } immediate = { random_vassal = { limit = { hold_court_3000_vassal_trigger = yes } save_scope_as = feast_vassal court_event_character_flag_effect = yes } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } # Option A: Accept, grant a favour option = { name = hold_court.3000.a scope:feast_vassal = { add_opinion = { modifier = ep1_accepted_sponsoring_a_feast_opinion target = root } add_hook = { target = root type = favor_hook } pay_short_term_gold = { target = root gold = standard_activity_cost } } custom_tooltip = hold_court.3000.a.tt hidden_effect = { set_variable = { name = hold_court_sponsored_a_feast value = scope:feast_vassal years = 5 } } ai_chance = { base = 15 ai_value_modifier = { ai_honor = tiny_chance_impact_positive_ai_value # Honorable characters tend to agree to fair deals ai_greed = medium_chance_impact_negative_ai_value # Greedy characters don't necessarily want a "fair" deal } } } # Option B: Accept greedily option = { name = hold_court.3000.b trigger = { OR = { has_trait = greedy has_trait = arbitrary has_trait = arrogant } } stress_impact = { greedy = medium_stress_loss } scope:feast_vassal = { if = { limit = { OR = { has_trait = generous has_trait = humble } } add_opinion = { modifier = ep1_took_advantage_of_kindness_opinion target = root opinion = -10 } } else = { add_opinion = { modifier = ep1_took_advantage_of_kindness_opinion target = root } } pay_short_term_gold = { target = root gold = standard_activity_cost } } custom_tooltip = hold_court.3000.a.tt hidden_effect = { set_variable = { name = hold_court_sponsored_a_feast value = scope:feast_vassal years = 5 } } ai_chance = { base = 15 ai_value_modifier = { ai_honor = medium_chance_impact_negative_ai_value # Honorable characters tend to agree to fair deals ai_greed = medium_chance_impact_positive_ai_value # Greedy characters don't necessarily want a "fair" deal } } } # Option C: Persuade them to change the deal option = { name = hold_court.3000.c trigger = { OR = { has_lifestyle = diplomacy_lifestyle diplomacy >= high_skill_rating has_education_diplomacy_trigger = yes } } duel = { skill = diplomacy value = 10 30 = { desc = hold_court.3000.c.success compare_modifier = { value = scope:duel_value multiplier = 0.5 } hidden_effect = { set_variable = { name = hold_court_sponsored_a_feast value = scope:feast_vassal years = 5 } } send_interface_toast = { title = hold_court.3000.t left_icon = scope:feast_vassal custom_tooltip = hold_court.3000.c.success } } 10 = { desc = hold_court.3000.c.failure scope:feast_vassal = { add_opinion = { modifier = ep1_rejected_sponsoring_a_feast_opinion target = root } } send_interface_toast = { title = hold_court.3000.t left_icon = scope:feast_vassal custom_tooltip = hold_court.3000.c.failure } } } ai_chance = { base = 15 modifier = { OR = { has_lifestyle = diplomacy_lifestyle diplomacy >= high_skill_rating has_education_diplomacy_trigger = yes } add = 40 } ai_value_modifier = { ai_honor = medium_chance_impact_positive_ai_value # Honorable characters tend to agree to fair deals ai_greed = medium_chance_impact_positive_ai_value # Greedy characters don't necessarily want a "fair" deal } } } # Option D: Reject option = { name = hold_court.3000.d scope:feast_vassal = { add_opinion = { modifier = ep1_rejected_sponsoring_a_feast_opinion target = root } } ai_chance = { base = 15 modifier = { OR = { has_trait = reclusive has_trait = shy } add = 40 } modifier = { gold < -100 #AI should want to take the loan if out of money add = -100 } } } after = { add_character_flag = { flag = hold_court_3000_a_feast_in_your_name years = 5 } scope:feast_vassal = { clear_court_event_participation = yes } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } # Follow-up event Gain some GSV hold_court.3001 = { type = character_event title = hold_court.3000.t desc = { first_valid = { triggered_desc = { trigger = { scope:feast_vassal = { is_alive = yes } } desc = hold_court.3001.desc } triggered_desc = { desc = hold_court.3001.desc.dead } } } theme = court left_portrait = { character = root animation = happiness } right_portrait = { character = scope:feast_vassal animation = happiness } trigger = { has_character_flag = hold_court_3000_a_feast_in_your_name has_variable = hold_court_sponsored_a_feast } immediate = { var:hold_court_sponsored_a_feast = { save_scope_as = feast_vassal } remove_variable = hold_court_sponsored_a_feast } # Option A: Celebrate your success! option = { name = hold_court.3001.a trigger = { scope:feast_vassal = { is_alive = yes } } ai_chance = { base = 1 } } # Option B: Celebrate your success, even if the vassal is dead! option = { name = hold_court.3001.b trigger = { scope:feast_vassal = { is_alive = no } } ai_chance = { base = 1 } } after = { change_current_court_grandeur = medium_court_grandeur_gain } } ##################################### # An Unconventional Preacher # # by Bianca Savazzi # # 3010 # ##################################### scripted_trigger court_3010_an_unconventional_preacher_vassal_trigger = { faith = root.faith is_available_healthy_ai_adult = yes has_court_event_flag = no save_temporary_scope_as = unconventional_preacher_temp } # Vassal requests investigation of an unorthodox preacher. Another pleas for more tolerance or even a change in doctrines. hold_court.3010 = { type = court_event title = hold_court.3010.t desc = { desc = hold_court.3010.desc.opening first_valid = { triggered_desc = { trigger = { faith = { OR = { has_doctrine = doctrine_clerical_gender_male_only has_doctrine = doctrine_clerical_gender_female_only } } } desc = hold_court.3010.desc.preacher_gender } } desc = hold_court.3010.desc.closing } theme = court lower_center_portrait = scope:unconventional_preacher cooldown = { years = 5 } court_scene = { button_position_character = scope:religious_vassal court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:religious_vassal = { group = petitioners_group animation = personality_zealous } scope:tolerant_vassal = { group = petitioners_group animation = personality_forgiving } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } trigger = { any_vassal = { court_3010_an_unconventional_preacher_vassal_trigger = yes count >= 2 } faith = { # Faith requires some restriction on who can practise it for the event to make sense NOT = { has_doctrine = doctrine_clerical_gender_either } } OR = { can_appoint_char_to_court_position = { CHAR = scope:unconventional_preacher_temp COURT_POS = high_almoner_court_position } can_appoint_char_to_court_position = { CHAR = scope:unconventional_preacher_temp COURT_POS = court_artificer_court_position } can_appoint_char_to_court_position = { CHAR = scope:unconventional_preacher_temp COURT_POS = court_physician_court_position } can_appoint_char_to_court_position = { CHAR = scope:unconventional_preacher_temp COURT_POS = chief_qadi_court_position } can_appoint_char_to_court_position = { CHAR = scope:unconventional_preacher_temp COURT_POS = court_tutor_court_position } } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly } ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic } } immediate = { if = { limit = { faith = { has_doctrine_parameter = clergy_must_be_male } } create_character = { template = virtuous_priest_character_template location = root.capital_province gender = female dynasty = none save_scope_as = unconventional_preacher } } else_if = { limit = { faith = { has_doctrine_parameter = clergy_must_be_female } } create_character = { template = virtuous_priest_character_template location = root.capital_province gender = male dynasty = none save_scope_as = unconventional_preacher } } else = { create_character = { template = virtuous_priest_character_template location = root.capital_province gender_female_chance = 50 dynasty = none save_scope_as = unconventional_preacher } } hidden_effect = { # We add them to court so that they can become high almoner, but hide that from the tooltip add_courtier = scope:unconventional_preacher } random_vassal = { limit = { court_3010_an_unconventional_preacher_vassal_trigger = yes } weight = { base = 1 modifier = { add = 10 has_trait = zealous } modifier = { add = 5 OR = { has_trait = stubborn has_trait = diligent has_trait = impatient } } modifier = { add = -3 OR = { has_trait = forgiving has_trait = compassionate } } modifier = { add = -5 OR = { has_trait = cynical any_secret = { type = secret_non_believer } } } modifier = { add = 2 has_council_position = councillor_court_chaplain #Slight pivot towards picking } } save_scope_as = religious_vassal court_event_character_flag_effect = yes } random_vassal = { limit = { this != scope:religious_vassal court_3010_an_unconventional_preacher_vassal_trigger = yes } weight = { base = 1 modifier = { add = -10 has_trait = zealous } modifier = { add = 5 OR = { has_trait = forgiving has_trait = compassionate } } modifier = { add = 5 OR = { has_trait = cynical any_secret = { type = secret_non_believer } } } modifier = { add = 2 has_council_position = councillor_court_chaplain } } save_scope_as = tolerant_vassal court_event_character_flag_effect = yes } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } # Option A: Leave the preacher alone option = { trigger = { OR = { can_appoint_char_to_court_position = { CHAR = scope:unconventional_preacher COURT_POS = court_artificer_court_position } can_appoint_char_to_court_position = { CHAR = scope:unconventional_preacher COURT_POS = court_physician_court_position } can_appoint_char_to_court_position = { CHAR = scope:unconventional_preacher COURT_POS = chief_qadi_court_position } } } name = hold_court.3010.a reverse_add_opinion = { target = scope:religious_vassal modifier = impious_opinion opinion = -10 } if = { limit = { can_appoint_char_to_court_position = { CHAR = scope:unconventional_preacher COURT_POS = chief_qadi_court_position } } employ_character_as_position_in_current_scope_court_effect = { CHARACTER = scope:unconventional_preacher POSITION = chief_qadi } } else_if = { limit = { can_appoint_char_to_court_position = { CHAR = scope:unconventional_preacher COURT_POS = court_artificer_court_position } } employ_character_as_position_in_current_scope_court_effect = { CHARACTER = scope:unconventional_preacher POSITION = court_artificer } } else_if = { limit = { can_appoint_char_to_court_position = { CHAR = scope:unconventional_preacher COURT_POS = court_physician_court_position } } employ_character_as_position_in_current_scope_court_effect = { CHARACTER = scope:unconventional_preacher POSITION = court_physician } } ai_chance = { base = 15 modifier = { gold < tiny_gold_value # AI won't hire positions if they don't have money add = -15 } ai_value_modifier = { ai_zeal = medium_chance_impact_negative_ai_value # Zealous characters don't like unconventional preachers } } } # Option C: Appoint them as your almoner option = { trigger = { can_appoint_char_to_court_position = { CHAR = scope:unconventional_preacher COURT_POS = high_almoner_court_position } } name = hold_court.3010.c reverse_add_opinion = { target = scope:religious_vassal modifier = impious_opinion opinion = -10 } employ_character_as_position_in_current_scope_court_effect = { CHARACTER = scope:unconventional_preacher POSITION = high_almoner } ai_chance = { base = 15 modifier = { gold < tiny_gold_value # AI won't hire positions if they don't have money add = -15 } ai_value_modifier = { ai_zeal = medium_chance_impact_negative_ai_value # Zealous characters don't like unconventional preachers } } } # Option D: Invite the preacher to serve as court tutor option = { trigger = { can_appoint_char_to_court_position = { CHAR = scope:unconventional_preacher COURT_POS = court_tutor_court_position } } name = hold_court.3010.d reverse_add_opinion = { target = scope:religious_vassal modifier = impious_opinion opinion = -10 } employ_character_as_position_in_current_scope_court_effect = { CHARACTER = scope:unconventional_preacher POSITION = court_tutor } ai_chance = { base = 15 modifier = { gold < tiny_gold_value # AI won't hire positions if they don't have money add = -15 } ai_value_modifier = { ai_zeal = medium_chance_impact_negative_ai_value # Zealous characters don't like unconventional preachers } } } # Option B: Punish the preacher option = { name = hold_court.3010.b scope:unconventional_preacher = { silent_disappearance_effect = yes } ai_chance = { base = 15 ai_value_modifier = { ai_zeal = medium_chance_impact_positive_ai_value # Zealous characters don't like unconventional preachers ai_compassion = medium_chance_impact_negative_ai_value # Compassionate characters rather not punish those who do good } } } after = { scope:tolerant_vassal = { clear_court_event_participation = yes } scope:religious_vassal = { clear_court_event_participation = yes } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ##################################### # Culture Clash: Offensive Monument # # by Bianca Savazzi # # 3020 # ##################################### scripted_trigger hold_court_3020_peasant_trigger = { basic_is_available_ai = yes is_adult = yes is_lowborn = yes has_court_event_flag = no #culture is left out for reusability } scripted_trigger hold_court_3020_valid_barony = { tier = tier_barony holder ?= { this != root culture = root.culture has_court_event_flag = no } } # Peasants of another culture want to restore a controversial monument that mocks yours hold_court.3020 = { type = court_event title = hold_court.3020.t desc = hold_court.3020.desc theme = court cooldown = { years = 5 } court_scene = { button_position_character = scope:holder_of_area court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:holder_of_area = { group = petitioners_group animation = shock } scope:different_culture_peasant = { group = petitioners_group animation = anger } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } trigger = { any_held_title = { title_tier = county any_in_de_jure_hierarchy = { hold_court_3020_valid_barony = yes } culture != root.culture } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic } ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative } } immediate = { random_held_title = { title_tier = county limit = { any_in_de_jure_hierarchy = { hold_court_3020_valid_barony = yes } culture != root.culture } random_in_de_jure_hierarchy = { limit = { hold_court_3020_valid_barony = yes } save_scope_as = village holder = { save_scope_as = holder_of_area court_event_character_flag_effect = yes } county = { save_scope_as = village_county } } } # Try to fetch an existing character if = { limit = { any_pool_guest = { hold_court_3020_peasant_trigger = yes culture = scope:village.culture } } random_pool_guest = { limit = { hold_court_3020_peasant_trigger = yes culture = scope:village.culture } add_trait = peasant_leader save_scope_as = different_culture_peasant court_event_character_flag_effect = yes } } else = { # else, make one for the event create_character = { template = servant_character location = scope:village.title_province culture = scope:village.title_province.culture dynasty = none trait = peasant_leader save_scope_as = different_culture_peasant } add_character_flag = created_character_hold_court_3020 court_event_character_flag_effect = yes } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } # Option C: Build something marrying the two cultures option = { name = hold_court.3020.c trigger = { has_trait = eccentric } remove_treasury_or_gold = medium_treasury_or_gold_value every_held_title = { title_tier = county limit = { culture = scope:village.culture } custom = every_county_of_culture add_county_modifier = { modifier = 3020_multicultural_monument years = 15 } } scope:village.culture = { change_cultural_acceptance = { target = root.culture value = medium_positive_culture_acceptance desc = cultural_acceptance_gain_hold_court_event_outcome } } ai_chance = { base = 15 ai_value_modifier = { ai_greed = medium_chance_impact_negative_ai_value # SPeNd rEsouRcEs!? ai_compassion = high_chance_impact_positive_ai_value # Compassionate characters don't like punishing others } modifier = { factor = 0 short_term_treasury_or_gold < medium_treasury_or_gold_value } } } # Option A: Destroy the statue and build one for YOUR culture! option = { name = hold_court.3020.a add_dread = minor_dread_gain every_held_title = { title_tier = county limit = { culture = scope:village.culture } custom = every_county_of_culture add_county_modifier = { modifier = 3020_own_culture_monument years = 15 } } ai_chance = { base = 15 ai_value_modifier = { ai_vengefulness = medium_chance_impact_positive_ai_value # Vengeful characters don't like being mocked ai_compassion = medium_chance_impact_negative_ai_value # Compassionate characters don't like punishing others } } } # Option B: Accept option = { name = hold_court.3020.b remove_treasury_or_gold = minor_treasury_or_gold_value every_held_title = { title_tier = county limit = { culture = scope:village.culture } custom = every_county_of_culture add_county_modifier = { modifier = hold_court_grateful_peasants_modifier years = 15 } } scope:village.culture = { change_cultural_acceptance = { target = root.culture value = low_positive_culture_acceptance desc = cultural_acceptance_gain_hold_court_event_outcome } } ai_chance = { base = 15 ai_value_modifier = { ai_greed = medium_chance_impact_negative_ai_value # SPend resources!? ai_compassion = medium_chance_impact_positive_ai_value # Compassionate characters don't like punishing others } modifier = { factor = 0 short_term_treasury_or_gold < minor_treasury_or_gold_value } } } after = { if = { limit = { has_character_flag = created_character_hold_court_3020 } hidden_effect = { scope:different_culture_peasant = { clear_court_event_participation = yes death = { death_reason = death_vanished } } remove_character_flag = created_character_hold_court_3020 } } scope:holder_of_area = { clear_court_event_participation = yes } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ##################################### # War Restorations # # by Bianca Savazzi # # 3030 # ##################################### # Peasants of another culture want to restore a monument that was looted during war hold_court.3030 = { type = court_event title = hold_court.3030.t desc = hold_court.3030.desc theme = court cooldown = { years = 5 } court_scene = { button_position_character = scope:different_culture_peasant court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:different_culture_peasant = { group = petitioners_group animation = beg } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } trigger = { is_at_war = no days_of_continuous_peace < 600 any_directly_owned_province = { culture != root.culture } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic } ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative } } immediate = { random_directly_owned_province = { limit = { culture != root.culture } weight = { base = 1 modifier = { add = 10 has_free_building_slot = yes } } save_scope_as = province } # Try to fetch an existing character if = { limit = { any_pool_guest = { hold_court_3020_peasant_trigger = yes culture = scope:province.culture } } random_pool_guest = { limit = { hold_court_3020_peasant_trigger = yes culture = scope:province.culture } add_trait = peasant_leader save_scope_as = different_culture_peasant court_event_character_flag_effect = yes } } else = { # else, make one for the event create_character = { template = servant_character location = scope:province culture = scope:province.culture dynasty = none trait = peasant_leader save_scope_as = different_culture_peasant } scope:different_culture_peasant = { court_event_character_flag_effect = yes } add_character_flag = created_character_hold_court_3030 } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } # Option A: Pay to restore the building option = { name = hold_court.3030.a trigger = { trigger_if = { limit = { is_ai = yes } short_term_treasury_or_gold >= major_treasury_or_gold_value } } remove_treasury_or_gold = medium_treasury_or_gold_value stress_impact = { greedy = medium_stress_gain generous = medium_stress_loss improvident = medium_stress_loss } scope:province.culture = { change_cultural_acceptance = { target = root.culture value = low_positive_culture_acceptance desc = cultural_acceptance_gain_hold_court_event_outcome } } } # Option B: Raze monument to use the materials elsewhere option = { name = hold_court.3030.b trigger = { scope:province = { has_free_building_slot = yes } } stress_impact = { greedy = medium_stress_loss } scope:province = { add_province_modifier = { modifier = hold_court_less_building_cost_modifier days = 3650 } } scope:province.culture = { change_cultural_acceptance = { target = root.culture value = medium_negative_culture_acceptance desc = cultural_acceptance_gain_hold_court_event_outcome } } } # Option C: Refuse option = { name = hold_court.3030.c stress_impact = { generous = medium_stress_gain improvident = medium_stress_gain } scope:province = { county = { add_county_modifier = { modifier = hold_court_displeased_peasants_modifier years = 5 } } } } after = { if = { limit = { has_character_flag = created_character_hold_court_3030 } hidden_effect = { scope:different_culture_peasant = { clear_court_event_participation = yes death = { death_reason = death_vanished } } remove_character_flag = created_character_hold_court_3030 } } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ##################################### # Laughs Requested # # by Bianca Savazzi # # 3040 # ##################################### # Vassal/Courtier petitions for the recruitment of a jester hold_court.3040 = { type = court_event title = hold_court.3040.t desc = hold_court.3040.desc theme = court lower_center_portrait = scope:potential_jester cooldown = { years = 10 } court_scene = { button_position_character = scope:jester_requester court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:jester_requester = { group = petitioners_group animation = happiness } scope:kill_joy = { group = petitioners_group animation = dismissal } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } trigger = { NOT = { employs_court_position = court_jester_court_position } can_employ_court_position_type = court_jester_court_position any_vassal = { is_available_ai_adult = yes has_court_event_flag = no save_temporary_scope_as = extroverted_vassal_check } any_vassal = { is_available_ai_adult = yes has_court_event_flag = no this != scope:extroverted_vassal_check } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic } } immediate = { random_vassal = { limit = { is_available_ai_adult = yes has_court_event_flag = no } weight = { base = 1 modifier = { has_personality_extroverted_trigger = yes add = 10 } modifier = { is_of_major_or_minor_interest_trigger = { CHARACTER = root } add = 5 } } save_scope_as = jester_requester court_event_character_flag_effect = yes assign_quirk_effect = yes # So that they have a quirk in loc create_character = { template = pool_repopulate_diplomacy location = scope:jester_requester.location dynasty = none #It has to be a lowborn save_scope_as = potential_jester } } hidden_effect = { add_courtier = scope:potential_jester } # So they're considered valid for the position random_vassal = { limit = { is_available_ai_adult = yes has_court_event_flag = no this != scope:jester_requester } weight = { base = 1 modifier = { has_trait_introverted_trigger = yes add = 10 } modifier = { is_of_major_or_minor_interest_trigger = { CHARACTER = root } add = 5 } } save_scope_as = kill_joy court_event_character_flag_effect = yes } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } # Option A: Employ peasant option = { name = hold_court.3040.a trigger = { can_appoint_char_to_court_position = { CHAR = scope:potential_jester COURT_POS = court_jester_court_position } } hidden_effect = { reverse_add_opinion = { target = scope:potential_jester modifier = loyal_servant } } court_position_grant_effect = { EMPLOYER = root POS = court_jester CANDIDATE = scope:potential_jester } custom_tooltip = { text = generic_cp_discount_tt scope:potential_jester = { add_character_flag = cp_discount } } reverse_add_opinion = { target = scope:jester_requester modifier = pleased_opinion opinion = 20 } ai_chance = { base = 5 modifier = { has_trait_extroverted_trigger = yes add = 2 } modifier = { short_term_gold >= medium_gold_value add = 5 } ai_value_modifier = { ai_greed = tiny_chance_impact_negative_ai_value #Recruiting this person means less cost to find a jester } } } # Option B: Employ jester requester as jester option = { trigger = { can_appoint_char_to_court_position = { CHAR = scope:jester_requester COURT_POS = court_jester_court_position } } name = hold_court.3040.b court_position_grant_effect = { EMPLOYER = root POS = court_jester CANDIDATE = scope:jester_requester } hidden_effect = { scope:potential_jester = { death = { death_reason = death_vanished #Ripperoni } } } ai_chance = { base = 5 modifier = { opinion = { target = scope:jester_requester value <= low_positive_opinion } add = 5 } modifier = { has_trait = arbitrary add = 5 } modifier = { short_term_gold >= medium_gold_value add = 5 } } } # Option C: Employ killjoy as jester option = { name = hold_court.3040.c trigger = { can_appoint_char_to_court_position = { CHAR = scope:kill_joy COURT_POS = court_jester_court_position } } court_position_grant_effect = { EMPLOYER = root POS = court_jester CANDIDATE = scope:kill_joy } scope:kill_joy = { progress_towards_rival_effect = { CHARACTER = root REASON = rival_killjoy_jester OPINION = -20 } } reverse_add_opinion = { target = scope:jester_requester modifier = pleased_opinion opinion = 35 } hidden_effect = { scope:potential_jester = { death = { death_reason = death_vanished } } } ai_chance = { base = 5 modifier = { opinion = { target = scope:kill_joy value <= low_positive_opinion } add = 5 } modifier = { has_trait = arbitrary add = 5 } modifier = { short_term_gold >= medium_gold_value add = 5 } } } # Option E: Do nothing option = { name = hold_court.3040.e hidden_effect = { scope:potential_jester = { death = { death_reason = death_vanished } } } ai_chance = { base = 2 modifier = { has_trait_introverted_trigger = yes add = 2 } modifier = { short_term_gold < medium_gold_value add = 5 } } } after = { scope:jester_requester = { clear_court_event_participation = yes } scope:kill_joy = { clear_court_event_participation = yes } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ##################################### # Addressing the Corruption # # by Bianca Savazzi # # 3060 # ##################################### scripted_trigger hold_court_3060_county_and_holder_trigger = { county_control <= low_county_control holder = { this != root is_vassal_of = root basic_is_available_ai = yes is_adult = yes has_court_event_flag = no } } scripted_trigger hold_court_3060_replacement_candidate_trigger = { basic_is_available_ai = yes has_court_event_flag = no is_adult = yes stewardship >= mediocre_skill_rating NOT = { is_of_major_or_minor_interest_trigger = { CHARACTER = root } } can_be_steward_trigger = { COURT_OWNER = scope:county_petitioner } } scripted_effect hold_court_3060_remove_corruption = { if = { limit = { scope:corrupt_county = { has_county_modifier = county_corruption_inefficient_tax_collection_modifier } } scope:corrupt_county = { remove_county_modifier = county_corruption_inefficient_tax_collection_modifier } } if = { limit = { scope:corrupt_county = { has_county_modifier = county_corruption_deserting_levies_modifier } } scope:corrupt_county = { remove_county_modifier = county_corruption_deserting_levies_modifier } } if = { limit = { scope:corrupt_county = { has_county_modifier = county_corruption_lackluster_administration_modifier } } scope:corrupt_county = { remove_county_modifier = county_corruption_lackluster_administration_modifier } } if = { limit = { scope:corrupt_county = { has_county_modifier = county_corruption_uncooperative_guilds_modifier } } scope:corrupt_county = { remove_county_modifier = county_corruption_uncooperative_guilds_modifier } } if = { limit = { scope:corrupt_county = { has_county_modifier = county_corruption_lack_of_sheriffs_modifier } } scope:corrupt_county = { remove_county_modifier = county_corruption_lack_of_sheriffs_modifier } } if = { limit = { scope:corrupt_county = { has_county_modifier = county_corruption_lack_of_courts_modifier } } scope:corrupt_county = { remove_county_modifier = county_corruption_lack_of_courts_modifier } } if = { limit = { scope:corrupt_county = { has_county_modifier = county_corruption_bandits_rampant_modifier } } scope:corrupt_county = { remove_county_modifier = county_corruption_bandits_rampant_modifier } } if = { limit = { scope:corrupt_county = { has_county_modifier = county_corruption_unsafe_highways_modifier } } scope:corrupt_county = { remove_county_modifier = county_corruption_unsafe_highways_modifier } } if = { limit = { scope:corrupt_county = { has_county_modifier = county_corruption_smuggling_ring_modifier } } scope:corrupt_county = { remove_county_modifier = county_corruption_smuggling_ring_modifier } } if = { limit = { scope:corrupt_county = { has_county_modifier = county_corruption_thieves_guild_modifier } } scope:corrupt_county = { remove_county_modifier = county_corruption_thieves_guild_modifier } } } # Banditry is rife in a county and now a vassal is coming to you asking for help. hold_court.3060 = { type = court_event title = hold_court.3060.t desc = { desc = hold_court.3060.desc.opening first_valid = { random_valid = { triggered_desc = { trigger = { scope:corrupt_county = { OR = { has_county_modifier = county_corruption_smuggling_ring_modifier has_county_modifier = county_corruption_thieves_guild_modifier } } } desc = hold_court.3060.desc.thieves } triggered_desc = { trigger = { scope:corrupt_county = { OR = { county_control <= low_county_control has_county_modifier = county_corruption_bandits_rampant_modifier has_county_modifier = county_corruption_unsafe_highways_modifier } } } desc = hold_court.3060.desc.bandits } triggered_desc = { trigger = { scope:corrupt_county = { has_county_modifier = county_corruption_inefficient_tax_collection_modifier } } desc = hold_court.3060.desc.tax } triggered_desc = { trigger = { scope:corrupt_county = { has_county_modifier = county_corruption_lack_of_sheriffs_modifier } } desc = hold_court.3060.desc.sheriffs } triggered_desc = { trigger = { scope:corrupt_county = { has_county_modifier = county_corruption_uncooperative_guilds_modifier } } desc = hold_court.3060.desc.guilds } triggered_desc = { trigger = { scope:corrupt_county = { has_county_modifier = county_corruption_deserting_levies_modifier } } desc = hold_court.3060.desc.levies } triggered_desc = { trigger = { scope:corrupt_county = { has_county_modifier = county_corruption_lack_of_courts_modifier } } desc = hold_court.3060.desc.courts } triggered_desc = { trigger = { scope:corrupt_county = { has_county_modifier = county_corruption_inefficient_census_modifier has_county_modifier = county_corruption_lackluster_administration_modifier } } desc = hold_court.3060.desc.rulers } } } desc = hold_court.3060.desc.closing } theme = court lower_left_portrait = { trigger = { exists = scope:cp_steward exists = scope:cp_steward_replacement } character = scope:cp_steward } lower_right_portrait = { trigger = { exists = scope:cp_steward_replacement } character = scope:cp_steward_replacement } court_scene = { button_position_character = scope:county_petitioner court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:county_petitioner = { group = petitioners_group animation = personality_rational } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } trigger = { any_sub_realm_county = { hold_court_3060_county_and_holder_trigger = yes } NOT = { has_character_flag = hold_court_3060_corrupt_county } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic } ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative } } immediate = { #Cooldown flag add_character_flag = { flag = hold_court_3060_corrupt_county years = 10 } random_sub_realm_county = { limit = { hold_court_3060_county_and_holder_trigger = yes } holder = { save_scope_as = county_petitioner assign_quirk_effect = yes court_event_character_flag_effect = yes } save_scope_as = corrupt_county } # Getting random better courtier for Option D if = { limit = { scope:county_petitioner = { exists = cp:councillor_steward is_ai = yes } } scope:county_petitioner.cp:councillor_steward = { save_scope_as = cp_steward } random_courtier = { limit = { hold_court_3060_replacement_candidate_trigger = yes stewardship > scope:cp_steward.stewardship #should be better than the current one to be considered a better replacement } save_scope_as = cp_steward_replacement court_event_character_flag_effect = yes } } else = { random_courtier = { limit = { hold_court_3060_replacement_candidate_trigger = yes } save_scope_as = cp_steward_replacement court_event_character_flag_effect = yes } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } # Option A: Gold option = { name = hold_court.3060.a pay_treasury_or_gold = { target = scope:county_petitioner value = medium_treasury_or_gold_value } every_sub_realm_county = { custom = every_low_county_control limit = { county_control <= low_county_control } change_county_control = 20 } hold_court_3060_remove_corruption = yes scope:county_petitioner = { add_opinion = { modifier = grateful_opinion target = root opinion = 20 } hidden_effect = { stress_impact = { greedy = medium_stress_loss } } } ai_chance = { base = 15 modifier = { has_trait = generous add = 5 } modifier = { has_trait = greedy add = -15 } modifier = { short_term_treasury_or_gold <= medium_treasury_or_gold_value factor = 0 } } } # Option B: Offer a courtier option = { name = hold_court.3060.d trigger = { exists = scope:cp_steward_replacement } scope:county_petitioner = { add_opinion = { modifier = grateful_opinion target = root opinion = 20 } fire_councillor = scope:cp_steward assign_councillor_type = { type = councillor_steward target = scope:cp_steward_replacement } } every_sub_realm_county = { custom = every_low_county_control limit = { county_control <= low_county_control } change_county_control = 20 } hold_court_3060_remove_corruption = yes ai_chance = { base = 0 } } # Option C: Do nothing option = { name = hold_court.3060.c ai_chance = { base = 100 } } after = { # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes scope:county_petitioner = { clear_court_event_participation = yes } } } ##################################### # Exhibiting your collection # # by Bianca Savazzi # # 3080 # ##################################### # Antiquarian suggests letting people pay to see your artifacts hold_court.3080 = { type = court_event title = hold_court.3080.t desc = hold_court.3080.desc theme = court cooldown = { years = 5 } court_scene = { button_position_character = scope:antiquarian court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:antiquarian = { group = petitioners_group animation = happiness } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } trigger = { employs_court_position = antiquarian_court_position any_court_position_holder = { type = antiquarian_court_position is_physically_able_ai_adult = yes has_court_event_flag = no } any_character_artifact = { count >= 2 } } weight_multiplier = { base = 1 modifier = { add = -0.5 NOR = { gold < minor_gold_value prestige < minor_prestige_value } } # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly } } immediate = { random_court_position_holder = { type = antiquarian_court_position limit = { is_physically_able_ai_adult = yes has_court_event_flag = no } save_scope_as = antiquarian court_event_character_flag_effect = yes } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } # Option A: Charge money option = { name = hold_court.3080.a custom_tooltip = hold_court.3080.a.tt add_gold = medium_gold_value add_character_modifier = { modifier = petition_event_artifact_exhibition_for_gold years = 10 } stress_impact = { greedy = medium_stress_loss arrogant = medium_stress_loss generous = medium_stress_gain humble = medium_stress_gain } ai_chance = { base = 15 ai_value_modifier = { ai_greed = 1 } modifier = { gold < minor_gold_value add = 5 } } } # Option B: Gain Prestige option = { name = hold_court.3080.b custom_tooltip = hold_court.3080.a.tt add_prestige = medium_prestige_gain add_character_modifier = { modifier = petition_event_artifact_exhibition_for_prestige years = 10 } stress_impact = { greedy = minor_stress_gain arrogant = medium_stress_loss generous = medium_stress_gain humble = medium_stress_gain } ai_chance = { base = 15 ai_value_modifier = { ai_greed = -0.5 ai_boldness = 1 } modifier = { has_trait = ambitious add = 5 } modifier = { has_trait = arrogant add = 5 } } } # Option C: Not worth the risk option = { name = hold_court.3080.c ai_chance = { base = 15 modifier = { has_trait = lazy add = 5 } modifier = { has_trait = paranoid #They're already after me! Why would I invite an increased risk!? add = 50 } } } after = { # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes scope:antiquarian = { clear_court_event_participation = yes } } } ##################################### # Celebrating another culture # # by Bianca Savazzi # # 3090 - 3091 # ##################################### #A vassal of a minority culture suggest holding a festival/exhibit/faire of their minority Culture scripted_trigger hold_court_3090_different_culture_vassal_trigger = { culture != root.culture culture = { cultural_acceptance = { target = root.culture value < hybridization_threshold_value } } is_physically_able_ai_adult = yes has_court_event_flag = no } hold_court.3090 = { type = court_event title = hold_court.3090.t desc = hold_court.3090.desc theme = court cooldown = { years = 10 } court_scene = { button_position_character = scope:different_culture_vassal court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:different_culture_vassal = { group = petitioners_group animation = happiness } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } trigger = { any_vassal = { hold_court_3090_different_culture_vassal_trigger = yes } } immediate = { random_vassal = { limit = { hold_court_3090_different_culture_vassal_trigger = yes } save_scope_as = different_culture_vassal court_event_character_flag_effect = yes assign_quirk_effect = yes # So that they have a quirk in loc } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } #More common if you're currently Promoting Acceptance weight_multiplier = { base = 0.5 modifier = { add = 10 exists = cp:councillor_steward cp:councillor_steward = { is_performing_council_task = task_accept_culture } } modifier = { add = 0.5 short_term_gold < minor_gold_value } # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic } } # Option A: Celebrate both cultures! option = { name = hold_court.3090.a remove_treasury_or_gold = major_treasury_or_gold_value culture = { change_cultural_acceptance = { target = scope:different_culture_vassal.culture value = medium_positive_culture_acceptance desc = cultural_acceptance_gain_hold_court_event_outcome } } reverse_add_opinion = { modifier = impressed_opinion target = scope:different_culture_vassal opinion = 40 } if = { limit = { any_vassal = { is_ai = no has_court_event_flag = no scope:different_culture_vassal != this culture = scope:different_culture_vassal.culture } } every_vassal = { custom = custom.every_vassal_of_target_culture limit = { culture = scope:different_culture_vassal.culture has_court_event_flag = no is_ai = no } add_opinion = { target = root opinion = 10 modifier = respect_opinion } } } stress_impact = { greedy = major_stress_gain #SO. MUCH. SPENT. MONEY. arrogant = medium_stress_gain #Presenting oursselves as equals!? BAH! compassionate = major_stress_loss #Promoting understanding between the two, yaaaaaay! } ai_chance = { base = 15 ai_value_modifier = { ai_greed = -1 ai_boldness = 1 ai_compassion = 0.5 } modifier = { has_trait = compassionate add = 50 } modifier = { short_term_treasury_or_gold < major_treasury_or_gold_value #AI don't do it if they can't afford it factor = 0 } } } # Option B: Their culture in the capital! option = { name = hold_court.3090.b remove_treasury_or_gold = medium_treasury_or_gold_value culture = { change_cultural_acceptance = { target = scope:different_culture_vassal.culture value = low_positive_culture_acceptance desc = cultural_acceptance_gain_hold_court_event_outcome } } reverse_add_opinion = { modifier = pleased_opinion target = scope:different_culture_vassal opinion = 20 } if = { limit = { any_vassal = { scope:different_culture_vassal != this culture = scope:different_culture_vassal.culture } } every_vassal = { custom = custom.every_vassal_of_target_culture limit = { culture = scope:different_culture_vassal.culture } add_opinion = { target = root opinion = 5 modifier = respect_opinion } } } stress_impact = { greedy = medium_stress_loss arrogant = medium_stress_loss generous = medium_stress_gain humble = medium_stress_gain } ai_chance = { base = 15 ai_value_modifier = { ai_greed = -0.5 } modifier = { short_term_treasury_or_gold < medium_treasury_or_gold_value #AI don't do it if they can't afford it factor = 0 } } } # Option C: OUR culture, in their area option = { name = hold_court.3090.c remove_treasury_or_gold = minor_treasury_or_gold_value culture = { change_cultural_acceptance = { target = scope:different_culture_vassal.culture value = miniscule_positive_culture_acceptance desc = cultural_acceptance_gain_hold_court_event_outcome } } reverse_add_opinion = { modifier = disappointed_opinion target = scope:different_culture_vassal opinion = -10 } stress_impact = { arrogant = medium_stress_loss humble = medium_stress_gain } ai_chance = { base = 15 ai_value_modifier = { ai_greed = 1 ai_boldness = 1 } modifier = { short_term_treasury_or_gold < minor_treasury_or_gold_value #AI don't do it if they can't afford it factor = 0 } modifier = { has_trait = arrogant add = 5 } } } # Option D: Nah option = { name = hold_court.3090.d reverse_add_opinion = { modifier = disappointed_opinion target = scope:different_culture_vassal opinion = -30 } ai_chance = { base = 15 modifier = { has_trait = lazy add = 5 } modifier = { short_term_treasury_or_gold < minor_treasury_or_gold_value #AI won't do anything if they can't afford it factor = 2 } } } after = { # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes scope:different_culture_vassal = { clear_court_event_participation = yes } } } #Vassal wants to peacock a culture that's close to hybridizing with your culture scripted_trigger hold_court_3091_different_culture_vassal_trigger = { culture != root.culture culture = { cultural_acceptance = { target = root.culture value >= hybridization_threshold_value } } is_physically_able_ai_adult = yes has_court_event_flag = no } hold_court.3091 = { type = court_event title = hold_court.3091.t desc = hold_court.3091.desc theme = court cooldown = { years = 10 } court_scene = { button_position_character = scope:same_culture_vassal court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:same_culture_vassal = { group = petitioners_group animation = happiness } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } trigger = { any_vassal = { hold_court_3091_different_culture_vassal_trigger = yes } any_vassal = { culture = root.culture is_physically_able_ai_adult = yes has_court_event_flag = no } } immediate = { random_vassal = { limit = { hold_court_3091_different_culture_vassal_trigger = yes } save_scope_as = different_culture_vassal #Used to track the culture that's close to hybridization } random_vassal = { limit = { culture = root.culture is_physically_able_ai_adult = yes has_court_event_flag = no } weight = { base = 1 ai_value_modifier = { ai_compassion = -1 #More likely to pick a vassal with less compassion and understanding } modifier = { add = 10 has_trait = arrogant #believes they are better } modifier = { add = 10 has_trait = zealous #zealous and not tolerant faith = { NOT = { has_doctrine = doctrine_pluralism_pluralistic } } } } save_scope_as = same_culture_vassal court_event_character_flag_effect = yes } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } #More common if you're currently Promoting Culture weight_multiplier = { base = 0.5 modifier = { add = 10 exists = cp:councillor_steward cp:councillor_steward = { is_performing_council_task = task_promote_culture } } modifier = { add = 0.5 short_term_gold < minor_gold_value } # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic } } # Option A: Peacocking to the max, strut your culture struff option = { name = hold_court.3091.a add_prestige = major_prestige_gain culture = { change_cultural_acceptance = { target = scope:different_culture_vassal.culture value = low_negative_culture_acceptance desc = cultural_acceptance_gain_hold_court_event_outcome } } reverse_add_opinion = { modifier = impressed_opinion target = scope:same_culture_vassal opinion = 40 } every_vassal = { custom = custom.every_vassal_of_target_culture limit = { culture = scope:different_culture_vassal.culture } add_opinion = { target = root opinion = -10 modifier = annoyed_opinion } } stress_impact = { arrogant = major_stress_loss #Yeah, we awesome humble = major_stress_gain #I don't think we should claim to be better compassionate = major_stress_gain #but... why not understanding between us? } ai_chance = { base = 15 ai_value_modifier = { ai_greed = 1 ai_boldness = 1 ai_compassion = -0.5 } } } # Option B: Humblebrag option = { name = hold_court.3091.b add_prestige = medium_prestige_gain culture = { change_cultural_acceptance = { target = scope:different_culture_vassal.culture value = miniscule_negative_culture_acceptance desc = cultural_acceptance_gain_hold_court_event_outcome } } reverse_add_opinion = { modifier = pleased_opinion target = scope:same_culture_vassal opinion = 20 } every_vassal = { custom = custom.every_vassal_of_target_culture limit = { culture = scope:different_culture_vassal.culture } add_opinion = { target = root opinion = -5 modifier = annoyed_opinion } } stress_impact = { arrogant = medium_stress_loss generous = medium_stress_gain humble = medium_stress_gain } ai_chance = { base = 15 ai_value_modifier = { ai_greed = -0.5 } } } # Option C: Nah option = { name = hold_court.3091.c reverse_add_opinion = { modifier = disappointed_opinion target = scope:same_culture_vassal opinion = -30 } ai_chance = { base = 15 modifier = { has_trait = lazy add = 5 } } } after = { # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes scope:same_culture_vassal = { clear_court_event_participation = yes } } } ################################################## # Isabella ################################################## # 4001 Scourge - Your heir is a terrible person, vassals request new heir # 4500 Endless Poetry - Great Poet appears at court # 4600 SheHe who makes a Beast out of HerHimself... - Peasants are convinced tyrannical ruler is an actual monster # 4700 An End to Agony - Vassals discuss the state of your prisons # 4800 I Should Like a Veal Cutlet - House arrest prisoner demands fancy dinner # 4900 In Ancient Times... - Dodgy genealogist offers to trace your lineage back to mythic heroes ################################################## ################################################## # Scourge # by Isabella Welch # 4001 ################################################## # Your heir is a terrible person, vassals request new heir hold_court.4001 = { type = court_event title = hold_court.4001.t desc = { desc = hold_court.4001.desc.intro first_valid = { triggered_desc = { trigger = { has_character_flag = heir_gets_in_street_fights } desc = hold_court.4001.heir_street_fight } triggered_desc = { trigger = { has_character_flag = heir_robbed_me } desc = hold_court.4001.heir_robbery } triggered_desc = { trigger = { has_character_flag = heir_lives_in_tavern } desc = hold_court.4001.heir_tavern } triggered_desc = { trigger = { has_character_flag = heir_poor_diplomat } desc = hold_court.4001.heir_diplomacy_failure } triggered_desc = { trigger = { has_character_flag = heir_personally_hated } desc = hold_court.4001.heir_hated } } first_valid = { triggered_desc = { trigger = { has_character_flag = has_protective_spouse } desc = hold_court.4001.protective_parent } desc = hold_court.4001.accusation_default } desc = hold_court.4001.heir_admission } theme = diplomacy_family_focus lower_left_portrait = scope:protective_parent lower_right_portrait = scope:preferred_heir court_scene = { button_position_character = scope:annoyed_vassal court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:annoyed_vassal = { group = petitioners_group animation = rage } scope:annoying_heir = { group = petitioners_group animation = scheme } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } trigger = { NOT = { has_character_flag = has_had_disliked_heir_event } any_vassal = { count >= 1 has_court_event_flag = no is_ai = yes } root.primary_heir = { has_court_event_flag = no is_ai = yes age >= 13 is_player_heir_of = root is_child_of = root OR = { has_trait = arrogant has_trait = arbitrary has_trait = wrathful has_trait = sadistic has_trait = lunatic has_trait = callous has_trait = drunkard has_trait = deceitful has_trait = greedy has_trait = lazy has_trait = lustful has_trait = stubborn has_trait = rakish has_trait = fornicator has_trait = adulterer has_trait = deviant has_trait = rowdy has_trait = murderer has_trait = vengeful has_trait = torturer any_vassal = { opinion = { target = root.primary_heir value <= medium_negative_opinion } } diplomacy <= low_skill_rating } } any_child = { NOT = { is_player_heir_of = root } NOT = { has_trait = bastard } has_court_event_flag = no is_ai = yes character_gender_can_inherit_from_trigger = { CHARACTER = root } is_child_of = root } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic } ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_intrigue } } immediate = { save_scope_as = actor # for loc add_character_flag = { flag = has_had_disliked_heir_event days = 1825 } primary_heir = { save_scope_as = annoying_heir court_event_character_flag_effect = yes } random_child = { limit = { NOT = { is_player_heir_of = root } NOT = { has_trait = bastard } has_court_event_flag = no character_gender_can_inherit_from_trigger = { CHARACTER = root } is_child_of = root is_ai = yes } court_event_character_flag_effect = yes save_scope_as = preferred_heir } random_vassal = { weight = { base = 1 modifier = { has_relation_rival = scope:annoying_heir factor = 20 } modifier = { factor = 20 opinion = { target = scope:annoying_heir value <= medium_negative_opinion } } modifier = { factor = 5 is_powerful_vassal = yes } } limit = { is_ai = yes has_court_event_flag = no NOT = { scope:annoying_heir = { is_child_of = prev } } } save_scope_as = annoyed_vassal court_event_character_flag_effect = yes } if = { limit = { any_spouse = { is_parent_of = scope:annoying_heir has_court_event_flag = no is_ai = no } } random_spouse = { limit = { is_parent_of = scope:annoying_heir has_court_event_flag = no is_ai = no } save_scope_as = protective_parent } add_character_flag = has_protective_spouse } if = { limit = { scope:annoying_heir = { OR = { has_trait = wrathful has_trait = sadistic has_trait = vengeful has_trait = torturer has_trait = murderer has_trait = callous has_trait = stubborn } } } add_character_flag = heir_gets_in_street_fights } else_if = { limit = { scope:annoying_heir = { OR = { has_trait = greedy has_trait = arrogant has_trait = deceitful has_trait = arbitrary has_trait = lunatic } } } add_character_flag = heir_robbed_me } else_if = { limit = { scope:annoying_heir = { OR = { has_trait = drunkard has_trait = lazy has_trait = fornicator has_trait = lustful has_trait = adulterer has_trait = rakish has_trait = rowdy } } } add_character_flag = heir_lives_in_tavern } else_if = { limit = { scope:annoying_heir = { diplomacy <= low_skill_rating } } add_character_flag = heir_poor_diplomat } else = { add_character_flag = heir_personally_hated } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { name = hold_court.4001.b set_designated_heir = scope:preferred_heir scope:annoying_heir = { disinherit_effect = { DISINHERITOR = root } } stress_impact = { family_first = medium_stress_gain } every_courtier_or_guest = { custom = all_courtiers_and_guests add_opinion = { opinion = 15 target = root modifier = grateful_opinion } } ai_chance = { base = 25 ai_value_modifier = { ai_vengefulness = 0.75 ai_rationality = -0.5 ai_sociability = 0.5 } } } option = { name = hold_court.4001.d trigger = { scope:preferred_heir = { NOR = { has_trait = arrogant has_trait = arbitrary has_trait = wrathful has_trait = sadistic has_trait = lunatic has_trait = callous has_trait = drunkard has_trait = deceitful has_trait = greedy has_trait = lazy has_trait = lustful has_trait = stubborn has_trait = rakish has_trait = fornicator has_trait = adulterer has_trait = deviant has_trait = rowdy has_trait = murderer has_trait = vengeful has_trait = torturer } } scope:annoying_heir = { number_of_commander_traits > 0 } } scope:annoying_heir = { if = { limit = { NOT = { has_trait = reckless } } add_trait = reckless } add_prowess_skill = 4 } ai_chance = { base =50 ai_value_modifier = { ai_boldness = 0.5 } } } option = { name = hold_court.4001.a add_legitimacy = miniscule_legitimacy_gain ai_chance = { base = 50 ai_value_modifier = { ai_vengefulness = -0.75 ai_rationality = -0.5 ai_sociability = -0.5 } } } after = { remove_character_flag = heir_personally_hated remove_character_flag = heir_poor_diplomat remove_character_flag = heir_lives_in_tavern remove_character_flag = heir_robbed_me remove_character_flag = heir_gets_in_street_fights remove_character_flag = has_protective_spouse # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes scope:annoyed_vassal = { clear_court_event_participation = yes } scope:annoying_heir = { clear_court_event_participation = yes } } } ################################################## # Endless Poetry # by Isabella Welch # 4500 ################################################## # Demanding poet! scripted_trigger demanding_poet_scripted_gender_trigger = { primary_title = { OR = { has_title_law = female_only_law has_title_law = female_preference_law } } NOT = { root.faith = { has_doctrine_parameter = clergy_must_be_male } } } hold_court.4500 = { type = court_event title = hold_court.4500.t desc = hold_court.4500.desc theme = learning_scholarship_focus court_scene = { button_position_character = scope:demanding_poet court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:demanding_poet = { group = petitioners_group animation = beg } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } trigger = { is_ai = no NOT = { has_character_flag = has_had_demanding_poet_event NOT = { has_free_council_slot = yes } } can_employ_court_position_type = court_poet_court_position NOT = { employs_court_position = court_poet_court_position } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic } ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly } } immediate = { add_character_flag = { flag = has_had_demanding_poet_event days = 7300 } save_scope_as = realm_holder if = { limit = { demanding_poet_scripted_gender_trigger = yes } create_character = { location = root.capital_province template = demanding_poet_character gender = female save_scope_as = demanding_poet } } else = { create_character = { location = root.capital_province template = demanding_poet_character gender = male save_scope_as = demanding_poet } } hidden_effect = { add_courtier = scope:demanding_poet scope:demanding_poet = { give_nickname = nick_the_poet court_event_character_flag_effect = yes } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { name = hold_court.4500.b change_current_court_grandeur = minor_court_grandeur_gain replace_existing_position_with_character_in_current_scope_court_effect = { CHARACTER = scope:demanding_poet POSITION = court_poet_court_position } ai_chance = { base = 50 ai_value_modifier = { ai_boldness = -0.25 ai_rationality = 0.75 } } } option = { name = hold_court.4500.a scope:demanding_poet = { silent_disappearance_effect = yes } stress_impact = { lifestyle_poet = minor_stress_gain journaller = medium_stress_gain arbitrary = minor_stress_gain } ai_chance = { base = 75 ai_value_modifier = { ai_boldness = -0.25 ai_rationality = 0.75 } } } after = { scope:demanding_poet = { clear_court_event_participation = yes } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # SheHe who makes a Beast out of HerHimself... # by Isabella Welch # 4600 ################################################## scripted_trigger cannibal_follow_up_trigger = { scope:possible_cannibal_ruler = { is_alive = yes is_cannibal_trigger = no } scope:cannibal_vassal = { is_alive = yes is_cannibal_trigger = yes is_ai = yes has_court_event_flag = no } } # Peasants are convinced you're a literal monster hold_court.4600 = { type = court_event title = hold_court.4600.t desc = hold_court.4600.desc theme = intrigue_intimidation_focus override_background = { reference = throne_room } lower_left_portrait = scope:chancellor court_scene = { button_position_character = scope:challenger_peasant court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:challenger_peasant = { group = petitioners_group animation = rage } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } trigger = { NOT = { has_character_flag = has_had_monstrous_ruler_event } OR = { tyranny >= medium_tyranny has_trait = torturer has_trait = schemer has_trait = sadistic AND = { is_witch_trigger = yes trait_is_shunned_or_criminal_in_my_or_lieges_faith_trigger = { TRAIT = witch GENDER_CHARACTER = root } } AND = { is_cannibal_trigger = yes trait_is_shunned_or_criminal_in_my_or_lieges_faith_trigger = { TRAIT = cannibal GENDER_CHARACTER = root } } } OR = { # I care about dread has_focus = intrigue_skulduggery_focus has_focus = intrigue_intimidation_focus has_focus = diplomacy_majesty_focus has_focus = martial_authority_focus dread <= low_dread } exists = cp:councillor_chancellor cp:councillor_chancellor = { has_court_event_flag = no is_ai = yes } } weight_multiplier = { base = 1 # Court weightings. ## The beast... ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike } ## & his library... ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly } } immediate = { add_character_flag = { flag = has_had_monstrous_ruler_event years = 5 } save_scope_as = possible_cannibal_ruler create_character = { location = root.capital_province template = challenger_peasant_character save_scope_as = challenger_peasant } scope:challenger_peasant = { court_event_character_flag_effect = yes } cp:councillor_chancellor = { save_scope_as = chancellor court_event_character_flag_effect = yes } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { name = hold_court.4600.a trigger = { has_trait = eccentric } add_prestige = medium_prestige_gain change_current_court_grandeur = minor_court_grandeur_gain add_intrigue_lifestyle_perk_points = 1 every_held_county = { custom = custom.every_held_county add_county_modifier = { modifier = county_confident_in_humanity_modifier years = 25 } } add_dread = medium_dread_gain ai_chance = { base = 200 ai_value_modifier = { ai_boldness = 0.25 ai_rationality = 0.25 } } } option = { name = hold_court.4600.b add_dread = medium_dread_gain if = { limit = { any_vassal_or_below = { is_ai = yes OR = { has_trait = cannibal any_secret = { type = secret_cannibal } } } } random_vassal_or_below = { limit = { is_ai = yes has_court_event_flag = no OR = { has_trait = cannibal any_secret = { type = secret_cannibal } } NOR = { has_relation_lover = root has_relation_friend = root has_relation_rival = root has_relation_soulmate = root is_close_family_of = root } } save_scope_as = cannibal_vassal } trigger_event = { id = hold_court.4601 days = { 30 40 } } } give_nickname = nick_the_child_of_devilgod ai_chance = { base = 25 ai_value_modifier = { ai_boldness = 0.25 ai_honor = -0.75 } } } option = { name = hold_court.4600.c flavor = hold_court.4600.c.tt add_dread = major_dread_loss if = { limit = { has_trait = sadistic } remove_trait = sadistic add_trait_force_tooltip = compassionate } else_if = { limit = { has_trait = callous } remove_trait = callous add_trait_force_tooltip = compassionate } if = { limit = { is_cannibal_trigger = yes } remove_cannibal_secret_or_trait_effect = yes } if = { limit = { is_witch_trigger = yes } remove_witch_secret_or_trait_effect = yes } every_held_county = { custom = custom.every_held_county add_county_modifier = { modifier = county_confident_in_humanity_modifier years = 25 } } stress_impact = { sadistic = massive_stress_impact_gain callous = massive_stress_impact_gain confider = medium_stress_loss just = medium_stress_loss } ai_chance = { base = 0 # We don't want the AI changing their traits } } option = { name = hold_court.4600.d ai_chance = { base = 15 ai_value_modifier = { ai_boldness = -0.25 ai_rationality = 1 } } } after = { hidden_effect = { scope:challenger_peasant = { clear_court_event_participation = yes death = { death_reason = death_vanished } } } scope:chancellor = { clear_court_event_participation = yes } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } hold_court.4601 = { type = letter_event opening = { desc = hold_court.4601.t } desc = hold_court.4601.d sender = scope:cannibal_vassal trigger = { cannibal_follow_up_trigger = yes } option = { name = hold_court.4601.a add_prestige = minor_prestige_gain trigger_event = { id = hold_court.4602 days = { 7 9 } } ai_chance = { base = 25 ai_value_modifier = { ai_sociability = 0.25 } } } option = { name = hold_court.4601.b add_prestige = minor_prestige_loss scope:cannibal_vassal = { add_opinion = { modifier = rejected_invitation_opinion opinion = -10 target = root } } ai_chance = { base = 50 ai_value_modifier = { ai_sociability = -0.25 } } } } hold_court.4602 = { type = character_event title = hold_court.4602.t desc = hold_court.4602.desc theme = murder_scheme left_portrait = { character = scope:cannibal_vassal animation = flirtation } trigger = { cannibal_follow_up_trigger = yes } immediate = { scope:cannibal_vassal = { if = { limit = { any_secret = { type = secret_cannibal NOT = { any_secret_knower = { this = root } } } } random_secret = { type = secret_cannibal reveal_to = root } } } } option = { name = hold_court.4602.a give_cannibal_secret_or_trait_effect = yes scope:cannibal_vassal = { add_opinion = { target = root modifier = also_cannibal } } ai_chance = { base = 5 ai_value_modifier = { ai_rationality = -0.75 } modifier = { has_trait = gluttonous add = 20 } } } option = { name = hold_court.4602.b if = { limit = { scope:cannibal_vassal = { is_attracted_to_gender_of = root } is_attracted_to_gender_of = scope:cannibal_vassal } set_relation_lover = { reason = lover_cannibal_seduction target = scope:cannibal_vassal } } else = { set_relation_friend = { reason = friend_private_feast target = scope:cannibal_vassal } } increase_wounds_effect = { REASON = eaten } scope:cannibal_vassal = { add_opinion = { target = root opinion = 40 modifier = delicious_morsel_opinion } } ai_chance = { base = 5 ai_value_modifier = { ai_rationality = -0.75 } modifier = { has_trait = lustful add = 20 } } } option = { name = hold_court.4602.c trigger = { is_cannibal_trigger = no } add_opinion = { target = scope:cannibal_vassal opinion = -50 modifier = tried_to_eat_me_opinion } scope:cannibal_vassal = { add_opinion = { target = root opinion = -20 modifier = rejected_opinion } } ai_chance = { base = 75 ai_value_modifier = { ai_rationality = 0.75 } modifier = { has_trait = gluttonous add = -20 } } } } ################################################## # In Ancient Times... # by Isabella Welch # 4900 ################################################## # Shady genealogist offers to write up your legendary family history hold_court.4900 = { type = court_event title = hold_court.4900.t desc = hold_court.4900.desc theme = diplomacy_family_focus court_scene = { button_position_character = scope:suspicious_genealogist court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:suspicious_genealogist = { group = petitioners_group animation = scheme } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } trigger = { NOT = { has_character_flag = has_had_suspicious_genealogist_event } exists = cp:councillor_court_chaplain cp:councillor_court_chaplain = { has_court_event_flag = no is_ai = yes } OR = { AND = { is_female = yes mother ?= { mother ?= { mother ?= { mother ?= { exists = mother } } } } } AND = { is_male = yes father ?= { father ?= { father ?= { father ?= { exists = father } } } } } } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly } } immediate = { add_character_flag = { flag = has_had_suspicious_genealogist_event years = 5 } save_scope_as = ruler_history_target create_character = { location = root.capital_province template = suspicious_genealogist_character save_scope_as = suspicious_genealogist } scope:suspicious_genealogist = { court_event_character_flag_effect = yes } primary_title = { save_scope_as = target_title } grab_mythical_founder_effect = yes cp:councillor_court_chaplain = { save_scope_as = chaplain court_event_character_flag_effect = yes } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { name = hold_court.4900.e trigger = { NOT = { exists = promoted_legend } has_dlc_feature = legends NOT = { has_game_rule = historical_legends_only } } create_legend_seed = { type = legitimizing quality = famed chronicle = ancestral_glory_not_in_history properties = { ancestor_flag = root.var:mythical_ancestor_var title = root.primary_title } } stress_impact = { arrogant = major_stress_impact_loss honest = minor_stress_impact_gain humble = major_stress_impact_gain } ai_chance = { base = 75 ai_value_modifier = { ai_boldness = 0.75 ai_honor = 0.75 } } } option = { name = hold_court.4900.a trigger = { root.dynasty = { dynasty_prestige_level >= low_dynasty_prestige_level dynasty_prestige_level < high_dynasty_prestige_level } } root.dynasty = { add_dynasty_prestige = medium_dynasty_prestige_gain } hidden_effect = { scope:suspicious_genealogist = { death = { death_reason = death_vanished } } } ai_chance = { base = 75 ai_value_modifier = { ai_boldness = 0.75 ai_honor = 0.75 } } } option = { name = hold_court.4900.b trigger = { trigger_if = { limit = { is_ai = yes } short_term_gold >= medium_gold_value } } change_current_court_grandeur = major_court_grandeur_gain trigger_event = { id = hold_court.4901 days = { 1 2 } } remove_short_term_gold = minor_gold_value ai_chance = { base = 25 } } option = { name = hold_court.4900.c trigger = { root.dynasty = { dynasty_prestige_level >= high_dynasty_prestige_level } } root.dynasty = { add_dynasty_prestige = medium_dynasty_prestige_gain } hidden_effect = { scope:suspicious_genealogist = { death = { death_reason = death_vanished } } } ai_chance = { base = 25 } } option = { name = hold_court.4900.d trigger = { root.dynasty = { dynasty_prestige_level < low_dynasty_prestige_level } } root.dynasty = { add_dynasty_prestige = medium_dynasty_prestige_gain } hidden_effect = { scope:suspicious_genealogist = { death = { death_reason = death_vanished } } } ai_chance = { base = 25 } } after = { scope:chaplain = { clear_court_event_participation = yes } scope:suspicious_genealogist = { clear_court_event_participation = yes } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } # the reading of the family lineage... hold_court.4901 = { type = character_event title = hold_court.4900.t theme = diplomacy_family_focus desc = { desc = hold_court.4901.desc.intro first_valid = { triggered_desc = { trigger = { is_female = yes } desc = hold_court.4901.mothers } triggered_desc = { trigger = { is_male = yes } desc = hold_court.4901.fathers } } desc = hold_court.4901.desc.outro } left_portrait = { character = root animation = personality_bold } right_portrait = { character = scope:suspicious_genealogist animation = scheme } trigger = { scope:suspicious_genealogist = { is_alive = yes } scope:ruler_history_target = { is_alive = yes } } immediate = { if = { limit = { is_female = yes } root.mother = { save_scope_as = mother_1 this.mother = { save_scope_as = mother_2 this.mother = { save_scope_as = mother_3 this.mother = { save_scope_as = mother_4 this.mother = { save_scope_as = mother_5 } } } } } } if = { limit = { is_male = yes } root.father = { save_scope_as = father_1 this.father = { save_scope_as = father_2 this.father = { save_scope_as = father_3 this.father = { save_scope_as = father_4 this.father = { save_scope_as = father_5 } } } } } } cp:councillor_court_chaplain = { save_scope_as = chaplain } } option = { name = hold_court.4901.a flavor = hold_court.4901.a.tt every_courtier_or_guest = { custom = all_courtiers_and_guests add_opinion = { target = root modifier = bored_opinion opinion = -5 } } stress_impact = { diligent = medium_stress_gain patient = medium_stress_gain family_first = medium_stress_gain } every_child = { limit = { age < 15 has_education_diplomacy_trigger = yes } add_diplomacy_skill = 2 } every_child = { limit = { has_trait = bastard } add_opinion = { target = root opinion = -15 modifier = flaunted_lineage_opinion } } ai_chance = { base = 25 modifier = { has_trait = family_first add = 50 } } } option = { name = hold_court.4901.b every_courtier_or_guest = { limit = { NOT = { is_close_or_extended_family_of = root } } custom = all_courtiers_and_guests add_opinion = { target = root modifier = bored_opinion opinion = -5 } } stress_impact = { humble = major_stress_gain family_first = minor_stress_loss } every_close_or_extended_family_member = { limit = { NOR = { is_courtier_of = root } } custom = all_family_members add_opinion = { target = root modifier = flaunted_lineage_opinion opinion = 15 } } ai_chance = { base = 25 modifier = { has_trait = patient add = 50 } } } option = { name = hold_court.4901.c every_courtier_or_guest = { custom = all_courtiers_and_guests add_opinion = { target = root modifier = grateful_opinion opinion = 5 } } stress_impact = { impatient = major_stress_loss } ai_chance = { base = 25 modifier = { has_trait = impatient add = 50 } } } after = { hidden_effect = { scope:suspicious_genealogist = { death = { death_reason = death_vanished } } } } } ################################################## # Linnea ################################################## # 5010 - 5019 Out of Control # 5020 - 5029 Dancing Plague # 5030 - 5039 New Written Language ################################################## ################################################## # Out of Control # by Linnéa Thimrén # 5010 - 5019 ################################################## # Low control - give control to low control counties hold_court.5010 = { type = court_event title = hold_court.5010.t desc = { first_valid = { triggered_desc = { trigger = { exists = scope:marshal } desc = hold_court.5010.desc_marshal } desc = hold_court.5010.desc } desc = hold_court.5010.desc.outro } theme = realm override_sound = { reference = event:/SFX/Events/Themes/sfx_event_theme_type_generic } left_portrait = { character = scope:peasant animation = beg } lower_right_portrait = scope:portrait court_scene = { button_position_character = scope:peasant court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:peasant = { group = petitioners_group animation = beg } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } trigger = { NOT = { has_character_flag = had_event_hold_court_5010 } any_sub_realm_county = { county_control < medium_county_control NOT = { has_county_modifier = county_increased_presence_modifier } } } weight_multiplier = { base = 0.5 modifier = { add = 0.5 exists = cp:councillor_marshal cp:councillor_marshal = { is_performing_council_task = task_increase_control is_available = yes #Not currently travelling or attending activity location.county ?= { county_control < medium_county_control NOT = { has_county_modifier = county_increased_presence_modifier } } } } modifier = { add = 0.25 any_sub_realm_county = { county_control <= low_county_control NOT = { has_county_modifier = county_increased_presence_modifier } } } # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative } } immediate = { add_character_flag = { flag = had_event_hold_court_5010 years = 10 } every_sub_realm_county = { limit = { county_control < medium_county_control NOT = { has_county_modifier = county_increased_presence_modifier } } add_to_list = potential_county } random_in_list = { list = potential_county limit = { exists = root.cp:councillor_marshal root.cp:councillor_marshal = { is_performing_council_task = task_increase_control is_available = yes #Not currently travelling or attending activity councillor_task_target = prev.title_province } } alternative_limit = { county_control <= low_county_control } alternative_limit = { always = yes } save_scope_as = county } create_character = { template = servant_character dynasty = none location = root.capital_province trait = compassionate save_scope_as = peasant } scope:peasant = { court_event_character_flag_effect = yes } #To save the most relevant character for loc and portrait if = { limit = { exists = cp:councillor_marshal cp:councillor_marshal = { has_court_event_flag = no is_ai = yes is_performing_council_task = task_increase_control councillor_task_target = scope:county.title_province } } cp:councillor_marshal = { save_scope_as = marshal save_scope_as = portrait court_event_character_flag_effect = yes } } else_if = { limit = { scope:county.holder != root scope:county.holder = { has_court_event_flag = no } } scope:county.holder = { save_scope_as = vassal save_scope_as = portrait court_event_character_flag_effect = yes } } else = { save_scope_as = portrait } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { # Let's go for it name = hold_court.5010.a remove_treasury_or_gold = medium_treasury_or_gold_value scope:county = { change_county_control = medium_county_control_gain } every_sub_realm_county = { custom = every_low_county_control limit = { county_control <= low_county_control NOT = { this = scope:county } } change_county_control = minor_county_control_gain } stress_impact = { compassionate = medium_stress_impact_loss callous = minor_stress_impact_gain } ai_chance = { base = 50 ai_value_modifier = { ai_rationality = 1 ai_greed = -1 ai_compassion = 1 } modifier = { factor = 0 gold <= medium_treasury_or_gold_value } } } option = { # We need more violence! name = hold_court.5010.b scope:county = { add_county_modifier = { modifier = county_increased_presence_modifier days = 3650 } change_county_control = major_county_control_gain } every_sub_realm_county = { custom = every_low_county_control limit = { county_control <= low_county_control NOT = { this = scope:county } } add_county_modifier = { modifier = county_increased_presence_modifier days = 3650 } change_county_control = major_county_control_gain } stress_impact = { sadistic = medium_stress_impact_loss compassionate = medium_stress_impact_gain } } option = { # Idc lol name = hold_court.5010.c stress_impact = { compassionate = minor_stress_impact_gain } } after = { if = { limit = { exists = scope:marshal } clear_court_event_participation = yes } else_if = { limit = { exists = scope:vassal } clear_court_event_participation = yes } hidden_effect = { scope:peasant = { clear_court_event_participation = yes } if = { limit = { scope:county = { has_county_modifier = county_increased_presence_modifier } } scope:peasant = { death = { death_reason = death_hanged } } } else_if = { limit = { scope:county.holder != root scope:county.holder.capital_province = { local_pool_is_full_trigger = no } } scope:peasant = { move_to_pool_at = scope:county.holder.capital_province } } else = { scope:peasant = { death = { death_reason = death_vanished } } } } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # New Written Language # by Linnéa Thimrén # 5030 - 5039 ################################################## # Minority gender in your court develops their own written language (think Nüshu) scripted_trigger hold_court_5030_courtier_basic_trigger = { has_court_event_flag = no is_ai = yes faith = root.faith is_imprisoned = no NOT = { has_trait = incapable } OR = { AND = { OR = { root = { has_realm_law = male_only_law } root = { has_realm_law = male_preference_law } } is_female = yes } AND = { OR = { root = { has_realm_law = female_only_law } root = { has_realm_law = female_preference_law } } is_male = yes } } } scripted_trigger hold_court_5030_courtier_adult_trigger = { hold_court_5030_courtier_basic_trigger = yes is_adult = yes NOT = { has_court_position = court_tutor_court_position } } hold_court.5030 = { type = court_event title = hold_court.5030.t desc = hold_court.5030.desc theme = realm override_sound = { reference = event:/SFX/Events/Themes/sfx_event_theme_type_generic } lower_right_portrait = scope:court_tutor court_scene = { button_position_character = scope:courtier court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:courtier = { group = petitioners_group animation = happiness } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } trigger = { any_courtier = { hold_court_5030_courtier_adult_trigger = yes } OR = { AND = { OR = { root = { has_realm_law = male_only_law } root = { has_realm_law = male_preference_law } } is_female = yes } AND = { OR = { root = { has_realm_law = female_only_law } root = { has_realm_law = female_preference_law } } is_male = yes } } OR = { # Make sure you care about schemes and such has_lifestyle = intrigue_lifestyle any_scheme = { is_hostile = yes } } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly } ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_intrigue } } cooldown = { years = 40 } immediate = { random_courtier = { limit = { hold_court_5030_courtier_adult_trigger = yes } weight = { base = 1 compare_modifier = { value = learning multiplier = 2 } } save_scope_as = courtier court_event_character_flag_effect = yes } if = { limit = { employs_court_position = court_tutor_court_position any_court_position_holder = { type = court_tutor_court_position is_physically_able_adult = yes has_court_event_flag = no is_ai = yes } } random_court_position_holder = { type = court_tutor_court_position limit = { is_physically_able_adult = yes has_court_event_flag = no is_ai = yes } save_scope_as = court_tutor court_event_character_flag_effect = yes } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { # Allow it name = hold_court.5030.a #If you're part of the gender minority you get a boost as well if = { limit = { OR = { AND = { OR = { has_realm_law = male_only_law has_realm_law = male_preference_law } is_female = yes } AND = { OR = { has_realm_law = female_only_law has_realm_law = female_preference_law } is_male = yes } } } if = { limit = { is_male = yes } add_character_modifier = { modifier = hold_court_written_language_men_advanced_modifier years = 20 } } else = { add_character_modifier = { modifier = hold_court_written_language_women_advanced_modifier years = 20 } } } #Boost all courtiers of the relevant gender every_courtier = { limit = { hold_court_5030_courtier_basic_trigger = yes } custom = hold_court.5030.courtiers add_opinion = { target = root modifier = grateful_opinion opinion = 10 } if = { limit = { is_male = yes } add_character_modifier = { modifier = hold_court_written_language_men_modifier years = 20 } } else = { add_character_modifier = { modifier = hold_court_written_language_women_modifier years = 20 } } } } option = { # Embrace it and task your Court Tutor with teaching it name = hold_court.5030.b trigger = { exists = scope:court_tutor } #If you're part of the gender minority you get a boost as well if = { limit = { OR = { AND = { OR = { has_realm_law = male_only_law has_realm_law = male_preference_law } is_female = yes } AND = { OR = { has_realm_law = female_only_law has_realm_law = female_preference_law } is_male = yes } } } if = { limit = { is_male = yes } add_character_modifier = { modifier = hold_court_written_language_men_advanced_modifier years = 20 } } else = { add_character_modifier = { modifier = hold_court_written_language_women_advanced_modifier years = 20 } } } #Boost all courtiers of the relevant gender every_courtier = { limit = { hold_court_5030_courtier_basic_trigger = yes } custom = hold_court.5030.courtiers add_opinion = { target = root modifier = grateful_opinion opinion = 10 } if = { limit = { is_male = yes } add_character_modifier = { modifier = hold_court_written_language_men_advanced_modifier years = 20 } } else = { add_character_modifier = { modifier = hold_court_written_language_women_advanced_modifier years = 20 } } } } option = { # Use their expertise for other things name = hold_court.5030.c scope:courtier = { add_opinion = { target = root modifier = refusal_opinion opinion = -15 } } add_character_modifier = { modifier = invented_code_resistance_modifier years = 5 } stress_impact = { paranoid = medium_stress_impact_loss } } after = { scope:courtier = { clear_court_event_participation = yes } if = { limit = { exists = scope:court_tutor } scope:court_tutor = { clear_court_event_participation = yes } } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # Claudia ################################################## # 6000 Empty Granaries # 6010 Land Grants # 6020 Hawks and Doves # 6030 From Beyond the Border # 6040 A Lost Treasure # 6050 - 6051 A Holy Tomb # 6060 A Convenient Offer # 6070 Budding Ally # 6080 Settling the [people] # 6090 Heretics at Large # 6100 - 6101 A Land at War # 6110 A Ravaged Land # 6120 - 6121 The Day of Truth # 6130 The Cadastre # 6140 A Cumbersome Gift # 6150 The End Is Nigh! # 6160 Empty Coffers # 6170 Ignoble Imprisonment # 6180 The Shadow Behind the Throne # 6190 A Shadow in the Night # 6200 - 6201 The Monster of X # 6210 A Land of Barbarians # 6220 Studying the Dead # 6230 A Massive Problem ################################################## ################################################## # Empty Granaries # by Claudia Baldassi # 6000 ################################################## # A province has been hit by a famine and is asking for your help. What do you do? # scripted_trigger hold_court_6000_valid_province_trigger = { OR = { has_province_modifier = recently_looted_modifier has_province_modifier = disease_spreading_modifier has_province_modifier = winter_harsh_modifier barony = { holder ?= { has_character_flag = recently_occupied_flag } } } barony = { holder ?= { this != root is_available_ai_adult = yes has_court_event_flag = no } } } scripted_trigger hold_court_6000_valid_inspector_trigger = { has_court_event_flag = no OR = { stewardship >= 14 has_trait = education_stewardship_2 has_trait = education_stewardship_3 has_trait = education_stewardship_4 has_trait = education_stewardship_5 has_trait = administrator } NOR = { has_trait = lazy is_spouse_of = root is_concubine_of = root } is_councillor = no is_available_ai_adult = yes } hold_court.6000 = { type = court_event title = hold_court.6000.t desc = { desc = hold_court.6000.desc_intro first_valid = { triggered_desc = { trigger = { scope:6000_poor = { has_character_flag = recently_occupied_flag } } desc = hold_court.6000.desc_occupation } triggered_desc = { trigger = { scope:6000_province = { has_province_modifier = recently_looted_modifier } } desc = hold_court.6000.desc_raiding } triggered_desc = { trigger = { scope:6000_province = { has_province_modifier = disease_spreading_modifier } } desc = hold_court.6000.desc_epidemics } triggered_desc = { trigger = { scope:6000_province = { has_province_modifier = winter_harsh_modifier } } desc = hold_court.6000.desc_winter } } desc = hold_court.6000.desc_middle triggered_desc = { trigger = { exists = scope:6000_count } desc = hold_court.6000.desc_count } desc = hold_court.6000.desc_ending } theme = court lower_left_portrait = scope:6000_count lower_right_portrait = scope:inspector court_scene = { button_position_character = scope:6000_poor court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:6000_poor = { group = petitioners_group animation = beg } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 10 } trigger = { any_realm_province = { hold_court_6000_valid_province_trigger = yes } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative } } immediate = { random_realm_province = { limit = { hold_court_6000_valid_province_trigger = yes } save_scope_as = 6000_province } scope:6000_province = { barony = { holder = { save_scope_as = 6000_poor } } } if = { limit = { employs_court_position = seneschal_court_position any_court_position_holder = { type = seneschal_court_position is_available_ai_adult = yes has_court_event_flag = no } } random_court_position_holder = { type = seneschal_court_position limit = { is_available_ai_adult = yes has_court_event_flag = no } save_scope_as = inspector court_event_character_flag_effect = yes } } else_if = { limit = { any_courtier_or_guest = { hold_court_6000_valid_inspector_trigger = yes } } random_courtier_or_guest = { limit = { hold_court_6000_valid_inspector_trigger = yes } save_scope_as = inspector court_event_character_flag_effect = yes } } if = { limit = { scope:6000_province.county.holder = { NOR = { this = root this = scope:6000_poor } } } scope:6000_province.county.holder = { save_scope_as = 6000_count court_event_character_flag_effect = yes } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } #Option A: send money option = { name = hold_court.6000.a trigger = { trigger_if = { limit = { is_ai = yes } short_term_gold >= medium_gold_value } } pay_treasury_or_gold = { target = scope:6000_poor value = medium_treasury_or_gold_value } add_hook = { type = favor_hook target = scope:6000_poor } every_sub_realm_county = { limit = { title_province = { hold_court_6000_valid_province_trigger = yes } } add_county_modifier = { modifier = invested_in_province_modifier years = 10 } } if = { limit = { exists = scope:6000_count } scope:6000_count = { add_opinion = { target = root modifier = grateful_opinion opinion = 20 } } } stress_impact = { greedy = medium_stress_impact_gain } ai_chance = { base = 5 modifier = { gold < 0 add = -10 } modifier = { short_term_gold >= medium_gold_value add = 5 } modifier = { OR = { has_trait = generous has_trait = improvident has_trait = profligate } add = 15 } } } #Option B: less taxes option = { name = hold_court.6000.b every_sub_realm_county = { limit = { title_province = { hold_court_6000_valid_province_trigger = yes } } add_county_modifier = { modifier = court_tax_relief_county_modifier years = 10 } } if = { limit = { exists = scope:6000_count } scope:6000_count = { add_opinion = { target = root modifier = grateful_opinion opinion = 30 } } } add_hook = { type = indebted_hook target = scope:6000_poor } stress_impact = { greedy = medium_stress_impact_gain } ai_chance = { base = 5 modifier = { gold < 0 add = -5 } modifier = { OR = { has_trait = greedy ai_greed >= medium_positive_ai_value } add = -10 } } } #Option C: send inspector - limited to adequate character option = { name = hold_court.6000.c trigger = { exists = scope:inspector } custom_tooltip = hold_court.6000.c.tt scope:inspector = { add_character_modifier = { modifier = hold_court_inspector_modifier years = 10 } } remove_courtier_or_guest = { character = scope:inspector new_location = scope:6000_province } ai_chance = { base = 10 } } #Option D: they can manage it on their own option = { name = hold_court.6000.d stress_impact = { generous = medium_stress_impact_gain compassionate = medium_stress_impact_gain gregarious = medium_stress_impact_gain just = medium_stress_impact_gain } ai_chance = { base = 2 modifier = { has_trait = lazy add = 10 } modifier = { OR = { has_trait = just has_trait = generous has_trait = compassionate has_trait = gregarious } add = -5 } } } after = { if = { limit = { exists = scope:inspector } scope:inspector = { clear_court_event_participation = yes } } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # From Beyond the Border # by Claudia Baldassi # 6030 ################################################## # A bilingual monk from a (recently conquered) county of a different culture is offering their translation of the great works of their culture into your language # scripted_trigger hold_court_6030_valid_county_trigger = { culture = { this != root.culture save_temporary_scope_as = 6030_border_culture } any_neighboring_county = { holder = { this != root culture = scope:6030_border_culture } } any_county_province = { has_holding_type = church_holding } religion = { any_faith = { has_doctrine = tenet_monasticism } } } hold_court.6030 = { type = court_event title = hold_court.6030.t desc = hold_court.6030.desc theme = court court_scene = { button_position_character = scope:6030_monk court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:6030_monk = { group = petitioners_group animation = personality_rational } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 25 } trigger = { any_held_county = { hold_court_6030_valid_county_trigger = yes } } weight_multiplier = { # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly } } immediate = { random_held_county = { limit = { hold_court_6030_valid_county_trigger = yes } save_scope_as = 6030_border } scope:6030_border = { random_county_province = { limit = { has_holding_type = church_holding } save_scope_as = 6030_church } } create_character = { location = root.capital_province template = priest_character_template faith = scope:6030_border.faith culture = scope:6030_border.culture gender_female_chance = root_faith_clergy_gender_female_chance trait = devoted save_scope_as = 6030_monk } hidden_effect = { add_courtier = scope:6030_monk } scope:6030_monk = { court_event_character_flag_effect = yes } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } #Option A: accept the translation option = { name = hold_court.6030.a add_prestige = minor_prestige_gain change_current_court_grandeur = minor_court_grandeur_gain scope:6030_monk = { select_and_move_to_pool_effect = yes } culture = { change_cultural_acceptance = { target = scope:6030_monk.culture value = minor_cultural_acceptance_value desc = cultural_acceptance_gain_hold_court_event_outcome } } scope:6030_monk = { add_character_flag = 6030_remove_char_flag } ai_chance = { base = 100 ai_value_modifier = { ai_rationality = 0.5 } } } #Option B: you ask them to stay and teach you option = { name = hold_court.6030.b trigger = { learning >= 12 } skill = learning add_prestige = medium_prestige_gain change_current_court_grandeur = minor_court_grandeur_gain if = { limit = { can_appoint_char_to_court_position = { CHAR = scope:6030_monk COURT_POS = court_tutor_court_position } } court_position_grant_effect = { EMPLOYER = root POS = court_tutor CANDIDATE = scope:6030_monk } } add_character_modifier = { modifier = hold_court_bilingual_readings_modifier years = 10 } culture = { change_cultural_acceptance = { target = scope:6030_monk.culture value = minor_cultural_acceptance_gain desc = cultural_acceptance_gain_hold_court_event_outcome } } stress_impact = { content = minor_stress_impact_gain impatient = minor_stress_impact_gain irritable = medium_stress_impact_gain arrogant = medium_stress_impact_gain lazy = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_rationality = 0.5 } modifier = { has_trait = content add = -25 } modifier = { has_trait = impatient add = -25 } modifier = { has_trait = irritable add = -50 } modifier = { has_trait = arrogant add = -50 } modifier = { has_trait = lazy add = -50 } modifier = { has_trait = ambitious add = 50 } } } #Option C: I don't care option = { name = hold_court.6030.c scope:6030_monk = { select_and_move_to_pool_effect = yes } scope:6030_monk = { add_character_flag = 6030_remove_char_flag } stress_impact = { lazy = medium_stress_impact_loss } ai_chance = { base = 100 ai_value_modifier = { ai_rationality = -0.5 } modifier = { has_trait = lazy add = 50 } } } after = { scope:6030_monk = { clear_court_event_participation = yes if = { limit = { has_character_flag = 6030_remove_char_flag } silent_disappearance_effect = yes } } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # A Lost Treasure # by Claudia Baldassi # 6040 ################################################## # Scribes from a remote monastery think they've found a rare/long-lost manuscript. It might be a fake, something worthless, or an artifact # hold_court.6040 = { type = court_event title = hold_court.6040.t desc = hold_court.6040.desc theme = court lower_left_portrait = scope:antiquarian court_scene = { button_position_character = scope:6040_monk court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:6040_monk = { group = petitioners_group animation = ecstasy } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 20 } trigger = { any_realm_province = { has_holding_type = church_holding religion = { any_faith = { has_doctrine = tenet_monasticism } } } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly } } immediate = { random_realm_province = { limit = { has_holding_type = church_holding religion = { any_faith = { has_doctrine = tenet_monasticism } } } save_scope_as = 6040_church } create_character = { location = root.capital_province template = priest_character_template faith = scope:6040_church.faith gender_female_chance = root_faith_clergy_gender_female_chance trait = devoted save_scope_as = 6040_monk } scope:6040_monk = { court_event_character_flag_effect = yes } if = { limit = { employs_court_position = antiquarian_court_position } court_position:antiquarian_court_position = { save_scope_as = antiquarian } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } #Option B: send for the antiquarian - if you have one option = { name = hold_court.6040.b trigger = { exists = scope:antiquarian } random_list = { 10 = { #it's an artifact! desc = hold_court.6040.c.tt.4 send_interface_toast = { title = hold_court_6040_b_artifact random_dummy_gender_effect = yes create_artifact_book_effect = { OWNER = root CREATOR = scope:dummy_gender SET_SUBJECT = flag:lunatic SET_TOPIC = flag:artifact_book_voynich } } scope:antiquarian = { add_learning_skill = 2 } add_prestige = medium_prestige_gain } 35 = { #it's an old book desc = hold_court.6040.c.tt.3 send_interface_toast = { title = hold_court_6040_b_generic scope:antiquarian = { add_learning_skill = 1 } add_prestige = minor_prestige_gain } } 30 = { #they have no clue modifier = { factor = 0 scope:antiquarian = { OR = { has_trait = education_learning_4 has_trait = education_learning_5 has_trait = intellect_good_3 has_trait = scholar learning > 20 } } } modifier = { add = -20 scope:antiquarian = { OR = { has_trait = education_learning_3 has_trait = intellect_good_2 learning >= 15 learning <= 20 } } } desc = hold_court.6040.b.tt send_interface_toast = { title = hold_court_6040_b_clueless add_character_modifier = hold_court_mysterious_book_modifier add_prestige = medium_prestige_loss } } 20 = { #it's a fake! desc = hold_court.6040.c.tt send_interface_toast = { title = hold_court_6040_b_fake add_prestige = medium_prestige_gain scope:antiquarian = { add_learning_skill = 2 } } } } ai_chance = { base = 150 ai_value_modifier = { ai_rationality = 0.5 } } } #Option C: study it yourself - if you can option = { name = hold_court.6040.c trigger = { learning >= 12 } skill = learning random_list = { 30 = { #it's an old book desc = hold_court.6040.c.tt.3 send_interface_toast = { title = hold_court_6040_b_generic add_learning_skill = 1 add_prestige = minor_prestige_gain create_artifact_book_effect = { OWNER = root CREATOR = scope:dummy_gender SET_SUBJECT = flag:lunatic SET_TOPIC = flag:artifact_book_voynich } } } 50 = { #you have no clue modifier = { factor = 0 OR = { has_trait = education_learning_4 has_trait = education_learning_5 has_trait = intellect_good_3 has_trait = scholar learning > 20 } } modifier = { add = -20 OR = { has_trait = education_learning_3 has_trait = intellect_good_2 AND = { learning <= 20 learning >= 15 } } } desc = hold_court.6040.c.tt.2 send_interface_toast = { title = hold_court_6040_c_clueless add_prestige = medium_prestige_loss add_character_modifier = hold_court_mysterious_book_modifier } } 15 = { #it's a fake! desc = hold_court.6040.c.tt send_interface_toast = { title = hold_court_6040_b_fake add_prestige = medium_prestige_gain add_learning_skill = 2 } } } ai_chance = { base = 100 ai_value_modifier = { ai_rationality = 0.5 ai_energy = 0.25 } } } #Option D: it's clearly demonic! option = { name = hold_court.6040.d trigger = { OR = { has_trait = zealous has_trait = theologian } } add_piety = major_piety_gain add_prestige = minor_prestige_loss add_dread = minor_dread_gain add_stress = major_stress_impact_loss ai_chance = { base = 200 } } #Option E: who cares about books? option = { name = hold_court.6040.e ai_chance = { base = 100 ai_value_modifier = { ai_rationality = -0.5 } modifier = { has_trait = lazy add = 50 } } } after = { scope:6040_monk = { clear_court_event_participation = yes silent_disappearance_effect = yes } if = { limit = { exists = scope:antiquarian } scope:antiquarian = { clear_court_event_participation = yes } } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # A Holy Tomb # by Claudia Baldassi # 6050 - 6051 ################################################## # The tomb of a local saint has been growing in popularity. The devotees of the saint are now asking for a land grant to support the growing religious establishment there. # scripted_trigger hold_court_6050_religion_trigger = { OR = { OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion } religion = religion:islam_religion religion = religion:buddhism_religion religion = religion:hinduism_religion } } hold_court.6050 = { type = court_event title = hold_court.6050.t desc = { desc = hold_court.6050.desc triggered_desc = { trigger = { exists = scope:6050_pop.faith.religious_head scope:6050_pop.faith.religious_head = root } desc = hold_court.6050.desc_hof } } theme = court lower_left_portrait = scope:6050_holy court_scene = { button_position_character = scope:6050_pop court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:6050_pop = { group = petitioners_group animation = ecstasy } scope:chaplain = { group = petitioners_group animation = ecstasy } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } #Note: This event is triggered by hold_court.6051 and cannot have any triggers of its own. All triggers must be in hold_court.6051 or the queue can get stuck here forever. weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative } ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly } } immediate = { create_character = { location = root.capital_province template = servant_character faith = scope:6050_tomb.faith culture = scope:6050_tomb.culture save_scope_as = 6050_pop } scope:6050_pop = { court_event_character_flag_effect = yes } cp:councillor_court_chaplain = { save_scope_as = chaplain court_event_character_flag_effect = yes } if = { limit = { exists = scope:6050_pop.faith.religious_head scope:6050_pop.faith.religious_head != root } random = { chance = 20 add_character_flag = { flag = 6050_church_approves days = 10 } } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } #Option A: create a temple on the tomb option = { name = hold_court.6050.a trigger = { NOT = { has_trait = lifestyle_mystic } } scope:6050_tomb = { set_holding_type = church_holding } if = { limit = { OR = { has_character_flag = 6050_church_approves AND = { exists = scope:6050_pop.faith.religious_head scope:6050_pop.faith.religious_head = root } } } add_piety = major_piety_gain } else = { add_piety = major_piety_loss } scope:6050_tomb.county = { add_county_modifier = { modifier = tougher_to_convert years = 10 } } ai_chance = { base = 100 ai_value_modifier = { ai_zeal = 1 } } } #Option B: limited to mystic: relic option = { name = hold_court.6050.b trigger = { has_trait = lifestyle_mystic } religion = { save_scope_as = statue_religion } create_artifact = { name = artifact_pedestal_reliquary_6050_saint_name description = artifact_pedestal_reliquary_6050_saint_desc type = pedestal template = 6050_relic_template visuals = reliquary modifier = artifact_monthly_piety_3_modifier save_scope_as = 6050_relic } scope:6050_relic = { set_variable = { # required to track equipability in template name = statue_religion value = root.religion } } scope:6050_tomb = { set_holding_type = church_holding } if = { limit = { OR = { has_character_flag = 6050_church_approves AND = { exists = scope:6050_pop.faith.religious_head scope:6050_pop.faith.religious_head = root } } } add_piety = major_piety_gain } else = { add_piety = major_piety_loss } scope:6050_tomb.county = { add_county_modifier = { modifier = tougher_to_convert years = 10 } } ai_chance = { base = 200 } } #Option C: persecute the local cult option = { name = hold_court.6050.c add_dread = medium_dread_gain if = { limit = { OR = { NOT = { has_character_flag = 6050_church_approves } AND = { exists = scope:6050_pop.faith.religious_head scope:6050_pop.faith.religious_head = root } } } add_piety = major_piety_gain } if = { limit = { scope:6050_tomb.county.faith != root.faith } scope:6050_tomb.county = { set_county_faith = root.faith } } scope:6050_tomb.county = { change_county_control = 50 } stress_impact = { lifestyle_mystic = medium_stress_impact_gain trusting = minor_stress_impact_gain compassionate = major_stress_impact_gain forgiving = major_stress_impact_gain } if = { limit = { has_character_flag = 6050_church_approves } stress_impact = { zealous = major_stress_impact_gain } } else = { stress_impact = { zealous = major_stress_impact_loss } } ai_chance = { base = 100 modifier = { has_trait = trusting add = -25 } modifier = { has_trait = lifestyle_mystic add = -50 } modifier = { has_trait = compassionate add = -75 } modifier = { has_trait = forgiving add = -75 } } } #Option D: ignore them option = { name = hold_court.6050.d ai_chance = { base = 100 modifier = { has_trait = lazy add = 50 } } } after = { scope:6050_pop = { clear_court_event_participation = yes silent_disappearance_effect = yes } scope:chaplain = { clear_court_event_participation = yes } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } hold_court.6051 = { #Hidden event to create the saint type = character_event hidden = yes cooldown = { years = 30 } trigger = { any_realm_province = { has_holding = no hold_court_6050_religion_trigger = yes county.faith != root.faith } exists = cp:councillor_court_chaplain cp:councillor_court_chaplain = { has_court_event_flag = no is_available_ai_adult = yes } } immediate = { random_realm_province = { limit = { has_holding = no hold_court_6050_religion_trigger = yes } save_scope_as = 6050_tomb } create_character = { location = scope:6050_tomb template = local_saint_template faith = scope:6050_tomb.faith culture = scope:6050_tomb.culture save_scope_as = 6050_holy } scope:6050_holy = { death = { death_reason = death_mysterious } } trigger_event = hold_court.6050 } } ################################################## # A Convenient Offer # by Claudia Baldassi # 6060 ################################################## # A wealthy knight or merchant offers to purchase a piece of land from you - in exchange for money, which you really need # scripted_trigger hold_court_6060_valid_county_trigger = { OR = { has_holding = no AND = { is_county_capital = no barony = { holder = root is_leased_out = no } NOT = { has_holding_type = church_holding } } } } scripted_trigger hold_court_6060_valid_knight_trigger = { has_court_event_flag = no is_landed = no stewardship >= 6 NOT = { has_trait = celibate } is_available_ai_adult = yes } hold_court.6060 = { type = court_event title = hold_court.6060.t desc = { first_valid = { triggered_desc = { trigger = { scope:6060_rich = { is_knight = yes } } desc = hold_court.6060.desc } desc = hold_court.6060.desc_merchant } desc = hold_court.6060.desc_ending } theme = court court_scene = { button_position_character = scope:6060_rich court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:6060_rich = { group = petitioners_group animation = personality_bold } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 20 } trigger = { faith = { trait_is_sin = drunkard } any_held_county = { any_county_province = { hold_court_6060_valid_county_trigger = yes } } trigger_if = { limit = { highest_held_title_tier = tier_empire } gold < 500 } trigger_if = { limit = { highest_held_title_tier = tier_kingdom } gold < 250 } NOR = { government_has_flag = government_is_tribal government_has_flag = government_is_nomadic } } weight_multiplier = { base = 1 modifier = { add = 2 gold <= 0 } # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative } } immediate = { random_held_county = { limit = { any_county_province = { hold_court_6060_valid_county_trigger = yes } } random_county_province = { limit = { hold_court_6060_valid_county_trigger = yes } save_scope_as = 6060_offer } } if = { limit = { any_knight = { hold_court_6060_valid_knight_trigger = yes } } random_knight = { limit = { hold_court_6060_valid_knight_trigger = yes } save_scope_as = 6060_rich court_event_character_flag_effect = yes } } else = { create_character = { location = root.capital_province template = stewardship_wealth_focus_friend_template trait = ambitious save_scope_as = 6060_rich } } hidden_effect = { scope:6060_rich = { court_event_character_flag_effect = yes add_treasury_or_gold = major_treasury_or_gold_value } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } #Option A: sell the province option = { name = hold_court.6060.a scope:6060_rich = { pay_treasury_or_gold = { target = root value = major_treasury_or_gold_value } } if = { limit = { scope:6060_offer = { has_holding = no } } scope:6060_offer = { set_holding_type = castle_holding } } create_title_and_vassal_change = { type = granted save_scope_as = change add_claim_on_loss = no } scope:6060_offer = { barony = { change_title_holder = { holder = scope:6060_rich change = scope:change } } } custom_tooltip = { text = character_title_cannot_be_revoked_tt scope:6060_rich = { add_character_flag = { flag = titles_protected years = 25 } } } resolve_title_and_vassal_change = scope:change ai_chance = { base = 100 ai_value_modifier = { ai_greed = -0.25 ai_honor = 0.25 } } } #Option B: Allow it as a city option = { name = hold_court.6060.b scope:6060_rich = { pay_treasury_or_gold = { target = root value = 250 } } if = { limit = { scope:6060_offer = { has_holding = no } } scope:6060_offer = { set_holding_type = city_holding } } create_title_and_vassal_change = { type = granted save_scope_as = change add_claim_on_loss = no } scope:6060_offer = { barony = { change_title_holder = { holder = scope:6060_rich change = scope:change } } } custom_tooltip = { text = character_title_cannot_be_revoked_tt scope:6060_rich = { add_character_flag = { flag = titles_protected years = 25 } } } resolve_title_and_vassal_change = scope:change ai_chance = { base = 100 ai_value_modifier = { ai_greed = 0.5 ai_boldness = 0.5 } modifier = { has_trait = greedy add = 50 } } } #Option C: refuse option = { name = hold_court.6060.c ai_chance = { base = 100 } } after = { scope:6060_rich = { clear_court_event_participation = yes if = { limit = { is_knight = no is_landed = no } silent_disappearance_effect = yes } } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # Budding Ally # by Claudia Baldassi # 6070 ################################################## # An ally is asking you to raise their child as their guardian # scripted_trigger hold_court_6070_valid_child_trigger = { has_court_event_flag = no is_available_ai_child = yes age >= 6 age <= 12 is_incapable = no is_courtier_of = prev is_alive = yes is_landed = no } scripted_trigger hold_court_6070_valid_friend_trigger = { has_court_event_flag = no is_available_ai_child = yes age >= 4 age <= 14 is_incapable = no is_alive = yes is_landed = no is_courtier_of = root } scripted_trigger hold_court_6070_valid_betrothed_trigger = { has_court_event_flag = no is_betrothed = no is_married = no could_marry_character_trigger = { CHARACTER = scope:6070_child } is_alive = yes is_landed = no is_incapable = no is_courtier_of = root basic_is_available_ai = yes } hold_court.6070 = { type = court_event title = hold_court.6070.t desc = hold_court.6070.desc theme = court court_scene = { button_position_character = scope:6070_embassy court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:6070_embassy = { group = petitioners_group animation = admiration } scope:6070_child = { group = petitioners_group animation = worry } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 15 } trigger = { is_adult = yes num_of_relation_ward < 2 any_ally = { is_ruler = yes is_available_ai_adult = yes has_court_event_flag = no any_child = { hold_court_6070_valid_child_trigger = yes save_temporary_scope_as = temp_ward } } trigger_if = { limit = { scope:temp_ward = { any_relation = { type = guardian } } } any_ally = { is_ruler = yes is_available_ai_adult = yes has_court_event_flag = no any_child = { this = scope:temp_ward } any_courtier_or_guest = { has_relation_guardian = scope:temp_ward is_available_ai_adult = yes has_court_event_flag = no } } } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic } } immediate = { random_ally = { limit = { any_child = { hold_court_6070_valid_child_trigger = yes } } save_scope_as = 6070_sender court_event_character_flag_effect = yes } scope:6070_sender = { random_child = { limit = { hold_court_6070_valid_child_trigger = yes } save_scope_as = 6070_child court_event_character_flag_effect = yes } } if = { limit = { scope:6070_sender = { any_courtier = { has_court_event_flag = no is_available_healthy_ai_adult = yes } } } scope:6070_sender = { random_courtier = { limit = { has_court_event_flag = no is_available_healthy_ai_adult = yes } save_scope_as = 6070_embassy court_event_character_flag_effect = yes } } } else = { create_character = { location = scope:6070_sender.capital_province template = pool_repopulate_diplomacy culture = scope:6070_sender.culture faith = scope:6070_sender.faith save_scope_as = 6070_embassy } scope:6070_embassy = { court_event_character_flag_effect = yes add_character_flag = 6070_remove_char_flag } } if = { limit = { any_child = { is_heir_of = root hold_court_6070_valid_friend_trigger = yes } } random_child = { limit = { is_heir_of = root hold_court_6070_valid_friend_trigger = yes } save_scope_as = 6070_friend court_event_character_flag_effect = yes } } else_if = { limit = { any_child = { hold_court_6070_valid_friend_trigger = yes } } random_child = { limit = { hold_court_6070_valid_friend_trigger = yes } save_scope_as = 6070_friend court_event_character_flag_effect = yes } } if = { limit = { any_child = { hold_court_6070_valid_betrothed_trigger = yes } } random_child = { limit = { hold_court_6070_valid_betrothed_trigger = yes } save_scope_as = 6070_betrothed_temp } } if = { limit = { exists = scope:6070_betrothed_temp scope:6070_child = { is_betrothed = no could_marry_character_trigger = { CHARACTER = scope:6070_betrothed_temp } } } scope:6070_betrothed_temp = { save_scope_as = 6070_betrothed court_event_character_flag_effect = yes } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } #Option A: Accept option = { name = hold_court.6070.a scope:6070_sender = { add_opinion = { target = root modifier = pleased_opinion opinion = 30 } } if = { limit = { scope:6070_child = { any_relation = { type = guardian } } } scope:6070_child = { every_relation = { type = guardian remove_guardian_effect = { GUARDIAN = this WARD = scope:6070_child RETURN_WARD = no HIDE_OPINION = no } } } } scope:6070_child = { set_relation_guardian = root } set_variable = { name = character_requested_as_educator value = root years = 10 } set_variable = { name = character_making_education_request value = scope:6070_sender years = 10 } if = { limit = { root != scope:6070_child.host } root = { add_visiting_courtier = scope:6070_child } } stress_impact = { shy = medium_stress_impact_gain reclusive = medium_stress_impact_gain paranoid = major_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_sociability = 0.25 ai_honor = 0.25 } modifier = { has_trait = shy add = -50 } modifier = { has_trait = reclusive add = -50 } modifier = { has_trait = paranoid add = -75 } } } #Option B: Accept + encourage friendship with your child (limited if child available) option = { name = hold_court.6070.b trigger = { exists = scope:6070_friend } scope:6070_sender = { add_opinion = { target = root modifier = pleased_opinion opinion = 35 } } if = { limit = { scope:6070_child = { any_relation = { type = guardian } } } scope:6070_child = { every_relation = { type = guardian remove_guardian_effect = { GUARDIAN = this WARD = scope:6070_child RETURN_WARD = no HIDE_OPINION = no } } } } scope:6070_child = { set_relation_guardian = root progress_towards_friend_effect = { REASON = friend_childhood_new_home CHARACTER = scope:6070_friend OPINION = 10 } } if = { limit = { root != scope:6070_child.host } root = { add_visiting_courtier = scope:6070_child } } stress_impact = { shy = medium_stress_impact_gain reclusive = medium_stress_impact_gain paranoid = major_stress_impact_gain } ai_chance = { base = 150 ai_value_modifier = { ai_sociability = 0.25 } modifier = { has_trait = shy add = -50 } modifier = { has_trait = reclusive add = -50 } modifier = { has_trait = paranoid add = -75 } } } #Option C: Accept + require betrothal (limited if child available) option = { name = hold_court.6070.c trigger = { exists = scope:6070_betrothed } scope:6070_sender = { add_opinion = { target = root modifier = pleased_opinion opinion = 40 } } if = { limit = { scope:6070_child = { any_relation = { type = guardian } } } scope:6070_child = { every_relation = { type = guardian remove_guardian_effect = { GUARDIAN = this WARD = scope:6070_child RETURN_WARD = no HIDE_OPINION = no } } } } scope:6070_child = { set_relation_guardian = root create_betrothal = scope:6070_betrothed } if = { limit = { root != scope:6070_child.host } root = { add_visiting_courtier = scope:6070_child } } stress_impact = { shy = medium_stress_impact_gain reclusive = medium_stress_impact_gain paranoid = major_stress_impact_gain diplomat = major_stress_impact_loss family_first = major_stress_impact_loss } ai_chance = { base = 150 ai_value_modifier = { ai_sociability = 0.25 } modifier = { has_trait = shy add = -50 } modifier = { has_trait = reclusive add = -50 } modifier = { has_trait = paranoid add = -75 } modifier = { has_trait = diplomat add = 75 } modifier = { has_trait = family_first add = 75 } } } #Option D: Refuse option = { name = hold_court.6070.d scope:6070_sender = { add_opinion = { target = root modifier = disappointed_opinion opinion = -30 } } stress_impact = { shy = medium_stress_impact_loss paranoid = medium_stress_impact_loss reclusive = medium_stress_impact_loss } ai_chance = { base = 100 ai_value_modifier = { ai_sociability = -0.25 ai_honor = -0.25 } modifier = { has_trait = shy add = 50 } modifier = { has_trait = reclusive add = 50 } modifier = { has_trait = paranoid add = 75 } } } #Option E: Refuse because child is a menace! option = { name = hold_court.6070.e trigger = { scope:6070_child = { OR = { has_trait = rowdy has_trait = bossy has_trait = callous has_trait = wrathful has_trait = sadistic } } } scope:6070_sender = { add_opinion = { target = root modifier = insult_opinion opinion = -50 } } stress_impact = { base = medium_stress_impact_loss } ai_chance = { base = 150 } } after = { scope:6070_sender = { clear_court_event_participation = yes } scope:6070_child = { clear_court_event_participation = yes } scope:6070_embassy = { clear_court_event_participation = yes if = { limit = { has_character_flag = 6070_remove_char_flag } silent_disappearance_effect = yes } } if = { limit = { exists = scope:6070_friend } scope:6070_friend = { clear_court_event_participation = yes } } if = { limit = { exists = scope:6070_betrothed } scope:6070_betrothed = { clear_court_event_participation = yes } } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # Settling the [people] # by Claudia Baldassi # 6080 ################################################## # A representative of another culture in a county you own offers to settle an unused holding. You can grant them the county, which cannot be revoked for a long while. # scripted_trigger hold_court_6080_valid_county_trigger = { is_landless_type_title = no any_county_province = { has_holding = no } culture = { this != root.culture } } hold_court.6080 = { type = court_event title = hold_court.6080.t desc = hold_court.6080.desc theme = court court_scene = { button_position_character = scope:6080_count court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:6080_count = { group = petitioners_group animation = happiness } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 20 } trigger = { any_held_county = { hold_court_6080_valid_county_trigger = yes } government_has_flag = government_is_feudal } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative } } immediate = { random_held_county = { limit = { hold_court_6080_valid_county_trigger = yes } save_scope_as = 6080_county } scope:6080_county.culture = { save_scope_as = 6080_culture } if = { limit = { any_courtier_or_guest = { has_court_event_flag = no is_available_healthy_ai_adult = yes culture = { this = scope:6080_culture } } } random_courtier_or_guest = { limit = { has_court_event_flag = no is_available_healthy_ai_adult = yes culture = { this = scope:6080_culture } } save_scope_as = 6080_count court_event_character_flag_effect = yes } } else = { create_character = { location = root.capital_province template = merchant_template culture = scope:6080_culture save_scope_as = 6080_count } scope:6080_count = { add_character_flag = 6080_remove_char_flag court_event_character_flag_effect = yes } } scope:6080_county = { random_county_province = { limit = { has_holding = no } save_scope_as = 6080_province } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } #Option C: Grant the barony option = { name = hold_court.6080.c trigger = { has_trait = administrator } scope:6080_province = { set_holding_type = church_holding } create_title_and_vassal_change = { type = granted save_scope_as = change add_claim_on_loss = no } scope:6080_province = { barony = { change_title_holder = { holder = scope:6080_count change = scope:change } } } custom_tooltip = { text = character_title_cannot_be_revoked_tt scope:6080_count = { add_character_flag = { flag = titles_protected years = 25 } } } resolve_title_and_vassal_change = scope:change scope:6080_county = { culture = { change_cultural_acceptance = { target = root.culture value = minor_cultural_acceptance_gain desc = cultural_acceptance_gain_hold_court_event_outcome } } } stress_impact = { greedy = medium_stress_impact_gain } ai_chance = { base = 100 modifier = { has_trait = greedy add = -50 } } } #Option A: Grant the county option = { name = hold_court.6080.a create_title_and_vassal_change = { type = granted save_scope_as = change add_claim_on_loss = no } scope:6080_county = { change_title_holder = { holder = scope:6080_count change = scope:change } } resolve_title_and_vassal_change = scope:change scope:6080_count = { add_opinion = { target = root modifier = grateful_opinion opinion = 30 } if = { limit = { government_has_flag = government_is_feudal } vassal_contract_set_obligation_level = { type = title_revocation_rights level = 1 } set_subject_contract_modification_blocked = yes } } custom_tooltip = hold_court.6080.a.tt scope:6080_county = { culture = { change_cultural_acceptance = { target = root.culture value = medium_cultural_acceptance_gain desc = cultural_acceptance_gain_hold_court_event_outcome } } add_county_modifier = { modifier = hold_court_grateful_peasants_modifier years = 50 } scope:6080_province = { random_list = { 40 = { set_holding_type = city_holding } 25 = { set_holding_type = castle_holding } 15 = { set_holding_type = church_holding } } } } stress_impact = { greedy = medium_stress_impact_gain } ai_chance = { base = 100 modifier = { has_trait = greedy add = -75 } } } #Option B: Say no option = { name = hold_court.6080.b scope:6080_county = { change_county_control = 10 } stress_impact = { generous = medium_stress_impact_gain } ai_chance = { base = 100 modifier = { has_trait = generous add = -50 } } } after = { scope:6080_count = { clear_court_event_participation = yes if = { limit = { has_character_flag = 6080_remove_char_flag is_landed = no } silent_disappearance_effect = yes } } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # Heretics at Large # by Claudia Baldassi # 6090 ################################################## # A vassal comes to you begging for help because their land is overrun by heretics/infidels. # scripted_trigger hold_court_6090_valid_vassal_trigger = { has_court_event_flag = no is_available_ai_adult = yes faith = root.faith is_landed_or_landless_administrative = yes capital_county ?= { hold_court_6090_valid_county_trigger = yes } } scripted_trigger hold_court_6090_valid_county_trigger = { is_landless_type_title = no faith = { this != root.faith faith_hostility_level = { target = root.faith value >= faith_hostile_level } } } hold_court.6090 = { type = court_event title = hold_court.6090.t desc = { desc = hold_court.6090.desc triggered_desc = { trigger = { exists = scope:high_almoner } desc = hold_court.6090.desc.almoner } triggered_desc = { trigger = { exists = scope:executioner } desc = hold_court.6090.desc.executioner } } theme = court lower_right_portrait = scope:high_almoner lower_center_portrait = scope:executioner lower_left_portrait = scope:court_chaplain court_scene = { button_position_character = scope:6090_vassal court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:6090_vassal = { group = petitioners_group animation = beg } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 20 } trigger = { any_vassal = { hold_court_6090_valid_vassal_trigger = yes } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike } ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly } } immediate = { random_vassal = { limit = { hold_court_6090_valid_vassal_trigger = yes } save_scope_as = 6090_vassal court_event_character_flag_effect = yes } if = { limit = { employs_court_position = high_almoner_court_position any_court_position_holder = { type = high_almoner_court_position is_available_ai_adult = yes has_court_event_flag = no } } random_court_position_holder = { type = high_almoner_court_position limit = { is_available_ai_adult = yes has_court_event_flag = no } save_scope_as = high_almoner court_event_character_flag_effect = yes } } if = { limit = { employs_court_position = executioner_court_position any_court_position_holder = { type = executioner_court_position is_available_ai_adult = yes has_court_event_flag = no } } random_court_position_holder = { type = executioner_court_position limit = { is_available_ai_adult = yes has_court_event_flag = no } save_scope_as = executioner court_event_character_flag_effect = yes } } if = { limit = { exists = cp:councillor_court_chaplain cp:councillor_court_chaplain = { is_available_ai_adult = yes has_court_event_flag = no } } cp:councillor_court_chaplain = { save_scope_as = court_chaplain court_event_character_flag_effect = yes } } scope:6090_vassal = { capital_county = { save_scope_as = 6090_main_county } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } #Option A: send court chaplain option = { name = hold_court.6090.a trigger = { exists = scope:court_chaplain } scope:6090_vassal = { every_sub_realm_county = { limit = { hold_court_6090_valid_county_trigger = yes } add_county_modifier = { modifier = easier_to_convert years = 15 } } } scope:court_chaplain = { set_council_task = { task_type = task_conversion target = scope:6090_main_county.title_province } } scope:6090_vassal = { add_opinion = { target = root modifier = pious_opinion opinion = 20 } } stress_impact = { cynical = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_zeal = 1 } modifier = { has_trait = cynical add = -75 } } } #Option B: send the almoners option = { name = hold_court.6090.b trigger = { exists = scope:high_almoner trigger_if = { limit = { is_ai = yes } short_term_treasury_or_gold >= major_treasury_or_gold_value } } scope:6090_vassal = { every_sub_realm_county = { limit = { hold_court_6090_valid_county_trigger = yes } add_county_modifier = { modifier = easier_to_convert years = 15 } } } remove_treasury_or_gold = medium_gold_value scope:6090_vassal = { every_sub_realm_county = { limit = { hold_court_6090_valid_county_trigger = yes } add_county_modifier = { modifier = court_6090_almoners_county_modifier years = 15 } } add_opinion = { target = root modifier = pious_opinion opinion = 30 } } scope:high_almoner = { add_opinion = { target = root modifier = pious_opinion opinion = 30 } } stress_impact = { greedy = major_stress_impact_gain } change_current_court_grandeur = medium_court_grandeur_gain add_piety = medium_piety_gain ai_chance = { base = 200 modifier = { gold < medium_gold_value add = -200 } ai_value_modifier = { ai_zeal = 1 } modifier = { has_trait = cynical add = -75 } } } #Option C: tolerance option = { name = hold_court.6090.c trigger = { NOT = { has_trait = zealous } } scope:6090_vassal = { every_sub_realm_county = { limit = { hold_court_6090_valid_county_trigger = yes } add_county_modifier = { modifier = governance_1074_local_faith_respected_modifier years = 10 } } add_opinion = { target = root modifier = disappointed_opinion opinion = -20 } } custom_tooltip = { text = title_granted_to_local_leader_tt create_character = { template = servant_character location = root.location faith = scope:6090_main_county.faith culture = scope:6090_main_county.culture save_scope_as = new_ruler } create_title_and_vassal_change = { type = granted save_scope_as = change add_claim_on_loss = no } scope:6090_main_county = { change_title_holder = { holder = scope:new_ruler change = scope:change } } resolve_title_and_vassal_change = scope:change scope:new_ruler ?= { if = { limit = { government_has_flag = government_is_feudal } vassal_contract_set_obligation_level = { type = religious_rights level = 1 } set_subject_contract_modification_blocked = yes } } add_hook = { target = scope:new_ruler type = loyalty_hook } } change_current_court_grandeur = minor_court_grandeur_gain add_prestige = medium_prestige_gain ai_chance = { base = 100 ai_value_modifier = { ai_zeal = -1 } modifier = { has_trait = cynical add = 75 } } } #Option D: send the executioners option = { name = hold_court.6090.d trigger = { exists = scope:executioner } scope:6090_vassal = { add_opinion = { target = root modifier = respect_opinion opinion = 25 } every_sub_realm_county = { limit = { hold_court_6090_valid_county_trigger = yes } add_county_modifier = { modifier = court_6090_executioners_county_modifier years = 5 } add_county_modifier = { modifier = easier_to_convert years = 15 } } } scope:executioner = { add_opinion = { target = root modifier = respect_opinion opinion = 25 } } stress_impact = { just = major_stress_impact_gain compassionate = massive_stress_impact_gain } ai_chance = { base = 150 ai_value_modifier = { ai_zeal = 1 ai_vengefulness = 0.5 } modifier = { has_trait = just add = -75 } modifier = { has_trait = compassionate add = -100 } modifier = { has_trait = zealous add = 50 } modifier = { has_trait = callous add = 75 } } } #Option E: It's your problem option = { name = hold_court.6090.e scope:6090_vassal = { add_opinion = { target = root modifier = disappointed_opinion opinion = -30 } if = { limit = { has_trait = zealous can_set_relation_rival_trigger = { CHARACTER = root } } progress_towards_rival_effect = { CHARACTER = root REASON = rival_province_help OPINION = 0 } } } stress_impact = { lazy = medium_stress_impact_loss diligent = major_stress_impact_gain } ai_chance = { base = 100 modifier = { has_trait = lazy add = 50 } modifier = { has_trait = diligent add = -75 } } } after = { scope:6090_vassal = { clear_court_event_participation = yes } if = { limit = { exists = scope:high_almoner } scope:high_almoner = { clear_court_event_participation = yes } } if = { limit = { exists = scope:executioner } scope:executioner = { clear_court_event_participation = yes } } if = { limit = { exists = scope:court_chaplain } scope:court_chaplain = { clear_court_event_participation = yes } } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # A Land at War # by Claudia Baldassi # 6100 - 6101 ################################################## # Two vassals have been waging a long inconclusive war and come to you to settle the dispute # scripted_trigger vassal_war_char_trigger = { has_court_event_flag = no is_at_war = yes is_at_war_with_liege = no is_available_ai_adult = yes } scripted_trigger vassal_war_conflict_trigger = { any_war_participant = { count = 0 OR = { top_liege = this NOT = { is_vassal_or_below_of = root } } } war_days >= 365 attacker_war_score >= -50 attacker_war_score <= 50 casus_belli = { primary_attacker = { vassal_war_char_trigger = yes is_vassal_of = root } primary_defender = { vassal_war_char_trigger = yes is_vassal_of = root } } } hold_court.6100 = { type = court_event title = hold_court.6100.t desc = { desc = hold_court.6100.desc triggered_desc = { trigger = { exists = scope:jester NOR = { scope:6100_vassal_1 = { has_trait = lifestyle_poet } scope:6100_vassal_2 = { has_trait = lifestyle_poet } } } desc = hold_court.6100.desc.jester } } theme = court lower_center_portrait = scope:jester court_scene = { button_position_character = scope:6100_vassal_1 court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:6100_vassal_1 = { group = petitioners_group animation = personality_bold } scope:6100_vassal_2 = { group = petitioners_group animation = personality_bold } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 10 } trigger = { any_vassal = { vassal_war_char_trigger = yes any_character_war = { vassal_war_conflict_trigger = yes } } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic } ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike } } immediate = { random_vassal = { limit = { vassal_war_char_trigger = yes } random_character_war = { limit = { vassal_war_conflict_trigger = yes } save_scope_as = vassal_war } } scope:vassal_war = { primary_attacker = { save_scope_as = 6100_vassal_1 court_event_character_flag_effect = yes } primary_defender = { save_scope_as = 6100_vassal_2 court_event_character_flag_effect = yes } } if = { limit = { employs_court_position = court_jester_court_position any_court_position_holder = { type = court_jester_court_position has_court_event_flag = no is_landed = no is_available_ai_adult = yes } } random_court_position_holder = { type = court_jester_court_position limit = { has_court_event_flag = no is_landed = no is_available_ai_adult = yes } save_scope_as = jester court_event_character_flag_effect = yes } } root = { save_scope_as = 6100_lord } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } #Option A: Attacker is right option = { name = hold_court.6100.a scope:vassal_war = { end_war = attacker } scope:6100_vassal_1 = { add_opinion = { target = root modifier = grateful_opinion opinion = 50 } } scope:6100_vassal_2 = { add_opinion = { target = root modifier = disappointed_opinion opinion = -50 } } ai_chance = { base = 100 modifier = { opinion = { target = scope:6100_vassal_1 value >= low_positive_opinion } opinion = { target = scope:6100_vassal_2 value <= low_positive_opinion } add = 50 } modifier = { opinion = { target = scope:6100_vassal_1 value >= high_positive_opinion } opinion = { target = scope:6100_vassal_2 value <= low_negative_opinion } add = 100 } } } #Option B: Defender is right option = { name = hold_court.6100.b scope:vassal_war = { end_war = defender } scope:6100_vassal_2 = { add_opinion = { target = root modifier = grateful_opinion opinion = 50 } } scope:6100_vassal_1 = { add_opinion = { target = root modifier = disappointed_opinion opinion = -50 } } ai_chance = { base = 100 modifier = { opinion = { target = scope:6100_vassal_2 value >= low_positive_opinion } opinion = { target = scope:6100_vassal_1 value <= low_positive_opinion } add = 50 } modifier = { opinion = { target = scope:6100_vassal_2 value >= high_positive_opinion } opinion = { target = scope:6100_vassal_1 value <= low_negative_opinion } add = 100 } } } #Option C: ask for a white peace option = { name = hold_court.6100.c trigger = { NOT = { exists = scope:jester } } scope:vassal_war = { end_war = white_peace } scope:6100_vassal_1 = { add_opinion = { target = root modifier = disappointed_opinion opinion = -20 } } scope:6100_vassal_2 = { add_opinion = { target = root modifier = disappointed_opinion opinion = -20 } } add_prestige = medium_prestige_gain add_piety = medium_piety_gain stress_impact = { wrathful = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = 0.5 } modifier = { has_trait = wrathful add = -50 } } } #Option D: cruel/arbitrary - throw them both in prison option = { name = hold_court.6100.d trigger = { OR = { has_trait = arbitrary has_trait = sadistic has_trait = paranoid has_trait = deceitful has_trait = torturer } NOT = { exists = scope:jester } } imprison_character_effect = { IMPRISONER = root TARGET = scope:6100_vassal_1 } imprison_character_effect = { IMPRISONER = root TARGET = scope:6100_vassal_2 } add_dread = major_dread_gain ai_chance = { base = 200 } } #Option E: propose a duel - if possible option = { name = hold_court.6100.e custom_tooltip = hold_court.6100.e.tt trigger = { scope:6100_vassal_1 = { can_start_single_combat_trigger = yes } scope:6100_vassal_2 = { can_start_single_combat_trigger = yes } NOR = { has_trait = arbitrary has_trait = sadistic has_trait = paranoid has_trait = deceitful has_trait = torturer } NOT = { exists = scope:jester } } configure_start_single_combat_effect = { SC_INITIATOR = scope:6100_vassal_1 SC_ATTACKER = scope:6100_vassal_1 SC_DEFENDER = scope:6100_vassal_2 FATALITY = no FIXED = no LOCALE = terrain_scope OUTPUT_EVENT = hold_court.6101 INVALIDATION_EVENT = fp1_tbc.0102 } add_prestige = medium_prestige_gain ai_chance = { base = 100 ai_value_modifier = { ai_honor = 1 } } } #Option F: jester proposes a funny solution/competition option = { name = hold_court.6100.f trigger = { exists = scope:jester NOR = { scope:6100_vassal_1 = { has_trait = lifestyle_poet } scope:6100_vassal_2 = { has_trait = lifestyle_poet } } } scope:6100_vassal_1 = { add_opinion = { target = root modifier = humiliated_opinion opinion = -75 } } scope:6100_vassal_2 = { add_opinion = { target = root modifier = humiliated_opinion opinion = -75 } } scope:6100_vassal_1 = { duel = { skill = diplomacy target = scope:6100_vassal_2 10 = { desc = hold_court.6100.f.1 compare_modifier = { value = scope:duel_value multiplier = 3 } root = { send_interface_toast = { title = hold_court.6100.f.1.t scope:vassal_war = { end_war = attacker } } } } 10 = { desc = hold_court.6100.f.2 compare_modifier = { value = scope:duel_value multiplier = -3 } root = { send_interface_toast = { title = hold_court.6100.f.2.t scope:vassal_war = { end_war = defender } } } } } } every_courtier_or_guest = { custom = custom.every_courtier_and_guest add_opinion = { target = root modifier = amused_opinion opinion = 10 } } stress_impact = { base = medium_stress_impact_loss } ai_chance = { base = 150 ai_value_modifier = { ai_sociability = 0.25 } } } #Option G: solve your own problems option = { name = hold_court.6100.g custom_tooltip = hold_court.6100.g.tt scope:6100_vassal_1 = { add_opinion = { target = root modifier = disappointed_opinion opinion = -20 } } scope:6100_vassal_2 = { add_opinion = { target = root modifier = disappointed_opinion opinion = -20 } } stress_impact = { lazy = medium_stress_impact_loss content = medium_stress_impact_loss diligent = medium_stress_impact_gain compassionate = medium_stress_impact_gain } ai_chance = { base = 100 modifier = { has_trait = lazy add = 50 } modifier = { has_trait = content add = 50 } modifier = { has_trait = diligent add = -50 } modifier = { has_trait = compassionate add = -50 } } } after = { scope:6100_vassal_1 = { clear_court_event_participation = yes } scope:6100_vassal_2 = { clear_court_event_participation = yes } if = { limit = { exists = scope:jester } scope:jester = { clear_court_event_participation = yes } } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } hold_court.6101 = { hidden = yes immediate = { scope:6100_lord = { send_interface_toast = { title = hold_court.6101.t left_icon = scope:sc_victor right_icon = scope:sc_loser custom_tooltip = hold_court.6101.tt } } if = { limit = { scope:sc_victor = { this = scope:6100_vassal_1 } } scope:vassal_war = { end_war = attacker } scope:6100_vassal_1 = { add_prestige = medium_prestige_gain } } else = { scope:vassal_war = { end_war = defender } scope:6100_vassal_2 = { add_prestige = medium_prestige_gain } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } } ################################################## # A Ravaged Land # by Claudia Baldassi # 6110 ################################################## # Two vassals are fighting a bitter & bloody war, with the land/peasants suffering as it rages onwards. The peasants come to complain and ask for a peaceful solution # scripted_trigger hold_court_6110_valid_pool_character_trigger = { has_court_event_flag = no is_available_ai_adult = yes is_lowborn = yes OR = { faith = scope:6110_vassal_1.capital_county.faith faith = scope:6110_vassal_2.capital_county.faith } OR = { culture = scope:6110_vassal_1.capital_county.culture culture = scope:6110_vassal_2.capital_county.culture } } hold_court.6110 = { type = court_event title = hold_court.6110.t desc = { desc = hold_court.6110.desc triggered_desc = { trigger = { exists = scope:almoner } desc = hold_court.6110.desc.almoner } } theme = court lower_left_portrait = scope:6110_vassal_1 lower_center_portrait = scope:6110_vassal_2 court_scene = { button_position_character = scope:6110_rep court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:6110_rep = { group = petitioners_group animation = beg } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 10 } trigger = { any_vassal = { vassal_war_char_trigger = yes any_character_war = { vassal_war_conflict_trigger = yes } } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike } ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative } } immediate = { random_vassal = { limit = { vassal_war_char_trigger = yes } random_character_war = { limit = { vassal_war_conflict_trigger = yes } save_scope_as = vassal_war } } scope:vassal_war = { primary_attacker = { save_scope_as = 6110_vassal_1 court_event_character_flag_effect = yes } primary_defender = { save_scope_as = 6110_vassal_2 court_event_character_flag_effect = yes } } if = { limit = { any_pool_character = { province = root.capital_province hold_court_6110_valid_pool_character_trigger = yes } } random_pool_character = { province = root.capital_province limit = { hold_court_6110_valid_pool_character_trigger = yes } save_scope_as = 6110_rep } } else = { create_character = { location = root.capital_province template = servant_character faith = scope:6110_vassal_2.capital_county.faith culture = scope:6110_vassal_2.capital_county.culture save_scope_as = 6110_rep } scope:6110_rep = { add_character_flag = 6110_remove_char_flag } } scope:6110_rep = { court_event_character_flag_effect = yes } hidden_effect = { add_courtier = scope:6110_rep } if = { limit = { employs_court_position = high_almoner_court_position any_court_position_holder = { type = high_almoner_court_position has_court_event_flag = no is_available_ai_adult = yes } } random_court_position_holder = { type = high_almoner_court_position limit = { has_court_event_flag = no is_available_ai_adult = yes } save_scope_as = almoner court_event_character_flag_effect = yes } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } #Option A: decree ceasefire (enforce demands) option = { name = hold_court.6110.a scope:vassal_war = { end_war = attacker } scope:6110_vassal_1 = { add_opinion = { target = root modifier = grateful_opinion opinion = 30 } every_sub_realm_county = { custom = 6110_custom_every_realm_1 change_county_control = 15 } } scope:6110_vassal_2 = { add_opinion = { target = root modifier = disappointed_opinion opinion = -30 } every_sub_realm_county = { custom = 6110_custom_every_realm_2 change_county_control = 15 } } ai_chance = { base = 100 modifier = { gold < medium_gold_value add = -100 } modifier = { has_trait = profligate add = 75 } modifier = { has_trait = improvident add = 75 } modifier = { has_trait = greedy add = -75 } ai_value_modifier = { ai_greed = 0.5 } } } #Option B: decree ceasefire (white peace) option = { name = hold_court.6110.b scope:vassal_war = { end_war = white_peace } scope:6110_vassal_1 = { add_opinion = { target = root modifier = disappointed_opinion opinion = -15 } every_sub_realm_county = { custom = 6110_custom_every_realm_1 change_county_control = 15 } } scope:6110_vassal_2 = { add_opinion = { target = root modifier = grateful_opinion opinion = 15 } every_sub_realm_county = { custom = 6110_custom_every_realm_2 change_county_control = 15 } } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = 0.5 } modifier = { has_trait = wrathful add = -50 } } } #Option C: decree ceasefire (surrender) option = { name = hold_court.6110.c scope:vassal_war = { end_war = defender } scope:6110_vassal_1 = { add_opinion = { target = root modifier = disappointed_opinion opinion = -30 } every_sub_realm_county = { custom = 6110_custom_every_realm_1 change_county_control = 15 } } scope:6110_vassal_2 = { add_opinion = { target = root modifier = grateful_opinion opinion = 30 } every_sub_realm_county = { custom = 6110_custom_every_realm_2 change_county_control = 15 } } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = 0.5 } modifier = { has_trait = wrathful add = -50 } } } #Option E: don't meddle option = { name = hold_court.6110.e scope:6110_vassal_1 = { add_opinion = { target = root modifier = pleased_opinion opinion = 5 } every_sub_realm_county = { custom = 6110_custom_every_realm_1 change_county_control = -5 } } scope:6110_vassal_2 = { add_opinion = { target = root modifier = pleased_opinion opinion = 5 } every_sub_realm_county = { custom = 6110_custom_every_realm_2 change_county_control = 5 } } ai_chance = { base = 100 } } after = { scope:6100_vassal_1 = { clear_court_event_participation = yes } scope:6100_vassal_2 = { clear_court_event_participation = yes } scope:6110_rep = { clear_court_event_participation = yes if = { limit = { has_character_flag = 6110_remove_char_flag is_imprisoned = no } silent_disappearance_effect = yes } } if = { limit = { exists = scope:almoner } scope:almoner = { clear_court_event_participation = yes } } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # The Day of Truth # by Claudia Baldassi # 6120 - 6121 ################################################## # Your steward requires you to invest in a large-scale survey of your kingdom and people to make taxation more efficient (think Domesday Book) # scripted_effect hold_court_6120_rewards = { every_sub_realm_county = { custom = all_realm_county change_county_control = 20 } if = { limit = { any_court_position_holder = { type = seneschal_court_position } } add_character_modifier = { modifier = 6121_seneschal_domesday_modifier years = 30 } } else = { add_character_modifier = { modifier = 6121_steward_domesday_modifier years = 30 } } } hold_court.6120 = { type = court_event title = hold_court.6120.t desc = { desc = hold_court.6120.desc first_valid = { triggered_desc = { trigger = { exists = scope:keeper_swans } desc = hold_court.6120.desc.swans } triggered_desc = { trigger = { exists = scope:seneschal } desc = hold_court.6120.desc.seneschal } } triggered_desc = { trigger = { exists = scope:jester } desc = hold_court.6120.desc.jester } } theme = court lower_left_portrait = scope:seneschal lower_center_portrait = scope:keeper_swans lower_right_portrait = scope:jester cooldown = { years = 10 } court_scene = { button_position_character = scope:steward court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:steward = { group = petitioners_group animation = personality_rational } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } trigger = { exists = cp:councillor_steward cp:councillor_steward = { has_court_event_flag = no is_available_ai_adult = yes } NOT = { #not using cooldown because the cooldown is only valid if you do the survey has_character_flag = 6120_has_domesday_book_flag } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative } } immediate = { cp:councillor_steward = { save_scope_as = steward court_event_character_flag_effect = yes } if = { limit = { employs_court_position = keeper_of_swans_court_position any_court_position_holder = { type = keeper_of_swans_court_position has_court_event_flag = no is_available_ai_adult = yes } } random_court_position_holder = { type = keeper_of_swans_court_position limit = { has_court_event_flag = no is_available_ai_adult = yes } save_scope_as = keeper_swans court_event_character_flag_effect = yes } } else_if = { limit = { employs_court_position = seneschal_court_position any_court_position_holder = { type = seneschal_court_position has_court_event_flag = no is_available_ai_adult = yes } } random_court_position_holder = { type = seneschal_court_position limit = { has_court_event_flag = no is_available_ai_adult = yes } save_scope_as = seneschal court_event_character_flag_effect = yes } } if = { limit = { employs_court_position = court_jester_court_position any_court_position_holder = { type = court_jester_court_position has_court_event_flag = no is_available_ai_adult = yes is_landed = no } } random_court_position_holder = { type = court_jester_court_position limit = { has_court_event_flag = no is_available_ai_adult = yes is_landed = no } save_scope_as = jester court_event_character_flag_effect = yes } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } #Option A: yes option = { name = hold_court.6120.a trigger = { NOT = { exists = scope:seneschal } trigger_if = { limit = { is_ai = yes } short_term_treasury_or_gold >= major_treasury_or_gold_value } } remove_treasury_or_gold = major_treasury_or_gold_value add_character_flag = { flag = 6120_has_domesday_book_flag years = 50 } show_as_tooltip = { random_list = { 100 = { show_chance = no desc = hold_court.6120.a.tt hold_court_6120_rewards = yes } } } hidden_effect = { scope:steward = { add_opinion = { target = root modifier = pleased_opinion opinion = 20 } } trigger_event = { id = hold_court.6121 days = 185 } } stress_impact = { lazy = major_stress_impact_gain content = major_stress_impact_gain } ai_chance = { base = 100 modifier = { gold < major_gold_value add = -100 } ai_value_modifier = { ai_energy = 0.25 ai_rationality = 0.5 ai_greed = -0.25 } modifier = { has_trait = lazy add = -75 } modifier = { has_trait = content add = -75 } } } #Option C: did you say TAXES?? option = { name = hold_court.6120.c every_vassal = { limit = { is_ai = yes } custom = 6120_every_vassal pay_treasury_or_gold = { target = root value = tiny_treasury_or_gold_value } } add_character_modifier = { modifier = 6120_extra_taxes_modifier years = 10 } stress_impact = { generous = major_stress_impact_gain compassionate = major_stress_impact_gain just = major_stress_impact_gain } ai_chance = { base = 100 modifier = { has_trait = generous add = -75 } modifier = { has_trait = compassionate add = -75 } modifier = { has_trait = just add = -75 } ai_value_modifier = { ai_greed = -0.5 } } } #Option D: no option = { name = hold_court.6120.d trigger = { NOT = { exists = scope:jester } } stress_impact = { ambitious = medium_stress_impact_gain diligent = major_stress_impact_gain } ai_chance = { base = 100 modifier = { has_trait = ambitious add = -50 } modifier = { has_trait = diligent add = -75 } } } #Option E: no but with jester option = { name = hold_court.6120.e trigger = { exists = scope:jester } scope:jester = { add_opinion = { target = root modifier = pleased_opinion opinion = 30 } } stress_impact = { ambitious = major_stress_impact_gain diligent = massive_stress_impact_gain } ai_chance = { base = 150 modifier = { has_trait = ambitious add = -50 } modifier = { has_trait = diligent add = -75 } } } after = { scope:steward = { clear_court_event_participation = yes } if = { limit = { exists = scope:keeper_swans } scope:keeper_swans = { clear_court_event_participation = yes } } if = { limit = { exists = scope:seneschal } scope:seneschal = { clear_court_event_participation = yes } } if = { limit = { exists = scope:jester } scope:jester = { clear_court_event_participation = yes } } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } hold_court.6121 = { type = character_event title = hold_court.6121.t desc = hold_court.6121.desc theme = court left_portrait = { character = root animation = happiness } right_portrait = { character = scope:6121_responsible animation = personality_rational } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } trigger = { OR = { AND = { exists = cp:councillor_steward cp:councillor_steward = { is_available_ai_adult = yes } } AND = { employs_court_position = seneschal_court_position any_court_position_holder = { type = seneschal_court_position is_available_ai_adult = yes } } } } immediate = { if = { limit = { employs_court_position = seneschal_court_position any_court_position_holder = { type = seneschal_court_position is_available_ai_adult = yes } } random_court_position_holder = { type = seneschal_court_position limit = { is_available_ai_adult = yes } save_scope_as = 6121_responsible } } else = { cp:councillor_steward = { save_scope_as = 6121_responsible } } } option = { name = hold_court.6121.a hold_court_6120_rewards = yes } } ################################################## # The Cadastre # by Claudia Baldassi # 6130 ################################################## # Someone suggests a "cadastral survey" - high cost for an increase of development in all counties you hold # scripted_trigger hold_court_6130_valid_child_trigger = { has_court_event_flag = no is_courtier_of = root age >= 11 is_available_ai_child = yes } scripted_effect hold_court_6130_a_rewards = { if = { limit = { OR = { has_character_flag = 6130_seneschal_assigned has_character_flag = 6131_seneschal_assigned } } every_held_county = { custom = custom.every_held_county change_development_progress_with_overflow = 50 } } else_if = { limit = { OR = { has_character_flag = 6130_steward_assigned has_character_flag = 6131_steward_assigned } } every_held_county = { custom = custom.every_held_county change_development_progress_with_overflow = 35 } } scope:6130_proposer = { add_prestige = minor_prestige_gain } every_held_county = { custom = custom.every_held_county add_county_modifier = { modifier = 6131_mapped_wilderness_county_modifier years = 10 } } add_prestige = medium_prestige_gain } hold_court.6130 = { type = court_event title = hold_court.6130.t desc = hold_court.6130.desc theme = court lower_left_portrait = scope:tutor lower_center_portrait = scope:m_hunt cooldown = { years = 10 } court_scene = { button_position_character = scope:6130_proposer court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:6130_proposer = { group = petitioners_group animation = personality_rational } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } trigger = { exists = cp:councillor_steward cp:councillor_steward = { has_court_event_flag = no is_available_ai_adult = yes } NOT = { # not cooldown because it's only valid if you do the cadastre has_character_flag = 6130_has_done_cadastre } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative } } immediate = { if = { limit = { employs_court_position = seneschal_court_position any_court_position_holder = { type = seneschal_court_position has_court_event_flag = no is_available_ai_adult = yes } } random_court_position_holder = { type = seneschal_court_position limit = { has_court_event_flag = no is_available_ai_adult = yes } save_scope_as = 6130_proposer save_scope_as = seneschal court_event_character_flag_effect = yes } add_character_flag = { flag = 6130_seneschal_assigned months = 6 } } else = { cp:councillor_steward = { save_scope_as = 6130_proposer court_event_character_flag_effect = yes } add_character_flag = { flag = 6130_steward_assigned days = 180 } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } #Option A: yes option = { name = hold_court.6130.a remove_treasury_or_gold = major_treasury_or_gold_value show_as_tooltip = { random_list = { 100 = { show_chance = no desc = hold_court.6130.a.tt hold_court_6130_a_rewards = yes } } } hidden_effect = { trigger_event = { id = hold_court.6131 days = { 93 171 } } add_character_flag = { flag = 6130_has_done_cadastre years = 20 } } stress_impact = { lazy = minor_stress_gain greedy = medium_stress_gain } ai_chance = { base = 100 modifier = { has_trait = lazy add = -50 } modifier = { has_trait = greedy add = -75 } modifier = { gold < major_treasury_or_gold_value factor = 0 } ai_value_modifier = { ai_greed = -0.25 ai_rationality = 0.25 } } } #Option D: no option = { name = hold_court.6130.d scope:6130_proposer = { add_opinion = { target = root modifier = disappointed_opinion opinion = -20 } } if = { limit = { has_character_flag = 6130_seneschal_assigned } remove_character_flag = 6130_seneschal_assigned } if = { limit = { has_character_flag = 6130_steward_assigned } remove_character_flag = 6130_steward_assigned } ai_chance = { base = 100 ai_value_modifier = { ai_energy = -0.25 } modifier = { gold < major_gold_value add = 100 } } } after = { scope:6130_proposer = { clear_court_event_participation = yes } if = { limit = { exists = scope:m_hunt } scope:m_hunt = { clear_court_event_participation = yes } } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } hold_court.6131 = { type = character_event title = hold_court.6131.t desc = hold_court.6131.desc theme = court right_portrait = { character = scope:6131_proposer animation = personality_rational } trigger = { trigger_if = { limit = { scope:6130_proposer = { is_alive = no } } OR = { exists = cp:councillor_steward any_court_position_holder = { type = seneschal_court_position } } } } immediate = { if = { limit = { scope:6130_proposer = { is_alive = yes } } scope:6130_proposer = { save_scope_as = 6131_proposer } } else_if = { limit = { any_court_position_holder = { type = seneschal_court_position } } random_court_position_holder = { type = seneschal_court_position save_scope_as = 6131_proposer } add_character_flag = { flag = 6131_seneschal_assigned days = 3 } } else = { cp:councillor_steward = { save_scope_as = 6131_proposer } add_character_flag = { flag = 6131_steward_assigned days = 3 } } if = { limit = { scope:6130_proposer = { is_alive = no } } if = { limit = { has_character_flag = 6130_seneschal_assigned } remove_character_flag = 6130_seneschal_assigned } if = { limit = { has_character_flag = 6130_steward_assigned } remove_character_flag = 6130_steward_assigned } } } option = { name = hold_court.6131.a hold_court_6130_a_rewards = yes } } ################################################## # A Cumbersome Gift # by Claudia Baldassi # 6140 ################################################## # A vassal offers you a bear/tiger/lion. Do you keep it for entertainment, kill it for a soft carpet, or...? If you keep it to show off during banquets, something might happen, good or bad! # scripted_trigger hold_court_6140_valid_vassal_trigger = { has_court_event_flag = no opinion = { target = root value >= 50 } is_available_healthy_ai_adult = yes any_held_county = { title_province = { OR = { hold_court_6140_europe_trigger = yes hold_court_6140_india_trigger = yes hold_court_6140_africa_trigger = yes } } } } scripted_trigger hold_court_6140_europe_trigger = { terrain = forest geographical_region = world_europe } scripted_trigger hold_court_6140_india_trigger = { terrain = jungle geographical_region = world_india } scripted_trigger hold_court_6140_africa_trigger = { OR = { terrain = jungle terrain = desert_mountains terrain = oasis terrain = drylands } geographical_region = world_africa } hold_court.6140 = { type = court_event title = hold_court.6140.t desc = hold_court.6140.desc theme = court lower_right_portrait = scope:jester court_scene = { button_position_character = scope:6140_gifter court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:6140_gifter = { group = petitioners_group animation = happiness } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 20 } trigger = { any_vassal = { hold_court_6140_valid_vassal_trigger = yes } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike } } immediate = { random_vassal = { limit = { hold_court_6140_valid_vassal_trigger = yes } save_scope_as = 6140_gifter court_event_character_flag_effect = yes random_held_county = { limit = { title_province = { OR = { hold_court_6140_europe_trigger = yes hold_court_6140_india_trigger = yes hold_court_6140_africa_trigger = yes } } } save_scope_as = location title_province = { save_scope_as = 6140_province } } } if = { limit = { employs_court_position = court_jester_court_position any_court_position_holder = { type = court_jester_court_position has_court_event_flag = no is_available_healthy_ai_adult = yes } } random_court_position_holder = { type = court_jester_court_position limit = { has_court_event_flag = no is_available_healthy_ai_adult = yes } save_scope_as = jester } } hunt_activity_dangerous_game_effect = { PROVINCE = scope:6140_province } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } #Option A: Kill it for pelt (chance to get an artifact) option = { name = hold_court.6140.a custom_tooltip = hold_court.6140.a.tt random_list = { 80 = { add_character_modifier = { modifier = 6140_new_carpet_modifier years = 50 } } 20 = { create_artifact_animal_hide_effect = { OWNER = root HUNTER = root LEGENDARY = no ANIMAL = root.var:animal_type } if = { limit = { exists = scope:newly_created_artifact } scope:newly_created_artifact = { save_scope_as = pelt } send_interface_toast = { title = hold_court.6140.artifact_toast left_icon = scope:pelt show_as_tooltip = { scope:pelt = { set_owner = root } } } } custom_tooltip = hold_court.6140.artifact_tt } } change_current_court_grandeur = minor_court_grandeur_gain ai_chance = { base = 100 } } #Option B: Keep it as pet option = { name = hold_court.6140.b change_current_court_grandeur = monumental_court_grandeur_gain add_character_modifier = { modifier = 6140_pet_modifier years = 10 } ai_chance = { base = 100 } } #Option C: if you have a jester option = { name = hold_court.6140.c trigger = { exists = scope:jester } change_current_court_grandeur = medium_court_grandeur_gain reverse_add_opinion = { target = scope:jester modifier = scared_opinion opinion = -30 } add_character_modifier = { modifier = 6140_pet_modifier years = 10 } every_courtier_or_guest = { custom = 6140_every_courtier_or_guest add_opinion = { target = root modifier = amused_opinion opinion = 10 } } scope:jester = { duel = { skill = prowess value = average_skill_rating 50 = { #Success! compare_modifier = { value = scope:duel_value multiplier = 4 min = -50 } desc = hold_court.6140.c.success root = { send_interface_toast = { title = hold_court.6140.c.success.tt left_icon = scope:jester every_courtier_or_guest = { custom = 6140_every_courtier_or_guest add_opinion = { target = scope:jester modifier = impressed_opinion opinion = 20 } } } } } 30 = { #Soft failure compare_modifier = { value = scope:duel_value multiplier = 1 min = -20 } desc = hold_court.6140.c.soft_failure root = { send_interface_toast = { title = hold_court.6140.c.soft_failure.tt left_icon = scope:jester every_courtier_or_guest = { custom = 6140_every_courtier_or_guest add_opinion = { target = scope:jester modifier = amused_opinion opinion = 10 } } } } } 15 = { #Middle failure compare_modifier = { value = scope:duel_value multiplier = -2 min = -20 } desc = hold_court.6140.c.middle_failure root = { send_interface_toast = { title = hold_court.6140.c.middle_failure.tt left_icon = scope:jester scope:jester = { random_list = { 30 = { apply_maimed_trait_and_modifier_effect = yes } 30 = { add_trait = one_legged } 30 = { add_trait = disfigured } } } } } } 5 = { #Hard failure compare_modifier = { value = scope:duel_value multiplier = -1 min = -1 } desc = hold_court.6140.c.hard_failure root = { send_interface_toast = { title = hold_court.6140.c.hard_failure.tt left_icon = scope:jester scope:jester = { death = { death_reason = death_riding_animal } } } } } } } ai_chance = { base = 120 ai_value_modifier = { ai_compassion = -0.25 ai_sociability = 0.25 } } } #Option D: if you are a torturer option = { name = hold_court.6140.d trigger = { OR = { has_trait = torturer has_trait = callous has_trait = sadistic } } trait = torturer trait = callous trait = sadistic add_character_modifier = { modifier = 6140_pet_modifier years = 10 } every_prisoner = { custom = 6140_every_prisoner add_opinion = { target = root modifier = scared_opinion opinion = -50 } add_character_modifier = 6140_animal_guardian_modifier } ai_chance = { base = 150 } } #Option E: Turn it away option = { name = hold_court.6140.e reverse_add_opinion = { target = scope:6140_gifter modifier = insult_opinion opinion = -40 } ai_chance = { base = 75 } } after = { remove_variable = animal_type scope:6140_gifter = { clear_court_event_participation = yes } if = { limit = { exists = scope:jester } scope:jester = { clear_court_event_participation = yes } } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } #feast events: # -host-only - you bring in the beast: you/someone gets hurt or killed, your master of the hunt intervenes, jester rides it, you intimidate your enemies, all guests are impressed (if no one dies) # -host-triggered - the host brings in the beast: you are scared/impressed, you/someone gets hurt or killed, master of the hunt of host intervenes, jester rides it ################################################## # Empty Coffers # by Claudia Baldassi # 6160 ################################################## # A vassal is bankrupt and is asking for money to be bailed out. # scripted_trigger hold_court_6160_valid_bankrupt_vassal_trigger = { has_court_event_flag = no is_available_ai_adult = yes gold < 0 } scripted_trigger hold_court_6160_valid_hook_trigger = { OR = { has_hook_of_type = { type = indebted_hook target = root } has_hook_of_type = { type = favor_hook target = root } } } scripted_trigger hold_court_6160_valid_friend_trigger = { has_court_event_flag = no is_available_ai_adult = yes OR = { has_any_good_relationship_with_root_trigger = yes is_child_of = root has_relation_best_friend = root has_relation_soulmate = root is_close_family_of = root } } hold_court.6160 = { type = court_event title = hold_court.6160.t desc = { desc = hold_court.6160.desc first_valid = { triggered_desc = { trigger = { scope:6160_vassal = { hold_court_6160_valid_friend_trigger = yes } } desc = hold_court.6160.desc_friend } triggered_desc = { trigger = { scope:6160_vassal = { hold_court_6160_valid_hook_trigger = yes } } desc = hold_court.6160.desc_hook } desc = hold_court.6160.desc_fallback } } theme = court lower_left_portrait = scope:almoner lower_center_portrait = scope:seneschal court_scene = { button_position_character = scope:6160_vassal court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:6160_vassal = { group = petitioners_group animation = beg } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 15 } trigger = { any_vassal = { hold_court_6160_valid_bankrupt_vassal_trigger = yes } } weight_multiplier = { base = 1 modifier = { factor = 3 any_vassal = { hold_court_6160_valid_bankrupt_vassal_trigger = yes hold_court_6160_valid_hook_trigger = yes } } modifier = { factor = 2 any_vassal = { hold_court_6160_valid_bankrupt_vassal_trigger = yes hold_court_6160_valid_friend_trigger = yes } } modifier = { factor = 0.1 gold < 0 } # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative } } immediate = { if = { limit = { any_vassal = { hold_court_6160_valid_bankrupt_vassal_trigger = yes hold_court_6160_valid_hook_trigger = yes } } random_vassal = { limit = { hold_court_6160_valid_bankrupt_vassal_trigger = yes hold_court_6160_valid_hook_trigger = yes } save_scope_as = 6160_vassal } } else_if = { limit = { any_vassal = { hold_court_6160_valid_bankrupt_vassal_trigger = yes hold_court_6160_valid_friend_trigger = yes } } random_vassal = { limit = { hold_court_6160_valid_bankrupt_vassal_trigger = yes hold_court_6160_valid_friend_trigger = yes } save_scope_as = 6160_vassal } } else = { random_vassal = { limit = { hold_court_6160_valid_bankrupt_vassal_trigger = yes } save_scope_as = 6160_vassal } } scope:6160_vassal = { court_event_character_flag_effect = yes } if = { limit = { employs_court_position = high_almoner_court_position any_court_position_holder = { type = high_almoner_court_position has_court_event_flag = no is_available_ai_adult = yes } } random_court_position_holder = { type = high_almoner_court_position limit = { has_court_event_flag = no is_available_ai_adult = yes } save_scope_as = almoner court_event_character_flag_effect = yes } } if = { limit = { employs_court_position = seneschal_court_position any_court_position_holder = { type = seneschal_court_position has_court_event_flag = no is_available_ai_adult = yes } } random_court_position_holder = { type = seneschal_court_position limit = { has_court_event_flag = no is_available_ai_adult = yes } save_scope_as = seneschal court_event_character_flag_effect = yes } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } #Option A: money for new hook option = { name = hold_court.6160.a trigger = { NOT = { scope:6160_vassal = { hold_court_6160_valid_hook_trigger = yes } } trigger_if = { limit = { is_ai = yes } short_term_gold >= major_gold_value } } pay_short_term_gold = { target = scope:6160_vassal gold = medium_gold_value } add_hook = { type = indebted_hook target = scope:6160_vassal } reverse_add_opinion = { target = scope:6160_vassal modifier = grateful_opinion opinion = 20 } stress_impact = { greedy = medium_stress_gain } ai_chance = { base = 100 modifier = { gold < medium_gold_value add = -95 } modifier = { has_trait = greedy add = -50 } ai_value_modifier = { ai_greed = -0.25 } } } #Option B: gold for old hook option = { name = hold_court.6160.b trigger = { scope:6160_vassal = { hold_court_6160_valid_hook_trigger = yes } trigger_if = { limit = { is_ai = yes } short_term_gold >= major_gold_value } } scope:6160_vassal = { remove_hook = { target = root } } pay_short_term_gold = { target = scope:6160_vassal gold = medium_gold_value } reverse_add_opinion = { target = scope:6160_vassal modifier = grateful_opinion opinion = 30 } stress_impact = { greedy = medium_stress_gain } ai_chance = { base = 120 modifier = { gold < medium_gold_value add = -95 } modifier = { has_trait = greedy add = -50 } ai_value_modifier = { ai_greed = -0.25 ai_honor = 0.25 } } } #Option C: gold for friend option = { name = hold_court.6160.c trigger = { scope:6160_vassal = { hold_court_6160_valid_friend_trigger = yes NOT = { hold_court_6160_valid_hook_trigger = yes } } trigger_if = { limit = { is_ai = yes } short_term_gold >= major_gold_value } } pay_short_term_gold = { target = scope:6160_vassal gold = medium_gold_value } add_prestige = major_prestige_gain change_current_court_grandeur = medium_court_grandeur_gain reverse_add_opinion = { target = scope:6160_vassal modifier = grateful_opinion opinion = 40 } stress_impact = { gregarious = medium_stress_loss improvident = major_stress_loss greedy = major_stress_gain } ai_chance = { base = 100 modifier = { gold < medium_gold_value add = -95 } modifier = { has_trait = greedy add = -75 } modifier = { has_trait = gregarious add = 50 } modifier = { has_trait = improvident add = 75 } ai_value_modifier = { ai_greed = -0.5 } } } #Option D: almoner option = { name = hold_court.6160.d trigger = { exists = scope:almoner NOT = { exists = scope:seneschal } # Prevent option bloat trigger_if = { limit = { is_ai = yes } short_term_gold >= major_gold_value } } pay_short_term_gold = { target = scope:6160_vassal gold = major_gold_value } add_piety = major_piety_gain change_current_court_grandeur = major_court_grandeur_gain reverse_add_opinion = { target = scope:6160_vassal modifier = grateful_opinion opinion = 30 } add_hook = { type = indebted_hook target = scope:6160_vassal } stress_impact = { improvident = major_stress_loss greedy = major_stress_gain } ai_chance = { base = 100 modifier = { gold < major_gold_value add = -95 } modifier = { has_trait = greedy add = -75 } modifier = { has_trait = improvident add = 75 } modifier = { has_trait = zealous add = 25 } ai_value_modifier = { ai_greed = -0.5 ai_zeal = 0.5 } } } #Option E: seneschal option = { name = hold_court.6160.e trigger = { exists = scope:seneschal trigger_if = { limit = { is_ai = yes } short_term_gold >= major_gold_value } } if = { limit = { scope:6160_vassal = { hold_court_6160_valid_hook_trigger = yes } } scope:6160_vassal = { remove_hook = { target = root } } } pay_treasury_or_gold = { target = scope:6160_vassal value = medium_treasury_or_gold_value } scope:6160_vassal = { add_character_modifier = { modifier = 6160_seneschal_help_modifier years = 5 } } add_hook = { type = indebted_hook target = scope:6160_vassal } add_prestige = medium_prestige_gain change_current_court_grandeur = medium_court_grandeur_gain reverse_add_opinion = { target = scope:6160_vassal modifier = grateful_opinion opinion = 30 } stress_impact = { greedy = medium_stress_gain } ai_chance = { base = 120 modifier = { gold < medium_treasury_or_gold_value add = -95 } modifier = { has_trait = greedy add = -50 } ai_value_modifier = { ai_greed = -0.25 } } } #Option F: no money to spare option = { name = hold_court.6160.f reverse_add_opinion = { target = scope:6160_vassal modifier = disappointed_opinion opinion = -10 } stress_impact = { generous = major_stress_gain improvident = massive_stress_gain } ai_chance = { base = 100 modifier = { gold < medium_gold_value add = 95 } modifier = { has_trait = greedy add = 50 } modifier = { has_trait = generous add = -75 } modifier = { has_trait = improvident add = -100 } ai_value_modifier = { ai_greed = 0.25 } } } after = { scope:6160_vassal = { clear_court_event_participation = yes } if = { limit = { exists = scope:almoner } scope:almoner = { clear_court_event_participation = yes } } if = { limit = { exists = scope:seneschal } scope:seneschal = { clear_court_event_participation = yes } } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # Ignoble Imprisonment # by Claudia Baldassi # 6170 ################################################## # A vassal has a family member imprisoned by another vassal in your realm. They petition you to have them released # scripted_trigger hold_court_6170_valid_vassal_trigger = { is_available_ai_adult = yes has_court_event_flag = no save_temporary_scope_as = vassal_scope OR = { any_close_or_extended_family_member = { hold_court_6170_valid_prisoner_trigger = yes } any_consort = { hold_court_6170_valid_prisoner_trigger = yes } betrothed ?= { hold_court_6170_valid_prisoner_trigger = yes } } } scripted_trigger hold_court_6170_valid_prisoner_trigger = { has_court_event_flag = no is_imprisoned = yes is_ai = yes imprisoner = { is_vassal_of = root NOR = { AND = { exists = scope:vassal_scope this = scope:vassal_scope } AND = { exists = scope:6170_vassal this = scope:6170_vassal } } } } hold_court.6170 = { type = court_event title = hold_court.6170.t desc = hold_court.6170.desc theme = court lower_right_portrait = scope:6170_relative lower_left_portrait = scope:6170_rival court_scene = { button_position_character = scope:6170_vassal court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:6170_vassal = { group = petitioners_group animation = beg } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 10 } trigger = { any_vassal = { hold_court_6170_valid_vassal_trigger = yes } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic } } immediate = { random_vassal = { limit = { hold_court_6170_valid_vassal_trigger = yes } save_scope_as = 6170_vassal court_event_character_flag_effect = yes } if = { limit = { scope:6170_vassal = { any_close_or_extended_family_member = { hold_court_6170_valid_prisoner_trigger = yes } } } scope:6170_vassal = { random_close_or_extended_family_member = { limit = { hold_court_6170_valid_prisoner_trigger = yes } save_scope_as = 6170_relative } } } else_if = { limit = { scope:6170_vassal = { any_consort = { hold_court_6170_valid_prisoner_trigger = yes } } } scope:6170_vassal = { random_consort = { limit = { hold_court_6170_valid_prisoner_trigger = yes } save_scope_as = 6170_relative } } } else = { scope:6170_vassal = { betrothed = { save_scope_as = 6170_relative } } } scope:6170_relative = { court_event_character_flag_effect = yes imprisoner = { save_scope_as = 6170_rival } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } #Option A: release them option = { name = hold_court.6170.a if = { limit = { can_add_hook = { type = favor_hook target = scope:6170_vassal } } add_hook = { type = favor_hook target = scope:6170_vassal } } if = { limit = { can_add_hook = { type = favor_hook target = scope:6170_relative } } add_hook = { type = favor_hook target = scope:6170_relative } } scope:6170_relative = { release_from_prison = yes } reverse_add_opinion = { target = scope:6170_vassal modifier = grateful_opinion opinion = 30 } if = { limit = { scope:6170_vassal = { can_set_relation_potential_friend_trigger = { CHARACTER = root } } } scope:6170_vassal = { set_relation_potential_friend = root } } reverse_add_opinion = { target = scope:6170_relative modifier = grateful_opinion opinion = 30 } stress_impact = { callous = medium_stress_gain torturer = medium_stress_gain arbitrary = medium_stress_gain sadistic = medium_stress_gain vengeful = medium_stress_gain } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = 1 } modifier = { has_trait = callous add = -50 } modifier = { has_trait = torturer add = -50 } modifier = { has_trait = arbitrary add = -50 } modifier = { has_trait = sadistic add = -50 } modifier = { has_trait = vengeful add = -50 } } } #Option E: I don't care option = { name = hold_court.6170.e stress_impact = { lazy = medium_stress_loss compassionate = medium_stress_gain diligent = medium_stress_gain } ai_chance = { base = 100 modifier = { has_trait = lazy add = 50 } modifier = { has_trait = compassionate add = -50 } modifier = { has_trait = diligent add = -50 } } } after = { scope:6170_vassal = { clear_court_event_participation = yes } scope:6170_relative = { clear_court_event_participation = yes } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ############################# # A Shadow in the Night # # by Claudia Baldassi # # 6190 # ############################# # Court physician has been spotted in the cemetery excavating the graves of the recently deceased. He is using them to practice dissecting/documentation but the locals are (understandably) not happy and want you to disown him. # hold_court.6190 = { type = court_event title = hold_court.6190.t desc = hold_court.6190.desc theme = court court_scene = { button_position_character = scope:6190_local court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:6190_local = { group = petitioners_group animation = anger } scope:physician = { group = petitioners_group animation = schadenfreude } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 20 } trigger = { employs_court_position = court_physician_court_position any_court_position_holder = { type = court_physician_court_position has_court_event_flag = no is_available_ai_adult = yes OR = { has_trait = ambitious has_trait = cynical has_trait = callous has_trait = sadistic } } } weight_multiplier = { base = 1 modifier = { add = 20 employs_court_position = court_physician_court_position any_court_position_holder = { type = court_physician_court_position has_focus_or_focus_trait_trigger = { FOCUS = intrigue_intimidation_focus } } } modifier = { add = 10 employs_court_position = court_physician_court_position any_court_position_holder = { type = court_physician_court_position has_focus_or_focus_trait_trigger = { FOCUS = learning_medicine_focus } } } modifier = { add = 5 employs_court_position = court_physician_court_position any_court_position_holder = { type = court_physician_court_position has_trait = lifestyle_physician has_trait_xp = { trait = lifestyle_physician value >= 100 } } } modifier = { add = 10 employs_court_position = court_physician_court_position any_court_position_holder = { type = court_physician_court_position has_trait = ambitious } } modifier = { add = 10 employs_court_position = court_physician_court_position any_court_position_holder = { type = court_physician_court_position has_trait = cynical } } modifier = { add = 10 employs_court_position = court_physician_court_position any_court_position_holder = { type = court_physician_court_position has_trait = callous } } modifier = { add = 10 employs_court_position = court_physician_court_position any_court_position_holder = { type = court_physician_court_position has_trait = sadistic } } # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly } } immediate = { random_court_position_holder = { type = court_physician_court_position limit = { has_court_event_flag = no is_available_ai_adult = yes } save_scope_as = physician court_event_character_flag_effect = yes } create_character = { location = root.capital_province template = generic_peasant_character save_scope_as = 6190_local } scope:6190_local = { court_event_character_flag_effect = yes } capital_province = { save_scope_as = capital } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } #Option A: these studies are necessary option = { name = hold_court.6190.a capital_county = { add_county_modifier = { modifier = 6190_grave_robbing_county_modifier years = 10 } } every_courtier_or_guest = { custom = custom.every_non_callous_or_sadistic_courtier_and_guest limit = { NOR = { has_trait = callous has_trait = sadistic this = scope:physician } } add_opinion = { target = root modifier = disappointed_opinion opinion = -10 } } scope:physician = { if = { limit = { NAND = { has_trait = lifestyle_physician has_trait_xp = { trait = lifestyle_physician value >= 100 } } } random = { chance = 15 physician_lifestyle_rank_up_effect = yes } } else_if = { limit = { NOT = { has_trait = lifestyle_physician } } add_trait = lifestyle_physician } else = { add_learning_skill = 1 } } stress_impact = { zealous = major_stress_impact_gain compassionate = major_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_zeal = -0.25 } } } #Option B: I wanna take part! FOR SCIENCE! option = { name = hold_court.6190.b trigger = { OR = { has_trait = lifestyle_physician has_trait = cynical has_trait = callous has_trait = sadistic AND = { has_focus_or_focus_trait_trigger = { FOCUS = learning_medicine_focus } has_trait = ambitious } has_focus_or_focus_trait_trigger = { FOCUS = intrigue_intimidation_focus } } } add_dread = medium_dread_gain change_current_court_grandeur = minor_court_grandeur_loss add_learning_lifestyle_perk_points = 1 every_courtier_or_guest = { custom = custom.every_non_callous_or_sadistic_courtier_and_guest limit = { NOR = { has_trait = callous has_trait = sadistic this = scope:physician } } add_opinion = { target = root modifier = impious_opinion opinion = -20 } } scope:physician = { if = { limit = { NAND = { has_trait = lifestyle_physician has_trait_xp = { trait = lifestyle_physician value >= 100 } } } random = { chance = 20 physician_lifestyle_rank_up_effect = yes } } else_if = { limit = { NOT = { has_trait = lifestyle_physician } } add_trait = lifestyle_physician } else = { add_learning_skill = 1 } } capital_county = { add_county_modifier = { modifier = 6190_grave_robbing_county_modifier years = 10 } } stress_impact = { compassionate = major_stress_impact_gain zealous = major_stress_impact_gain just = major_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_zeal = -0.5 ai_compassion = -0.5 } } } #Option D: Blasphemy! Punish the physician option = { name = hold_court.6190.d revoke_court_position = { recipient = scope:physician court_position = court_physician_court_position } rightfully_imprison_character_effect = { TARGET = scope:physician IMPRISONER = root } capital_county = { add_county_modifier = { modifier = 6190_safe_graves_county_modifier years = 10 } } every_courtier_or_guest = { custom = custom.every_zealous_courtier_and_guest limit = { has_trait = zealous this != scope:physician } add_opinion = { target = root modifier = pleased_opinion opinion = 25 } } stress_impact = { zealous = medium_stress_impact_loss sadistic = medium_stress_impact_gain callous = medium_stress_impact_gain torturer = medium_stress_impact_gain vengeful = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_zeal = 1 ai_compassion = -1 } } } #Option E: Just stop option = { name = hold_court.6190.e scope:physician = { add_opinion = { target = root modifier = disappointed_opinion opinion = -5 } } capital_county = { add_county_modifier = { modifier = 6190_safe_graves_county_modifier years = 10 } } ai_chance = { base = 100 } } after = { scope:physician = { clear_court_event_participation = yes } scope:6190_local = { clear_court_event_participation = yes if = { limit = { is_alive = yes is_imprisoned = no } silent_disappearance_effect = yes } } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ######################### # A Land of Foreigners # # by Claudia Baldassi # # 6210 # ######################### # A vassal comes to you begging for help because their land is overrun by unhappy barbarians (= other culture). # scripted_trigger hold_court_6210_valid_vassal_trigger = { has_court_event_flag = no culture = { this = root.culture any_parent_culture_or_above = { save_temporary_scope_as = parent } } is_landed_or_landless_administrative = yes is_available_ai_adult = yes exists = capital_county OR = { capital_county = { hold_court_6210_valid_county_trigger = yes } AND = { realm_size >= 4 any_sub_realm_county = { count >= 3 hold_court_6210_valid_county_trigger = yes } } } } scripted_trigger hold_court_6210_valid_county_trigger = { culture = { NOR = { this = root.culture any_parent_culture_or_above = { this = root.culture this = scope:parent } } } } hold_court.6210 = { type = court_event title = hold_court.6210.t desc = hold_court.6210.desc theme = court lower_left_portrait = { trigger = { exists = scope:steward } character = scope:steward } lower_center_portrait = { trigger = { exists = scope:r_architect } character = scope:r_architect } cooldown = { years = 10 } court_scene = { button_position_character = scope:6210_vassal court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:6210_vassal = { group = petitioners_group animation = beg } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } trigger = { any_vassal = { hold_court_6210_valid_vassal_trigger = yes } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike } } immediate = { random_vassal = { limit = { hold_court_6210_valid_vassal_trigger = yes } save_scope_as = 6210_vassal court_event_character_flag_effect = yes } if = { limit = { any_court_position_holder = { type = royal_architect_court_position has_court_event_flag = no is_available_ai_adult = yes } } random_court_position_holder = { type = royal_architect_court_position limit = { has_court_event_flag = no is_available_ai_adult = yes } save_scope_as = r_architect court_event_character_flag_effect = yes } } if = { limit = { exists = cp:councillor_steward cp:councillor_steward = { has_court_event_flag = no is_available_ai_adult = yes } } cp:councillor_steward = { save_scope_as = steward court_event_character_flag_effect = yes } } if = { limit = { scope:6210_vassal.capital_county = { hold_court_6210_valid_county_trigger = yes } } scope:6210_vassal.capital_county = { save_scope_as = 6210_main_county } } else = { scope:6210_vassal = { random_sub_realm_county = { limit = { hold_court_6210_valid_county_trigger = yes } save_scope_as = 6210_main_county } } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } #Option A: send steward option = { name = hold_court.6210.a trigger = { exists = scope:steward } scope:steward = { set_council_task = { task_type = task_promote_culture target = scope:6210_main_county.title_province } } scope:6210_main_county = { add_county_modifier = { modifier = easier_to_culture_convert years = 25 } } scope:6210_vassal = { add_opinion = { target = root modifier = pleased_opinion opinion = 20 } } stress_impact = { humble = medium_stress_impact_gain } ai_chance = { base = 100 modifier = { has_trait = humble add = -25 } } } #Option B: send the architect option = { name = hold_court.6210.b trigger = { exists = scope:r_architect trigger_if = { limit = { is_ai = yes } short_term_gold >= major_gold_value } } custom_tooltip = hold_court.6210.b.tt remove_treasury_or_gold = medium_treasury_or_gold_value scope:6210_vassal = { every_sub_realm_county = { limit = { hold_court_6210_valid_county_trigger = yes } add_county_modifier = { modifier = 6210_architect_county_modifier years = 5 } } add_opinion = { target = root modifier = pleased_opinion opinion = 30 } } scope:r_architect = { add_opinion = { target = root modifier = pleased_opinion opinion = 30 } } change_current_court_grandeur = major_court_grandeur_gain add_prestige = medium_prestige_gain scope:6210_main_county = { add_county_modifier = { modifier = easier_to_culture_convert years = 25 } } stress_impact = { greedy = major_stress_impact_gain } ai_chance = { base = 200 modifier = { gold < medium_treasury_or_gold_value add = -200 } } } #Option C: tolerance option = { name = hold_court.6210.c scope:6210_vassal = { every_sub_realm_county = { limit = { hold_court_6210_valid_county_trigger = yes } add_county_modifier = { modifier = governance_1073_conversion_resistance_modifier years = 10 } } } scope:6210_main_county.culture = { change_cultural_acceptance = { target = root.culture value = minor_cultural_acceptance_gain desc = cultural_acceptance_gain_hold_court_event_outcome } } change_current_court_grandeur = minor_court_grandeur_gain add_prestige = medium_prestige_gain ai_chance = { base = 100 modifier = { has_trait = trusting add = 20 } modifier = { has_trait = compassionate add = 30 } modifier = { culture = { has_cultural_pillar = ethos_egalitarian } add = 100 } modifier = { has_trait = paranoid add = -100 } } } after = { scope:6210_vassal = { clear_court_event_participation = yes } if = { limit = { exists = scope:r_architect } scope:r_architect = { clear_court_event_participation = yes } } if = { limit = { exists = scope:steward } scope:steward = { clear_court_event_participation = yes } } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ############################# # A Massive Problem # # by Claudia Baldassi # # 6230 # ############################# # A vassal in India has problem with a horde of elephants that have gone berserk and brought ruin and destruction in one (several?) of his counties. He pleads for help to manage the elephants and rebuild! # hold_court.6230 = { type = court_event title = hold_court.6230.t desc = hold_court.6230.desc theme = court lower_left_portrait = scope:m_horse court_scene = { button_position_character = scope:6230_vassal court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:6230_vassal = { group = petitioners_group animation = beg } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 20 } trigger = { any_vassal_or_below = { has_court_event_flag = no is_available_ai_adult = yes is_landed_or_landless_administrative = yes capital_province = { geographical_region = world_innovation_elephants } } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike } } immediate = { random_vassal_or_below = { limit = { has_court_event_flag = no is_available_ai_adult = yes is_landed_or_landless_administrative = yes capital_province = { geographical_region = world_innovation_elephants } } save_scope_as = 6230_vassal court_event_character_flag_effect = yes } scope:6230_vassal.capital_province = { save_scope_as = 6230_province } if = { limit = { employs_court_position = master_of_horse_court_position any_court_position_holder = { type = master_of_horse_court_position has_court_event_flag = no is_available_ai_adult = yes } } random_court_position_holder = { type = master_of_horse_court_position limit = { has_court_event_flag = no is_available_ai_adult = yes } save_scope_as = m_horse court_event_character_flag_effect = yes } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } #Option A: send gold to rebuild option = { name = hold_court.6230.a trigger = { trigger_if = { limit = { is_ai = yes } short_term_gold >= major_gold_value } } pay_treasury_or_gold = { target = scope:6230_vassal value = medium_gold_value } reverse_add_opinion = { target = scope:6230_vassal modifier = grateful_opinion opinion = 20 } scope:6230_province.county = { add_county_modifier = { modifier = 6230_rebuilding years = 25 } } add_prestige = medium_prestige_gain stress_impact = { greedy = major_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_greed = 1 } modifier = { add = -200 gold < medium_gold_value } } } #Option B: send aid in capturing the elephants option = { name = hold_court.6230.b trigger = { NOT = { exists = scope:m_horse } } duel = { skill = martial value = average_skill_rating 40 = { desc = hold_court.6230.b.success compare_modifier = { value = scope:duel_value multiplier = 3 } send_interface_toast = { title = hold_court.6230.b.success.tt add_character_modifier = { modifier = 6230_new_elephants_modifier years = 10 } change_current_court_grandeur = medium_court_grandeur_gain } } 60 = { desc = hold_court.6230.b.failure compare_modifier = { value = scope:duel_value multiplier = -3 } send_interface_toast = { title = hold_court.6230.b.failure.tt change_current_court_grandeur = medium_court_grandeur_loss scope:6230_province.county = { change_county_control = -5 } } } } stress_impact = { lazy = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_energy = -0.5 } modifier = { add = -75 martial < 10 } } } #Option C: send master of horse to help option = { name = hold_court.6230.c trigger = { exists = scope:m_horse } scope:m_horse = { duel = { skill = martial value = average_skill_rating 40 = { desc = hold_court.6230.c.success compare_modifier = { value = scope:duel_value multiplier = 3 } root = { send_interface_toast = { title = hold_court.6230.b.success.tt add_character_modifier = { modifier = 6230_new_elephants_modifier years = 10 } change_current_court_grandeur = medium_court_grandeur_gain } } } 60 = { desc = hold_court.6230.b.failure compare_modifier = { value = scope:duel_value multiplier = -3 } root = { send_interface_toast = { title = hold_court.6230.b.failure.tt change_current_court_grandeur = medium_court_grandeur_loss scope:6230_province.county = { change_county_control = -5 } } } } } } ai_chance = { base = 100 } } #Option D: Ganesh leads them option = { name = hold_court.6230.d trigger = { faith.religion = religion:hinduism_religion } add_piety = major_piety_gain stress_impact = { cynical = major_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_zeal = 1 } } } #Option E: nope option = { name = hold_court.6230.e reverse_add_opinion = { target = scope:6230_vassal modifier = disappointed_opinion opinion = -20 } scope:6230_province.county = { change_county_control = -5 } ai_chance = { base = 75 } } after = { scope:6230_vassal = { clear_court_event_participation = yes } if = { limit = { exists = scope:m_horse } scope:m_horse = { clear_court_event_participation = yes } } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # Joe Parkin ################################################## # 8001 Stifled Commerce # 8010 The X Frontier # 8020 Sacred Claims # 8030 Civic Rivalry # 8040 Special Treatment # 8050 - 8053 Royal Service # 8060 - 8061 A Temple for X # 8070 - 8071 The Growth of X # 8080 The Republic of X # 8090 A Place at Court # 8100 A Child of the Court # 8110 Serious Business # 8120 Evangelical Backlash # 8130 Cultural Pride # 8140 - 8142 Puppy Patronage # 8150 Contractual Compromise # 8160 Public Accusation # 8161 Personal Matter # 8170 - 8171 Services Rendered # 8180 Noble Privileges # 8190 Enemy Within # 8200 Servant of God # 8210 Rightful Lands # 8220 - 8222 Opportunity Knocks # 8240 Thy Neighbor's Wife # 8241 Spoiled for Choice # 8250 Hankering for X # 8251 The Dancer # 8260 The King's Peace # 8270 Oath of Fealty # 8280 Nomadic Neighbors ################################################## ################################################## # Stifled Commerce # by Joe Parkin # 8001 ################################################## scripted_trigger hold_court_available_mayor_trigger = { has_court_event_flag = no is_available_ai_adult = yes primary_title = { tier = tier_barony NOT = { has_variable = hold_court_city_cooldown_var } } government_has_flag = government_is_republic NOT = { is_close_or_extended_family_of = root } } scripted_effect hold_court_8001_revoke_title_effect = { if = { limit = { has_relation_friend = root } remove_relation_friend = root } if = { # If they recently imprisoned you, or asked for your excommunication, they become your rival limit = { OR = { has_opinion_modifier = { target = root modifier = released_from_prison } AND = { exists = var:requested_my_excommunication var:requested_my_excommunication = root } } NOT = { has_relation_rival = root } } if = { limit = { has_relation_potential_rival = root } remove_relation_potential_rival = root } root = { set_relation_rival = { target = prev reason = rival_revoked_title } } } else = { progress_towards_rival_effect = { CHARACTER = root REASON = rival_removed_mayor OPINION = 0 } } } # A merchant complains about the mayor of their town hold_court.8001 = { type = court_event title = hold_court.8001.t desc = hold_court.8001.desc theme = court lower_right_portrait = scope:portrait court_scene = { button_position_character = scope:merchant court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:merchant = { group = petitioners_group animation = beg } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 10 } trigger = { any_vassal = { hold_court_available_mayor_trigger = yes } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative } } immediate = { every_vassal = { limit = { hold_court_available_mayor_trigger = yes } add_to_list = potential_mayor } random_in_list = { list = potential_mayor limit = { OR = { has_trait = lazy has_trait = greedy has_trait = deceitful has_trait = arbitrary stewardship <= mediocre_skill_rating } } alternative_limit = { NOR = { has_trait = diligent has_trait = generous has_trait = honest has_trait = just stewardship >= decent_skill_rating } } alternative_limit = { always = yes } save_scope_as = mayor save_scope_as = portrait court_event_character_flag_effect = yes primary_title = { save_scope_as = town set_variable = { name = hold_court_city_cooldown_var years = 25 } } } create_character = { template = merchant_template location = root.capital_province trait = honest save_scope_as = merchant after_creation = { add_character_flag = created } } scope:merchant = { court_event_character_flag_effect = yes } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { # Replace the Mayor name = hold_court.8001.a scope:mayor = { depose = yes # depose_effect unnecessary for AI mayor add_opinion = { modifier = angry_opinion target = root opinion = -40 } hold_court_8001_revoke_title_effect = yes } scope:town.county = { change_development_progress = 50 } add_character_modifier = { modifier = hold_court_8001_deposed_modifier years = 10 } ai_chance = { base = 100 ai_value_modifier = { ai_honor = 0.25 ai_compassion = 0.25 ai_rationality = 0.25 ai_greed = -0.5 ai_boldness = -0.5 } } } option = { # Make Merchant the Mayor name = hold_court.8001.b create_title_and_vassal_change = { type = revoked save_scope_as = change add_claim_on_loss = no } scope:town = { change_title_holder = { holder = scope:merchant change = scope:change } } resolve_title_and_vassal_change = scope:change scope:mayor = { add_opinion = { modifier = angry_opinion target = root opinion = -60 } hold_court_8001_revoke_title_effect = yes } random_list = { 30 = { modifier = { add = 5 scope:merchant = { has_trait = diligent } } modifier = { add = 5 scope:merchant = { has_trait = generous } } modifier = { add = 5 scope:merchant = { has_trait = honest } } modifier = { add = 5 scope:merchant = { has_trait = just } } modifier = { add = 5 scope:merchant = { stewardship >= decent_skill_rating } } send_interface_toast = { title = hold_court.8001.b.tt_success scope:town.county = { add_county_modifier = { modifier = hold_court_8001_merchant_boon_modifier years = 15 } change_development_level = 1 } } } 70 = { modifier = { add = 5 scope:merchant = { has_trait = lazy } } modifier = { add = 5 scope:merchant = { has_trait = greedy } } modifier = { add = 5 scope:merchant = { has_trait = arbitrary } } modifier = { add = 5 scope:merchant = { has_trait = deceitful } } modifier = { add = 5 scope:merchant = { stewardship <= 6 } } modifier = { add = 5 scope:merchant = { age < 25 } } modifier = { add = 5 scope:merchant = { has_trait = infirm } } modifier = { add = 5 scope:merchant = { has_trait = incapable } } modifier = { add = 5 scope:merchant = { age > 60 } } send_interface_toast = { title = hold_court.8001.b.tt_failure scope:town.county = { add_county_modifier = { modifier = hold_court_8001_merchant_bust_modifier years = 15 } } stress_impact = { just = medium_stress_impact_gain compassionate = medium_stress_impact_gain } } } } add_character_modifier = { modifier = hold_court_8001_deposed_modifier years = 10 } ai_chance = { base = 100 ai_value_modifier = { ai_honor = -0.25 ai_compassion = -0.25 ai_rationality = -0.25 ai_greed = -0.5 ai_boldness = 0.5 } } } option = { # Fine the Mayor name = hold_court.8001.c duel = { skill = stewardship value = average_skill_rating 8 = { compare_modifier = { value = scope:duel_value multiplier = 2 } desc = hold_court.8001.c.tt_success send_interface_toast = { title = hold_court.8001.c.tt_success scope:mayor = { pay_short_term_gold = { target = root gold = root.medium_gold_value } add_opinion = { modifier = annoyed_opinion target = root opinion = -15 } } } } 12 = { compare_modifier = { value = scope:duel_value multiplier = -2 min = -9 } desc = hold_court.8001.c.tt_failure send_interface_toast = { title = hold_court.8001.c.tt_failure scope:town.county = { scope:town.county = { change_development_progress = -50 } add_county_modifier = { modifier = hold_court_8001_ignored_modifier years = 10 } } stress_impact = { just = medium_stress_impact_gain greedy = medium_stress_impact_gain } } } } ai_chance = { base = 100 ai_value_modifier = { ai_rationality = 0.25 ai_greed = 0.5 } modifier = { #Weight up for duel. add = 15 stewardship > scope:mayor.stewardship } } } option = { # Compensate the Merchants name = hold_court.8001.d trigger = { trigger_if = { limit = { is_ai = yes } short_term_treasury_or_gold >= major_treasury_or_gold_value } } remove_treasury_or_gold = medium_treasury_or_gold_value scope:mayor = { add_opinion = { modifier = grateful_opinion target = root opinion = 10 } } scope:town.county = { add_county_modifier = { modifier = hold_court_8001_compensated_modifier years = 15 } } stress_impact = { greedy = massive_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_honor = 0.25 ai_compassion = 0.5 ai_greed = -0.5 } modifier = { #Weight down for stress. add = -30 has_trait = greedy } } } option = { # Imprison the Merchant name = hold_court.8001.e imprison_character_effect = { TARGET = scope:merchant IMPRISONER = root } scope:mayor = { add_opinion = { modifier = grateful_opinion target = root opinion = 20 } } add_dread = minor_dread_gain scope:town.county = { add_county_modifier = { modifier = hold_court_8001_imprisoned_modifier years = 10 } } stress_impact = { just = medium_stress_impact_gain calm = medium_stress_impact_gain compassionate = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_honor = -0.5 ai_greed = -0.5 ai_rationality = -0.25 ai_compassion = -0.25 ai_boldness = 0.5 } modifier = { #Weight down for stress. add = -30 has_trait = just } modifier = { #Weight down for stress. add = -30 has_trait = calm } modifier = { #Weight down for stress. add = -15 has_trait = compassionate } } } after = { scope:mayor = { clear_court_event_participation = yes } scope:merchant = { clear_court_event_participation = yes if = { limit = { is_landed = no is_imprisoned = no } silent_disappearance_effect = yes } } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes scope:merchant = { if = { limit = { is_ruler = no } silent_disappearance_ai_if_created_effect = yes } } } } ################################################## # The X Frontier # by Joe Parkin # 8010 ################################################## scripted_trigger hold_court_8010_lord_trigger = { has_court_event_flag = no is_available_ai_adult = yes primary_title.tier >= tier_county government_has_flag = government_is_feudal subject_contract_is_blocked_from_modification = no OR = { vassal_contract_obligation_level_can_be_increased = fortification_rights NOT = { vassal_contract_has_flag = has_march_contract } } } scripted_trigger hold_court_8010_contract_trigger = { scope:frontier_lord = { government_has_flag = government_is_feudal vassal_contract_has_modifiable_obligations = yes OR = { AND = { root.culture = { has_innovation = innovation_battlements } vassal_contract_obligation_level_can_be_increased = fortification_rights } AND = { root.culture = { has_innovation = innovation_burhs } NOT = { vassal_contract_has_flag = has_march_contract } } } } } # A vassal bordering a powerful neighbor is worried hold_court.8010 = { type = court_event title = hold_court.8010.t desc = hold_court.8010.desc theme = court lower_right_portrait = scope:neighboring_enemy court_scene = { button_position_character = scope:frontier_lord court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:frontier_lord = { group = petitioners_group animation = worry } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 20 } trigger = { top_liege = this NOT = { any_vassal = { has_character_modifier = hold_court_8010_fortifications_modifier } } any_vassal = { hold_court_8010_lord_trigger = yes any_sub_realm_county = { hold_court_8010_county_trigger = yes } } } weight_multiplier = { base = 1 modifier = { add = 1 any_vassal = { hold_court_8010_lord_trigger = yes any_sub_realm_county = { hold_court_8010_county_trigger = yes } primary_title.tier >= 2 OR = { has_trait = paranoid has_trait = lazy has_trait = craven is_powerful_vassal = yes } } } # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike } } immediate = { capital_barony = { save_scope_as = capital } ordered_vassal = { limit = { hold_court_8010_lord_trigger = yes any_sub_realm_county = { hold_court_8010_county_trigger = yes } # Prefer Dukes... primary_title.tier = tier_duchy } alternative_limit = { hold_court_8010_lord_trigger = yes any_sub_realm_county = { hold_court_8010_county_trigger = yes } # ...then Counts... primary_title.tier = tier_county } alternative_limit = { hold_court_8010_lord_trigger = yes any_sub_realm_county = { hold_court_8010_county_trigger = yes } # ...then Kings primary_title.tier = tier_kingdom } order_by = hold_court_8010_border_length_value save_scope_as = frontier_lord court_event_character_flag_effect = yes random_sub_realm_county = { limit = { hold_court_8010_county_trigger = yes } title_province.barony = { save_scope_as = frontier_barony } ordered_title_to_title_neighboring_county = { limit = { holder.top_liege = { NOR = { this = root is_allied_to = root max_military_strength < hold_court_8010_75_strength_value # 75% of root's soldiers } } } order_by = holder.top_liege.max_military_strength de_jure_liege = { save_scope_as = neighboring_duchy } holder.top_liege = { save_scope_as = neighboring_enemy } } } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { # Give vassal defensive contract (March/Fortification Rights) name = hold_court.8010.a trigger = { hold_court_8010_contract_trigger = yes OR = { AND = { culture = { has_innovation = innovation_burhs } scope:frontier_lord.primary_title.tier >= tier_duchy } AND = { culture = { has_innovation = innovation_battlements } scope:frontier_lord = { vassal_contract_obligation_level_can_be_increased = fortification_rights } } } } scope:frontier_lord = { if = { limit = { AND = { root.culture = { has_innovation = innovation_battlements } vassal_contract_obligation_level_can_be_increased = fortification_rights } } vassal_contract_set_obligation_level = { type = fortification_rights level = 1 } } else = { vassal_contract_set_obligation_level = { type = special_contract level = 2 } } add_opinion = { modifier = grateful_opinion target = root opinion = 20 } } if = { limit = { can_add_hook = { target = scope:frontier_lord type = indebted_hook } } add_hook = { target = scope:frontier_lord type = indebted_hook } } stress_impact = { greedy = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_greed = -0.5 ai_compassion = 0.5 } modifier = { #Weight down for stress. add = -30 has_trait = greedy } } } option = { # Pay for vassals fortications (if A is unavailable) name = hold_court.8010.b trigger = { trigger_if = { limit = { is_ai = yes } short_term_treasury_or_gold >= major_treasury_or_gold_value } } remove_treasury_or_gold = medium_treasury_or_gold_value scope:frontier_barony.county = { add_county_modifier = { modifier = hold_court_8010_fortifications_modifier years = 15 } } scope:frontier_lord = { add_opinion = { modifier = grateful_opinion target = root opinion = 20 } } if = { limit = { can_add_hook = { target = scope:frontier_lord type = indebted_hook } } add_hook = { target = scope:frontier_lord type = indebted_hook } } stress_impact = { greedy = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_greed = -0.5 ai_compassion = 0.5 } modifier = { #Weight down for stress. add = -30 has_trait = greedy } } } option = { # Fortify your own capital instead name = hold_court.8010.c trigger = { trigger_if = { limit = { is_ai = yes } short_term_treasury_or_gold >= major_treasury_or_gold_value } } remove_treasury_or_gold = medium_treasury_or_gold_value capital_county = { add_county_modifier = { modifier = hold_court_8010_fortifications_modifier years = 15 } } scope:frontier_lord = { add_opinion = { modifier = annoyed_opinion target = root opinion = -15 } } stress_impact = { brave = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_boldness = -0.5 ai_honor = -0.5 } modifier = { #Weight down for stress. add = -30 has_trait = brave } } } option = { # Argue that it is unwarranted name = hold_court.8010.d duel = { skill = diplomacy value = average_skill_rating 8 = { compare_modifier = { value = scope:duel_value multiplier = 2 } desc = hold_court.8010.d.tt_success send_interface_toast = { title = hold_court.8010.d.tt_success left_icon = scope:frontier_lord change_current_court_grandeur = medium_court_grandeur_gain } } 12 = { compare_modifier = { value = scope:duel_value multiplier = -1 } desc = hold_court.8010.d.tt_failure send_interface_toast = { title = hold_court.8010.d.tt_failure left_icon = scope:frontier_lord add_prestige = minor_prestige_loss scope:frontier_lord = { add_opinion = { modifier = dismissive_opinion target = root opinion = -20 } } } } } stress_impact = { honest = medium_stress_impact_gain paranoid = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_rationality = 0.25 ai_greed = 0.5 } modifier = { #Weight down for stress. add = -30 has_trait = honest } modifier = { #Weight down for stress. add = -15 has_trait = paranoid } modifier = { #Weight up for duel. add = 15 diplomacy > scope:frontier_lord.diplomacy } } } option = { # Dismiss vassal name = hold_court.8010.e add_character_modifier = { modifier = hold_court_8010_vassal_modifier years = 10 } scope:frontier_lord = { add_opinion = { modifier = dismissive_opinion target = root opinion = -10 } } ai_chance = { base = 100 ai_value_modifier = { ai_boldness = 0.5 ai_greed = 0.5 } } } after = { scope:frontier_lord = { clear_court_event_participation = yes } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # Sacred Claims # by Joe Parkin # 8020 ################################################## scripted_trigger hold_court_8020_county_trigger = { this != root.capital_county any_county_province = { barony = { is_holy_site_of = root.faith } } faith = root.faith holder = { has_court_event_flag = no NOR = { government_has_flag = government_is_theocracy this = root.cp:councillor_court_chaplain trigger_if = { limit = { exists = root.faith.religious_head root != root.faith.religious_head } this = root.faith.religious_head } } any_held_title = { count >= 2 title_tier = county } OR = { this = root AND = { is_available_ai_adult = yes NOT = { has_any_bad_relationship_with_root_trigger = yes } } } } } scripted_trigger hold_court_8020_cathedral_barony_trigger = { is_holy_site_of = root.faith title_province = { OR = { has_building = holy_site_cathedral_01 has_building = holy_site_mosque_01 has_building = holy_site_pagan_grand_temple_01 has_building = holy_site_indian_grand_temple_01 has_building = holy_site_other_grand_temple_01 # TGP has_building = holy_site_buddhist_grand_temple_01 has_building = holy_site_japanese_temple_01 has_building = holy_site_chinese_temple_01 has_building = holy_site_se_asia_pagan_temple_01 } } } scripted_effect hold_court_8020_grant_effect = { create_title_and_vassal_change = { type = granted save_scope_as = change add_claim_on_loss = no } if = { limit = { exists = scope:vassal } scope:vassal = { add_opinion = { modifier = angry_opinion target = root opinion = -20 } } } scope:target_county = { change_title_holder = { holder = scope:candidate change = scope:change } } resolve_title_and_vassal_change = scope:change hidden_effect = { scope:candidate = { change_government = theocracy_government } } } # Chaplain asks for a holy site hold_court.8020 = { type = court_event title = hold_court.8020.t desc = { desc = hold_court.8020.desc.intro first_valid = { triggered_desc = { trigger = { exists = scope:pope } desc = hold_court.8020.desc.body_pope } desc = hold_court.8020.desc.body_fallback } desc = hold_court.8020.desc.body_1 first_valid = { triggered_desc = { trigger = { scope:target_county.holder = root } # Owns target personally desc = hold_court.8020.desc.body_personal } desc = hold_court.8020.desc.body_vassal # Vassal owns target } desc = hold_court.8020.desc.body_2 } theme = realm lower_left_portrait = scope:candidate lower_right_portrait = scope:pope artifact = { target = scope:bishop_relic position = lower_center_portrait } court_scene = { button_position_character = scope:bishop court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:bishop = { group = petitioners_group animation = chaplain } scope:vassal_or_candidate = { group = petitioners_group animation = disapproval } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 30 } trigger = { NOT = { has_character_flag = has_had_county_request_event } top_liege = this exists = cp:councillor_court_chaplain cp:councillor_court_chaplain = { has_court_event_flag = no is_available_ai_adult = yes } faith = { has_doctrine = doctrine_theocracy_temporal NOT = { has_doctrine_parameter = unreformed } } any_realm_county = { # Less than 10% theocratic counties in realm percent <= 0.1 holder = { government_has_flag = government_is_theocracy } } any_realm_county = { hold_court_8020_county_trigger = yes } # there is a holy_site in the realm } weight_multiplier = { base = 1 modifier = { # County has a cathedral add = 1 any_realm_county = { hold_court_8020_county_trigger = yes any_county_province = { barony = { hold_court_8020_cathedral_barony_trigger = yes } } OR = { holder = root holder = { is_vassal_of = root } } } } modifier = { # No prince bishops in realm add = 0.5 NOT = { any_vassal_or_below = { primary_title = { tier >= tier_county } government_has_flag = government_is_theocracy } } } modifier = { # Favor emperors add = 1 highest_held_title_tier = tier_empire } # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly } } immediate = { add_character_flag = { flag = has_had_county_request_event years = 15 } cp:councillor_court_chaplain = { save_scope_as = bishop court_event_character_flag_effect = yes } hidden_effect = { if = { limit = { OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion } } create_artifact_pedestal_reliquary_christian_effect = { OWNER = scope:bishop } } else_if = { limit = { religion = religion:islam_religion } create_artifact_pedestal_reliquary_islam_effect = { OWNER = scope:bishop } } else_if = { limit = { religion = religion:buddhism_religion } create_artifact_pedestal_reliquary_buddhism_effect = { OWNER = scope:bishop } } else_if = { limit = { religion = religion:judaism_religion } create_artifact_pedestal_reliquary_judaism_effect = { OWNER = scope:bishop } } else = { create_artifact_sculpture_religious_effect = { OWNER = scope:bishop } } scope:newly_created_artifact = { save_scope_as = bishop_relic } } if = { limit = { exists = faith.religious_head NOR = { faith.religious_head = root faith.religious_head = scope:bishop } } faith.religious_head = { save_scope_as = pope } } every_realm_county = { limit = { hold_court_8020_county_trigger = yes } add_to_list = potential_princebishoprics } random_in_list = { list = potential_princebishoprics limit = { holder = root any_county_province = { barony = { hold_court_8020_cathedral_barony_trigger = yes } } } alternative_limit = { any_county_province = { barony = { hold_court_8020_cathedral_barony_trigger = yes } } } alternative_limit = { holder = root } alternative_limit = { always = yes } save_scope_as = target_county root = { set_variable = { # Save var for custom loc name = holy_site_var value = scope:target_county } } } if = { limit = { scope:target_county.holder != root } scope:target_county.holder = { save_scope_as = vassal court_event_character_flag_effect = yes } } create_character = { age = { 30 50 } template = priest_character_template location = root.capital_province trait = devoted save_scope_as = candidate } scope:candidate = { court_event_character_flag_effect = yes } if = { limit = { exists = scope:vassal } scope:vassal = { save_scope_as = vassal_or_candidate } } else = { scope:candidate = { save_scope_as = vassal_or_candidate } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { # Gift the county name = hold_court.8020.a scope:bishop_relic = { set_owner = { target = root history = { location = root.capital_province actor = scope:bishop recipient = root type = given } } } hold_court_8020_grant_effect = yes scope:target_county = { if = { limit = { any_county_province = { barony = { hold_court_8020_cathedral_barony_trigger = yes } } } root = { add_piety = massive_piety_gain } } else = { root = { add_piety = major_piety_gain } } } scope:bishop = { add_opinion = { modifier = pleased_opinion target = root opinion = 30 } } if = { limit = { exists = scope:pope } scope:pope = { add_opinion = { modifier = pleased_opinion target = root opinion = 15 } } } if = { limit = { scope:target_county.holder = root } stress_impact = { greedy = medium_stress_impact_gain } } ai_chance = { base = 100 ai_value_modifier = { ai_boldness = -0.5 ai_greed = -0.5 } modifier = { #Weight down for stress. add = -30 has_trait = greedy } } } option = { # Theocratic debate name = hold_court.8020.b duel = { skill = learning target = scope:bishop 8 = { desc = hold_court.8020.b.tt_success compare_modifier = { value = scope:duel_value multiplier = 2 } send_interface_toast = { title = hold_court.8020.b.tt_success left_icon = scope:bishop change_current_court_grandeur = medium_court_grandeur_gain add_prestige = medium_prestige_gain } } 12 = { desc = hold_court.8020.b.tt_failure compare_modifier = { value = scope:duel_value multiplier = -1 } send_interface_toast = { title = hold_court.8020.b.tt_failure left_icon = scope:bishop hold_court_8020_grant_effect = yes scope:target_county = { if = { limit = { any_county_province = { barony = { hold_court_8020_cathedral_barony_trigger = yes } } } root = { add_piety = major_piety_gain } } else = { root = { add_piety = minor_piety_gain } } } scope:bishop = { add_opinion = { target = root modifier = pleased_opinion opinion = 10 } } if = { limit = { exists = scope:pope } scope:pope = { add_opinion = { target = root modifier = pleased_opinion opinion = 5 } } } } } } stress_impact = { cynical = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_boldness = 0.5 ai_greed = 0.5 } modifier = { #Weight down for stress. add = -30 has_trait = cynical } modifier = { #Weight up for duel. add = 15 learning > scope:bishop.learning } } } option = { # Refuse no pope + no candidate name = hold_court.8020.c trigger = { NOT = { exists = scope:pope } scope:target_county.holder = root } add_piety = minor_piety_loss scope:bishop = { add_opinion = { modifier = refusal_opinion target = root opinion = -20 } } stress_impact = { zealous = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_boldness = 0.5 ai_greed = 0.5 } modifier = { #Weight down for stress. add = -30 has_trait = zealous } } } option = { # Refuse no pope + candidate name = hold_court.8020.d trigger = { NOT = { exists = scope:pope } scope:target_county.holder != root } add_piety = minor_piety_loss scope:target_county.holder = { if = { limit = { this != root } add_opinion = { modifier = grateful_opinion target = root opinion = 15 } } } scope:bishop = { add_opinion = { modifier = refusal_opinion target = root opinion = -10 } } stress_impact = { zealous = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_boldness = 0.5 ai_greed = 0.5 } modifier = { #Weight down for stress. add = -30 has_trait = zealous } } } option = { # Refuse pope + no candidate name = hold_court.8020.e trigger = { exists = scope:pope scope:target_county.holder = root } add_piety = minor_piety_loss scope:bishop = { add_opinion = { modifier = refusal_opinion target = root opinion = -20 } } scope:pope = { add_opinion = { modifier = refusal_opinion target = root opinion = -10 } } stress_impact = { zealous = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_boldness = 0.5 ai_greed = 0.5 } modifier = { #Weight down for stress. add = -30 has_trait = zealous } } } option = { # Refuse pope + candidate name = hold_court.8020.e trigger = { exists = scope:pope scope:target_county.holder != root } add_piety = minor_piety_loss scope:target_county.holder = { add_opinion = { modifier = grateful_opinion target = root opinion = 15 } } scope:bishop = { add_opinion = { modifier = refusal_opinion target = root opinion = -10 } } scope:pope = { add_opinion = { modifier = refusal_opinion target = root opinion = -5 } } stress_impact = { zealous = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_boldness = 0.5 ai_greed = 0.5 } modifier = { #Weight down for stress. add = -30 has_trait = zealous } } } after = { scope:bishop = { clear_court_event_participation = yes } if = { limit = { exists = scope:vassal } scope:vassal = { clear_court_event_participation = yes } } if = { limit = { exists = scope:candidate } scope:candidate = { clear_court_event_participation = yes if = { limit = { is_alive = yes is_landed = no } silent_disappearance_effect = yes } } } remove_variable = holy_site_var # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # Special Treatment # by Joe Parkin # 8040 ################################################## scripted_trigger hold_court_8040_vassal_trigger = { has_court_event_flag = no faith != root.faith faith = { NOT = { has_doctrine_parameter = unreformed } } government_has_flag = government_is_feudal vassal_contract_obligation_level_can_be_increased = religious_rights liege.faith = { faith_hostility_level = { target = prev.faith value < faith_evil_level } } } # A vassal of another faith asks for religious freedom hold_court.8040 = { type = court_event title = hold_court.8040.t desc = { desc = hold_court.8040.desc first_valid = { triggered_desc = { trigger = { scope:infidel_vassal.religion = root.religion } desc = hold_court.8040.desc.intro_same_religion } triggered_desc = { trigger = { always = yes } desc = hold_court.8040.desc.intro_fallback } } } theme = court lower_right_portrait = scope:bishop court_scene = { button_position_character = scope:infidel_vassal court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:infidel_vassal = { group = petitioners_group animation = worry } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 10 } trigger = { faith = { NOT = { has_doctrine_parameter = unreformed } } any_vassal = { hold_court_8040_vassal_trigger = yes } exists = cp:councillor_court_chaplain cp:councillor_court_chaplain = { has_court_event_flag = no is_available_ai_adult = yes } } weight_multiplier = { base = 1 modifier = { add = 1 any_vassal = { hold_court_8040_vassal_trigger = yes is_powerful_vassal = yes } } # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic } } immediate = { cp:councillor_court_chaplain = { save_scope_as = bishop court_event_character_flag_effect = yes } ordered_vassal = { limit = { hold_court_8040_vassal_trigger = yes } order_by = max_military_strength save_scope_as = infidel_vassal court_event_character_flag_effect = yes } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { # Grant religious rights name = hold_court.8040.a if = { limit = { can_add_hook = { target = scope:infidel_vassal type = indebted_hook } } add_hook = { target = scope:infidel_vassal type = indebted_hook } } scope:infidel_vassal = { vassal_contract_set_obligation_level = { type = religious_rights level = 1 } add_opinion = { modifier = grateful_opinion target = root opinion = 20 } } scope:bishop = { if = { limit = { scope:infidel_vassal.religion = root.religion } add_opinion = { modifier = disappointed_opinion target = root opinion = -10 } } else = { add_opinion = { modifier = disappointed_opinion target = root opinion = -20 } } } stress_impact = { zealous = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = 0.5 ai_rationality = 0.25 } modifier = { #Weight down for stress. add = -30 has_trait = zealous } } } option = { # Learning debate with same religion name = hold_court.8040.b trigger = { scope:infidel_vassal.religion = root.religion } duel = { skill = learning target = scope:infidel_vassal 10 = { desc = hold_court.8040.c.tt_accept compare_modifier = { value = scope:duel_value multiplier = 1 } send_interface_toast = { title = hold_court.8040.c.tt_accept left_icon = scope:infidel_vassal right_icon = scope:bishop add_prestige = medium_prestige_gain save_scope_as = actor scope:infidel_vassal = { save_scope_as = recipient } custom_tooltip = demand_conversion_tt hidden_effect = { demand_conversion_interaction_effect = yes } } } 10 = { desc = hold_court.8040.c.tt_refuse compare_modifier = { value = scope:duel_value multiplier = -1 } send_interface_toast = { title = hold_court.8040.c.tt_refuse left_icon = scope:infidel_vassal right_icon = scope:bishop scope:bishop = { add_opinion = { modifier = disappointed_opinion target = root opinion = -10 } } } } } } option = { # Different faith demand name = { trigger = { scope:infidel_vassal.religion != root.religion } text = hold_court.8040.c.religion } name = { trigger = { scope:infidel_vassal.faith != root.faith } text = hold_court.8040.c.faith } scope:infidel_vassal = { add_opinion = { modifier = demanded_my_conversion_opinion target = root opinion = -10 } } random_list = { 40 = { modifier = { add = -20 scope:infidel_vassal.religion != root.religion } show_chance = no desc = hold_court.8040.c.tt_accept send_interface_toast = { title = hold_court.8040.c.tt_accept left_icon = scope:infidel_vassal add_piety = medium_piety_gain save_scope_as = actor scope:infidel_vassal = { save_scope_as = recipient } custom_tooltip = demand_conversion_tt hidden_effect = { demand_conversion_interaction_effect = yes } scope:bishop = { add_opinion = { modifier = pious_opinion target = root opinion = 10 } } } } 60 = { show_chance = no desc = hold_court.8040.c.tt_refuse send_interface_toast = { title = hold_court.8040.c.tt_refuse left_icon = scope:infidel_vassal stress_impact = { zealous = medium_stress_impact_gain } } } } stress_impact = { cynical = medium_stress_impact_gain compassionate = medium_stress_impact_gain humble = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_boldness = 0.5 ai_compassion = -0.5 ai_rationality = -0.25 } modifier = { #Weight down for stress. add = -30 has_trait = compassionate } modifier = { #Weight down for stress. add = -30 has_trait = cynical } modifier = { #Weight down for stress. add = -15 has_trait = humble } } } option = { # Refuse name = hold_court.8040.d add_piety = minor_piety_gain scope:infidel_vassal = { add_opinion = { modifier = disappointed_opinion target = root opinion = -5 } } scope:bishop = { add_opinion = { modifier = disappointed_opinion target = root opinion = -5 } } } after = { scope:bishop = { clear_court_event_participation = yes } scope:infidel_vassal = { clear_court_event_participation = yes } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # Royal Service # by Joe Parkin # 8050 - 054 ################################################## scripted_trigger hold_court_8050_knight_trigger = { has_court_event_flag = no is_available_ai_adult = yes is_landed = no faith = root.faith top_liege = root NOT = { is_primary_heir_of = prev } # prev = scope:vassal NOT = { is_knight_of = root } NOT = { has_relation_rival = root } NOT = { is_close_family_of = root } court_position_martial_trigger = { EMPLOYER = root } } scripted_trigger hold_court_8050_vassal_trigger = { has_court_event_flag = no is_available_ai_adult = yes NOT = { is_close_family_of = root } NOT = { has_relation_rival = root } NOT = { has_court_position = bodyguard_court_position } OR = { any_close_or_extended_family_member = { hold_court_8050_knight_trigger = yes } any_courtier = { has_relation_friend = prev hold_court_8050_knight_trigger = yes } is_ai = no } } scripted_effect hold_court_8050_accepted_knight_effect = { scope:knight = { hidden_effect = { if = { limit = { is_foreign_court_or_pool_guest = yes } return_to_court = yes } set_employer = root set_knight_status = force } set_variable = { name = hold_court_8050_knight value = scope:vassal years = 10 } add_prestige = minor_prestige_gain add_opinion = { modifier = grateful_opinion target = root opinion = 20 } } trigger_event = { id = hold_court.8054 days = 365 } send_interface_message = { title = hold_court.8050.a.tt_toast left_icon = scope:knight right_icon = scope:vassal scope:knight = { custom_tooltip = hold_court.8050.a.tt_knight } } } # Vassal presents their relative as a potential knight hold_court.8050 = { type = court_event title = hold_court.8050.t desc = { desc = hold_court.8050.desc first_valid = { triggered_desc = { trigger = { scope:knight.prowess >= extremely_high_skill_rating } desc = hold_court.8050.desc_talented } triggered_desc = { trigger = { scope:knight.prowess >= decent_skill_rating } desc = hold_court.8050.desc_suitable } triggered_desc = { trigger = { scope:knight.prowess >= mediocre_skill_rating } desc = hold_court.8050.desc_passing } desc = hold_court.8050.desc_unsuitable } } theme = court lower_right_portrait = scope:grandmaster lower_center_portrait = { character = scope:bodyguard trigger = { scope:knight.prowess > medium_skill_rating NOT = { scope:vassal = { has_hook = root } } } } court_scene = { button_position_character = scope:vassal court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:vassal = { group = petitioners_group animation = admiration } scope:knight = { group = petitioners_group animation = marshal } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 15 } trigger = { any_vassal = { hold_court_8050_vassal_trigger = yes } NOT = { has_character_flag = hold_court_8051_flag } } weight_multiplier = { base = 1 modifier = { add = 1 number_of_knights < max_number_of_knights } # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike } } immediate = { random_vassal = { # Find a vassal with someone to present limit = { hold_court_8050_vassal_trigger = yes } save_scope_as = vassal court_event_character_flag_effect = yes if = { limit = { any_close_or_extended_family_member = { hold_court_8050_knight_trigger = yes } } random_close_or_extended_family_member = { limit = { hold_court_8050_knight_trigger = yes } save_scope_as = knight set_signature_weapon_effect = yes } } else_if = { limit = { any_courtier = { has_relation_friend = scope:vassal hold_court_8050_knight_trigger = yes } } random_courtier = { limit = { has_relation_friend = scope:vassal hold_court_8050_knight_trigger = yes } save_scope_as = knight set_signature_weapon_effect = yes } } else = { create_character = { gender_female_chance = root_soldier_female_chance location = scope:vassal.capital_province template = soldier_friend_character dynasty = generate save_scope_as = knight } scope:knight = { set_signature_weapon_effect = yes } } } scope:knight = { court_event_character_flag_effect = yes } faith = { # Find a holy order if = { limit = { any_faith_holy_order = { always = yes } } random_faith_holy_order = { limit = { leader = { NOT = { has_relation_rival = scope:knight } } } alternative_limit = { always = yes } leader = { save_scope_as = grandmaster } } } } if = { limit = { any_court_position_holder = { type = bodyguard_court_position count >= 2 this != scope:vassal } } ordered_court_position_holder = { type = bodyguard_court_position limit = { this != scope:vassal } order_by = { value = 0 subtract = prowess } save_scope_as = bodyguard } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { # Accept name = hold_court.8050.a highlight_portrait = scope:knight set_variable = { name = hold_court_8050_promise value = scope:knight years = 10 } scope:vassal = { add_opinion = { modifier = grateful_opinion target = root opinion = 10 } if = { limit = { has_hook = root } custom_tooltip = hold_court.8050.a.tt_hook remove_hook = { target = root } } } hold_court_8050_accepted_knight_effect = yes stress_impact = { gallant = medium_stress_impact_loss paranoid = medium_stress_impact_gain shy = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_honor = 0.5 ai_compassion = 0.25 } modifier = { add = 30 number_of_knights < max_number_of_knights } modifier = { #Weight up for stress. add = 30 has_trait = gallant } modifier = { #Weight down for stress. add = -30 has_trait = paranoid } } } option = { # Take a hook if they suck name = hold_court.8050.b trigger = { scope:knight.prowess < medium_skill_rating NOR = { scope:vassal = { has_hook = root } root = { has_hook = scope:vassal } } } highlight_portrait = scope:vassal set_variable = { name = hold_court_8050_promise value = scope:knight years = 10 } scope:vassal = { add_opinion = { modifier = annoyed_opinion target = root opinion = -10 } } if = { limit = { can_add_hook = { target = scope:vassal type = indebted_hook } } add_hook = { target = scope:vassal type = indebted_hook } } hold_court_8050_accepted_knight_effect = yes stress_impact = { generous = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_greed = 0.5 ai_rationality = 0.25 ai_compassion = -0.25 } modifier = { #Weight down for stress. add = -30 has_trait = generous } } } option = { # Send to Holy Order instead name = hold_court.8050.c trigger = { has_trait = zealous exists = scope:grandmaster NOT = { scope:vassal = { has_hook = root } } NOT = { # unlikely to be the case, but since they are more complicated to break, let's just avoid breaking grand wedding scope:knight = { has_been_promised_grand_wedding = yes } } } trait = zealous highlight_portrait = scope:grandmaster add_piety = medium_piety_gain scope:vassal = { add_opinion = { modifier = disappointed_opinion target = root opinion = -5 } } scope:knight = { add_trait = order_member if = { limit = { is_married = yes } every_spouse = { divorce = scope:knight } } if = { limit = { exists = betrothed } break_betrothal = betrothed } } scope:grandmaster = { add_courtier = scope:knight add_opinion = { target = root modifier = pleased_opinion opinion = 10 } } stress_impact = { cynical = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_zeal = 2 } modifier = { #Weight down for stress. add = -30 has_trait = cynical } } } option = { # Make them your new bodyguard name = hold_court.8050.d trigger = { scope:knight.prowess > medium_skill_rating scope:vassal = { NOR = { has_hook = root has_court_position = bodyguard_court_position } } } scope:vassal = { add_opinion = { modifier = grateful_opinion target = root opinion = 15 } } set_variable = { name = hold_court_8050_promise value = scope:knight years = 10 } add_courtier = scope:knight scope:knight = { hidden_effect = { return_to_court = yes } add_opinion = { modifier = grateful_opinion target = root opinion = 30 } hidden_effect = { add_prestige = medium_prestige_gain progress_towards_friend_effect = { REASON = friend_hired_body_guard CHARACTER = root OPINION = 0 } } set_variable = { name = hold_court_8050_knight value = scope:vassal years = 10 } } if = { limit = { exists = scope:bodyguard } revoke_court_position = { recipient = scope:bodyguard court_position = bodyguard_court_position } scope:bodyguard = { add_opinion = { target = root modifier = disappointed_opinion opinion = -10 } } } if = { limit = { can_appoint_char_to_court_position = { CHAR = scope:knight COURT_POS = bodyguard_court_position } } court_position_grant_effect = { EMPLOYER = root POS = bodyguard CANDIDATE = scope:knight } } hidden_effect = { send_interface_message = { title = hold_court.8050.a.tt_toast left_icon = scope:knight right_icon = scope:vassal scope:knight = { custom_tooltip = hold_court.8050.d.tt_bodyguard } } } trigger_event = { id = hold_court.8054 days = 365 } stress_impact = { paranoid = medium_stress_impact_gain shy = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_greed = 0.5 ai_rationality = 0.5 ai_compassion = 0.25 } modifier = { #Weight up. add = 30 scope:knight.prowess > decent_skill_rating } modifier = { #Weight up. add = 30 scope:knight.prowess > very_high_skill_rating } modifier = { #Weight down for stress. add = -30 has_trait = paranoid } modifier = { #Weight down for stress. add = -30 has_trait = shy } } } option = { # Refuse name = { trigger = { scope:knight.prowess >= 20 } text = hold_court.8050.e.talented } name = { trigger = { scope:knight.prowess < 20 scope:knight.prowess >= 14 } text = hold_court.8050.e.suitable } name = { trigger = { scope:knight.prowess < 14 scope:knight.prowess >= 8 } text = hold_court.8050.e.passing } name = { trigger = { scope:knight.prowess < 8 } text = hold_court.8050.e.unsuitable } trigger = { NOT = { scope:vassal = { has_hook = root } } } scope:vassal = { add_opinion = { modifier = refusal_opinion target = root opinion = -10 } } scope:knight = { add_prestige = minor_prestige_loss add_opinion = { modifier = refusal_opinion target = root opinion = -20 } progress_towards_rival_effect = { CHARACTER = root REASON = rival_refused_service OPINION = 0 } } stress_impact = { compassionate = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = -0.5 } modifier = { add = 15 scope:knight.prowess < 10 } modifier = { #Weight down for stress. add = -15 has_trait = compassionate } } } after = { scope:vassal = { clear_court_event_participation = yes } scope:knight = { clear_court_event_participation = yes } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } scripted_trigger hold_court_8050_angry_trigger = { OR = { prowess >= high_skill_rating has_trait = vengeful has_trait = wrathful has_trait = just has_trait = honest has_trait = ambitious has_trait = arrogant has_trait = brave AND = { has_variable = hold_court_8050_knight var:hold_court_8050_knight = { is_alive = yes is_vassal_of = root has_relation_friend = prev # prev = scope:vassal } } } } scripted_effect hold_court_8051_promise_opinion_effect = { if = { limit = { has_opinion_modifier = { modifier = grateful_opinion target = root } } remove_opinion = { modifier = grateful_opinion target = root } } add_opinion = { modifier = broke_promise target = root } } # Vassal is angry you fired the knight hold_court.8051 = { type = court_event title = hold_court.8051.t desc = hold_court.8051.desc theme = court court_scene = { button_position_character = scope:vassal court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:vassal = { group = petitioners_group animation = anger } scope:knight = { group = petitioners_group animation = shame } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } weight_multiplier = { base = 1 modifier = { add = 3 var:hold_court_8050_promise = { hold_court_8050_angry_trigger = yes } } # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike } } immediate = { var:hold_court_8050_promise = { save_scope_as = knight var:hold_court_8050_knight = { save_scope_as = vassal } } add_character_flag = { flag = hold_court_8051_flag years = 15 } } option = { # Reinstate name = hold_court.8051.a scope:knight = { if = { limit = { scope:knight.employer = root } custom_tooltip = hold_court.8051.a.tt_knight } else = { hidden_effect = { set_employer = root } custom_tooltip = hold_court.8050.a.tt_knight } hidden_effect = { set_knight_status = force } } stress_impact = { arbitrary = medium_stress_impact_gain } trigger_event = { id = hold_court.8054 days = 365 } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = -0.25 ai_honor = -0.25 } modifier = { #Weight down for stress. add = -15 has_trait = arbitrary } } } option = { # Refuse name = hold_court.8051.b scope:vassal = { hold_court_8051_promise_opinion_effect = yes } scope:knight = { hold_court_8051_promise_opinion_effect = yes hidden_effect = { return_to_court = yes set_employer = scope:vassal } custom_tooltip = hold_court.8051.b.tt_return } remove_variable = hold_court_8050_promise stress_impact = { just = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = -0.25 ai_honor = -0.25 } modifier = { add = 15 scope:knight.prowess < 10 } modifier = { #Weight down for stress. add = -15 has_trait = just } } } } # Vassal is apoplectic! You the fired knight again! hold_court.8052 = { type = court_event title = hold_court.8052.t desc = { desc = hold_court.8052.desc.intro first_valid = { triggered_desc = { trigger = { scope:vassal = { has_trait = wrathful } } desc = hold_court.8052.desc.wrath } desc = hold_court.8052.desc.fallback } } theme = court court_scene = { button_position_character = scope:vassal court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:vassal = { group = petitioners_group animation = rage } scope:knight = { group = petitioners_group animation = marshal } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } weight_multiplier = { base = 1 modifier = { add = 3 var:hold_court_8050_promise = { hold_court_8050_angry_trigger = yes } } # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike } } immediate = { var:hold_court_8050_promise = { save_scope_as = knight var:hold_court_8050_knight = { save_scope_as = vassal } remove_variable = hold_court_8050_knight } scope:vassal = { hold_court_8051_promise_opinion_effect = yes } scope:knight = { hold_court_8051_promise_opinion_effect = yes } } option = { # Oh get over it name = hold_court.8052.a scope:knight = { hidden_effect = { return_to_court = yes set_employer = scope:vassal } } ai_chance = { base = 100 ai_value_modifier = { ai_vengefulness = -0.5 ai_boldness = -0.5 } } } option = { # Arrest them name = hold_court.8052.b trigger = { scope:vassal = { has_trait = wrathful } OR = { has_trait = vengeful has_trait = wrathful has_trait = arrogant } } trait = vengeful trait = wrathful trait = arrogant imprison_character_effect = { TARGET = scope:vassal IMPRISONER = root } scope:vassal = { hold_court_8051_promise_opinion_effect = yes } scope:knight = { hold_court_8051_promise_opinion_effect = yes hidden_effect = { return_to_court = yes set_employer = scope:vassal } } stress_impact = { just = medium_stress_impact_gain forgiving = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_vengefulness = 2 ai_boldness = 0.5 } modifier = { #Weight down for stress. add = -15 has_trait = just } modifier = { #Weight down for stress. add = -15 has_trait = forgiving } } } after = { remove_variable = hold_court_8050_promise } } # Knight dies in your service hold_court.8053 = { type = character_event title = hold_court.8053.t desc = { desc = hold_court.8053.desc.intro first_valid = { triggered_desc = { trigger = { exists = scope:knight.killer } desc = hold_court.8053.killer } desc = hold_court.8053.battle } random_valid = { triggered_desc = { trigger = { scope:knight.prowess >= 20 } desc = hold_court.8053.desc_talented } triggered_desc = { trigger = { scope:knight.prowess >= 14 } desc = hold_court.8053.desc_suitable } triggered_desc = { trigger = { scope:knight.prowess >= 8 } desc = hold_court.8053.desc_passing } triggered_desc = { trigger = { has_trait = craven } desc = hold_court.8053.desc_coward } triggered_desc = { trigger = { NOT = { has_trait = craven } scope:knight.prowess < 8 } desc = hold_court.8053.desc_unsuitable } } desc = hold_court.8053.desc.body } theme = court override_background = { reference = battlefield } left_portrait = { character = scope:vassal animation = sadness } right_portrait = { character = scope:knight } trigger = { primary_title.tier >= tier_kingdom } immediate = { scope:knight = { show_as_tooltip = { if = { limit = { exists = killer } death = { death_reason = death_battle killer = scope:knight.killer } } else = { death = { death_reason = death_battle } } } } } option = { # Oh name = hold_court.8053.a } } scripted_trigger hold_court_8050_fired_trigger = { has_variable = hold_court_8050_knight this = root.var:hold_court_8050_promise is_knight = no var:hold_court_8050_knight = { is_landed_or_landless_administrative = yes is_vassal_or_below_of = root NOT = { has_relation_rival = root } } NOR = { has_trait = disfigured has_trait = maimed has_relation_friend = root has_relation_rival = root has_court_position = bodyguard_court_position } } # Trigger for follow up events hold_court.8054 = { hidden = yes trigger = { has_variable = hold_court_8050_promise primary_title.tier >= tier_kingdom } immediate = { if = { limit = { hold_court_8050_fired_trigger = yes } if = { limit = { has_variable = hold_court_8051_flag } trigger_event = hold_court.8052 } else = { trigger_event = hold_court.8051 } } else = { trigger_event = { id = hold_court.8054 days = 365 } } } } ################################################## # A Temple for X # by Joe Parkin # 8060 - 061 ################################################## scripted_trigger hold_court_8060_vassal_trigger = { faith = root.faith NOR = { this = scope:bishop is_vassal_of = scope:bishop } } scripted_effect hold_court_8060_completion_effect = { show_as_tooltip = { scope:target_county = { custom_tooltip = hold_court.8060.a.tt add_county_modifier = { modifier = hold_court_8060_built_modifier years = 20 } } scope:bishop = { custom_tooltip = hold_court.8060.a.tt add_opinion = { modifier = pleased_opinion target = root opinion = 20 } } } } # Chaplain wants a new Temple built hold_court.8060 = { type = court_event title = hold_court.8060.t desc = { desc = hold_court.8060.desc first_valid = { triggered_desc = { trigger = { scope:target_county.holder = root } desc = hold_court.8060.desc.owned } triggered_desc = { trigger = { exists = scope:vassal scope:vassal = { is_vassal_of = root } } desc = hold_court.8060.desc.vassal } desc = hold_court.8060.desc.subvassal } first_valid = { triggered_desc = { trigger = { scope:target_county = { any_county_province = { has_holding_type = church_holding } } } desc = hold_court.8060.desc.existing } desc = hold_court.8060.desc.first } desc = hold_court.8060.desc.end } theme = realm lower_left_portrait = scope:vassal lower_center_portrait = scope:subvassal court_scene = { button_position_character = scope:bishop court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:bishop = { group = petitioners_group animation = chaplain } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 15 } trigger = { exists = cp:councillor_court_chaplain cp:councillor_court_chaplain = { has_court_event_flag = no is_available_ai_adult = yes } NOT = { has_character_flag = has_had_holding_request_event } NOT = { has_variable = hold_court_8060_church_var } gold > hold_court_holding_cost_double_value faith = { has_doctrine = doctrine_theocracy_temporal NOT = { has_doctrine_parameter = unreformed } } OR = { any_held_title = { county_has_empty_province_trigger = yes faith = ROOT.faith } any_sub_realm_county = { faith = root.faith holder = { NOR = { this = root.cp:councillor_court_chaplain is_vassal_of = root.cp:councillor_court_chaplain } } any_county_province = { province_has_no_holding_trigger = yes } } } } weight_multiplier = { base = 1 modifier = { add = 2 any_held_title = { title_tier = county county_has_empty_province_trigger = yes faith = ROOT.faith county_has_no_church_trigger = yes } } modifier = { add = 1 any_held_title = { title_tier = county county_has_empty_province_trigger = yes faith = ROOT.faith county_has_all_holding_types = yes } } modifier = { add = -2 cp:councillor_court_chaplain.learning < 10 } # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly } } immediate = { add_character_flag = { flag = has_had_holding_request_event years = 15 } cp:councillor_court_chaplain = { save_scope_as = bishop court_event_character_flag_effect = yes } if = { # root's counties... limit = { any_held_title = { county_has_empty_province_trigger = yes faith = ROOT.faith } } ordered_held_title = { limit = { county_has_empty_province_trigger = yes faith = ROOT.faith county_has_no_church_trigger = yes } alternative_limit = { county_has_empty_province_trigger = yes faith = ROOT.faith county_has_all_holding_types = yes } alternative_limit = { county_has_empty_province_trigger = yes } order_by = development_level save_scope_as = target_county } } else = { # ... vassal counties ordered_sub_realm_county = { limit = { holder = { is_vassal_of = ROOT hold_court_8060_vassal_trigger = yes } faith = ROOT.faith any_county_province = { province_has_no_holding_trigger = yes } county_has_no_church_trigger = yes } alternative_limit = { holder = { is_vassal_of = ROOT hold_court_8060_vassal_trigger = yes } faith = ROOT.faith any_county_province = { province_has_no_holding_trigger = yes } county_has_all_holding_types = yes } alternative_limit = { holder = { is_vassal_of = ROOT hold_court_8060_vassal_trigger = yes } faith = ROOT.faith any_county_province = { province_has_no_holding_trigger = yes } } alternative_limit = { holder = { hold_court_8060_vassal_trigger = yes } faith = ROOT.faith any_county_province = { province_has_no_holding_trigger = yes } county_has_no_church_trigger = yes } alternative_limit = { holder = { hold_court_8060_vassal_trigger = yes } faith = ROOT.faith any_county_province = { province_has_no_holding_trigger = yes } county_has_all_holding_types = yes } alternative_limit = { holder = { hold_court_8060_vassal_trigger = yes } faith = ROOT.faith any_county_province = { province_has_no_holding_trigger = yes } } order_by = development_level save_scope_as = target_county holder = { if = { limit = { NOT = { is_vassal_of = root } } liege = { save_scope_as = vassal } save_scope_as = subvassal } else = { save_scope_as = vassal } } } } scope:target_county = { random_county_province = { limit = { province_has_no_holding_trigger = yes } save_scope_as = target_province } } if = { limit = { any_court_position_holder = { type = royal_architect_court_position } } random_court_position_holder = { type = royal_architect_court_position save_scope_as = royal_architect } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { # Pay for the Temple name = hold_court.8060.a trigger = { trigger_if = { limit = { is_ai = yes } short_term_treasury_or_gold >= major_treasury_or_gold_value } } remove_treasury_or_gold = hold_court_holding_cost_cheaper_value scope:target_province = { begin_create_holding = { type = church_holding refund_cost = { gold = hold_court_holding_cost_cheaper_value } } } hold_court_8060_completion_effect = yes if = { limit = { exists = scope:vassal } scope:vassal = { add_opinion = { modifier = grateful_opinion target = root opinion = 10 } } } if = { limit = { exists = scope:subvassal } scope:subvassal = { add_opinion = { modifier = grateful_opinion target = root opinion = 10 } } } set_variable = { name = hold_court_8060_church_var value = scope:target_province years = 6 } stress_impact = { greedy = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_greed = -0.5 ai_zeal = 0.5 ai_rationality = 0.25 ai_compassion = 0.25 } modifier = { #Weight down for stress. add = -30 has_trait = greedy } } } option = { # Get the Vassal to pay half name = hold_court.8060.b trigger = { exists = scope:vassal scope:vassal = { is_vassal_of = root } scope:vassal.short_term_gold >= hold_court_holding_cost_half_value } show_as_unavailable = { scope:vassal.short_term_gold < hold_court_holding_cost_half_value } highlight_portrait = scope:vassal remove_treasury_or_gold = hold_court_holding_cost_half_value scope:vassal = { remove_treasury_or_gold = hold_court_holding_cost_half_value add_opinion = { modifier = annoyed_opinion target = root opinion = -15 } } scope:target_province = { begin_create_holding = { type = church_holding refund_cost = { gold = hold_court_holding_cost_half_value } } } hold_court_8060_completion_effect = yes set_variable = { name = hold_court_8060_church_var value = scope:target_province years = 6 } stress_impact = { greedy = major_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_greed = -0.25 ai_compassion = 0.5 ai_zeal = 0.25 } modifier = { #Weight down for stress. add = -30 has_trait = greedy } } } option = { # Get the Subvassal to pay half name = hold_court.8060.c trigger = { exists = scope:subvassal OR = { scope:subvassal.short_term_gold >= hold_court_holding_cost_half_value scope:vassal.short_term_gold >= hold_court_holding_cost_half_value } } show_as_unavailable = { scope:subvassal.short_term_gold < hold_court_holding_cost_half_value scope:vassal.short_term_gold < hold_court_holding_cost_half_value } highlight_portrait = scope:subvassal remove_treasury_or_gold = hold_court_holding_cost_half_value scope:subvassal = { # Vassals not happy about paying if = { limit = { long_term_gold >= hold_court_holding_cost_half_value } remove_treasury_or_gold = hold_court_holding_cost_half_value add_opinion = { target = root modifier = annoyed_opinion opinion = -15 } } else = { scope:vassal = { remove_treasury_or_gold = hold_court_holding_cost_half_value add_opinion = { target = root modifier = annoyed_opinion opinion = -15 } } } } scope:target_province = { begin_create_holding = { type = church_holding refund_cost = { gold = hold_court_holding_cost_half_value } } } hold_court_8060_completion_effect = yes set_variable = { name = hold_court_8060_church_var value = scope:target_province years = 6 } stress_impact = { greedy = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_greed = -0.25 ai_compassion = 0.5 ai_zeal = 0.25 } modifier = { #Weight down for stress. add = -15 has_trait = greedy } } } option = { # Architect involved name = hold_court.8060.d trigger = { exists = scope:royal_architect } scope:royal_architect = { add_opinion = { modifier = grateful_opinion target = root opinion = 10 } duel = { skill = stewardship value = average_skill_rating 6 = { compare_modifier = { value = scope:duel_value multiplier = 2 } desc = hold_court.8060.d.tt_success send_interface_toast = { title = hold_court.8060.d.tt_success left_icon = scope:frontier_lord root = { remove_treasury_or_gold = hold_court_holding_cost_architect_cheaper_value scope:target_province = { begin_create_holding = { type = church_holding refund_cost = { gold = hold_court_holding_cost_architect_cheaper_value } } } } } } 10 = { compare_modifier = { value = scope:duel_value multiplier = -1 } desc = hold_court.8060.d.tt_normal send_interface_toast = { title = hold_court.8060.d.tt_normal left_icon = scope:frontier_lord root = { remove_treasury_or_gold = hold_court_holding_cost_cheaper_value scope:target_province = { begin_create_holding = { type = church_holding refund_cost = { gold = hold_court_holding_cost_cheaper_value } } } } } } 4 = { compare_modifier = { value = scope:duel_value multiplier = -0.5 } desc = hold_court.8060.d.tt_failure send_interface_toast = { title = hold_court.8060.d.tt_failure left_icon = scope:frontier_lord root = { remove_treasury_or_gold = hold_court_holding_cost_architect_expensive_value scope:target_province = { begin_create_holding = { type = church_holding refund_cost = { gold = hold_court_holding_cost_architect_expensive_value } } } } } } } } hold_court_8060_completion_effect = yes stress_impact = { diligent = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_energy = -0.5 } modifier = { #Weight down for stress. add = -30 has_trait = diligent } } } option = { # Refuse name = { trigger = { NOT = { exists = scope:vassal } } text = hold_court.8060.e.own } name = { trigger = { exists = scope:vassal } text = hold_court.8060.e.vassal } if = { limit = { exists = scope:vassal } add_piety = miniscule_piety_loss } else = { add_piety = minor_piety_loss } scope:bishop = { add_opinion = { modifier = disappointed_opinion target = root opinion = -10 } } if = { limit = { exists = scope:vassal } scope:vassal = { add_opinion = { modifier = disappointed_opinion target = root opinion = -5 } } } if = { limit = { exists = scope:subvassal } scope:subvassal = { add_opinion = { modifier = disappointed_opinion target = root opinion = -5 } } } stress_impact = { zealous = medium_stress_impact_gain generous = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_greed = 0.5 ai_zeal = -0.5 ai_compassion = -0.25 } modifier = { #Weight down for stress. add = -15 has_trait = zealous } modifier = { #Weight down for stress. add = -15 has_trait = generous } } } after = { if = { limit = { has_variable = hold_court_8060_church_var } trigger_event = { id = hold_court.8061 days = 1830 # 5 years + 5 days } } scope:bishop = { clear_court_event_participation = yes } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } # The Temple is complete hold_court.8061 = { type = character_event title = hold_court.8061.t desc = { first_valid = { triggered_desc = { # In case you have no bishop on completion trigger = { exists = scope:bishop scope:bishop = { is_alive = yes } } desc = hold_court.8061.desc.bishop } desc = hold_court.8061.desc.fallback } first_valid = { triggered_desc = { trigger = { scope:target_county.holder = root } desc = hold_court.8061.desc.owned } triggered_desc = { trigger = { exists = scope:vassal scope:vassal = { is_vassal_of = root } } desc = hold_court.8061.desc.vassal } } first_valid = { triggered_desc = { trigger = { scope:target_county = { any_county_province = { count >= 2 has_holding_type = church_holding } } } desc = hold_court.8061.desc.existing } desc = hold_court.8061.desc.first } } theme = realm override_background = { trigger = { NOR = { faith = { religion = religion:hinduism_religion } faith = { religion = religion:buddhism_religion } faith = { religion = religion:jainism_religion } } } reference = temple } override_background = { trigger = { OR = { faith = { religion = religion:hinduism_religion } faith = { religion = religion:buddhism_religion } faith = { religion = religion:jainism_religion } } } reference = ep2_holy_site_indian } left_portrait = { character = scope:bishop animation = happiness trigger = { scope:bishop = { is_alive = yes } } } lower_right_portrait = scope:vassal trigger = { has_variable = hold_court_8060_church_var var:hold_court_8060_church_var = { OR = { county.holder = root county.holder.top_liege = root } } } immediate = { if = { limit = { exists = cp:councillor_court_chaplain } cp:councillor_court_chaplain = { save_scope_as = bishop } } var:hold_court_8060_church_var = { save_scope_as = target_province county = { save_scope_as = target_county holder = { if = { limit = { this != root } if = { limit = { liege != root } save_scope_as = subvassal liege = { save_scope_as = vassal } } else = { save_scope_as = vassal } } } } } if = { limit = { exists = scope:vassal } scope:vassal = { add_opinion = { modifier = grateful_opinion target = root opinion = 10 } } } if = { limit = { exists = scope:subvassal } scope:subvassal = { add_opinion = { modifier = grateful_opinion target = root opinion = 10 } } } show_as_tooltip = { scope:target_county.holder = { add_piety = massive_piety_gain } faith = { change_fervor = { value = 1 desc = fervor_gain_built_temple_holding } } } } option = { # Great name = hold_court.8061.a if = { limit = { exists = scope:vassal } add_piety = major_piety_gain } scope:target_county = { add_county_modifier = { modifier = hold_court_8060_built_modifier years = 25 } } scope:bishop = { add_opinion = { modifier = pleased_opinion target = root opinion = 20 } } } after = { remove_variable = hold_court_8060_church_var } } ################################################## # The Growth of X # by Joe Parkin # 8070 - 071 ################################################## scripted_trigger hold_court_8070_vassal_trigger = { # Vassal who is not the steward NOR = { this = scope:steward is_vassal_of = scope:steward } } scripted_effect hold_court_8070_completion_effect = { # Show effects once holding is built show_as_tooltip = { scope:target_county = { custom_tooltip = hold_court.8070.a.tt add_county_modifier = { modifier = hold_court_8070_built_modifier years = 25 } } scope:steward = { custom_tooltip = hold_court.8070.a.tt add_opinion = { modifier = pleased_opinion target = root opinion = 20 } } } } # Steward wants investment in City hold_court.8070 = { type = court_event title = hold_court.8070.t desc = { desc = hold_court.8070.desc.intro first_valid = { # County owner descriptions triggered_desc = { trigger = { scope:target_county.holder = root } desc = hold_court.8060.desc.owned } triggered_desc = { trigger = { exists = scope:vassal scope:vassal = { is_vassal_of = root } } desc = hold_court.8060.desc.vassal } desc = hold_court.8060.desc.subvassal } desc = hold_court.8070.desc.body first_valid = { # City number descriptions triggered_desc = { trigger = { scope:target_county = { any_county_province = { has_holding_type = city_holding } } } desc = hold_court.8070.desc.existing } desc = hold_court.8070.desc.first } desc = hold_court.8070.desc.end } theme = realm lower_right_portrait = scope:vassal court_scene = { button_position_character = scope:steward court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:steward = { group = petitioners_group animation = steward } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 30 } trigger = { exists = cp:councillor_steward cp:councillor_steward = { has_court_event_flag = no is_available_ai_adult = yes } NOT = { has_character_flag = has_had_holding_request_event } NOT = { has_variable = hold_court_8070_city_var } gold > hold_court_holding_cost_double_value OR = { any_held_title = { county_has_empty_province_trigger = yes } any_sub_realm_county = { holder = { NOR = { this = root.cp:councillor_steward is_vassal_of = root.cp:councillor_steward } } any_county_province = { province_has_no_holding_trigger = yes } } } } weight_multiplier = { base = 1 modifier = { add = 2 any_held_title = { title_tier = county county_has_empty_province_trigger = yes county_has_no_city_trigger = yes } } modifier = { add = 1 any_held_title = { title_tier = county county_has_empty_province_trigger = yes county_has_all_holding_types = yes } } modifier = { add = -2 cp:councillor_steward.stewardship < 10 } # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative } } immediate = { add_character_flag = { flag = has_had_holding_request_event years = 15 } cp:councillor_steward = { save_scope_as = steward court_event_character_flag_effect = yes } if = { # root's counties... limit = { any_held_title = { county_has_empty_province_trigger = yes } } ordered_held_title = { limit = { county_has_empty_province_trigger = yes county_has_no_city_trigger = yes } alternative_limit = { county_has_empty_province_trigger = yes county_has_all_holding_types = yes } alternative_limit = { county_has_empty_province_trigger = yes } order_by = development_level save_scope_as = target_county } } else = { # ... vassal counties ordered_sub_realm_county = { limit = { holder = { is_vassal_of = root hold_court_8070_vassal_trigger = yes } any_county_province = { province_has_no_holding_trigger = yes } county_has_no_city_trigger = yes } alternative_limit = { holder = { is_vassal_of = root hold_court_8070_vassal_trigger = yes } any_county_province = { province_has_no_holding_trigger = yes } county_has_all_holding_types = yes } alternative_limit = { holder = { is_vassal_of = root hold_court_8070_vassal_trigger = yes } any_county_province = { province_has_no_holding_trigger = yes } } alternative_limit = { holder = { hold_court_8070_vassal_trigger = yes } any_county_province = { province_has_no_holding_trigger = yes } county_has_no_city_trigger = yes } alternative_limit = { holder = { hold_court_8070_vassal_trigger = yes } any_county_province = { province_has_no_holding_trigger = yes } county_has_all_holding_types = yes } alternative_limit = { holder = { hold_court_8070_vassal_trigger = yes } any_county_province = { province_has_no_holding_trigger = yes } } order_by = development_level save_scope_as = target_county holder = { save_scope_as = vassal } } } scope:target_county = { random_county_province = { limit = { province_has_no_holding_trigger = yes } save_scope_as = target_province } } if = { limit = { any_court_position_holder = { type = royal_architect_court_position } } random_court_position_holder = { type = royal_architect_court_position save_scope_as = royal_architect } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { # Pay for the City name = hold_court.8070.a trigger = { trigger_if = { limit = { is_ai = yes } short_term_gold >= major_gold_value } } remove_treasury_or_gold = hold_court_holding_cost_cheaper_value scope:target_province = { begin_create_holding = { type = city_holding refund_cost = { gold = hold_court_holding_cost_cheaper_value } } } hold_court_8070_completion_effect = yes show_as_tooltip = { if = { limit = { exists = scope:vassal } scope:vassal = { add_opinion = { modifier = grateful_opinion target = root opinion = 10 } } } if = { limit = { exists = scope:subvassal } scope:subvassal = { add_opinion = { modifier = grateful_opinion target = root opinion = 10 } } } } set_variable = { name = hold_court_8070_city_var value = scope:target_province years = 6 } stress_impact = { greedy = major_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_greed = -0.5 ai_rationality = 0.25 ai_compassion = 0.25 } modifier = { #Weight down for stress. add = -30 has_trait = greedy } } } option = { # Get the Vassal to pay half name = hold_court.8070.b trigger = { exists = scope:vassal scope:vassal = { is_vassal_of = root } scope:vassal.short_term_gold >= hold_court_holding_cost_half_value } show_as_unavailable = { scope:vassal.short_term_gold < hold_court_holding_cost_half_value } highlight_portrait = scope:vassal remove_treasury_or_gold = hold_court_holding_cost_half_value scope:vassal = { remove_treasury_or_gold = hold_court_holding_cost_half_value add_opinion = { modifier = annoyed_opinion target = root opinion = -15 } } scope:target_province = { begin_create_holding = { type = city_holding refund_cost = { gold = hold_court_holding_cost_half_value } } } hold_court_8070_completion_effect = yes set_variable = { name = hold_court_8070_city_var value = scope:target_province years = 6 } stress_impact = { greedy = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_greed = -0.25 ai_rationality = 0.25 ai_compassion = 0.5 } modifier = { #Weight down for stress. add = -15 has_trait = greedy } } } option = { # Get the Subvassal to pay half name = hold_court.8070.c trigger = { exists = scope:vassal exists = scope:subvassal OR = { scope:subvassal.short_term_gold >= hold_court_holding_cost_half_value scope:vassal.short_term_gold >= hold_court_holding_cost_half_value } } show_as_unavailable = { scope:subvassal.short_term_gold < hold_court_holding_cost_half_value scope:vassal.short_term_gold < hold_court_holding_cost_half_value } remove_treasury_or_gold = hold_court_holding_cost_half_value scope:subvassal = { # Vassals not happy about paying if = { limit = { long_term_gold >= hold_court_holding_cost_half_value } remove_treasury_or_gold = hold_court_holding_cost_half_value add_opinion = { target = root modifier = annoyed_opinion opinion = -15 } } else = { scope:vassal = { remove_treasury_or_gold = hold_court_holding_cost_half_value add_opinion = { target = root modifier = annoyed_opinion opinion = -15 } } } } scope:target_province = { begin_create_holding = { type = city_holding refund_cost = { gold = hold_court_holding_cost_half_value } } } hold_court_8070_completion_effect = yes set_variable = { name = hold_court_8070_city_var value = scope:target_province years = 6 } stress_impact = { greedy = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_greed = -0.25 ai_rationality = 0.25 ai_compassion = 0.5 } modifier = { #Weight down for stress. add = -15 has_trait = greedy } } } option = { # Architect involved name = hold_court.8070.d trigger = { exists = scope:royal_architect } scope:royal_architect = { add_opinion = { modifier = grateful_opinion target = root opinion = 10 } duel = { skill = stewardship value = average_skill_rating 6 = { compare_modifier = { value = scope:duel_value multiplier = 2 } desc = hold_court.8060.d.tt_success send_interface_toast = { title = hold_court.8060.d.tt_success left_icon = scope:royal_architect root = { remove_treasury_or_gold = hold_court_holding_cost_architect_cheaper_value scope:target_province = { begin_create_holding = { type = city_holding refund_cost = { gold = hold_court_holding_cost_architect_cheaper_value } } } } } } 10 = { compare_modifier = { value = scope:duel_value multiplier = -1 } desc = hold_court.8060.d.tt_normal send_interface_toast = { title = hold_court.8060.d.tt_normal left_icon = scope:royal_architect root = { remove_treasury_or_gold = hold_court_holding_cost_cheaper_value scope:target_province = { begin_create_holding = { type = city_holding refund_cost = { gold = hold_court_holding_cost_cheaper_value } } } } } } 4 = { compare_modifier = { value = scope:duel_value multiplier = -0.5 } desc = hold_court.8060.d.tt_failure send_interface_toast = { title = hold_court.8060.d.tt_failure left_icon = scope:royal_architect root = { remove_treasury_or_gold = hold_court_holding_cost_architect_expensive_value scope:target_province = { begin_create_holding = { type = city_holding refund_cost = { gold = hold_court_holding_cost_architect_expensive_value } } } } } } } } hold_court_8070_completion_effect = yes stress_impact = { diligent = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_energy = -0.5 } modifier = { #Weight down for stress. add = -30 has_trait = diligent } } } option = { # Refuse name = hold_court.8070.e add_prestige = minor_prestige_loss scope:steward = { add_opinion = { modifier = disappointed_opinion target = root opinion = -5 } } if = { limit = { exists = scope:vassal } scope:vassal = { add_opinion = { modifier = disappointed_opinion target = root opinion = -5 } } } if = { limit = { exists = scope:subvassal } scope:subvassal = { add_opinion = { modifier = disappointed_opinion target = root opinion = -5 } } } stress_impact = { generous = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_greed = 0.5 ai_compassion = -0.25 } modifier = { #Weight down for stress. add = -15 has_trait = generous } } } after = { scope:steward = { clear_court_event_participation = yes } if = { limit = { has_variable = hold_court_8070_city_var } trigger_event = { id = hold_court.8071 days = 1830 # 5 years + 10 days } } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } # The City is complete hold_court.8071 = { type = character_event title = hold_court.8071.t desc = { first_valid = { triggered_desc = { trigger = { exists = scope:steward scope:steward = { is_alive = yes } } desc = hold_court.8071.desc.steward } desc = hold_court.8071.desc.fallback } first_valid = { triggered_desc = { trigger = { scope:target_county.holder = root } desc = hold_court.8071.desc.owned } triggered_desc = { trigger = { exists = scope:vassal scope:vassal = { is_vassal_of = root } } desc = hold_court.8071.desc.vassal } } first_valid = { triggered_desc = { trigger = { scope:target_county = { any_county_province = { count >= 2 has_holding_type = city_holding } } } desc = hold_court.8071.desc.existing } desc = hold_court.8071.desc.first } } theme = realm override_background = { reference = market } left_portrait = { character = scope:steward animation = happiness trigger = { scope:steward = { is_alive = yes } } } lower_right_portrait = scope:vassal trigger = { has_variable = hold_court_8070_city_var var:hold_court_8070_city_var = { OR = { county.holder = root county.holder.top_liege = root } } } immediate = { if = { limit = { exists = cp:councillor_steward } cp:councillor_steward = { save_scope_as = steward } } var:hold_court_8070_city_var = { save_scope_as = target_province county = { save_scope_as = target_county holder = { if = { limit = { this != root } if = { limit = { liege != root } save_scope_as = subvassal liege = { save_scope_as = vassal } } else = { save_scope_as = vassal } } } } } if = { limit = { exists = scope:vassal } scope:vassal = { add_opinion = { modifier = grateful_opinion target = root opinion = 10 } } } if = { limit = { exists = scope:subvassal } scope:subvassal = { add_opinion = { modifier = grateful_opinion target = root opinion = 10 } } } } option = { # Great name = hold_court.8071.a scope:target_county = { add_county_modifier = { modifier = hold_court_8070_built_modifier years = 25 } } scope:steward = { add_opinion = { modifier = pleased_opinion target = root opinion = 20 } } } after = { remove_variable = hold_court_8070_city_var } } ################################################## # The Republic of X # by Joe Parkin # 8080 ################################################## scripted_trigger hold_court_8080_mayor_trigger = { # Check mayor's culture, and city wealth hold_court_available_mayor_trigger = yes culture = { has_innovation = innovation_development_02 } primary_title = { de_jure_liege = { this != root.capital_county } title_province.combined_building_level >= 5 } } scripted_effect hold_court_8080_grant_effect = { # Grant county to mayor create_title_and_vassal_change = { type = granted save_scope_as = change add_claim_on_loss = no } scope:mayor.primary_title.de_jure_liege = { change_title_holder = { holder = scope:mayor change = scope:change } } resolve_title_and_vassal_change = scope:change scope:target_county = { add_county_modifier = { modifier = hold_court_8080_granted_modifier years = 20 } } } # Mayor wants rights over a county hold_court.8080 = { type = court_event title = hold_court.8080.t desc = { desc = hold_court.8080.desc.intro first_valid = { triggered_desc = { trigger = { scope:target_county = { has_coastal_province = yes } } desc = hold_court.8080.desc.body_sea } desc = hold_court.8080.desc.body_fallback } desc = hold_court.8080.desc.body } theme = realm court_scene = { button_position_character = scope:mayor court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:mayor = { group = petitioners_group animation = admiration } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 40 } trigger = { NOR = { has_character_flag = has_had_county_request_event has_character_flag = has_had_government_request_event } top_liege = this culture = { has_innovation = innovation_development_02 } any_vassal = { hold_court_8080_mayor_trigger = yes } NOT = { any_sub_realm_county = { percent > 0.1 holder = { government_has_flag = government_is_republic } } } } weight_multiplier = { base = 1 modifier = { add = 1 any_vassal = { hold_court_8080_mayor_trigger = yes primary_title.title_province = { has_building_or_higher = common_tradeport_01 } } } modifier = { add = 1 any_vassal = { hold_court_8080_mayor_trigger = yes primary_title = { de_jure_liege = { has_coastal_province = yes } } } } # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative } } immediate = { add_character_flag = { flag = has_had_county_request_event years = 15 } add_character_flag = { flag = has_had_government_request_event years = 15 } ordered_vassal = { limit = { hold_court_8080_mayor_trigger = yes primary_title.title_province = { has_building_or_higher = common_tradeport_01 } } alternative_limit = { hold_court_8080_mayor_trigger = yes primary_title = { de_jure_liege = { has_coastal_province = yes } } } alternative_limit = { hold_court_8080_mayor_trigger = yes } order_by = primary_title.title_province.combined_building_level save_scope_as = mayor court_event_character_flag_effect = yes primary_title = { save_scope_as = target_city set_variable = { name = hold_court_city_cooldown_var years = 10 } de_jure_liege = { save_scope_as = target_county } } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { # Grant Republican County name = hold_court.8080.a hold_court_8080_grant_effect = yes scope:mayor = { add_opinion = { modifier = grateful_opinion target = root opinion = 20 } } stress_impact = { greedy = major_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_greed = -2 ai_compassion = 0.25 } modifier = { #Weight down for stress. add = -30 has_trait = greedy } } } option = { # For a gift name = hold_court.8080.b if = { limit = { scope:mayor.short_term_treasury_or_gold >= root.medium_treasury_or_gold_value } scope:mayor = { pay_treasury_or_gold = { target = root value = root.medium_treasury_or_gold_value } } } else = { add_treasury_or_gold = major_treasury_or_gold_value } hold_court_8080_grant_effect = yes stress_impact = { generous = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_greed = -1 } modifier = { #Weight down for stress. add = -15 has_trait = generous } } } option = { # Offer smaller privileges name = hold_court.8080.c duel = { skill = stewardship target = scope:mayor 8 = { compare_modifier = { value = scope:duel_value multiplier = 2 } desc = hold_court.8080.c.tt_success send_interface_toast = { title = hold_court.8080.c.tt_success left_icon = scope:mayor scope:mayor = { add_opinion = { modifier = pleased_opinion target = root opinion = 10 } } scope:target_county = { add_county_modifier = { modifier = hold_court_8080_compromise_modifier years = 20 } } } } 8 = { compare_modifier = { value = scope:duel_value multiplier = -1 } desc = hold_court.8080.c.tt_failure send_interface_toast = { title = hold_court.8080.c.tt_failure left_icon = scope:mayor add_prestige = minor_prestige_loss scope:mayor = { add_opinion = { modifier = disappointed_opinion target = root opinion = -10 } } } } } ai_chance = { base = 100 ai_value_modifier = { ai_greed = 1 ai_rationality = 0.5 } } } option = { # Refuse name = hold_court.8080.d scope:mayor = { add_opinion = { modifier = disappointed_opinion target = root opinion = -5 } } scope:target_county = { add_county_modifier = { modifier = hold_court_8080_upset_modifier years = 15 } } stress_impact = { generous = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_greed = 1 ai_rationality = 0.5 } modifier = { #Weight down for stress. add = -15 has_trait = generous } } } option = { # Imprison the Mayor name = hold_court.8080.e imprison_character_effect = { TARGET = scope:mayor IMPRISONER = root } add_dread = minor_dread_gain add_character_modifier = { modifier = hold_court_8080_prison_modifier years = 10 } stress_impact = { humble = medium_stress_impact_gain just = medium_stress_impact_gain calm = medium_stress_impact_gain compassionate = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_honor = -0.5 ai_greed = -0.5 ai_rationality = -0.25 ai_compassion = -0.25 ai_boldness = 0.5 } modifier = { #Weight down for stress. add = -30 has_trait = humble } modifier = { #Weight down for stress. add = -30 has_trait = just } modifier = { #Weight down for stress. add = -30 has_trait = calm } modifier = { #Weight down for stress. add = -30 has_trait = compassionate } } } after = { scope:mayor = { clear_court_event_participation = yes } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # A Place at Court # by Joe Parkin # 8090 ################################################## scripted_trigger hold_court_8090_can_move_trigger = { has_court_event_flag = no AND = { has_any_court_position = no can_be_employed_as_any_court_position_trigger = yes } is_available_ai_adult = yes is_landed = no faith = root.faith top_liege = root NOT = { is_primary_heir_of = prev } # prev = scope:vassal NOT = { has_relation_rival = root } NOT = { is_close_family_of = root } } scripted_trigger hold_court_8090_candidate_trigger = { # Courtier is not already in a position has_court_event_flag = no is_available_ai_adult = yes OR = { AND = { has_any_court_position = no can_be_employed_as_any_court_position_trigger = yes } any_close_family_member = { hold_court_8090_can_move_trigger = yes } } } scripted_effect hold_court_8090_hook_effect = { if = { limit = { NOR = { has_relation_lover = $CHAR$ has_relation_friend = $CHAR$ } } if = { limit = { can_add_hook = { target = $CHAR$ type = indebted_hook } } add_hook = { target = $CHAR$ type = indebted_hook } } } else = { if = { limit = { has_character_modifier = hold_court_8090_favorites_modifier } hidden_effect = { remove_character_modifier = hold_court_8090_favorites_modifier } } add_character_modifier = { modifier = hold_court_8090_favorites_modifier years = 5 } } } # Vassal/courtier wants a Court Position hold_court.8090 = { type = court_event title = hold_court.8090.t desc = { first_valid = { triggered_desc = { trigger = { NOT = { exists = scope:vassal_advocate } } desc = hold_court.8090.desc.intro } desc = hold_court.8090.desc.intro_advocate } first_valid = { triggered_desc = { trigger = { exists = scope:old_holder scope:vassal = { has_relation_rival = scope:old_holder } } desc = hold_court.8090.desc.rival # RIVAL HOLDS POS } triggered_desc = { trigger = { exists = scope:old_holder exists = scope:vassal_advocate } desc = hold_court.8090.desc.other_advocate } triggered_desc = { trigger = { exists = scope:old_holder } desc = hold_court.8090.desc.other } triggered_desc = { trigger = { NOT = { exists = scope:vassal_advocate } scope:vassal = { has_trait = arrogant } } desc = hold_court.8090.desc.arrogant # FILLED BUT ARROGANT } triggered_desc = { trigger = { NOT = { exists = scope:vassal_advocate } scope:vassal = { has_trait = ambitious } } desc = hold_court.8090.desc.ambitious # FILLED BUT AMBITIOUS } triggered_desc = { trigger = { exists = scope:old_holder OR = { AND = { # Stewardship roles scope:vassal.var:target_court_position = flag:royal_architect scope:vassal.var:target_court_position = flag:seneschal scope:vassal.var:target_court_position = flag:court_gardener scope:vassal.var:target_court_position = flag:keeper_of_swans scope:vassal.stewardship > scope:old_holder.stewardship } AND = { # Learning roles scope:vassal.var:target_court_position = flag:court_tutor scope:vassal.var:target_court_position = flag:high_almoner scope:vassal.var:target_court_position = flag:court_physician scope:vassal.var:target_court_position = flag:antiquarian scope:vassal.var:target_court_position = flag:court_artificer scope:vassal.var:target_court_position = flag:chief_qadi scope:vassal.var:target_court_position = flag:court_astrologer scope:vassal.learning > scope:old_holder.learning } AND = { # Martial roles scope:vassal.var:target_court_position = flag:master_of_horse scope:vassal.var:target_court_position = flag:bodyguard scope:vassal.var:target_court_position = flag:champion scope:vassal.var:target_court_position = flag:master_of_hunt scope:vassal.var:target_court_position = flag:garuda scope:vassal.martial > scope:old_holder.martial scope:vassal.var:target_court_position = flag:akolouthos } AND = { # Diplomacy roles scope:vassal.var:target_court_position = flag:court_poet scope:vassal.var:target_court_position = flag:court_musician scope:vassal.var:target_court_position = flag:cupbearer scope:vassal.var:target_court_position = flag:lady_in_waiting scope:vassal.var:target_court_position = flag:cultural_emissary scope:vassal.diplomacy > scope:old_holder.diplomacy } AND = { # Intrigue roles scope:vassal.var:target_court_position = flag:chief_eunuch scope:vassal.intrigue > scope:old_holder.intrigue } } } desc = hold_court.8090.desc.superior # Position is occupied but by someone worse at it } } first_valid = { triggered_desc = { trigger = { exists = scope:vassal_advocate } desc = hold_court.8090.desc.empty_advocate } desc = hold_court.8090.desc.empty } random_valid = { triggered_desc = { trigger = { scope:vassal.var:target_court_position = flag:royal_architect scope:vassal = { has_trait = architect } } desc = hold_court_8090_interest_architect } triggered_desc = { trigger = { scope:vassal.var:target_court_position = flag:seneschal scope:vassal = { has_trait = administrator } } desc = hold_court_8090_interest_seneschal_administrator } triggered_desc = { trigger = { scope:vassal.var:target_court_position = flag:seneschal scope:vassal = { is_eunuch_trigger = yes } } desc = hold_court_8090_interest_seneschal_eunuch } triggered_desc = { trigger = { scope:vassal.var:target_court_position = flag:high_almoner scope:vassal = { has_trait = improvident } } desc = hold_court_8090_interest_almoner } triggered_desc = { trigger = { scope:vassal.var:target_court_position = flag:court_physician scope:vassal = { has_trait = lifestyle_physician } } desc = hold_court_8090_interest_physician_experience } triggered_desc = { trigger = { scope:vassal.var:target_court_position = flag:court_physician scope:vassal = { has_trait = lifestyle_mystic } } desc = hold_court_8090_interest_physician_mystic } triggered_desc = { trigger = { scope:vassal.var:target_court_position = flag:court_physician scope:vassal = { has_trait = lifestyle_herbalist } } desc = hold_court_8090_interest_physician_herbalist } triggered_desc = { trigger = { scope:vassal.var:target_court_position = flag:antiquarian scope:vassal = { has_trait = scholar } } desc = hold_court_8090_interest_antiquarian } triggered_desc = { trigger = { scope:vassal.var:target_court_position = flag:master_of_horse scope:vassal = { has_trait = overseer } } desc = hold_court_8090_interest_horse } triggered_desc = { trigger = { OR = { scope:vassal.var:target_court_position = flag:bodyguard scope:vassal.var:target_court_position = flag:akolouthos } has_relation_soulmate = scope:vassal } desc = hold_court_8090_interest_bodyguard_soulmate } triggered_desc = { trigger = { OR = { scope:vassal.var:target_court_position = flag:bodyguard scope:vassal.var:target_court_position = flag:akolouthos } has_relation_lover = scope:vassal } desc = hold_court_8090_interest_bodyguard_lover } triggered_desc = { trigger = { OR = { scope:vassal.var:target_court_position = flag:bodyguard scope:vassal.var:target_court_position = flag:akolouthos } has_relation_best_friend = scope:vassal } desc = hold_court_8090_interest_bodyguard_bestie } triggered_desc = { trigger = { OR = { scope:vassal.var:target_court_position = flag:bodyguard scope:vassal.var:target_court_position = flag:akolouthos } has_relation_friend = scope:vassal } desc = hold_court_8090_interest_bodyguard_friend } triggered_desc = { trigger = { OR = { scope:vassal.var:target_court_position = flag:champion scope:vassal.var:target_court_position = flag:garuda } scope:vassal = { has_trait = lifestyle_blademaster } } desc = hold_court_8090_interest_champion } triggered_desc = { trigger = { scope:vassal.var:target_court_position = flag:master_of_hunt scope:vassal = { has_trait = lifestyle_hunter } } desc = hold_court_8090_interest_hunt } triggered_desc = { trigger = { scope:vassal.var:target_court_position = flag:court_poet scope:vassal = { has_trait = lifestyle_poet } } desc = hold_court_8090_interest_poet } triggered_desc = { trigger = { scope:vassal.var:target_court_position = flag:court_musician scope:vassal = { has_trait = gregarious } } desc = hold_court_8090_interest_musician_gregarious } triggered_desc = { trigger = { scope:vassal.var:target_court_position = flag:court_musician scope:vassal = { culture = { this != scope:second.culture has_cultural_tradition = tradition_music_theory } } } desc = hold_court_8090_interest_musician_culture } triggered_desc = { trigger = { scope:vassal.var:target_court_position = flag:cupbearer scope:vassal = { has_trait = lifestyle_reveler } } desc = hold_court_8090_interest_cupbearer } triggered_desc = { trigger = { scope:vassal.var:target_court_position = flag:lady_in_waiting has_relation_soulmate = scope:vassal } desc = hold_court_8090_interest_lady_soulmate } triggered_desc = { trigger = { scope:vassal.var:target_court_position = flag:lady_in_waiting has_relation_lover = scope:vassal } desc = hold_court_8090_interest_lady_lover } triggered_desc = { trigger = { scope:vassal.var:target_court_position = flag:lady_in_waiting has_relation_best_friend = scope:vassal } desc = hold_court_8090_interest_lady_bestie } triggered_desc = { trigger = { scope:vassal.var:target_court_position = flag:lady_in_waiting has_relation_friend = scope:vassal } desc = hold_court_8090_interest_lady_friend } triggered_desc = { trigger = { scope:vassal.var:target_court_position = flag:chief_eunuch } desc = hold_court_8090_interest_eunuch } triggered_desc = { trigger = { scope:vassal.var:target_court_position = flag:court_gardener scope:vassal = { OR = { has_trait = lifestyle_gardener has_trait = lifestyle_herbalist } } } desc = hold_court_8090_interest_gardener } triggered_desc = { trigger = { scope:vassal.var:target_court_position = flag:court_artificer scope:vassal = { has_completed_inspiration = yes } } desc = hold_court_8090_interest_artificer } triggered_desc = { trigger = { scope:vassal.var:target_court_position = flag:cultural_emissary scope:vassal = { has_trait = diplomat } } desc = hold_court_8090_interest_emissary } triggered_desc = { trigger = { scope:vassal.var:target_court_position = flag:chief_qadi scope:vassal = { has_trait = scholar } } desc = hold_court_8090_interest_qadi } triggered_desc = { trigger = { scope:vassal.var:target_court_position = flag:garuda scope:vassal = { has_trait = lifestyle_blademaster } } desc = hold_court_8090_interest_garuda } triggered_desc = { trigger = { scope:vassal.var:target_court_position = flag:keeper_of_swans scope:vassal = { has_trait = lifestyle_hunter } } desc = hold_court_8090_interest_keeper_of_swans } triggered_desc = { trigger = { has_relation_soulmate = scope:vassal } desc = hold_court_8090_interest_soulmate } triggered_desc = { trigger = { has_relation_lover = scope:vassal } desc = hold_court_8090_interest_lover } triggered_desc = { trigger = { has_relation_best_friend = scope:vassal } desc = hold_court_8090_interest_bestie } triggered_desc = { trigger = { has_relation_friend = scope:vassal } desc = hold_court_8090_interest_friend } triggered_desc = { trigger = { exists = scope:old_holder } desc = hold_court_8090_interest_other } triggered_desc = { trigger = { NOT = { exists = scope:old_holder } } desc = hold_court_8090_interest_fallback } } } theme = realm lower_right_portrait = scope:old_holder court_scene = { button_position_character = scope:vassal court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:vassal = { group = petitioners_group animation = admiration } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 10 } trigger = { OR = { any_vassal = { hold_court_8090_candidate_trigger = yes } any_courtier = { hold_court_8090_candidate_trigger = yes } } } weight_multiplier = { base = 1 modifier = { add = 2 has_employed_any_court_position = no } # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic } } immediate = { save_scope_as = liege every_vassal = { limit = { hold_court_8090_candidate_trigger = yes } add_to_list = hold_court_8090_candidate_list } every_courtier = { limit = { hold_court_8090_candidate_trigger = yes } add_to_list = hold_court_8090_candidate_list } random_in_list = { list = hold_court_8090_candidate_list weight = { base = 1 modifier = { add = 2 is_landed_or_landless_administrative = yes } modifier = { add = -1 highest_held_title_tier = tier_barony } modifier = { add = 2 highest_held_title_tier = tier_duchy } modifier = { add = 4 highest_held_title_tier = tier_kingdom } modifier = { add = -20 is_councillor_of = root } modifier = { add = 2 has_trait = arrogant } modifier = { add = 2 has_trait = ambitious } modifier = { add = 10 has_relation_friend = root } modifier = { add = 20 has_relation_best_friend = root } modifier = { add = 30 has_relation_lover = root } modifier = { add = 40 has_relation_soulmate = root } } hidden_effect = { random_list = { 2 = { trigger = { has_any_court_position = no } save_scope_as = vassal court_event_character_flag_effect = yes } 2 = { trigger = { any_close_family_member = { hold_court_8090_can_move_trigger = yes } } save_scope_as = vassal_advocate court_event_character_flag_effect = yes ordered_close_family_member = { limit = { hold_court_8090_can_move_trigger = yes } save_scope_as = vassal court_event_character_flag_effect = yes } } } } } scope:vassal = { court_position_generator_effect = { VAR = target EMPLOYER = root } court_position_generator_effect = { VAR = backup EMPLOYER = root } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { # Grant desired position name = { trigger = { exists = scope:old_holder } # Replace text = hold_court.8090.b } name = { # Lady-in-Waiting Soulmate trigger = { scope:vassal.var:target_court_position = flag:lady_in_waiting has_relation_soulmate = scope:vassal } text = hold_court.8090.a.lady_in_waiting_soulmate } name = { # Lady-in-Waiting Lover trigger = { scope:vassal.var:target_court_position = flag:lady_in_waiting has_relation_lover = scope:vassal } text = hold_court.8090.a.lady_in_waiting_lover } name = { # Bodyguard Soulmate trigger = { OR = { scope:vassal.var:target_court_position = flag:bodyguard scope:vassal.var:target_court_position = flag:akolouthos } has_relation_soulmate = scope:vassal } text = hold_court.8090.a.bodyguard_soulmate } name = { # Bodyguard Lover trigger = { OR = { scope:vassal.var:target_court_position = flag:bodyguard scope:vassal.var:target_court_position = flag:akolouthos } has_relation_lover = scope:vassal } text = hold_court.8090.a.bodyguard_lover } name = { # Default trigger = { always = yes } text = hold_court.8090.a } trigger = { exists = scope:vassal.var:target_court_position } court_position_generator_assignment_effect = { VAR = target CANDIDATE = scope:vassal EMPLOYER = root } if = { limit = { NOT = { exists = scope:vassal_advocate } } if = { limit = { exists = scope:vassal_advocate } hold_court_8090_hook_effect = { CHAR = scope:vassal_advocate } scope:vassal_advocate = { add_opinion = { modifier = grateful_opinion target = root opinion = 15 } } } } else = { hold_court_8090_hook_effect = { CHAR = scope:vassal } } scope:vassal = { add_opinion = { modifier = grateful_opinion target = root opinion = 10 } } if = { limit = { OR = { has_relation_lover = scope:vassal has_relation_soulmate = scope:vassal } OR = { scope:vassal.var:target_court_position = flag:bodyguard scope:vassal.var:target_court_position = flag:akolouthos scope:vassal.var:target_court_position = flag:lady_in_waiting } } had_sex_with_effect = { CHARACTER = scope:vassal PREGNANCY_CHANCE = pregnancy_chance } } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = 0.5 } modifier = { #Weight up. add = 15 has_relation_friend = scope:vassal } modifier = { #Weight up. add = 30 has_relation_best_friend = scope:vassal } modifier = { #Weight up. add = 45 has_relation_lover = scope:vassal } modifier = { #Weight up. add = 60 has_relation_soulmate = scope:vassal } } } option = { # Grant some other unclaimed position name = hold_court.8090.c trigger = { exists = scope:vassal.var:backup_court_position } show_unlock_reason = no court_position_generator_assignment_effect = { VAR = backup CANDIDATE = scope:vassal EMPLOYER = root } if = { limit = { exists = scope:vassal_advocate } scope:vassal_advocate = { add_opinion = { modifier = grateful_opinion target = root opinion = 5 } } } scope:vassal = { add_opinion = { modifier = grateful_opinion target = root opinion = 10 } } stress_impact = { lazy = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_rationality = 2 ai_energy = 1 ai_compassion = 1 } modifier = { #Weight down for stress. add = -15 has_trait = lazy } } } option = { # Offer bad role name = { text = hold_court.8090.d.advocate trigger = { exists = scope:vassal_advocate } } name = { text = hold_court.8090.d trigger = { NOT = { exists = scope:vassal_advocate } } } trigger = { OR = { AND = { has_imprisonment_reason = scope:vassal can_appoint_char_to_court_position = { CHAR = scope:vassal COURT_POS = executioner_court_position } NOR = { scope:vassal.var:target_court_position ?= flag:executioner scope:vassal.var:backup_court_position ?= flag:executioner } } AND = { can_appoint_char_to_court_position = { CHAR = scope:vassal COURT_POS = court_jester_court_position } NOR = { scope:vassal.var:target_court_position ?= flag:court_jester scope:vassal.var:backup_court_position ?= flag:court_jester } } AND = { can_appoint_char_to_court_position = { CHAR = scope:vassal COURT_POS = food_taster_court_position } NOR = { scope:vassal.var:target_court_position ?= flag:food_taster scope:vassal.var:backup_court_position ?= flag:food_taster } } } } scope:vassal = { if = { limit = { NOR = { is_vassal_of = root is_courtier_of = root employer = root } } hidden_effect = { set_employer = root } } } if = { limit = { # Executioner can_appoint_char_to_court_position = { CHAR = scope:vassal COURT_POS = executioner_court_position } NOR = { scope:vassal.var:target_court_position = flag:executioner scope:vassal.var:backup_court_position = flag:executioner } } court_position_grant_effect = { EMPLOYER = root POS = executioner CANDIDATE = scope:vassal } if = { limit = { NOT = { has_imprisonment_reason = scope:vassal } } stress_impact = { just = medium_stress_impact_gain } } } else_if = { # Jester limit = { can_appoint_char_to_court_position = { CHAR = scope:vassal COURT_POS = court_jester_court_position } NOR = { scope:vassal.var:target_court_position = flag:court_jester scope:vassal.var:backup_court_position = flag:court_jester } } court_position_grant_effect = { EMPLOYER = root POS = court_jester CANDIDATE = scope:vassal } stress_impact = { just = minor_stress_impact_gain compassionate = minor_stress_impact_gain } } else_if = { # Taster limit = { can_appoint_char_to_court_position = { CHAR = scope:vassal COURT_POS = food_taster_court_position } NOR = { scope:vassal.var:target_court_position = flag:food_taster scope:vassal.var:backup_court_position = flag:food_taster } } court_position_grant_effect = { EMPLOYER = root POS = food_taster CANDIDATE = scope:vassal } stress_impact = { just = minor_stress_impact_gain compassionate = minor_stress_impact_gain } } if = { limit = { exists = scope:vassal_advocate } scope:vassal_advocate = { add_opinion = { modifier = insulted_opinion target = root opinion = -10 } } } scope:vassal = { if = { limit = { has_court_position = executioner_court_position } root = { consume_imprisonment_reasons = scope:vassal } } if = { limit = { has_relation_friend = root } remove_relation_friend = root } add_opinion = { modifier = insulted_opinion target = root opinion = -15 } } ai_chance = { base = 100 modifier = { #Weight up. add = 15 has_imprisonment_reason = scope:vassal has_trait = just } modifier = { #Weight up. add = 15 NOT = { has_imprisonment_reason = scope:vassal } has_trait = arbitrary } } } option = { # Refuse name = { text = hold_court.8090.e.advocate trigger = { exists = scope:vassal_advocate } } name = { text = hold_court.8090.e trigger = { NOT = { exists = scope:vassal_advocate } } } if = { limit = { exists = scope:vassal_advocate } scope:vassal_advocate = { add_opinion = { modifier = disappointed_opinion target = root opinion = -10 } } } scope:vassal = { add_opinion = { modifier = disappointed_opinion target = root opinion = -10 } } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = -0.5 } } } after = { scope:vassal = { clear_court_event_participation = yes remove_variable = target_court_position remove_variable = backup_court_position } if = { limit = { exists = scope:vassal_advocate } scope:vassal_advocate = { clear_court_event_participation = yes } } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # A Child of the Court # by Joe Parkin # 8100 ################################################## scripted_trigger hold_court_8100_child_trigger = { has_court_event_flag = no is_available_ai_child = yes # Children only age < 14 # Not already almost done with education, sets time which must be invested to get rewards NOT = { is_child_of = root } # Is not your child NOT = { has_relation_ward = root } # Is not already a ward of the player NOT = { root = { has_strong_hook = prev } # prev = scope:ward } trigger_if = { limit = { is_close_or_extended_family_of = root } # If related to the player, must be a nibling or great nibling OR = { AND = { exists = root.father OR = { is_grandchild_of = root.father is_great_grandchild_of = root.father } } AND = { exists = root.mother OR = { is_grandchild_of = root.mother is_great_grandchild_of = root.mother } } } } faith = root.faith # Has the same faith as the player trigger_if = { limit = { faith = { has_doctrine = doctrine_gender_male_dominated } # If male dominated, must be no father } OR = { NOT = { exists = father } father = { OR = { is_alive = no is_imprisoned = yes } } } NOR = { AND = { is_courtier_of = root mother ?= { is_courtier_of = root } } AND = { is_courtier_of = root father ?= { is_courtier_of = root } } } } trigger_if = { limit = { faith = { has_doctrine = doctrine_gender_female_dominated } # If female dominated, must be no mother } OR = { NOT = { exists = mother } mother = { OR = { is_alive = no is_imprisoned = yes } } } } } scripted_trigger hold_court_8100_parent_trigger = { # is a parent eligible to advocate? this != root OR = { is_alive = yes is_imprisoned = no } has_court_event_flag = no is_available_ai_adult = yes OR = { employer = root AND = { exists = scope:ward_employer employer = scope:ward_employer } } } scripted_trigger hold_court_8100_adopt_trigger = { # is someone disadvantaged by adoption? OR = { is_child_of = root AND = { is_spouse_of = root root = { any_child = { any_parent = { this = scope:advocate } } } } } } scripted_effect hold_court_8100_root_effect = { # make root the guardian hidden_effect = { if = { limit = { employer != root } set_employer = root } } set_relation_guardian = root set_variable = { name = hold_court_8100_fosterer value = root years = 17 } root = { if = { limit = { NOT = { scope:ward = { is_close_family_of = root } } } change_current_court_grandeur = medium_court_grandeur_gain } } } scripted_effect hold_court_8100_guardian_effect = { # make scope:guardian the guardian hidden_effect = { if = { limit = { employer != scope:guardian.employer } set_employer = scope:guardian.employer } } set_relation_guardian = scope:guardian root = { if = { limit = { NOT = { scope:ward = { is_close_family_of = root } } } change_current_court_grandeur = minor_court_grandeur_gain } } } scripted_effect hold_court_8100_root_or_guardian_effect = { # make root guardian, or scope:guardian if not if = { limit = { root = { num_of_relation_ward < 2 } } hold_court_8100_root_effect = yes } else = { hold_court_8100_guardian_effect = yes } } # A parent wants you to be their child's ward hold_court.8100 = { type = court_event title = hold_court.8100.t desc = { desc = hold_court.8100.desc.intro first_valid = { triggered_desc = { trigger = { exists = scope:ward_employer scope:ward_employer != root } desc = hold_court.8100.desc.vassal } desc = hold_court.8100.desc.court } desc = hold_court.8100.desc.body first_valid = { triggered_desc = { trigger = { scope:ward = { is_close_or_extended_family_of = root } } desc = hold_court.8100.desc.interest_family } triggered_desc = { trigger = { scope:ward = { is_landed_or_landless_administrative = yes OR = { AND = { is_female = yes faith = { has_doctrine = doctrine_gender_male_dominated } } AND = { is_female = no faith = { has_doctrine = doctrine_gender_female_dominated } } } } } desc = hold_court.8100.desc.interest_marriage } triggered_desc = { trigger = { scope:ward = { is_landed_or_landless_administrative = yes } } desc = hold_court.8100.desc.interest_alliance } desc = hold_court.8100.desc.interest_fallback } } theme = realm override_background = { reference = throne_room } lower_left_portrait = scope:ward_employer lower_right_portrait = scope:guardian court_scene = { button_position_character = scope:advocate court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:advocate = { group = petitioners_group animation = beg } scope:ward = { group = petitioners_group animation = sadness } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 10 } trigger = { NOT = { any_courtier = { has_variable = hold_court_8100_fosterer var:hold_court_8100_fosterer = root } } trigger_if = { # There is a parentless child at court limit = { any_courtier = { hold_court_8100_child_trigger = yes } } any_courtier = { hold_court_8100_child_trigger = yes save_temporary_scope_as = ward_temp } } trigger_else = { any_vassal = { any_courtier = { hold_court_8100_child_trigger = yes save_temporary_scope_as = ward_temp } } } OR = { num_of_relation_ward < 2 any_courtier = { # Guardian has_court_event_flag = no is_available_ai_adult = yes num_of_relation_ward < 2 NOT = { is_parent_of = scope:ward_temp } save_temporary_scope_as = compare_character scope:ward_temp = { has_ward_guardian_education_match_compare_character_trigger = yes } # same education } } any_courtier = { # Advocate backup has_court_event_flag = no is_available_ai_adult = yes NOT = { is_parent_of = scope:ward_temp } trigger_if = { limit = { exists = scope:compare_character } this != scope:compare_character } } } weight_multiplier = { base = 1 # Shares education focus of player modifier = { add = 1 any_courtier = { hold_court_8100_child_trigger = yes root = { save_temporary_scope_as = compare_character } has_ward_guardian_education_match_compare_character_trigger = yes # same education interest } } modifier = { add = 1 any_vassal = { any_courtier = { hold_court_8100_child_trigger = yes root = { save_temporary_scope_as = compare_character } has_ward_guardian_education_match_compare_character_trigger = yes # same education interest } } } # Has no guardian modifier = { add = 2 any_courtier = { hold_court_8100_child_trigger = yes num_of_relation_guardian = 0 } } modifier = { add = 2 any_vassal = { any_courtier = { hold_court_8100_child_trigger = yes num_of_relation_guardian = 0 } } } # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic } } immediate = { every_courtier = { limit = { hold_court_8100_child_trigger = yes } add_to_list = hold_court_8100_list } every_vassal = { every_courtier = { limit = { hold_court_8100_child_trigger = yes } add_to_list = hold_court_8100_list } } random_in_list = { list = hold_court_8100_list weight = { base = 1 # Shares education focus of root modifier = { add = 10 root = { save_temporary_scope_as = compare_character } has_ward_guardian_education_match_compare_character_trigger = yes # same education interest } # Has no guardian modifier = { add = 2 num_of_relation_guardian = 0 } # Not a more suitable ward modifier = { add = 20 any_sibling = { count = all hold_court_8100_child_trigger = yes OR = { AND = { root = { save_temporary_scope_as = compare_character } has_ward_guardian_education_match_compare_character_trigger = yes # same education interest } age < prev.age # prev = scope:ward } } } # Related to root modifier = { add = 100 is_close_or_extended_family_of = root } # In root court modifier = { add = 25 employer = root } } save_scope_as = ward court_event_character_flag_effect = yes if = { limit = { employer ?= { this != root } } employer = { save_scope_as = ward_employer } } } random_courtier = { # Guardian limit = { has_court_event_flag = no is_available_ai_adult = yes num_of_relation_ward < 2 NOT = { is_parent_of = scope:ward } save_temporary_scope_as = compare_character scope:ward = { has_ward_guardian_education_match_compare_character_trigger = yes } # same education } alternative_limit = { has_court_event_flag = no is_available_ai_adult = yes num_of_relation_ward < 2 NOT = { is_parent_of = scope:ward } } save_scope_as = guardian court_event_character_flag_effect = yes } scope:ward = { if = { limit = { mother ?= { hold_court_8100_parent_trigger = yes } } mother = { save_scope_as = advocate } } else_if = { limit = { father ?= { hold_court_8100_parent_trigger = yes } } father = { save_scope_as = advocate } } else = { root = { random_courtier = { # Advocate backup limit = { is_available_ai_adult = yes has_court_event_flag = no NOT = { is_parent_of = scope:ward } trigger_if = { limit = { exists = scope:guardian } this != scope:guardian } } weight = { base = 1 modifier = { factor = 10 OR = { has_trait = compassionate has_trait = generous has_trait = just has_trait = paranoid has_trait = family_first has_trait = gallant has_trait = diligent has_trait = lazy } } modifier = { factor = 50 is_close_family_of = scope:ward } } save_scope_as = advocate court_event_character_flag_effect = yes } } } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { # Become the child's guardian name = hold_court.8100.a trigger = { num_of_relation_ward < 2 } highlight_portrait = root scope:ward = { hold_court_8100_root_effect = yes custom_tooltip = hold_court.8100.hook.tt add_opinion = { modifier = grateful_opinion target = root opinion = 20 } } scope:advocate = { add_opinion = { modifier = respect_opinion target = root opinion = 10 } } if = { limit = { exists = scope:ward_employer } scope:ward_employer = { add_opinion = { modifier = respect_opinion target = root opinion = 5 } } } stress_impact = { greedy = medium_stress_impact_gain callous = medium_stress_impact_gain lazy = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = 0.5 ai_energy = 0.25 ai_greed = -0.25 } modifier = { #Weight up. add = 30 scope:ward = { root = { save_temporary_scope_as = compare_character } has_ward_guardian_education_match_compare_character_trigger = yes # same education interest } } modifier = { #Weight up. add = 30 scope:ward = { is_close_or_extended_family_of = root } } modifier = { #Weight down for stress. add = -45 has_trait = greedy } modifier = { #Weight down for stress. add = -30 has_trait = callous } modifier = { #Weight down for stress. add = -15 has_trait = lazy } } } option = { # Find another guardian name = hold_court.8100.b trigger = { exists = scope:guardian } highlight_portrait = scope:guardian scope:ward = { hold_court_8100_guardian_effect = yes add_opinion = { modifier = grateful_opinion target = root opinion = 10 } } scope:advocate = { if = { limit = { is_close_family_of = root } add_opinion = { target = root modifier = respect_opinion opinion = 5 } } else = { add_opinion = { target = root modifier = respect_opinion opinion = 10 } } } if = { limit = { exists = scope:ward_employer } scope:ward_employer = { add_opinion = { modifier = respect_opinion target = root opinion = 5 } } } stress_impact = { greedy = medium_stress_impact_gain callous = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = 0.25 ai_greed = -0.25 } modifier = { #Weight down for stress. add = -30 has_trait = greedy } modifier = { #Weight down for stress. add = -15 has_trait = callous } } } option = { # Adopt them name = hold_court.8100.c trigger = { scope:ward = { is_lowborn = yes } } scope:ward = { if = { limit = { can_add_hook = { target = scope:ward type = loyalty_hook } } add_hook = { target = scope:ward type = loyalty_hook } } hidden_effect = { if = { limit = { employer != root } set_employer = root } } set_relation_guardian = root if = { limit = { root = { is_male = yes } } set_father = root } else = { set_mother = root } set_house = root.house add_opinion = { modifier = grateful_child target = root opinion = 40 } add_character_modifier = { modifier = hold_court_8100_adopted_modifier } } scope:advocate = { if = { limit = { hold_court_8100_adopt_trigger = yes } add_opinion = { target = root modifier = envy_opinion opinion = -20 } } else = { add_opinion = { modifier = respect_opinion target = root opinion = 20 } } } if = { limit = { exists = scope:ward_employer scope:ward_employer = { NOT = { hold_court_8100_adopt_trigger = yes } } } scope:ward_employer = { add_opinion = { modifier = respect_opinion target = root opinion = 10 } } } every_child = { custom = hold_court.8100.c.tt_child limit = { this != scope:ward } add_opinion = { target = root modifier = envy_opinion opinion = -20 } add_opinion = { target = scope:ward modifier = envy_opinion opinion = -40 } } stress_impact = { arrogant = medium_stress_impact_gain callous = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = 0.5 ai_greed = -0.5 } modifier = { #Weight up. add = 50 AND = { any_child = { count = 0 } OR = { can_have_children = no AND = { is_married = yes primary_spouse = { can_have_children = no } allowed_more_spouses = no max_number_of_concubines = 0 } } } } modifier = { #Weight down. add = -50 any_child = { count > 0 this = root.primary_heir } } modifier = { #Weight down. add = -50 any_child = { count > 2 } } modifier = { #Weight down for stress. add = -30 has_trait = arrogant } modifier = { #Weight down for stress. add = -30 has_trait = callous } modifier = { factor = 0 is_adult = no } } } option = { # Pay their way name = hold_court.8100.d trigger = { OR = { scope:advocate.gold >= root.minor_gold_value scope:ward.gold >= root.minor_gold_value } } if = { limit = { scope:ward.gold >= root.minor_gold_value } scope:ward = { pay_short_term_gold = { target = root gold = root.minor_gold_value } add_opinion = { target = root modifier = cruelty_opinion opinion = -15 } } scope:advocate = { add_opinion = { target = root modifier = cruelty_opinion opinion = -10 } } } else = { scope:advocate = { pay_short_term_gold = { target = root gold = root.minor_gold_value } add_opinion = { target = root modifier = angry_opinion opinion = -15 } } scope:ward = { add_opinion = { target = root modifier = cruelty_opinion opinion = -10 } } } if = { limit = { exists = scope:ward_employer } scope:ward_employer = { add_opinion = { modifier = pleased_opinion target = root opinion = 5 } } } if = { limit = { num_of_relation_ward < 2 } scope:ward = { hidden_effect = { if = { limit = { employer != root } set_employer = root } } set_relation_guardian = root set_variable = { name = hold_court_8100_fosterer value = root years = 17 } custom_tooltip = hold_court.8100.hook.tt } } else = { scope:ward = { hidden_effect = { if = { limit = { employer != scope:guardian.employer } set_employer = scope:guardian.employer } } set_relation_guardian = scope:guardian } } stress_impact = { generous = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_honor = -0.25 ai_greed = 0.5 } modifier = { #Weight down for stress. add = -30 has_trait = generous } } } option = { # Refuse name = hold_court.8100.e if = { limit = { NOT = { scope:ward = { is_close_family_of = root } } } change_current_court_grandeur = medium_court_grandeur_loss } scope:ward = { add_opinion = { target = root modifier = disappointed_opinion opinion = -20 } } scope:advocate = { if = { limit = { is_close_family_of = root } add_opinion = { target = root modifier = disappointed_opinion opinion = -20 } } else = { add_opinion = { target = root modifier = disappointed_opinion opinion = -10 } } } if = { limit = { exists = scope:ward_employer } scope:ward_employer = { add_opinion = { modifier = disappointed_opinion target = root opinion = -5 } } } stress_impact = { compassionate = medium_stress_impact_gain generous = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = -1 } modifier = { #Weight down for stress. add = -30 has_trait = compassionate } modifier = { #Weight down for stress. add = -15 has_trait = generous } } } after = { scope:ward = { clear_court_event_participation = yes } scope:guardian = { clear_court_event_participation = yes } scope:advocate = { clear_court_event_participation = yes } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # Serious Business # by Joe Parkin # 8110 ################################################## # A peasant comes to you with a very provincial problem hold_court.8110 = { type = court_event title = hold_court.8110.t desc = { desc = hold_court.8110.desc random_valid = { desc = hold_court.8110.desc.affair desc = hold_court.8110.desc.fence desc = hold_court.8110.desc.goat desc = hold_court.8110.desc.veg desc = hold_court.8110.desc.drink } } theme = realm lower_center_portrait = cp:councillor_steward lower_right_portrait = scope:executioner court_scene = { button_position_character = scope:peasant court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:peasant = { group = petitioners_group animation = happiness } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 20 } trigger = { any_held_title = { title_tier = county county = { county_control > 80 any_county_province = { has_holding = yes } } } } weight_multiplier = { base = 1 # Court weightings. ## Since you take peasant administrative concerns seriously... ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative } } immediate = { random_held_title = { # Find a place for loc title_tier = county limit = { county = { county_control > 80 any_county_province = { has_holding = yes } } } random_county_province = { limit = { has_holding = yes } save_scope_as = peasant_holding } } hidden_effect = { # Create peasants create_character = { template = servant_character dynasty = none location = root.capital_province gender_female_chance = root_soldier_female_chance trait = beauty_bad_2 save_scope_as = peasant } dummy_female = { save_scope_as = dummy_female } dummy_male = { save_scope_as = dummy_male } } scope:peasant = { court_event_character_flag_effect = yes } if = { # Save Steward if relevant limit = { exists = cp:councillor_steward cp:councillor_steward = { has_court_event_flag = no is_available_ai_adult = yes } } cp:councillor_steward = { save_scope_as = steward court_event_character_flag_effect = yes } } if = { # Save Executioner if relevant limit = { employs_court_position = executioner_court_position any_court_position_holder = { type = executioner_court_position has_court_event_flag = no is_available_ai_adult = yes } } random_court_position_holder = { type = executioner_court_position limit = { has_court_event_flag = no is_available_ai_adult = yes } save_scope_as = executioner court_event_character_flag_effect = yes } } court_position_old_holder_effect = { POS = court_jester EMPLOYER = root } # Save Jester if relevant # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { # Hear them out name = hold_court.8110.a add_character_modifier = { modifier = hold_court_8110_common_modifier years = 10 } stress_impact = { base = medium_stress_impact_gain lazy = medium_stress_impact_gain arrogant = medium_stress_impact_gain impatient = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_honor = 0.25 ai_energy = 0.25 } modifier = { #Weight down for stress. add = -15 has_trait = lazy } modifier = { #Weight down for stress. add = -30 has_trait = arrogant } modifier = { #Weight down for stress. add = -30 has_trait = impatient } } } option = { # Steward handle it name = hold_court.8110.b trigger = { exists = scope:steward } highlight_portrait = scope:steward scope:steward = { add_opinion = { target = root modifier = annoyed_opinion opinion = -15 } } scope:peasant_holding.county = { add_county_modifier = { modifier = hold_court_8110_steward_modifier years = 10 } } stress_impact = { patient = medium_stress_impact_gain diligent = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_energy = -0.5 } modifier = { #Weight down for stress. add = -15 has_trait = patient } modifier = { #Weight down for stress. add = -15 has_trait = diligent } } } option = { # Execute them name = hold_court.8110.c trigger = { exists = scope:executioner } highlight_portrait = scope:executioner add_tyranny = minor_tyranny_gain add_dread = miniscule_dread_gain scope:peasant = { death = { killer = scope:executioner death_reason = death_execution } } scope:peasant_holding.county = { add_county_modifier = { modifier = hold_court_8110_execute_modifier years = 10 } } stress_impact = { compassionate = medium_stress_impact_gain just = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_honor = -0.5 ai_compassion = -0.5 } modifier = { #Weight down for stress. add = -15 has_trait = compassionate } modifier = { #Weight down for stress. add = -15 has_trait = just } } } option = { # Make them a jester name = hold_court.8110.d scope:peasant = { hidden_effect = { set_employer = root } add_opinion = { modifier = insult_opinion target = root opinion = -10 } } if = { limit = { exists = scope:old_holder } show_as_tooltip = { appoint_court_position = { recipient = scope:peasant court_position = court_jester_court_position } } hidden_effect = { add_character_flag = temporary_court_position_cost_removal replace_court_position = { recipient = scope:peasant holder = scope:old_holder court_position = court_jester_court_position } remove_character_flag = temporary_court_position_cost_removal } } else = { if = { limit = { can_employ_court_position_type = court_jester_court_position } court_position_grant_effect = { EMPLOYER = root POS = court_jester CANDIDATE = scope:peasant } } } scope:peasant_holding.county = { add_county_modifier = { modifier = hold_court_8110_jester_modifier years = 10 } } stress_impact = { compassionate = medium_stress_impact_gain humble = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_boldness = 0.5 ai_compassion = 0.25 } modifier = { #Weight down for stress. add = -15 has_trait = compassionate } modifier = { #Weight down for stress. add = -15 has_trait = humble } } } option = { # Be done with it name = hold_court.8110.e add_character_modifier = { modifier = hold_court_8110_haughty_modifier years = 10 } stress_impact = { just = medium_stress_impact_gain patient = medium_stress_impact_gain humble = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_honor = 0.5 ai_boldness = -0.5 } modifier = { #Weight down for stress. add = -15 has_trait = just } modifier = { #Weight down for stress. add = -15 has_trait = patient } modifier = { #Weight down for stress. add = -15 has_trait = humble } } } after = { scope:peasant = { clear_court_event_participation = yes if = { limit = { is_alive = yes NOT = { has_court_position = court_jester_court_position } } silent_disappearance_effect = yes } } scope:steward ?= { clear_court_event_participation = yes } scope:executioner ?= { clear_court_event_participation = yes } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # Evangelical Backlash # by Joe Parkin # 8120 ################################################## scripted_trigger hold_court_8120_syncretic_faith_trigger = { scope:peasant.religion != root.religion OR = { AND = { # Eastern scope:peasant.faith.religion = { is_in_family = rf_eastern } faith = { has_doctrine = tenet_eastern_syncretism } } AND = { # Pagan scope:peasant.faith = { has_doctrine_parameter = unreformed } faith = { has_doctrine = tenet_unreformed_syncretism } } AND = { # Christian OR = { scope:peasant.religion = religion:eastern_orthodox_religion scope:peasant.religion = religion:catholic_religion scope:peasant.religion = religion:protestant_religion } faith = { has_doctrine = tenet_christian_syncretism } } AND = { # Islam scope:peasant.religion = religion:islam_religion faith = { has_doctrine = tenet_islamic_syncretism } } AND = { # Judaism scope:peasant.religion = religion:judaism_religion faith = { has_doctrine = tenet_jewish_syncretism } } } } scripted_effect hold_court_8120_stop_effect = { set_variable = { name = hold_court_8120_religion_block value = scope:conversion_target.faith years = 15 } add_character_modifier = { modifier = hold_court_8120_tolerance_modifier years = 10 } scope:bishop = { add_opinion = { modifier = impious_opinion target = root opinion = -15 } set_council_task = { task_type = task_religious_relations } } scope:conversion_target = { add_county_modifier = { modifier = hold_court_8120_stopped_modifier years = 15 } } custom_tooltip = hold_court.8120.a.tt_conversion stress_impact = { zealous = medium_stress_impact_gain callous = medium_stress_impact_gain } } # Locals ask you to stop trying to convert them hold_court.8120 = { type = court_event title = hold_court.8120.t desc = { desc = hold_court.8120.desc first_valid = { triggered_desc = { trigger = { scope:peasant.religion = root.religion } desc = hold_court.8120.desc.same_religion } triggered_desc = { trigger = { scope:peasant.culture = root.culture } desc = hold_court.8120.desc.same_culture } desc = hold_court.8120.desc.other } } theme = realm lower_right_portrait = scope:bishop court_scene = { button_position_character = scope:peasant court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:peasant = { group = petitioners_group animation = beg } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 20 } trigger = { NOT = { has_character_flag = has_had_conversion_event } top_liege = this exists = cp:councillor_court_chaplain cp:councillor_court_chaplain = { has_court_event_flag = no is_available_ai_adult = yes } any_held_county = { is_target_of_council_task = task_conversion } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic } ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly } } immediate = { add_character_flag = { flag = has_had_conversion_event years = 15 } cp:councillor_court_chaplain = { save_scope_as = bishop court_event_character_flag_effect = yes } random_held_county = { limit = { is_target_of_council_task = task_conversion } save_scope_as = conversion_target } create_character = { template = servant_character dynasty = none location = root.capital_province gender_female_chance = root_soldier_female_chance culture = scope:conversion_target.culture faith = scope:conversion_target.faith save_scope_as = peasant } scope:peasant = { court_event_character_flag_effect = yes } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { # Stop the priests - unsyncretic name = hold_court.8120.a trigger = { hold_court_8120_syncretic_faith_trigger = no } if = { limit = { faith = { faith_hostility_level = { target = scope:peasant.faith value >= faith_evil_level } } } add_piety = medium_piety_loss } else_if = { limit = { faith = { faith_hostility_level = { target = scope:peasant.faith value >= faith_hostile_level } } } add_piety = minor_piety_loss } else_if = { limit = { faith = { faith_hostility_level = { target = scope:peasant.faith value >= faith_astray_level } } } add_piety = miniscule_piety_loss } hold_court_8120_stop_effect = yes ai_chance = { base = 100 ai_value_modifier = { ai_compassion = 0.5 ai_zeal = -1 } modifier = { #Weight down for stress. add = -30 has_trait = callous } modifier = { #Weight down for stress. add = -30 has_trait = zealous } } } option = { # Stop the priests - syncretic name = hold_court.8120.b trigger = { hold_court_8120_syncretic_faith_trigger = yes } if = { limit = { AND = { scope:peasant.faith.religion = { is_in_family = rf_eastern } faith = { has_doctrine = tenet_eastern_syncretism } } } custom_tooltip = hold_court.8120.b.tt_eastern # Eastern } else_if = { limit = { AND = { scope:peasant.faith = { has_doctrine_parameter = unreformed } faith = { has_doctrine = tenet_unreformed_syncretism } } } custom_tooltip = hold_court.8120.b.tt_pagan # Pagan } else_if = { limit = { AND = { OR = { scope:peasant.religion = religion:eastern_orthodox_religion scope:peasant.religion = religion:catholic_religion scope:peasant.religion = religion:protestant_religion } faith = { has_doctrine = tenet_christian_syncretism } } } custom_tooltip = hold_court.8120.b.tt_christianity # Christian } else_if = { limit = { AND = { scope:peasant.religion = religion:islam_religion faith = { has_doctrine = tenet_islamic_syncretism } } } custom_tooltip = hold_court.8120.b.tt_islam # Islam } else = { custom_tooltip = hold_court.8120.b.tt_judaism } # Judaism add_piety = medium_piety_gain hold_court_8120_stop_effect = yes ai_chance = { base = 100 ai_value_modifier = { ai_compassion = 0.5 ai_zeal = -1 } modifier = { #Weight down for stress. add = -30 has_trait = callous } modifier = { #Weight down for stress. add = -30 has_trait = zealous } } } option = { # Demand religious taxes name = hold_court.8120.c add_treasury_or_gold = minor_treasury_or_gold_value if = { limit = { NOT = { faith = { OR = { has_doctrine = tenet_tax_nonbelievers has_doctrine = special_doctrine_jizya } } } } custom_tooltip = hold_court.8120.c.tt_tenet stress_impact = { honest = medium_stress_impact_gain zealous = medium_stress_impact_gain } } else = { add_piety = minor_piety_gain stress_impact = { cynical = medium_stress_impact_gain } } stress_impact = { generous = medium_stress_impact_gain } set_variable = { name = hold_court_8120_religion_block value = scope:conversion_target.faith years = 15 } scope:bishop = { if = { limit = { faith = { OR = { has_doctrine = tenet_tax_nonbelievers has_doctrine = special_doctrine_jizya } } } add_opinion = { modifier = pious_opinion target = root opinion = 5 } } else = { add_opinion = { modifier = impious_opinion target = root opinion = -10 } } set_council_task = { task_type = task_religious_relations } } scope:conversion_target = { add_county_modifier = { modifier = hold_court_8120_tax_modifier years = 15 } custom_tooltip = hold_court.8120.a.tt_conversion } ai_chance = { base = 100 ai_value_modifier = { ai_greed = 2 ai_zeal = 1 } modifier = { #Weight up for stress. add = 30 NOT = { faith = { OR = { has_doctrine = tenet_tax_nonbelievers has_doctrine = special_doctrine_jizya } } } OR = { has_trait = cynical has_trait = deceitful } } modifier = { #Weight down for stress. add = -30 NOT = { faith = { OR = { has_doctrine = tenet_tax_nonbelievers has_doctrine = special_doctrine_jizya } } } OR = { has_trait = honest has_trait = zealous } } modifier = { #Weight down for stress. add = -15 faith = { OR = { has_doctrine = tenet_tax_nonbelievers has_doctrine = special_doctrine_jizya } } has_trait = cynical } modifier = { #Weight down for stress. add = -30 has_trait = generous } } } option = { # Execute name = hold_court.8120.d if = { limit = { faith = { faith_hostility_level = { target = scope:peasant.faith value >= faith_evil_level } } } add_piety = major_piety_gain } else_if = { limit = { faith = { faith_hostility_level = { target = scope:peasant.faith value >= faith_hostile_level } } } add_piety = medium_piety_gain } else_if = { limit = { faith = { faith_hostility_level = { target = scope:peasant.faith value >= faith_astray_level } } } add_piety = minor_piety_gain } add_dread = minor_dread_gain add_character_modifier = { modifier = hold_court_8120_terror_modifier years = 10 } scope:peasant = { death = { killer = root death_reason = death_execution } } scope:bishop = { add_opinion = { modifier = pious_opinion target = root opinion = 20 } } stress_impact = { cynical = medium_stress_impact_gain compassionate = massive_stress_impact_gain torturer = medium_stress_impact_loss } ai_chance = { base = 100 ai_value_modifier = { ai_zeal = 2 ai_compassion = -1 } modifier = { #Weight down for stress. add = -30 has_trait = cynical } modifier = { #Weight down for stress. add = -30 has_trait = compassionate } modifier = { #Weight up for stress. add = 15 has_trait = torturer } } } option = { # Refuse name = hold_court.8120.e scope:bishop = { add_opinion = { modifier = pious_opinion target = root opinion = 10 } } scope:conversion_target = { add_county_modifier = { modifier = hold_court_8120_refused_modifier years = 20 } } stress_impact = { callous = medium_stress_impact_gain cynical = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_zeal = 1 } modifier = { #Weight down for stress. add = -15 has_trait = callous } modifier = { #Weight down for stress. add = -15 has_trait = cynical } } } after = { scope:bishop = { clear_court_event_participation = yes } scope:peasant = { clear_court_event_participation = yes if = { limit = { is_alive = yes } silent_disappearance_effect = yes } } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # Cultural Pride # by Joe Parkin # 8130 ################################################## scripted_trigger hold_court_8130_county_trigger = { NOR = { has_county_modifier = hold_court_8120_tax_modifier has_county_modifier = hold_court_8120_stopped_modifier has_county_modifier = hold_court_8120_refused_modifier has_county_modifier = hold_court_8130_service_modifier } } scripted_effect hold_court_8130_stop_effect = { set_variable = { name = hold_court_8130_culture_block value = scope:conversion_target.culture years = 15 } add_character_modifier = { modifier = hold_court_8130_tolerance_modifier years = 10 } scope:steward = { if = { limit = { culture != scope:conversion_target.culture } add_opinion = { modifier = disappointed_opinion target = root opinion = -5 } } else = { add_opinion = { modifier = respect_opinion target = root opinion = 10 } } set_council_task = { task_type = task_collect_taxes } } scope:conversion_target = { add_county_modifier = { modifier = hold_court_8120_stopped_modifier years = 15 } custom_tooltip = hold_court.8120.a.tt_conversion } stress_impact = { arrogant = medium_stress_impact_gain } } # Locals ask you to stop trying to integrate them hold_court.8130 = { type = court_event title = hold_court.8130.t desc = { desc = hold_court.8130.desc first_valid = { triggered_desc = { trigger = { scope:peasant.culture = { has_same_culture_language = root.culture } } desc = hold_court.8130.desc.same_language } triggered_desc = { trigger = { scope:peasant.culture = { has_same_culture_heritage = root.culture } } desc = hold_court.8130.desc.same_heritage } triggered_desc = { trigger = { scope:peasant.culture = { has_same_culture_ethos = root.culture } } desc = hold_court.8130.desc.same_ethos } desc = hold_court.8130.desc.other } } theme = realm lower_right_portrait = scope:steward court_scene = { button_position_character = scope:peasant court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:peasant = { group = petitioners_group animation = beg } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 10 } trigger = { NOT = { has_character_flag = has_had_conversion_event } top_liege = this exists = cp:councillor_steward cp:councillor_steward = { has_court_event_flag = no is_available_ai_adult = yes } any_held_county = { is_target_of_council_task = task_promote_culture hold_court_8130_county_trigger = yes } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic } ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly } } immediate = { add_character_flag = { flag = has_had_conversion_event years = 5 } cp:councillor_steward = { save_scope_as = steward court_event_character_flag_effect = yes } random_held_county = { limit = { is_target_of_council_task = task_promote_culture hold_court_8130_county_trigger = yes } save_scope_as = conversion_target } create_character = { template = servant_character dynasty = none location = root.capital_province gender_female_chance = root_soldier_female_chance culture = scope:conversion_target.culture faith = scope:conversion_target.faith save_scope_as = peasant } scope:peasant = { court_event_character_flag_effect = yes } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { # Stop name = hold_court.8130.a trigger = { NOT = { root.culture = { has_cultural_pillar = ethos_egalitarian } } } add_prestige = minor_prestige_loss hold_court_8130_stop_effect = yes ai_chance = { base = 100 ai_value_modifier = { ai_compassion = 1 } modifier = { #Weight down for stress. add = -60 has_trait = arrogant } } } option = { # Stop - but egalitarian! name = hold_court.8130.b trigger = { root.culture = { has_cultural_pillar = ethos_egalitarian } } hold_court_8130_stop_effect = yes ai_chance = { base = 100 ai_value_modifier = { ai_compassion = 1 ai_zeal = -2 } modifier = { #Weight down for stress. add = -60 has_trait = arrogant } } } option = { # Demand name = hold_court.8130.c custom_tooltip = hold_court.8130.c.tt_service hidden_effect = { create_character = { gender_female_chance = root_soldier_female_chance location = root.capital_province template = new_warrior_character faith = scope:conversion_target.faith culture = scope:conversion_target.culture save_scope_as = soldier } send_interface_message = { type = event_guest_neutral title = hold_court.8130.c.tt_service_title right_icon = scope:soldier hidden_effect = { scope:soldier = { set_employer = root } } scope:soldier = { add_opinion = { modifier = kindness_opinion target = root opinion = 15 } } } } set_variable = { name = hold_court_8130_culture_block value = scope:conversion_target.culture years = 15 } scope:steward = { if = { limit = { culture != scope:conversion_target.culture } add_opinion = { modifier = disappointed_opinion target = root opinion = -5 } } else = { add_opinion = { modifier = respect_opinion target = root opinion = 10 } } set_council_task = { task_type = task_collect_taxes } } scope:conversion_target = { add_county_modifier = { modifier = hold_court_8130_service_modifier years = 15 } custom_tooltip = hold_court.8120.a.tt_conversion } stress_impact = { generous = medium_stress_impact_gain arrogant = medium_stress_impact_gain } ai_chance = { base = 100 modifier = { #Weight down for stress. add = -30 has_trait = generous } modifier = { #Weight down for stress. add = -30 has_trait = arrogant } } } option = { # Execute name = hold_court.8130.d trigger = { OR = { has_trait = arrogant has_trait = torturer has_trait = sadistic has_trait = callous } } trait = arrogant trait = torturer trait = sadistic trait = callous add_dread = minor_dread_gain add_character_modifier = { modifier = hold_court_8130_terror_modifier years = 10 } scope:peasant = { death = { killer = root death_reason = death_execution } } scope:steward = { if = { limit = { culture != scope:conversion_target.culture } add_opinion = { modifier = pleased_opinion target = root opinion = 20 } } else = { add_opinion = { modifier = cruelty_opinion target = root opinion = -10 } } } stress_impact = { torturer = medium_stress_impact_loss compassionate = massive_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_boldness = 2 ai_compassion = -1 } modifier = { #Weight up for stress. add = 15 has_trait = torturer } modifier = { #Weight down for stress. add = -30 has_trait = compassionate } } } option = { # Refuse name = hold_court.8130.e scope:steward = { if = { limit = { culture != scope:conversion_target.culture } add_opinion = { modifier = pleased_opinion target = root opinion = 10 } } else = { add_opinion = { modifier = hurt_opinion target = root opinion = -5 } } } scope:conversion_target = { add_county_modifier = { modifier = hold_court_8120_refused_modifier years = 20 } } stress_impact = { callous = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_zeal = 1 } modifier = { #Weight down for stress. add = -15 has_trait = callous } } } after = { scope:steward = { clear_court_event_participation = yes } scope:peasant = { clear_court_event_participation = yes if = { limit = { is_alive = yes } silent_disappearance_effect = yes } } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # Puppy Patronage # by Joe Parkin # 8140 - 142 ################################################## # Master of the hunt brings a pup hold_court.8140 = { type = court_event title = hold_court.8140.t desc = hold_court.8140.desc theme = realm court_scene = { button_position_character = scope:huntmaster court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:huntmaster = { group = petitioners_group animation = admiration } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 10 } trigger = { any_court_position_holder = { type = master_of_hunt_court_position has_court_event_flag = no is_available_ai_adult = yes NOR = { has_any_bad_relationship_with_root_trigger = yes any_owned_story = { type = story_cycle_pet_cat } has_character_modifier = cat_story_modifier } } NOR = { house = { has_house_modifier = hold_court_8140_house_modifier } any_owned_story = { type = story_cycle_pet_dog } any_owned_story = { type = story_cycle_pet_cat } has_character_modifier = dog_story_modifier has_character_modifier = cat_story_modifier } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike } } immediate = { random_court_position_holder = { type = master_of_hunt_court_position limit = { has_court_event_flag = no is_available_ai_adult = yes NOR = { has_any_bad_relationship_with_root_trigger = yes any_owned_story = { type = story_cycle_pet_cat } has_character_modifier = cat_story_modifier } } save_scope_as = huntmaster court_event_character_flag_effect = yes } save_scope_as = pup_house_ruler # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { # Invest in the kennel name = hold_court.8140.a trigger = { trigger_if = { limit = { is_ai = yes } short_term_treasury_or_gold >= massive_treasury_or_gold_value } } remove_treasury_or_gold = major_treasury_or_gold_value house = { add_house_modifier = { modifier = hold_court_8140_house_modifier years = 30 } custom_tooltip = hold_court.8140.a.tt every_house_member = { limit = { is_ai = no is_landed_or_landless_administrative = yes this != root } trigger_event = hold_court.8141 } set_variable = { name = hold_court_8140_pup_founder value = root } } scope:huntmaster = { add_opinion = { modifier = pleased_opinion target = root opinion = 15 } progress_towards_friend_effect = { REASON = friend_invested_in_kennel CHARACTER = root OPINION = 0 } } start_dog_story_cycle_effect = yes change_current_court_grandeur = medium_court_grandeur_gain stress_impact = { lifestyle_hunter = minor_stress_impact_loss lazy = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = 0.25 ai_greed = -0.5 ai_boldness = 1 ai_energy = 2 } modifier = { #Weight up. add = 30 has_trait = lifestyle_hunter } modifier = { #Weight down for stress. add = -15 has_trait = lazy } } } option = { # Just take the pup name = hold_court.8140.b trigger = { trigger_if = { limit = { is_ai = yes } short_term_gold >= medium_gold_value } } remove_short_term_gold = minor_gold_value start_dog_story_cycle_effect = yes scope:huntmaster = { add_opinion = { modifier = disappointed_opinion target = root opinion = -5 } } stress_impact = { callous = medium_stress_impact_gain lazy = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = 1 ai_greed = -0.25 ai_energy = 1 } modifier = { #Weight up. add = 15 has_trait = lifestyle_hunter } modifier = { #Weight down for stress. add = -15 has_trait = callous } modifier = { #Weight down for stress. add = -15 has_trait = lazy } } } option = { # Cat's are better tho name = hold_court.8140.c trigger = { trigger_if = { limit = { is_ai = yes } short_term_gold >= medium_gold_value } } remove_short_term_gold = minor_gold_value start_cat_story_cycle_effect = yes scope:huntmaster = { add_opinion = { modifier = disappointed_opinion target = root opinion = -15 } progress_towards_rival_effect = { CHARACTER = root REASON = rival_dogs_suck OPINION = 0 } } if = { limit = { any_vassal_or_below = { any_owned_story = { type = story_cycle_pet_cat } } } every_vassal_or_below = { limit = { any_owned_story = { type = story_cycle_pet_cat } } add_opinion = { modifier = respect_opinion target = root opinion = 10 } } } stress_impact = { diligent = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = -1 ai_greed = -0.25 ai_energy = -1 } modifier = { #Weight down for stress. add = -15 has_trait = diligent } } } option = { # Refuse name = hold_court.8140.d scope:huntmaster = { add_opinion = { modifier = disappointed_opinion target = root opinion = -10 } } change_current_court_grandeur = minor_court_grandeur_loss stress_impact = { compassionate = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_greed = 1 ai_compassion = -2 ai_energy = -2 } modifier = { #Weight down for stress. add = -15 has_trait = compassionate } } } after = { scope:huntmaster = { clear_court_event_participation = yes } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } hold_court.8141 = { # Ping for non-AI house members type = character_event title = hold_court.8140.t desc = hold_court.8141.desc theme = realm override_background = { reference = throne_room } left_portrait = { character = scope:pup_house_ruler } right_portrait = { character = scope:huntmaster animation = admiration } option = { # Yay puppos name = hold_court.8141.a show_as_tooltip = { house = { add_house_modifier = { modifier = hold_court_8140_house_modifier years = 30 } custom_tooltip = hold_court.8140.a.tt } } } } hold_court.8142 = { # Event on puppy adoption type = character_event title = hold_court.8142.t desc = { first_valid = { triggered_desc = { trigger = { house ?= { has_variable = hold_court_8140_pup_founder } } desc = hold_court.8142.desc } desc = hold_court.8142.desc_alternative } } theme = realm override_background = { reference = throne_room } left_portrait = { character = scope:pup_house_ruler animation = happiness } immediate = { if = { limit = { house ?= { has_variable = hold_court_8140_pup_founder } } house.var:hold_court_8140_pup_founder = { save_scope_as = pup_house_ruler } } else = { save_scope_as = pup_house_ruler } } option = { # Accept name = hold_court.8142.a start_dog_story_cycle_effect = yes } option = { # Change mind name = hold_court.8142.b add_gold = minor_gold_value } } ################################################## # Contractual Compromise # by Joe Parkin # 8150 ################################################## scripted_trigger hold_court_8150_faction_trigger = { exists = yes NOT = { exists = faction_war } faction_leader ?= { has_court_event_flag = no is_available_ai_adult = yes is_vassal_of = root government_has_flag = government_is_feudal OR = { vassal_contract_obligation_level_can_be_decreased = feudal_government_taxes vassal_contract_obligation_level_can_be_decreased = feudal_government_levies } } OR = { faction_is_type = independence_faction faction_is_type = liberty_faction faction_is_type = claimant_faction } } scripted_effect hold_court_8150_obligation_effect = { hidden_effect = { random_list = { 50 = { trigger = { vassal_contract_obligation_level_can_be_decreased = feudal_government_taxes } vassal_contract_decrease_obligation_level = feudal_government_taxes } 50 = { trigger = { vassal_contract_obligation_level_can_be_decreased = feudal_government_levies } vassal_contract_decrease_obligation_level = feudal_government_levies } } } add_character_flag = { flag = joining_faction_block years = 5 } } # Leader of a faction offers you an out hold_court.8150 = { type = court_event title = hold_court.8150.t desc = { desc = hold_court.8150.desc.intro first_valid = { triggered_desc = { trigger = { scope:target_faction = { any_faction_member = { count = 1 } } } desc = hold_court.8150.desc.alone } triggered_desc = { trigger = { scope:target_faction = { any_faction_member = { count <= 3 } } } desc = hold_court.8150.desc.few } desc = hold_court.8150.desc.group } desc = hold_court.8150.desc.body first_valid = { triggered_desc = { trigger = { scope:target_faction = { faction_is_type = independence_faction } } desc = hold_court.8150.desc.independence } triggered_desc = { trigger = { scope:target_faction = { faction_is_type = liberty_faction } } desc = hold_court.8150.desc.liberty } triggered_desc = { trigger = { scope:target_faction = { faction_is_type = claimant_faction } exists = scope:target_faction.special_character scope:target_faction.faction_leader = scope:target_faction.special_character } desc = hold_court.8150.desc.claimant_self } triggered_desc = { trigger = { scope:target_faction = { faction_is_type = claimant_faction } } desc = hold_court.8150.desc.claimant } } desc = hold_court.8150.desc.outro } theme = realm court_scene = { button_position_character = scope:target_faction.faction_leader court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:target_faction.faction_leader = { group = petitioners_group animation = disapproval } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 10 } trigger = { any_targeting_faction = { hold_court_8150_faction_trigger = yes } } weight_multiplier = { base = 1 modifier = { factor = 2 any_targeting_faction = { hold_court_8150_faction_trigger = yes any_faction_member = { count >= 5 } } } modifier = { factor = 2 any_targeting_faction = { hold_court_8150_faction_trigger = yes faction_power >= faction_power_threshold } } # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic } } immediate = { ordered_targeting_faction = { limit = { hold_court_8150_faction_trigger = yes } order_by = faction_power save_scope_as = target_faction faction_leader = { court_event_character_flag_effect = yes save_scope_as = targeted_factions_leader #Saving in order to be able to clear the flag. } } if = { limit = { any_held_title = { count > 1 title_tier = county is_landless_type_title = no } } ordered_held_title = { title_tier = county limit = { this != root.capital_county is_landless_type_title = no } order_by = { value = 0 subtract = title_province.combined_building_level } save_scope_as = bribe_county } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { # Accept name = hold_court.8150.a change_current_court_grandeur = medium_court_grandeur_loss scope:target_faction = { if = { # Split effects for nicer tooltips limit = { any_faction_member = { count = 1 } } faction_leader = { custom_tooltip = hold_court.8150.a.tt_single_all hold_court_8150_obligation_effect = yes } } else = { every_faction_member = { custom = hold_court.8150.a.tt_multiple_feudal_intro limit = { government_has_flag = government_is_feudal } custom_tooltip = hold_court.8150.a.tt_shared hold_court_8150_obligation_effect = yes } } destroy_faction = yes } stress_impact = { arrogant = medium_stress_impact_gain greedy = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_greed = -1 ai_boldness = -2 } modifier = { #Weight down for stress. add = -15 has_trait = arrogant } modifier = { #Weight down for stress. add = -15 has_trait = greedy } } } option = { # Arrest name = hold_court.8150.b imprison_character_effect = { TARGET = scope:target_faction.faction_leader IMPRISONER = root } scope:target_faction = { every_faction_member = { custom = hold_court.8150.a.tt_multiple_intro limit = { this != scope:target_faction.faction_leader } add_opinion = { modifier = angry_opinion target = root opinion = -20 } } if = { limit = { any_faction_member = { count = 1 } } show_as_tooltip = { destroy_faction = yes } } } add_dread = minor_dread_gain stress_impact = { just = medium_stress_impact_gain patient = medium_stress_impact_gain shy = medium_stress_impact_gain forgiving = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_honor = -1 ai_boldness = 2 } modifier = { #Weight down for stress. add = -15 has_trait = just } modifier = { #Weight down for stress. add = -15 has_trait = patient } modifier = { #Weight down for stress. add = -15 has_trait = shy } modifier = { #Weight down for stress. add = -15 has_trait = forgiving } } } option = { # Bribe name = hold_court.8150.c trigger = { NOT = { scope:target_faction.faction_leader = { has_relation_rival = root } } } random_list = { 40 = { desc = hold_court.8150.d.tt_accept send_interface_toast = { title = hold_court.8150.c.tt_success left_icon = scope:target_faction.faction_leader if = { limit = { exists = scope:bribe_county } create_title_and_vassal_change = { type = granted save_scope_as = change add_claim_on_loss = no } scope:bribe_county = { change_title_holder = { holder = scope:target_faction.faction_leader change = scope:change } } resolve_title_and_vassal_change = scope:change } else = { pay_short_term_gold = { target = scope:target_faction.faction_leader gold = root.major_gold_value } } scope:target_faction = { faction_leader = { custom_tooltip = hold_court.8150.a.tt_single_cooldown add_character_flag = { flag = joining_faction_block years = 5 } } every_faction_member = { custom = hold_court.8150.a.tt_multiple_intro limit = { this != scope:target_faction.faction_leader } add_opinion = { target = scope:target_faction.faction_leader modifier = angry_opinion opinion = -20 } } destroy_faction = yes } } modifier = { factor = 10 has_trait = deceitful } modifier = { factor = 10 has_trait = greedy } modifier = { factor = 10 has_trait = fickle } } 60 = { desc = hold_court.8150.d.tt_reject send_interface_toast = { title = hold_court.8150.c.tt_failure left_icon = scope:target_faction.faction_leader scope:target_faction = { add_faction_discontent = 15 every_faction_member = { custom = hold_court.8150.a.tt_multiple_intro add_opinion = { target = root modifier = disgusted_opinion opinion = -15 } } } } modifier = { factor = 10 has_trait = honest } modifier = { factor = 10 has_trait = stubborn } modifier = { factor = 20 scope:target_faction.faction_leader = scope:target_faction.special_character } } } stress_impact = { generous = medium_stress_impact_gain honest = medium_stress_impact_gain just = medium_stress_impact_gain vengeful = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_honor = -0.5 ai_greed = -0.5 ai_rationality = 1 ai_boldness = 1 } modifier = { #Weight down for stress. add = -15 has_trait = generous } modifier = { #Weight down for stress. add = -15 has_trait = honest } modifier = { #Weight down for stress. add = -15 has_trait = just } modifier = { #Weight down for stress. add = -15 has_trait = vengeful } } } option = { # Convince name = hold_court.8150.d duel = { skill = diplomacy target = scope:target_faction.faction_leader 8 = { compare_modifier = { value = scope:duel_value multiplier = 1 } desc = hold_court.8150.d.tt_accept send_interface_toast = { title = hold_court.8150.d.tt_accept left_icon = scope:target_faction.faction_leader add_prestige = medium_prestige_gain scope:target_faction = { faction_leader = { custom_tooltip = hold_court.8150.a.tt_single_cooldown add_character_flag = { flag = joining_faction_block years = 5 } } every_faction_member = { custom = hold_court.8150.a.tt_multiple_intro limit = { this != scope:target_faction.faction_leader } add_opinion = { target = scope:target_faction.faction_leader modifier = disappointed_opinion opinion = -10 } } destroy_faction = yes } } } 12 = { compare_modifier = { value = scope:duel_value multiplier = 2 } desc = hold_court.8150.d.tt_reject send_interface_toast = { title = hold_court.8150.d.tt_reject left_icon = scope:target_faction.faction_leader scope:target_faction = { add_faction_discontent = 10 } } } } stress_impact = { humble = medium_stress_impact_gain vengeful = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_honor = 1 ai_rationality = 1 ai_boldness = 1 } modifier = { #Weight down for stress. add = -15 has_trait = humble } modifier = { #Weight down for stress. add = -15 has_trait = vengeful } } } option = { # Refuse name = hold_court.8150.e add_prestige = medium_prestige_loss scope:target_faction = { add_faction_discontent = 5 } stress_impact = { paranoid = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_honor = 2 ai_boldness = 2 } modifier = { #Weight down for stress. add = -15 has_trait = paranoid } } } after = { scope:targeted_factions_leader = { clear_court_event_participation = yes } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # Public Accusation # by Joe Parkin # 8160 ################################################## # Is the scheme a valid court scheme? scripted_trigger hold_court_8160_valid_court_scheme_trigger = { exists = scheme_target_character.liege OR = { # Victim and plotter share same court scheme_owner = scheme_target_character.liege scheme_owner = { is_vassal_or_below_of = prev.scheme_target_character.liege } scheme_owner = { is_courtier_of = prev.scheme_target_character.liege } } NOR = { scheme_owner = root scheme_target_character = root } } scripted_trigger hold_court_8160_valid_plotter_trigger = { this != root is_available_ai_adult = yes exists = scope:scheme_target_scope trigger_if = { limit = { exists = scope:scheme_target_scope } NOR = { this = scope:scheme_target_scope # victim has_friendly_relationship_trigger = { CHARACTER = scope:scheme_target_scope } # victim } can_start_scheme = { type = murder target_character = scope:scheme_target_scope # victim } } } # Is the scheme a valid murder/abduct scheme? scripted_trigger hold_court_8160_valid_hostile_scheme_trigger = { AND = { hold_court_8160_valid_court_scheme_trigger = yes OR = { scheme_type = murder scheme_type = abduct } } scheme_target_character = { save_temporary_scope_as = scheme_target_scope liege = { OR = { any_vassal_or_below = { hold_court_8160_valid_plotter_trigger = yes } any_courtier = { hold_court_8160_valid_plotter_trigger = yes } } } } } # Is the character a valid advocate of the victim? scripted_trigger hold_court_8160_valid_concerned_trigger = { this != root is_available_ai_adult = yes top_liege = prev.top_liege # victim NOT = { is_scheming_against = { target = prev } # victim } } # Is the character already targeted by a valid scheme? scripted_trigger hold_court_8160_current_hostile_target_trigger = { this != root has_court_event_flag = no is_available_ai = yes any_targeting_scheme = { hold_court_8160_valid_hostile_scheme_trigger = yes } trigger_if = { # if target is a child, they have a parent or family member to advocate limit = { is_adult = no } OR = { any_parent = { hold_court_8160_valid_concerned_trigger = yes } any_close_family_member = { hold_court_8160_valid_concerned_trigger = yes } } } } # Is the character, their spouse, or a family member, targeted? scripted_trigger hold_court_8160_valid_existing_hostile_trigger = { this != root OR = { hold_court_8160_current_hostile_target_trigger = yes AND = { is_married = yes primary_spouse = { top_liege = prev.top_liege hold_court_8160_current_hostile_target_trigger = yes } } any_close_family_member = { exists = yes OR = { is_vassal_or_below_of = prev.liege # victim.root is_courtier_of = prev.liege # victim.root } hold_court_8160_current_hostile_target_trigger = yes } } } scripted_effect hold_court_8160_save_create_scheme_effect = { if = { limit = { any_targeting_scheme = { hold_court_8160_valid_hostile_scheme_trigger = yes } } random_targeting_scheme = { limit = { hold_court_8160_valid_hostile_scheme_trigger = yes } save_scope_as = victim_scheme scheme_target_character = { save_scope_as = victim } scheme_owner = { save_scope_as = debug_scheme_owner } } } else = { save_temporary_scope_as = scheme_target_scope save_scope_as = victim liege = { if = { limit = { any_vassal_or_below = { hold_court_8160_valid_plotter_trigger = yes } } random_vassal_or_below = { limit = { hold_court_8160_valid_plotter_trigger = yes } save_scope_as = debug_scheme_owner start_scheme = { type = murder target_character = scope:victim } } } else = { random_courtier = { limit = { hold_court_8160_valid_plotter_trigger = yes } save_scope_as = debug_scheme_owner start_scheme = { type = murder target_character = scope:victim } } } } random_targeting_scheme = { limit = { scheme_owner = scope:debug_scheme_owner } save_scope_as = victim_scheme } } scope:victim = { court_event_character_flag_effect = yes } } # Choose who is the target of the scheme scripted_effect hold_court_8160_vassal_picker_scheme_effect = { hidden_effect = { random_list = { 100 = { modifier = { factor = 100 hold_court_8160_current_hostile_target_trigger = yes } hold_court_8160_save_create_scheme_effect = yes } 50 = { trigger = { is_married = yes } modifier = { factor = 100 primary_spouse = { hold_court_8160_current_hostile_target_trigger = yes } } primary_spouse = { hold_court_8160_save_create_scheme_effect = yes } } 50 = { trigger = { any_close_family_member = { count = 1 } } modifier = { factor = 100 any_close_family_member = { hold_court_8160_current_hostile_target_trigger = yes } } random_close_family_member = { limit = { hold_court_8160_current_hostile_target_trigger = yes } alternative_limit = { always = yes } hold_court_8160_save_create_scheme_effect = yes } } } } } scripted_effect hold_court_8160_imprison_effect = { rightfully_imprison_character_effect = { TARGET = scope:accused IMPRISONER = root } hidden_effect = { scope:accused = { if = { limit = { exists = scope:victim.primary_spouse scope:victim_scheme = { scheme_type = seduce } this != scope:victim.primary_spouse } add_opinion = { modifier = angry_opinion target = scope:victim.primary_spouse opinion = -20 } } else = { add_opinion = { modifier = angry_opinion target = scope:victim opinion = -20 } } if = { limit = { exists = scope:concerned } add_opinion = { modifier = angry_opinion target = scope:concerned opinion = -20 } } } } scope:victim = { if = { limit = { exists = primary_spouse scope:victim_scheme = { scheme_type = seduce } scope:accused != scope:victim.primary_spouse } primary_spouse = { add_opinion = { modifier = grateful_opinion target = root opinion = 10 } } } else = { add_opinion = { modifier = grateful_opinion target = root opinion = 10 } } } if = { limit = { exists = scope:concerned } scope:concerned = { add_opinion = { modifier = grateful_opinion target = root opinion = 10 } } } } scripted_trigger hold_court_8160_accused_trigger = { this != root is_available_ai_adult = yes NOR = { this = scope:victim has_friendly_relationship_trigger = { CHARACTER = scope:victim } } can_start_scheme = { type = murder target_character = scope:victim } } # Target of a scheme wants you to punish the schemer - murder/abduct version hold_court.8160 = { type = court_event title = hold_court.8160.t desc = { # Who is coming to the throne? first_valid = { triggered_desc = { # Child with family trigger = { scope:victim = { is_adult = no } } desc = hold_court.8160.desc.intro_child } triggered_desc = { # Spouse trigger = { exists = scope:concerned } desc = hold_court.8160.desc.intro_spouse } desc = hold_court.8160.desc.intro_alone # fallback/default } first_valid = { triggered_desc = { # Spouse trigger = { exists = scope:concerned } desc = hold_court.8160.desc.intro_other } desc = hold_court.8160.desc.intro_me } # Who is accused? first_valid = { triggered_desc = { # Actually revealed to be involved in scheme trigger = { scope:accused = { is_agent_exposed_in_scheme = scope:victim_scheme } } desc = hold_court.8160.desc.exposed } desc = hold_court.8160.desc.suspicion # Speculation } # What is the reason for suspicion? first_valid = { triggered_desc = { # Nemeses trigger = { scope:accused = { has_relation_nemesis = scope:victim } } desc = hold_court.8160.desc.nemesis } triggered_desc = { # Rivals trigger = { scope:accused = { has_relation_rival = scope:victim } } desc = hold_court.8160.desc.rival } triggered_desc = { # Accused has claim on Target trigger = { scope:accused = { any_claim = { holder = scope:victim } } } desc = hold_court.8160.desc.my_claimant } triggered_desc = { # Target has claim on Accused trigger = { scope:accused = { any_held_title = { any_claimant = { this = scope:victim } } } } desc = hold_court.8160.desc.their_claimant } triggered_desc = { # Accused and Target covet same title trigger = { scope:victim = { any_claim = { any_claimant = { this = scope:accused } } } } desc = hold_court.8160.desc.joint_claimant } triggered_desc = { # Accused is a villain trigger = { scope:accused = { OR = { has_education_intrigue_trigger = yes has_trait = deceitful } } } desc = hold_court.8160.desc.intrigue } triggered_desc = { # Accused dislikes Target trigger = { scope:accused = { opinion = { target = scope:victim value < 0 } } } desc = hold_court.8160.desc.their_dislike } triggered_desc = { # Target dislikes Accused trigger = { scope:accused = { reverse_opinion = { target = scope:victim value < 0 } } } desc = hold_court.8160.desc.my_dislike } desc = hold_court.8160.desc.fallback # No good reason } # How many agents revealed? desc = hold_court.8160.desc.outro } theme = realm lower_right_portrait = scope:accused court_scene = { button_position_character = scope:concerned court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:concerned = { group = petitioners_group animation = worry } scope:victim = { group = petitioners_group animation = paranoia } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 5 } trigger = { is_ai = no # Murder schemes are heavy for performance OR = { any_vassal_or_below = { save_temporary_scope_as = scheme_target_scope OR = { hold_court_8160_valid_existing_hostile_trigger = yes liege = { OR = { any_vassal_or_below = { hold_court_8160_valid_plotter_trigger = yes } any_courtier = { hold_court_8160_valid_plotter_trigger = yes } } } } } any_courtier = { save_temporary_scope_as = scheme_target_scope OR = { hold_court_8160_valid_existing_hostile_trigger = yes liege = { OR = { any_vassal_or_below = { hold_court_8160_valid_plotter_trigger = yes } any_courtier = { hold_court_8160_valid_plotter_trigger = yes } } } } } } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_intrigue } } immediate = { every_vassal_or_below = { limit = { hold_court_8160_valid_existing_hostile_trigger = yes } alternative_limit = { save_temporary_scope_as = scheme_target_scope liege = { OR = { any_vassal_or_below = { hold_court_8160_valid_plotter_trigger = yes } any_courtier = { hold_court_8160_valid_plotter_trigger = yes } } } } add_to_list = victim_list } every_courtier = { limit = { hold_court_8160_valid_existing_hostile_trigger = yes } alternative_limit = { save_temporary_scope_as = scheme_target_scope liege = { OR = { any_vassal_or_below = { hold_court_8160_valid_plotter_trigger = yes } any_courtier = { hold_court_8160_valid_plotter_trigger = yes } } } } add_to_list = victim_list } random_in_list = { list = victim_list limit = { hold_court_8160_current_hostile_target_trigger = yes } alternative_limit = { is_married = yes primary_spouse = { top_liege = prev.top_liege hold_court_8160_current_hostile_target_trigger = yes } } alternative_limit = { any_close_family_member = { exists = yes OR = { is_vassal_or_below_of = prev.liege # victim.root is_courtier_of = prev.liege # victim.root } hold_court_8160_current_hostile_target_trigger = yes } } alternative_limit = { is_vassal_of = root } alternative_limit = { is_courtier_of = root } alternative_limit = { always = yes } weight = { modifier = { factor = 50 has_trait = paranoid } modifier = { factor = 25 has_trait = arrogant } } hold_court_8160_vassal_picker_scheme_effect = yes } if = { # Find actual scheme owner if revealed limit = { exists = scope:victim_scheme scope:victim_scheme.scheme_owner = { is_agent_exposed_in_scheme = scope:victim_scheme } # scheme owner is known by target } scope:victim_scheme.scheme_owner = { save_scope_as = accused court_event_character_flag_effect = yes } } else = { # Else find a suspect every_vassal_or_below = { limit = { hold_court_8160_accused_trigger = yes } add_to_list = accused_list } every_courtier = { limit = { hold_court_8160_accused_trigger = yes } add_to_list = accused_list } random_in_list = { list = accused_list limit = { is_vassal_of = root } alternative_limit = { is_courtier_of = root } alternative_limit = { always = yes } weight = { base = 1 modifier = { # Nemeses add = 100 has_relation_nemesis = scope:victim } modifier = { # Rivals add = 50 has_relation_rival = scope:victim } modifier = { # Accused has claim on Target add = 100 any_claim = { holder = scope:victim } } modifier = { # Target has claim on Accused add = 100 any_held_title = { any_claimant = { this = scope:victim } } } modifier = { # Accused and Target covet same title add = 100 any_claim = { any_claimant = { this = scope:victim } } } modifier = { # Accused is a villain add = 100 OR = { has_education_intrigue_trigger = yes has_trait = deceitful } } modifier = { # Accused dislikes Target add = 25 opinion = { target = scope:victim value < 0 } } modifier = { # Target dislikes Accused add = 25 reverse_opinion = { target = scope:victim value < 0 } } } save_scope_as = accused } } # Save an advocate if necessary/relevant scope:victim = { if = { limit = { is_adult = no } if = { limit = { OR = { faith_dominant_gender_female_or_equal = yes father = { hold_court_8160_valid_concerned_trigger = no } } mother ?= { hold_court_8160_valid_concerned_trigger = yes } } mother = { save_scope_as = concerned } } else_if = { limit = { OR = { faith_dominant_gender_male_or_equal = yes mother = { hold_court_8160_valid_concerned_trigger = no } } father ?= { hold_court_8160_valid_concerned_trigger = yes } } father = { save_scope_as = concerned } } else = { ordered_close_family_member = { limit = { hold_court_8160_valid_concerned_trigger = yes } order_by = age save_scope_as = concerned } } } else_if = { limit = { is_married = yes primary_spouse = { hold_court_8160_valid_concerned_trigger = yes } } primary_spouse = { save_scope_as = concerned } } else_if = { limit = { NOT = { is_vassal_of = root } any_close_family_member = { hold_court_8160_valid_concerned_trigger = yes } } random_close_family_member = { limit = { hold_court_8160_valid_concerned_trigger = yes } save_scope_as = concerned } } if = { limit = { exists = scope:concerned } scope:concerned = { court_event_character_flag_effect = yes } } } if = { limit = { exists = scope:concerned } add_character_flag = { flag = concerned_exists years = 1 } } # Save titles for motives localization scope:accused = { if = { limit = { any_claim = { holder = scope:victim } } ordered_claim = { limit = { holder = scope:victim } order_by = tier save_scope_as = relevant_title } } else_if = { limit = { any_held_title = { any_claimant = { this = scope:victim } } } ordered_held_title = { limit = { any_claimant = { this = scope:victim } } order_by = tier save_scope_as = relevant_title } } else_if = { limit = { any_claim = { any_claimant = { this = scope:victim } } } ordered_claim = { limit = { any_claimant = { this = scope:victim } } order_by = tier save_scope_as = relevant_title } } } if = { limit = { any_court_position_holder = { type = executioner_court_position has_court_event_flag = no is_available_ai_adult = yes NOR = { this = scope:victim this = scope:accused AND = { exists = scope:concerned this = scope:concerned } } } } random_court_position_holder = { type = executioner_court_position limit = { has_court_event_flag = no is_available_ai_adult = yes NOR = { this = scope:victim this = scope:accused AND = { exists = scope:concerned this = scope:concerned } } } save_scope_as = executioner } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { # Arrest name = hold_court.8160.a if = { limit = { scope:victim_scheme = { scheme_type = murder } } add_opinion = { modifier = attempted_murder_opinion target = scope:accused } } else = { add_opinion = { modifier = attempted_abduction_opinion target = scope:accused } } scope:accused = { add_opinion = { modifier = angry_opinion target = root opinion = -20 } hidden_effect = { add_opinion = { modifier = angry_opinion target = scope:victim opinion = -20 } if = { limit = { exists = scope:concerned } add_opinion = { modifier = angry_opinion target = scope:concerned opinion = -20 } } } } scope:victim = { add_opinion = { modifier = grateful_opinion target = root opinion = 10 } } if = { limit = { exists = scope:concerned } scope:concerned = { add_opinion = { modifier = grateful_opinion target = root opinion = 10 } } } if = { limit = { scope:accused = scope:debug_scheme_owner } add_tyranny = minor_tyranny_gain } else = { stress_impact = { just = medium_stress_impact_gain } } ai_chance = { base = 100 ai_value_modifier = { ai_honor = -1 ai_compassion = -2 ai_boldness = 1 } modifier = { #Weight down for stress. add = -30 scope:accused = scope:debug_scheme_owner has_trait = just } } } option = { # Torture name = { trigger = { has_trait = torturer } text = hold_court.8160.b.torturer } name = { trigger = { exists = scope:executioner } text = hold_court.8160.b.executioner } trigger = { OR = { exists = scope:executioner has_trait = torturer } } scope:accused = { random_list = { 75 = { modifier = { factor = 2 has_trait = craven } modifier = { factor = 2 has_trait = fickle } modifier = { factor = 2 has_trait = arbitrary } modifier = { factor = 2 is_agent_exposed_in_scheme = scope:victim_scheme } desc = hold_court.8160.b.tt_confession root = { send_interface_toast = { title = hold_court.8160.b.tt_confession left_icon = scope:accused right_icon = scope:victim hold_court_8160_imprison_effect = yes } } } 25 = { modifier = { factor = 2 has_trait = stubborn } modifier = { factor = 2 has_trait = brave } modifier = { factor = 2 has_trait = just } modifier = { factor = 2 AND = { NOT = { is_agent_exposed_in_scheme = scope:victim_scheme } has_trait = honest } } modifier = { factor = 2 AND = { is_agent_exposed_in_scheme = scope:victim_scheme has_trait = deceitful } } desc = hold_court.8160.b.tt_silence root = { send_interface_toast = { title = hold_court.8160.b.tt_silence left_icon = scope:accused right_icon = scope:victim } } } } add_opinion = { modifier = tortured_me target = root } if = { limit = { exists = scope:executioner } hidden_effect = { add_opinion = { modifier = tortured_me target = scope:executioner } } } if = { limit = { is_married = yes NOR = { primary_spouse = { this = root this = scope:victim AND = { exists = scope:concerned this = scope:concerned } } } } primary_spouse = { add_opinion = { modifier = tortured_family_member target = root } if = { limit = { exists = scope:executioner } hidden_effect = { add_opinion = { modifier = tortured_family_member target = scope:executioner } } } } } every_close_family_member = { limit = { NOR = { this = root this = scope:victim AND = { exists = scope:concerned this = scope:concerned } } } add_opinion = { modifier = tortured_family_member target = root } if = { limit = { exists = scope:executioner } hidden_effect = { add_opinion = { modifier = tortured_family_member target = scope:executioner } } } } } scope:victim = { add_opinion = { modifier = grateful_opinion target = root opinion = 15 } if = { limit = { exists = scope:executioner } hidden_effect = { add_opinion = { modifier = grateful_opinion target = scope:executioner opinion = 15 } } } } if = { limit = { exists = scope:concerned } scope:concerned = { add_opinion = { modifier = grateful_opinion target = root opinion = 15 } if = { limit = { exists = scope:executioner } hidden_effect = { add_opinion = { modifier = grateful_opinion target = scope:executioner opinion = 15 } } } } } if = { limit = { scope:victim_scheme.scheme_owner = { is_agent_exposed_in_scheme = scope:victim_scheme } } add_tyranny = medium_tyranny_gain stress_impact = { just = medium_stress_impact_gain compassionate = medium_stress_impact_gain } } else = { add_tyranny = major_tyranny_gain stress_impact = { just = major_stress_impact_gain compassionate = major_stress_impact_gain } } ai_chance = { base = 100 ai_value_modifier = { ai_honor = -1 ai_compassion = -2 ai_boldness = 2 } modifier = { #Weight down for stress. add = -30 has_trait = just } modifier = { #Weight down for stress. add = -30 has_trait = compassionate } } } option = { # Attempt to find the truth name = hold_court.8160.c show_as_tooltip = { duel = { skill = intrigue target = scope:accused 1 = { show_chance = no desc = hold_court.8160.c.tt_success hold_court_8160_imprison_effect = yes } 1 = { show_chance = no desc = hold_court.8160.c.tt_failure scope:victim = { add_opinion = { modifier = disappointed_opinion target = root opinion = -10 } } } } } hidden_effect = { duel = { skill = intrigue target = scope:accused 8 = { trigger = { scope:victim_scheme = { any_scheme_agent_character = { this = scope:accused } } } compare_modifier = { value = scope:duel_value multiplier = 2 } send_interface_toast = { title = hold_court.8160.c.tt_success left_icon = scope:accused right_icon = scope:victim hold_court_8160_imprison_effect = yes } } 12 = { compare_modifier = { value = scope:duel_value multiplier = -2 min = -9 } send_interface_toast = { title = hold_court.8160.c.tt_failure left_icon = scope:accused right_icon = scope:victim add_prestige = medium_prestige_loss scope:victim = { add_opinion = { modifier = disappointed_opinion target = root opinion = -5 } } if = { limit = { exists = scope:concerned } scope:concerned = { add_opinion = { modifier = disappointed_opinion target = root opinion = -5 } } } } } } } stress_impact = { arbitrary = medium_stress_impact_gain lazy = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_honor = 1 ai_compassion = 1 ai_zeal = -1 ai_energy = -1 ai_rationality = 1 } modifier = { #Weight down for stress. add = -30 has_trait = arbitrary } modifier = { #Weight down for stress. add = -30 has_trait = lazy } } } option = { # Dismiss name = { trigger = { scope:victim_scheme = { any_scheme_agent_character = { this = root } } } text = hold_court.8160.d.involved } name = { trigger = { scope:victim_scheme.scheme_owner = { is_agent_exposed_in_scheme = scope:victim_scheme } } text = hold_court.8160.d.proof } name = { trigger = { always = yes } text = hold_court.8160.d.fallback } scope:victim_scheme = { if = { limit = { any_scheme_agent_character = { this = root } } add_scheme_progress = scheme_progress_gain } } scope:accused = { add_opinion = { modifier = grateful_opinion target = root opinion = 10 } } if = { limit = { exists = scope:concerned } scope:concerned = { add_opinion = { modifier = disappointed_opinion target = root opinion = -10 } } } scope:victim = { add_opinion = { modifier = disappointed_opinion target = root opinion = -10 } } if = { limit = { scope:victim_scheme.scheme_owner = { is_agent_exposed_in_scheme = scope:victim_scheme } } stress_impact = { just = major_stress_impact_gain compassionate = major_stress_impact_gain } } else = { stress_impact = { just = medium_stress_impact_gain compassionate = medium_stress_impact_gain } } ai_chance = { base = 100 ai_value_modifier = { ai_honor = 0.5 ai_compassion = 0.5 ai_energy = -2 } } } after = { if = { limit = { has_character_flag = concerned_exists } remove_character_flag = concerned_exists } scope:victim = { clear_court_event_participation = yes } scope:accused = { clear_court_event_participation = yes } if = { limit = { exists = scope:concerned } scope:concerned = { clear_court_event_participation = yes } } if = { limit = { exists = scope:executioner } scope:executioner = { clear_court_event_participation = yes } } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # Personal Matter # by Joe Parkin # 8161 ################################################## # Is the character able to be targeted by a valid scheme? scripted_trigger hold_court_8161_valid_seduce_target_trigger = { this != root age < 50 has_court_event_flag = no is_available_ai_adult = yes exists = liege save_temporary_scope_as = hold_court_8161_victim liege = { any_vassal_or_below = { hold_court_8161_valid_seduce_plotter_trigger = yes } } } # Is the character able to start a valid scheme? scripted_trigger hold_court_8161_valid_seduce_plotter_trigger = { NOR = { this = root is_spouse_of = root } age < 50 is_available_ai_adult = yes possibly_interested_in_character_trigger = { CHARACTER = scope:hold_court_8161_victim } # victim might_cheat_on_every_partner_trigger = yes can_start_scheme = { type = seduce target_character = scope:hold_court_8161_victim # victim } exists = scope:hold_court_8161_victim.primary_spouse # to avoid errors NOR = { has_trait = chaste has_trait = shy has_trait = craven has_trait = content has_trait = celibate } NOR = { this = scope:hold_court_8161_victim # victim this = scope:hold_court_8161_victim.primary_spouse # victim's spouse has_friendly_relationship_trigger = { CHARACTER = scope:hold_court_8161_victim.primary_spouse } # victim's spouse } } # Is the scheme a valid seduction scheme? scripted_trigger hold_court_8161_valid_seduce_scheme_trigger = { hold_court_8160_valid_court_scheme_trigger = yes scheme_type = seduce scheme_success_chance >= 30 } # Is the character a valid event target? scripted_trigger hold_court_8161_valid_target_vassal_trigger = { NOR = { this = root is_spouse_of = root } has_court_event_flag = no is_available_ai_adult = yes is_married = yes top_liege = primary_spouse.top_liege trigger_if = { limit = { primary_spouse = { is_male = yes } } NOT = { faith = { has_doctrine = doctrine_adultery_men_accepted } } } trigger_else = { NOT = { faith = { has_doctrine = doctrine_adultery_women_accepted } } } OR = { hold_court_8161_valid_seduce_target_trigger = yes primary_spouse = { hold_court_8161_valid_seduce_target_trigger = yes } } } scripted_trigger hold_court_8161_existing_seduction_target_trigger = { this != root OR = { any_targeting_scheme = { hold_court_8161_valid_seduce_scheme_trigger = yes } primary_spouse = { any_targeting_scheme = { hold_court_8161_valid_seduce_scheme_trigger = yes } } } } scripted_trigger hold_court_8161_religious_crime_trigger = { OR = { AND = { scope:victim.primary_spouse = { is_female = yes } NOT = { faith = { has_doctrine = doctrine_adultery_women_accepted } } } AND = { scope:victim.primary_spouse = { is_male = yes } NOT = { faith = { has_doctrine = doctrine_adultery_men_accepted } } } AND = { OR = { AND = { scope:victim = { is_male = yes } scope:accused = { is_male = yes } } AND = { scope:victim = { is_female = yes } scope:accused = { is_female = yes } } } NOT = { faith = { has_doctrine = doctrine_homosexuality_accepted } } } } } # Save or create a seduction scheme in the court scripted_effect hold_court_8161_save_create_scheme_effect = { if = { limit = { any_targeting_scheme = { hold_court_8161_valid_seduce_scheme_trigger = yes } } random_targeting_scheme = { limit = { hold_court_8161_valid_seduce_scheme_trigger = yes } save_scope_as = victim_scheme scheme_target_character = { save_scope_as = victim } scheme_owner = { save_scope_as = debug_scheme_owner } } } else = { save_scope_as = victim liege = { random_vassal_or_below = { limit = { hold_court_8161_valid_seduce_plotter_trigger = yes } weight = { base = 1 modifier = { factor = 2 has_trait = lustful } modifier = { factor = 4 has_trait = honest } modifier = { factor = 2 intrigue < average_skill_rating } modifier = { factor = 4 has_trait = contrite } modifier = { factor = 4 has_trait = confider } modifier = { factor = 2 has_trait = trusting } } save_scope_as = debug_scheme_owner start_scheme = { type = seduce target_character = scope:victim } } } random_targeting_scheme = { limit = { scheme_owner = scope:debug_scheme_owner } save_scope_as = victim_scheme } } scope:victim = { court_event_character_flag_effect = yes primary_spouse = { court_event_character_flag_effect = yes } } } # Choose who is the target of the scheme scripted_effect hold_court_8161_vassal_spouse_scheme_effect = { hidden_effect = { random_list = { 50 = { trigger = { hold_court_8161_valid_seduce_target_trigger = yes } hold_court_8161_save_create_scheme_effect = yes } 100 = { trigger = { primary_spouse = { hold_court_8161_valid_seduce_target_trigger = yes } } primary_spouse = { hold_court_8161_save_create_scheme_effect = yes } } } } } # Spouse of the target of a scheme wants you to punish the schemer - seduction version hold_court.8161 = { type = court_event title = hold_court.8161.t desc = { desc = hold_court.8161.desc.intro first_valid = { triggered_desc = { # Nemeses trigger = { scope:accused = { has_relation_nemesis = scope:victim.primary_spouse } } desc = hold_court.8161.desc.nemesis } triggered_desc = { # Rivals trigger = { scope:accused = { has_relation_rival = scope:victim.primary_spouse } } desc = hold_court.8161.desc.rival } triggered_desc = { # Quarry trigger = { scope:victim = { OR = { has_trait = beauty_good_1 has_trait = beauty_good_2 has_trait = beauty_good_3 has_trait = lustful } } } desc = hold_court.8161.desc.quarry } triggered_desc = { # Accused dislikes Target trigger = { scope:accused = { opinion = { target = scope:victim.primary_spouse value < 0 } } } desc = hold_court.8161.desc.their_dislike } triggered_desc = { # Target dislikes Accused trigger = { scope:accused = { reverse_opinion = { target = scope:victim.primary_spouse value < 0 } } } desc = hold_court.8161.desc.my_dislike } triggered_desc = { # Accused is a villain trigger = { scope:accused = { OR = { has_education_intrigue_trigger = yes has_trait = deceitful has_trait = lustful has_trait = seducer } } } desc = hold_court.8161.desc.intrigue } desc = hold_court.8161.desc.fallback # No good reason } desc = hold_court.8161.desc.body } theme = realm lower_right_portrait = scope:accused court_scene = { button_position_character = scope:victim.primary_spouse court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:victim.primary_spouse = { group = petitioners_group animation = anger } scope:victim = { group = petitioners_group animation = disapproval } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 5 } trigger = { OR = { any_courtier_or_guest = { hold_court_8161_valid_target_vassal_trigger = yes trigger_if = { limit = { NOT = { exists = scope:victim } } save_temporary_scope_as = victim } exists = scope:victim.primary_spouse } any_vassal = { hold_court_8161_valid_target_vassal_trigger = yes trigger_if = { limit = { NOT = { exists = scope:victim } } save_temporary_scope_as = victim } exists = scope:victim.primary_spouse } } OR = { any_vassal_or_below = { age < 50 is_available_ai_adult = yes possibly_interested_in_character_trigger = { CHARACTER = scope:victim } can_start_scheme = { type = seduce target_character = scope:victim } exists = scope:victim.primary_spouse NOR = { this = scope:victim this = scope:victim.primary_spouse has_friendly_relationship_trigger = { CHARACTER = scope:victim.primary_spouse } } } any_courtier_or_guest = { age < 50 is_available_ai_adult = yes possibly_interested_in_character_trigger = { CHARACTER = scope:victim } can_start_scheme = { type = seduce target_character = scope:victim } exists = scope:victim.primary_spouse NOR = { this = scope:victim this = scope:victim.primary_spouse has_friendly_relationship_trigger = { CHARACTER = scope:victim.primary_spouse } } } } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_intrigue } } immediate = { random_list = { 2 = { trigger = { any_courtier_or_guest = { hold_court_8161_valid_target_vassal_trigger = yes } } random_courtier_or_guest = { limit = { hold_court_8161_valid_target_vassal_trigger = yes hold_court_8161_existing_seduction_target_trigger = yes } alternative_limit = { hold_court_8161_valid_target_vassal_trigger = yes } weight = { modifier = { factor = 50 has_trait = paranoid } modifier = { factor = 25 has_trait = arrogant } } hold_court_8161_vassal_spouse_scheme_effect = yes } } 2 = { trigger = { any_vassal_or_below = { hold_court_8161_valid_target_vassal_trigger = yes } } random_vassal_or_below = { limit = { hold_court_8161_valid_target_vassal_trigger = yes hold_court_8161_existing_seduction_target_trigger = yes } alternative_limit = { hold_court_8161_valid_target_vassal_trigger = yes } weight = { modifier = { factor = 50 has_trait = paranoid } modifier = { factor = 25 has_trait = arrogant } } hold_court_8161_vassal_spouse_scheme_effect = yes } } } hidden_effect = { random_list = { 50 = { trigger = { exists = scope:debug_scheme_owner } scope:debug_scheme_owner = { save_scope_as = accused } } 25 = { trigger = { any_vassal_or_below = { age < 50 is_available_ai_adult = yes possibly_interested_in_character_trigger = { CHARACTER = scope:victim } can_start_scheme = { type = seduce target_character = scope:victim } exists = scope:victim.primary_spouse NOR = { this = scope:victim this = scope:victim.primary_spouse has_friendly_relationship_trigger = { CHARACTER = scope:victim.primary_spouse } } } } random_vassal_or_below = { limit = { age < 50 is_available_ai_adult = yes possibly_interested_in_character_trigger = { CHARACTER = scope:victim } can_start_scheme = { type = seduce target_character = scope:victim } exists = scope:victim.primary_spouse NOR = { this = scope:victim this = scope:victim.primary_spouse has_friendly_relationship_trigger = { CHARACTER = scope:victim.primary_spouse } } } weight = { base = 1 modifier = { factor = 100 has_relation_nemesis = scope:victim.primary_spouse # Nemeses } modifier = { factor = 50 has_relation_rival = scope:victim.primary_spouse # Rivals } modifier = { factor = 25 opinion = { target = scope:victim.primary_spouse # Accused dislikes Target value < 0 } } modifier = { factor = 25 reverse_opinion = { target = scope:victim.primary_spouse # Target dislikes Accused value < 0 } } modifier = { # Accused is a villain factor = 50 OR = { has_education_intrigue_trigger = yes has_trait = deceitful has_trait = lustful has_trait = seducer } } } save_scope_as = accused } } 25 = { trigger = { any_courtier_or_guest = { age < 50 is_available_ai_adult = yes possibly_interested_in_character_trigger = { CHARACTER = scope:victim } can_start_scheme = { type = seduce target_character = scope:victim } exists = scope:victim.primary_spouse NOR = { THIS = scope:victim THIS = scope:victim.primary_spouse has_friendly_relationship_trigger = { CHARACTER = scope:victim.primary_spouse } } } } random_courtier_or_guest = { limit = { age < 50 is_available_ai_adult = yes possibly_interested_in_character_trigger = { CHARACTER = scope:victim } can_start_scheme = { type = seduce target_character = scope:victim } exists = scope:victim.primary_spouse NOR = { THIS = scope:victim THIS = scope:victim.primary_spouse has_friendly_relationship_trigger = { CHARACTER = scope:victim.primary_spouse } } } weight = { base = 1 modifier = { factor = 100 has_relation_nemesis = scope:victim.primary_spouse # Nemeses } modifier = { factor = 50 has_relation_rival = scope:victim.primary_spouse # Rivals } modifier = { factor = 25 opinion = { target = scope:victim.primary_spouse # Accused dislikes Target value < 0 } } modifier = { factor = 25 reverse_opinion = { target = scope:victim.primary_spouse # Target dislikes Accused value < 0 } } modifier = { # Accused is a villain factor = 50 OR = { has_education_intrigue_trigger = yes has_trait = deceitful has_trait = lustful has_trait = seducer } } } save_scope_as = accused } } } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { # Arrest name = { trigger = { OR = { AND = { scope:victim = { is_male = yes } scope:accused = { is_male = yes } } AND = { scope:victim = { is_female = yes } scope:accused = { is_female = yes } } } NOT = { faith = { has_doctrine = doctrine_homosexuality_accepted } } } text = hold_court.8161.a.homosexual } name = { trigger = { OR = { AND = { scope:victim.primary_spouse = { is_female = yes } NOT = { faith = { has_doctrine = doctrine_adultery_women_accepted } } } AND = { scope:victim.primary_spouse = { is_male = yes } NOT = { faith = { has_doctrine = doctrine_adultery_men_accepted } } } } } text = hold_court.8161.a.adultery } trigger = { hold_court_8161_religious_crime_trigger = yes } if = { limit = { OR = { AND = { scope:victim.primary_spouse = { is_female = yes } NOT = { faith = { has_doctrine = doctrine_adultery_women_accepted } } } AND = { scope:victim.primary_spouse = { is_male = yes } NOT = { faith = { has_doctrine = doctrine_adultery_men_accepted } } } } } add_opinion = { modifier = fornicator_crime target = scope:accused } } else = { add_opinion = { modifier = deviant_crime target = scope:accused } } scope:victim.primary_spouse = { add_opinion = { modifier = grateful_opinion target = root opinion = 10 } } scope:accused = { add_opinion = { modifier = angry_opinion target = root opinion = -10 } add_opinion = { modifier = angry_opinion target = scope:victim.primary_spouse opinion = -10 } } if = { limit = { exists = cp:councillor_court_chaplain NOR = { cp:councillor_court_chaplain = scope:accused cp:councillor_court_chaplain = scope:victim cp:councillor_court_chaplain = scope:victim.primary_spouse } NOR = { AND = { scope:victim.primary_spouse = { is_female = yes } faith = { has_doctrine = doctrine_adultery_women_accepted } } AND = { scope:victim.primary_spouse = { is_male = yes } faith = { has_doctrine = doctrine_adultery_men_accepted } } } } cp:councillor_court_chaplain = { add_opinion = { modifier = pious_opinion target = root opinion = 10 } } } stress_impact = { just = medium_stress_impact_gain cynical = medium_stress_impact_gain deviant = medium_stress_impact_gain lustful = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_honor = -0.25 ai_compassion = -1 ai_zeal = 1 } modifier = { #Weight down for stress. add = -30 has_trait = just } modifier = { #Weight down for stress. add = -30 has_trait = cynical } modifier = { #Weight down for stress. add = -30 has_trait = deviant } modifier = { #Weight down for stress. add = -30 has_trait = lustful } } } option = { # Attempt to find truth name = hold_court.8161.c show_as_tooltip = { duel = { skill = intrigue target = scope:accused 1 = { show_chance = no desc = hold_court.8160.c.tt_success hold_court_8160_imprison_effect = yes } 1 = { show_chance = no desc = hold_court.8160.c.tt_failure scope:accused = { add_opinion = { modifier = angry_opinion target = root opinion = -10 } } } } } hidden_effect = { duel = { skill = intrigue target = scope:accused 8 = { trigger = { scope:victim_scheme ?= { any_scheme_agent_character = { this = scope:accused } } } compare_modifier = { value = scope:duel_value multiplier = 2 } send_interface_toast = { title = hold_court.8160.c.tt_success left_icon = scope:accused right_icon = scope:victim hold_court_8160_imprison_effect = yes } } 12 = { compare_modifier = { value = scope:duel_value multiplier = -1 } send_interface_toast = { title = hold_court.8160.c.tt_failure left_icon = scope:accused right_icon = scope:victim scope:accused = { add_opinion = { modifier = angry_opinion target = root opinion = -10 } } } } } } stress_impact = { arbitrary = medium_stress_impact_gain lazy = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_honor = 1 ai_compassion = 1 ai_zeal = -1 ai_energy = -1 ai_rationality = 1 } modifier = { #Weight down for stress. add = -30 has_trait = arbitrary } modifier = { #Weight down for stress. add = -30 has_trait = lazy } } } option = { # Dismiss name = { trigger = { scope:victim_scheme ?= { any_scheme_agent_character = { this = root } } } text = hold_court.8161.d.involved } name = { trigger = { OR = { AND = { scope:victim.primary_spouse = { is_female = yes } faith = { has_doctrine = doctrine_adultery_women_accepted } } AND = { scope:victim.primary_spouse = { is_male = yes } faith = { has_doctrine = doctrine_adultery_men_accepted } } } } text = hold_court.8161.d.permitted } name = { trigger = { always = yes } text = hold_court.8161.d.fallback } scope:victim_scheme ?= { if = { limit = { any_scheme_agent_character = { this = root } } add_scheme_progress = scheme_progress_gain } } scope:victim.primary_spouse = { add_opinion = { modifier = disappointed_opinion target = root opinion = -10 } } stress_impact = { chaste = medium_stress_impact_gain } if = { limit = { hold_court_8161_religious_crime_trigger = yes } stress_impact = { zealous = medium_stress_impact_gain } } ai_chance = { base = 100 ai_value_modifier = { ai_honor = 0.5 ai_compassion = 0.5 ai_energy = -2 } modifier = { #Weight down for stress. add = -30 has_trait = chaste } modifier = { #Weight down for stress. add = -30 hold_court_8161_religious_crime_trigger = yes has_trait = zealous } } } after = { scope:victim = { clear_court_event_participation = yes primary_spouse = { clear_court_event_participation = yes } } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # Noble Privileges # by Joe Parkin # 8180 ################################################## # Is there a duke or higher vassal has room for a positive contract change? scripted_trigger hold_court_8180_lord_trigger = { has_court_event_flag = no is_available_ai_adult = yes primary_title.tier >= tier_duchy government_has_flag = government_is_feudal subject_contract_is_blocked_from_modification = no NOT = { has_variable = hc_8180_contract_var } NOT = { has_hook = root } OR = { AND = { faith != liege.faith vassal_contract_obligation_level_can_be_increased = religious_rights # Religious } AND = { liege.culture = { has_innovation = innovation_battlements } vassal_contract_obligation_level_can_be_increased = fortification_rights # Fortification } AND = { liege.culture = { has_innovation = innovation_currency_02 } vassal_contract_obligation_level_can_be_increased = coinage_rights # Coinage } AND = { liege = { OR = { # Only relevant if war declaration is limited has_realm_law = crown_authority_2 has_realm_law = crown_authority_3 } } vassal_contract_obligation_level_can_be_increased = war_declaration_rights # War Declaration } vassal_contract_obligation_level_can_be_increased = council_rights # Council AND = { NOT = { liege = { has_realm_law = crown_authority_0 } # Only relevant if revocation is possible } vassal_contract_obligation_level_can_be_increased = title_revocation_rights # Title Revocation } AND = { # Scutage liege.culture = { has_innovation = innovation_scutage } NOT = { vassal_contract_has_flag = has_scutage_contract } } AND = { # March liege.culture = { has_innovation = innovation_burhs } NOT = { vassal_contract_has_flag = has_march_contract } } AND = { # Palatinate liege.culture = { has_innovation = innovation_divine_right } NOT = { vassal_contract_has_flag = has_palatinate_contract } } } } # Increase the relevant contract scripted_effect hold_court_8180_grant_contract_effect = { switch = { trigger = var:hc_8180_contract_var 1 = { # Religious vassal_contract_set_obligation_level = { type = religious_rights level = 1 } } 2 = { # Fortification vassal_contract_set_obligation_level = { type = fortification_rights level = 1 } } 3 = { # Coinage vassal_contract_set_obligation_level = { type = coinage_rights level = 1 } } 4 = { # War Declaration vassal_contract_set_obligation_level = { type = war_declaration_rights level = 1 } } 5 = { # Council Rights vassal_contract_set_obligation_level = { type = council_rights level = 1 } } 6 = { # Title Revocation vassal_contract_set_obligation_level = { type = title_revocation_rights level = 1 } } 7 = { # Scutage vassal_contract_set_obligation_level = { type = special_contract level = 1 } } 8 = { # March vassal_contract_set_obligation_level = { type = special_contract level = 2 } } 9 = { # Palatinate vassal_contract_set_obligation_level = { type = special_contract level = 3 } } } hidden_effect = { set_subject_contract_modification_blocked = yes } } # A vassal wants a contract buff hold_court.8180 = { type = court_event title = hold_court.8180.t desc = { desc = hold_court.8180.desc.intro first_valid = { # Contract Type triggered_desc = { trigger = { scope:contract_lord.var:hc_8180_contract_var = 1 } desc = hold_court.8180.desc.religious # Religious } triggered_desc = { trigger = { scope:contract_lord.var:hc_8180_contract_var = 2 } desc = hold_court.8180.desc.fortification # Fortification } triggered_desc = { trigger = { scope:contract_lord.var:hc_8180_contract_var = 3 } desc = hold_court.8180.desc.coinage # Coinage } triggered_desc = { trigger = { scope:contract_lord.var:hc_8180_contract_var = 4 } desc = hold_court.8180.desc.war_declaration # War Declaration } triggered_desc = { trigger = { scope:contract_lord.var:hc_8180_contract_var = 5 } desc = hold_court.8180.desc.council # Council } triggered_desc = { trigger = { scope:contract_lord.var:hc_8180_contract_var = 6 } desc = hold_court.8180.desc.title_revocation # Title Revocation } triggered_desc = { trigger = { scope:contract_lord.var:hc_8180_contract_var = 7 } desc = hold_court.8180.desc.scutage # Scutage } triggered_desc = { trigger = { scope:contract_lord.var:hc_8180_contract_var = 8 } desc = hold_court.8180.desc.march # March } triggered_desc = { trigger = { scope:contract_lord.var:hc_8180_contract_var = 9 } desc = hold_court.8180.desc.palatinate # Palatinate } triggered_desc = { trigger = { scope:contract_lord.var:hc_8180_contract_var = 10 } desc = hold_court.8180.desc.family_entrepeneurship # Family Entrepeneurship } triggered_desc = { trigger = { scope:contract_lord.var:hc_8180_contract_var = 11 } desc = hold_court.8180.desc.centralized_power # Centralized Power } } first_valid = { # Context # Religious triggered_desc = { trigger = { scope:contract_lord.var:hc_8180_contract_var = 1 # Religious scope:contract_lord.religion = root.religion } desc = hold_court.8180.desc.religious_heretic # Heretic } triggered_desc = { trigger = { scope:contract_lord.var:hc_8180_contract_var = 1 } # Religious desc = hold_court.8180.desc.religious_heathen # Heathen } # Martial triggered_desc = { trigger = { OR = { scope:contract_lord.var:hc_8180_contract_var = 2 #Fortification scope:contract_lord.var:hc_8180_contract_var = 8 # March } } desc = hold_court.8180.desc.martial_defensive # Defensive } triggered_desc = { trigger = { scope:contract_lord.var:hc_8180_contract_var = 4 # War Declaration scope:contract_lord.var:hc_8180_contract_var = 7 # Scutage } desc = hold_court.8180.desc.martial_offensive # Offensive } # Stewardship triggered_desc = { trigger = { OR = { scope:contract_lord.var:hc_8180_contract_var = 3 # Coinage scope:contract_lord.var:hc_8180_contract_var = 11 # Centralized Power } } desc = hold_court.8180.desc.stewardship } # Status triggered_desc = { trigger = { OR = { scope:contract_lord.var:hc_8180_contract_var = 5 # Council scope:contract_lord.var:hc_8180_contract_var = 9 # Palatinate } } desc = hold_court.8180.desc.status } # Family triggered_desc = { trigger = { scope:contract_lord.var:hc_8180_contract_var = 10 } #Family Entrepeneurship desc = hold_court.8180.desc.family } # Other desc = hold_court.8180.desc.fallback # General } } theme = court artifact = { target = scope:vassal_artifact position = lower_right_portrait } court_scene = { button_position_character = scope:contract_lord court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:contract_lord = { group = petitioners_group animation = admiration } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 10 } trigger = { is_adult = yes any_vassal = { hold_court_8180_lord_trigger = yes } } weight_multiplier = { base = 1 modifier = { add = 1 any_vassal = { hold_court_8180_lord_trigger = yes OR = { has_trait = greedy has_trait = ambitious has_trait = shrewd has_trait = intellect_good_1 has_trait = intellect_good_2 has_trait = intellect_good_3 } } } # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic } ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative } } immediate = { capital_barony = { save_scope_as = capital } random_vassal = { limit = { hold_court_8180_lord_trigger = yes primary_title.tier = tier_kingdom # Prefer Kings... } alternative_limit = { hold_court_8180_lord_trigger = yes primary_title.tier = tier_duchy # ...then Dukes. } weight = { base = 1 modifier = { factor = 2 NOT = { vassal_contract_obligation_level_can_be_decreased = special_contract } # No existing special contract } modifier = { factor = 2 is_powerful_vassal = yes } modifier = { factor = 2 OR = { vassal_contract_obligation_level_can_be_increased = feudal_government_taxes vassal_contract_obligation_level_can_be_increased = feudal_government_levies } } modifier = { factor = 2 does_ai_vassal_in_vassal_contract_desire_obligation_change = yes } modifier = { factor = 2 has_trait = greedy has_trait = ambitious has_trait = shrewd has_trait = intellect_good_1 has_trait = intellect_good_2 has_trait = intellect_good_3 } } save_scope_as = contract_lord court_event_character_flag_effect = yes if = { limit = { any_held_title = { count > 1 title_tier = county is_landless_type_title = no } } ordered_held_title = { title_tier = county limit = { this != holder.capital_county de_jure_liege.holder = root is_landless_type_title = no } alternative_limit = { tier = tier_county this != holder.capital_county any_neighboring_county = { holder = root } is_landless_type_title = no } alternative_limit = { tier = tier_county this != holder.capital_county is_landless_type_title = no } order_by = { value = 0 subtract = development_level } save_scope_as = vassal_title } } if = { limit = { any_character_artifact = { exists = yes } } ordered_character_artifact = { order_by = artifact_rarity save_scope_as = vassal_artifact } } hidden_effect = { random_list = { 1 = { # Religious Rights / 1 trigger = { faith != liege.faith vassal_contract_obligation_level_can_be_increased = religious_rights } modifier = { factor = 2 faith != liege.faith } modifier = { factor = 2 religion != liege.religion } modifier = { factor = 2 has_trait = zealous } modifier = { factor = 4 } # contract relative value set_variable = { name = hc_8180_contract_var value = 1 years = 20 # cooldown for this character } } 1 = { # Fortification Rights / 2 trigger = { liege.culture = { has_innovation = innovation_battlements } vassal_contract_obligation_level_can_be_increased = fortification_rights } modifier = { factor = 2 any_sub_realm_county = { hold_court_8010_county_trigger = yes } } modifier = { factor = 2 has_education_martial_trigger = yes } modifier = { factor = 2 has_martial_lifestyle_trait_trigger = yes } modifier = { factor = 2 } # contract relative value set_variable = { name = hc_8180_contract_var value = 2 years = 20 # cooldown for this character } } 1 = { # Coinage Rights / 3 trigger = { liege.culture = { has_innovation = innovation_currency_02 } vassal_contract_obligation_level_can_be_increased = coinage_rights } modifier = { factor = 2 has_education_stewardship_trigger = yes } modifier = { factor = 2 has_stewardship_lifestyle_trait_trigger = yes } modifier = { factor = 2 has_trait = arrogant } modifier = { factor = 2 } # contract relative value set_variable = { name = hc_8180_contract_var value = 3 years = 20 # cooldown for this character } } 1 = { # War Declaration / 4 trigger = { liege = { OR = { # Only relevant if war declaration is limited has_realm_law = crown_authority_2 has_realm_law = crown_authority_3 } } vassal_contract_obligation_level_can_be_increased = war_declaration_rights } modifier = { factor = 2 has_education_martial_trigger = yes } modifier = { factor = 2 has_martial_lifestyle_trait_trigger = yes } modifier = { factor = 2 has_trait = ambitious } modifier = { factor = 2 has_trait = wrathful } modifier = { factor = 3 } # contract relative value set_variable = { name = hc_8180_contract_var value = 4 years = 20 # cooldown for this character } } 1 = { # Council Rights / 5 trigger = { vassal_contract_obligation_level_can_be_increased = council_rights } modifier = { factor = 2 has_trait = ambitious } modifier = { factor = 2 has_trait = arrogant } modifier = { factor = 2 dynasty.dynasty_prestige_level >= liege.dynasty.dynasty_prestige_level } modifier = { factor = 4 } # contract relative value set_variable = { name = hc_8180_contract_var value = 5 years = 20 # cooldown for this character } } 1 = { # Title Revocation / 6 trigger = { NOT = { liege = { has_realm_law = crown_authority_0 } } vassal_contract_obligation_level_can_be_increased = title_revocation_rights } modifier = { factor = 2 has_trait = paranoid } modifier = { factor = 2 has_trait = craven } modifier = { factor = 4 } # contract relative value set_variable = { name = hc_8180_contract_var value = 6 years = 20 # cooldown for this character } } 1 = { # Scutage / 7 trigger = { liege.culture = { has_innovation = innovation_scutage } NOT = { vassal_contract_obligation_level_can_be_decreased = special_contract } # No existing special contract } modifier = { factor = 2 OR = { has_education_martial_trigger = yes has_martial_lifestyle_trait_trigger = yes } } modifier = { factor = 3 } # contract relative value set_variable = { name = hc_8180_contract_var value = 7 years = 20 # cooldown for this character } } 1 = { # March / 8 trigger = { liege.culture = { has_innovation = innovation_burhs } NOT = { vassal_contract_obligation_level_can_be_decreased = special_contract } # No existing special contract } modifier = { factor = 2 has_education_martial_trigger = yes } modifier = { factor = 2 has_martial_lifestyle_trait_trigger = yes } modifier = { factor = 3 } # contract relative value set_variable = { name = hc_8180_contract_var value = 8 years = 20 # cooldown for this character } } 1 = { # Palatinate / 9 trigger = { liege.culture = { has_innovation = innovation_divine_right } is_powerful_vassal = yes NOT = { vassal_contract_obligation_level_can_be_decreased = special_contract } # No existing special contract } modifier = { factor = 2 has_education_diplomacy_trigger = yes } modifier = { factor = 2 has_diplomacy_lifestyle_trait_trigger = yes } modifier = { factor = 2 has_trait = arrogant } modifier = { factor = 2 dynasty.dynasty_prestige_level >= liege.dynasty.dynasty_prestige_level } modifier = { factor = 5 } # contract relative value set_variable = { name = hc_8180_contract_var value = 9 years = 20 # cooldown for this character } } } if = { # Determine whether tax or levies can be increased, and is relevant limit = { has_variable = hc_8180_contract_var var:hc_8180_contract_var != 9 # Palatinate OR = { vassal_contract_obligation_level_can_be_increased = feudal_government_taxes vassal_contract_obligation_level_can_be_increased = feudal_government_levies } } random_list = { 1 = { trigger = { var:hc_8180_contract_var != 8 # March var:hc_8180_contract_var != 11 # Centralized Power / Support vassal_contract_obligation_level_can_be_increased = feudal_government_taxes } modifier = { factor = 10 vassal_contract_obligation_level:feudal_government_taxes < vassal_contract_obligation_level:feudal_government_levies } set_variable = { name = hc_8180_increase_var value = 1 } } 1 = { trigger = { var:hc_8180_contract_var != 7 # Scutage var:hc_8180_contract_var != 10 # Family Entrepeneurship vassal_contract_obligation_level_can_be_increased = feudal_government_levies } modifier = { factor = 10 vassal_contract_obligation_level:feudal_government_levies < vassal_contract_obligation_level:feudal_government_taxes } set_variable = { name = hc_8180_increase_var value = 2 } } } } } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { # Accept name = { trigger = { scope:contract_lord.var:hc_8180_contract_var = 1 } text = hold_court.8180.a.religious } name = { trigger = { scope:contract_lord.var:hc_8180_contract_var = 2 } text = hold_court.8180.a.fortification } name = { trigger = { scope:contract_lord.var:hc_8180_contract_var = 3 } text = hold_court.8180.a.coinage } name = { trigger = { scope:contract_lord.var:hc_8180_contract_var = 4 } text = hold_court.8180.a.war_declaration } name = { trigger = { scope:contract_lord.var:hc_8180_contract_var = 5 } text = hold_court.8180.a.council } name = { trigger = { scope:contract_lord.var:hc_8180_contract_var = 6 } text = hold_court.8180.a.title_revocation } name = { trigger = { scope:contract_lord.var:hc_8180_contract_var = 7 } text = hold_court.8180.a.scutage } name = { trigger = { scope:contract_lord.var:hc_8180_contract_var = 8 } text = hold_court.8180.a.march } name = { trigger = { scope:contract_lord.var:hc_8180_contract_var = 9 } text = hold_court.8180.a.palatinate } name = { trigger = { scope:contract_lord.var:hc_8180_contract_var = 10 } text = hold_court.8180.a.family_entrepeneurship } name = { trigger = { scope:contract_lord.var:hc_8180_contract_var = 11 } text = hold_court.8180.a.centralized_power } if = { limit = { can_add_hook = { target = scope:contract_lord type = indebted_hook } } add_hook = { target = scope:contract_lord type = indebted_hook } } scope:contract_lord = { hold_court_8180_grant_contract_effect = yes add_opinion = { modifier = grateful_opinion target = root opinion = 20 } } stress_impact = { greedy = major_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_greed = -2 ai_compassion = 1 ai_boldness = 1 } modifier = { #Weight down for stress. add = -30 has_trait = greedy } } } option = { # Demand payment name = hold_court.8180.b trigger = { scope:contract_lord = { short_term_gold >= root.medium_gold_value } } random_list = { 2 = { desc = hold_court.8180.b.tt.success modifier = { factor = 2 scope:contract_lord = { has_trait = content } } modifier = { factor = 2 scope:contract_lord = { has_trait = generous } } modifier = { factor = hold_court_8180_contract_value } # based on relative worth of contract send_interface_toast = { title = hold_court.8180.b.tt.success scope:contract_lord = { pay_short_term_gold = { target = root gold = root.medium_gold_value } hold_court_8180_grant_contract_effect = yes add_opinion = { modifier = annoyed_opinion target = root opinion = -5 } } } } 7 = { desc = hold_court.8180.b.tt.failure modifier = { factor = 2 scope:contract_lord = { has_trait = greedy } } modifier = { factor = 2 scope:contract_lord = { has_trait = ambitious } } send_interface_toast = { title = hold_court.8180.b.tt.failure scope:contract_lord = { add_opinion = { modifier = angry_opinion target = root opinion = -15 } } } } } stress_impact = { generous = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_greed = 2 ai_compassion = -0.25 ai_rationality = 1 ai_boldness = 2 } modifier = { #Weight down for stress. add = -15 has_trait = generous } } } option = { # Demand artifact name = hold_court.8180.c trigger = { exists = scope:vassal_artifact } random_list = { 2 = { desc = hold_court.8180.c.tt.success modifier = { factor = 2 scope:contract_lord = { has_trait = content } } modifier = { factor = 2 scope:contract_lord = { has_trait = generous } } modifier = { factor = hold_court_8180_contract_value } # based on relative worth of contract send_interface_toast = { title = hold_court.8180.c.tt.success scope:contract_lord = { scope:vassal_artifact = { set_owner = { target = root } } hold_court_8180_grant_contract_effect = yes add_opinion = { modifier = annoyed_opinion target = root opinion = -5 } } } } 7 = { desc = hold_court.8180.b.tt.failure modifier = { factor = 2 scope:contract_lord = { has_trait = greedy } } modifier = { factor = 2 scope:contract_lord = { has_trait = ambitious } } modifier = { factor = scope:vassal_artifact.var:quality # half of artifact quality trigger = { scope:vassal_artifact = { has_variable = quality } } } send_interface_toast = { title = hold_court.8180.b.tt.failure scope:contract_lord = { add_opinion = { modifier = angry_opinion target = root opinion = -15 } } } } } stress_impact = { generous = major_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_greed = 2 ai_compassion = -0.25 ai_rationality = 1 ai_boldness = 2 } modifier = { #Weight down for stress. add = -30 has_trait = generous } } } option = { # Demand title name = hold_court.8180.d trigger = { exists = scope:vassal_title } random_list = { 2 = { desc = hold_court.8180.d.tt.success modifier = { factor = 2 scope:contract_lord = { has_trait = content } } modifier = { factor = 2 scope:contract_lord = { has_trait = generous } } modifier = { factor = hold_court_8180_contract_value } # based on relative worth of contract send_interface_toast = { title = hold_court.8180.d.tt.success create_title_and_vassal_change = { type = granted save_scope_as = change add_claim_on_loss = no } scope:vassal_title = { change_title_holder = { holder = root change = scope:change } } resolve_title_and_vassal_change = scope:change scope:contract_lord = { hold_court_8180_grant_contract_effect = yes } } } 7 = { desc = hold_court.8180.b.tt.failure modifier = { factor = 2 scope:contract_lord = { has_trait = greedy } } modifier = { factor = 2 scope:contract_lord = { has_trait = ambitious } } modifier = { factor = 2 OR = { scope:vassal_title.de_jure_liege.holder = root scope:contract_lord.primary_title = { is_de_jure_liege_or_above_target = scope:vassal_title } } } send_interface_toast = { title = hold_court.8180.b.tt.failure scope:contract_lord = { add_opinion = { modifier = angry_opinion target = root opinion = -15 } } } } } stress_impact = { generous = major_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_greed = 2 ai_compassion = -0.25 ai_rationality = 1 ai_boldness = 2 } modifier = { #Weight down for stress. add = -30 has_trait = generous } } } option = { # Demand forced partition name = hold_court.8180.e trigger = { scope:contract_lord = { vassal_contract_obligation_level_can_be_increased = succession_rights } } random_list = { 3 = { desc = hold_court.8180.e.tt.success modifier = { factor = 2 scope:contract_lord = { has_trait = content } } modifier = { factor = 2 scope:contract_lord = { has_trait = generous } } modifier = { factor = hold_court_8180_contract_value } # based on relative worth of contract send_interface_toast = { title = hold_court.8180.e.tt.success scope:contract_lord = { hold_court_8180_grant_contract_effect = yes vassal_contract_set_obligation_level = { type = succession_rights level = 1 } add_opinion = { modifier = annoyed_opinion target = root opinion = -5 } } } } 6 = { desc = hold_court.8180.b.tt.failure modifier = { factor = 2 scope:contract_lord = { has_trait = greedy } } modifier = { factor = 2 scope:contract_lord = { has_trait = ambitious } } modifier = { factor = 2 any_heir = { count > 1 } } send_interface_toast = { title = hold_court.8180.b.tt.failure scope:contract_lord = { add_opinion = { modifier = angry_opinion target = root opinion = -15 } } } } } stress_impact = { trusting = medium_stress_impact_gain generous = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_honor = -0.5 ai_greed = 1 ai_compassion = -0.25 ai_rationality = 1 ai_boldness = 1 } modifier = { #Weight down for stress. add = -15 has_trait = trusting } modifier = { #Weight down for stress. add = -15 has_trait = generous } } } option = { # Demand contract change name = hold_court.8180.f trigger = { scope:contract_lord = { has_variable = hc_8180_increase_var } } scope:contract_lord = { hold_court_8180_grant_contract_effect = yes if = { limit = { var:hc_8180_increase_var = 1 } vassal_contract_increase_obligation_level = feudal_government_taxes } else = { vassal_contract_increase_obligation_level = feudal_government_levies } } ai_chance = { base = 100 ai_value_modifier = { ai_greed = 0.5 ai_compassion = 0.5 ai_rationality = 0.5 ai_boldness = -1 } } } option = { # Dismiss vassal name = hold_court.8180.g scope:contract_lord = { add_opinion = { modifier = disappointed_opinion target = root opinion = -10 } } stress_impact = { greedy = medium_stress_impact_gain generous = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_greed = 1 ai_compassion = -0.5 ai_rationality = -0.25 ai_boldness = 0.5 } modifier = { #Weight down for stress. add = -15 has_trait = greedy } modifier = { #Weight down for stress. add = -15 has_trait = generous } } } after = { scope:contract_lord = { clear_court_event_participation = yes if = { limit = { has_variable = hc_8180_increase_var } remove_variable = hc_8180_increase_var } } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # Enemy Within # by Joe Parkin # 8190 ################################################## # A vassal wants a foreigner vassal to convert hold_court.8190 = { type = court_event title = hold_court.8190.t desc = { desc = hold_court.8190.desc.intro random_valid = { triggered_desc = { trigger = { NOT = { scope:other_vassal.culture = { has_same_culture_ethos = root.culture } } } desc = hold_court.8190.desc.ethos } triggered_desc = { trigger = { NOT = { scope:other_vassal.culture = { has_same_culture_heritage = root.culture } } } desc = hold_court.8190.desc.heritage } triggered_desc = { trigger = { NOT = { scope:other_vassal.culture = { has_same_culture_language = root.culture } } } desc = hold_court.8190.desc.language } desc = hold_court.8190.desc.fallback } desc = hold_court.8190.desc.body } theme = court lower_right_portrait = scope:other_vassal court_scene = { button_position_character = scope:aggressor_vassal court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:aggressor_vassal = { group = petitioners_group animation = rage } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 10 } trigger = { any_vassal = { # Is there a vassal who is not root culture? is_available_ai_adult = yes culture != root.culture save_temporary_scope_as = other_temp } any_vassal = { # Is there another vassal of root culture who is not humble and doesn't like the other one? has_court_event_flag = no is_available_ai_adult = yes culture = root.culture NOT = { has_trait = humble } NOR = { has_relation_friend = scope:other_temp scope:other_temp = { has_friendly_relationship_trigger = { CHARACTER = prev } } } } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike } } immediate = { random_vassal = { limit = { is_available_ai_adult = yes culture != root.culture } weight = { base = 1 modifier = { # Victim is at least a count factor = 2 primary_title.tier > tier_barony } } save_scope_as = other_vassal } random_vassal = { limit = { is_available_ai_adult = yes culture = root.culture NOT = { has_trait = humble } NOR = { has_relation_friend = scope:other_vassal scope:other_vassal = { has_friendly_relationship_trigger = { CHARACTER = prev } } } } weight = { modifier = { # Aggressor is arrogant factor = 4 has_trait = arrogant } modifier = { # Aggressor is a meanie factor = 2 OR = { has_trait = vengeful has_trait = wrathful has_trait = arbitrary } } modifier = { # Aggressor is not a baron/mayor factor = 2 primary_title.tier > tier_barony } modifier = { # Aggressor borders the victim factor = 2 any_held_title = { title_tier = county any_neighboring_county = { holder = scope:other_vassal } } } modifier = { # Aggressor has claim beef with victim factor = 2 any_claim = { OR = { holder = scope:other_vassal de_jure_liege.holder = scope:other_vassal de_facto_liege.holder = scope:other_vassal } } } modifier = { # Aggressor is a rival of the victim factor = 4 has_relation_rival = scope:other_vassal } modifier = { # Aggressor doesn't like the victim factor = 2 opinion = { target = scope:other_vassal value <= 0 } } modifier = { # Aggressor is the same rank as the victim factor = 2 primary_title.tier = scope:other_vassal.primary_title.tier } modifier = { # Aggressor is a powerful vassal factor = 2 is_powerful_vassal = yes } } save_scope_as = aggressor_vassal court_event_character_flag_effect = yes } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { # Demand culture adoption name = hold_court.8190.a add_dread = miniscule_dread_gain scope:aggressor_vassal = { culture = { change_cultural_acceptance = { target = scope:other_vassal.culture value = -10 desc = cultural_intolerance_tt } } add_opinion = { target = root modifier = pleased_opinion opinion = 10 } } every_vassal = { limit = { culture != root.culture } custom = hold_court.8190.a.tt.vassals add_opinion = { target = root modifier = hurt_opinion opinion = -10 } } if = { limit = { any_realm_county = { culture = scope:other_vassal.culture } } every_realm_county = { limit = { culture = scope:other_vassal.culture } custom = hold_court.8190.a.tt.promote add_county_modifier = { modifier = hold_court_8190_vassal_modifier years = 15 } } } random_list = { 40 = { modifier = { add = -20 NOT = { scope:other_vassal.culture = { has_same_culture_heritage = root.culture } } } modifier = { add = -20 scope:other_vassal = { has_trait = stubborn } } show_chance = no desc = hold_court.8190.a.tt_accept send_interface_toast = { title = hold_court.8190.a.tt_accept left_icon = scope:other_vassal save_scope_as = actor scope:other_vassal = { save_scope_as = recipient } add_prestige = minor_prestige_gain new_culture_created_vassal_conversion_effect = { CONVERTEE = scope:recipient CONVERTER = scope:actor CULTURE = scope:actor.culture } } } 60 = { show_chance = no desc = hold_court.8190.a.tt_refuse send_interface_toast = { title = hold_court.8190.a.tt_refuse left_icon = scope:other_vassal scope:other_vassal = { add_opinion = { modifier = angry_opinion target = root opinion = -15 } } stress_impact = { zealous = medium_stress_impact_gain } } } } stress_impact = { just = medium_stress_impact_gain compassionate = medium_stress_impact_gain humble = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = -1 ai_boldness = 1 } modifier = { #Weight down for stress. add = -15 has_trait = just } modifier = { #Weight down for stress. add = -15 has_trait = compassionate } modifier = { #Weight down for stress. add = -15 has_trait = humble } } } option = { # Cultural acceptance name = hold_court.8190.b duel = { skill = diplomacy target = scope:aggressor_vassal 8 = { compare_modifier = { value = scope:duel_value multiplier = 3.5 min = -49 } desc = hold_court.8190.b.tt_success send_interface_toast = { title = hold_court.8190.b.tt_success left_icon = scope:aggressor_vassal right_icon = scope:other_vassal scope:aggressor_vassal.culture = { change_cultural_acceptance = { target = scope:other_vassal.culture value = 10 desc = cultural_benevolence_tt } } } } 12 = { compare_modifier = { value = scope:duel_value multiplier = -3.5 min = -49 } desc = hold_court.8190.b.tt_failure send_interface_toast = { title = hold_court.8190.b.tt_failure add_prestige = medium_prestige_loss } } } scope:aggressor_vassal = { add_opinion = { target = root modifier = angry_opinion opinion = -10 } } scope:other_vassal = { add_opinion = { target = root modifier = respect_opinion opinion = 10 } } if = { limit = { any_vassal = { culture = scope:other_vassal.culture this != scope:other_vassal } } every_vassal = { limit = { culture = scope:other_vassal.culture this != scope:other_vassal } custom = hold_court.8190.b.tt.vassals add_opinion = { target = root modifier = respect_opinion opinion = 5 } } } stress_impact = { arrogant = major_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = 2 ai_boldness = 1 } modifier = { #Weight down for stress. add = -30 has_trait = arrogant } } } option = { # Side with other vassal name = hold_court.8190.c trigger = { NOT = { has_relation_rival = scope:other_vassal } } scope:aggressor_vassal = { add_opinion = { target = root modifier = angry_opinion opinion = -20 } } scope:other_vassal = { add_opinion = { target = root modifier = grateful_opinion opinion = 20 } progress_towards_friend_effect = { REASON = friend_respected_foreign_culture CHARACTER = root OPINION = 0 } } stress_impact = { arrogant = medium_stress_impact_gain shy = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = 1 ai_boldness = 0.5 } modifier = { #Weight down for stress. add = -15 has_trait = arrogant } modifier = { #Weight down for stress. add = -15 has_trait = shy } } } option = { # All cultures are equal name = hold_court.8190.d change_current_court_grandeur = minor_court_grandeur_gain every_vassal = { limit = { culture != root.culture } custom = hold_court.8190.a.tt.vassals add_opinion = { target = root modifier = respect_opinion opinion = 10 } } scope:aggressor_vassal = { add_opinion = { target = root modifier = angry_opinion opinion = -15 } } if = { limit = { any_vassal = { culture = root.culture has_trait = arrogant this != scope:aggressor_vassal } } every_vassal = { limit = { culture = root.culture has_trait = arrogant this != scope:aggressor_vassal } add_opinion = { target = root modifier = disappointed_opinion opinion = -5 } } } stress_impact = { arrogant = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = 2 ai_boldness = 0.5 } modifier = { #Weight down for stress. add = -15 has_trait = arrogant } } } after = { scope:aggressor_vassal = { clear_court_event_participation = yes } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # Servant of God # by Joe Parkin # 8200 ################################################## scripted_trigger hold_court_8200_infidel_trigger = { is_available_ai_adult = yes faith != root.faith NOR = { AND = { # Eastern religion = { is_in_family = rf_eastern } root.faith = { has_doctrine = tenet_eastern_syncretism } } AND = { # Pagan faith = { has_doctrine_parameter = unreformed } root.faith = { has_doctrine = tenet_unreformed_syncretism } } AND = { # Christian OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion } root.faith = { has_doctrine = tenet_christian_syncretism } } AND = { # Islam religion = religion:islam_religion root.faith = { has_doctrine = tenet_islamic_syncretism } } AND = { # Judaism religion = religion:judaism_religion root.faith = { has_doctrine = tenet_jewish_syncretism } } } NAND = { government_has_flag = government_is_theocracy primary_title = { is_head_of_faith = yes } any_held_title = { count = 0 title_tier < duchy } } } # A vassal wants an infidel vassal to convert hold_court.8200 = { type = court_event title = hold_court.8200.t desc = { desc = hold_court.8200.desc.intro first_valid = { triggered_desc = { trigger = { scope:infidel_vassal = { # Victim is a religious head with no other titles government_has_flag = government_is_theocracy primary_title = { is_head_of_faith = yes } } } desc = hold_court.8200.desc.pope } desc = hold_court.8200.desc.vassal } desc = hold_court.8200.desc.body } theme = court lower_right_portrait = scope:infidel_vassal court_scene = { button_position_character = scope:aggressor_vassal court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:aggressor_vassal = { group = petitioners_group animation = rage } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 10 } trigger = { NOT = { faith = { has_doctrine = doctrine_pluralism_pluralistic } } any_vassal = { # Is there a vassal who is not root faith? hold_court_8200_infidel_trigger = yes save_temporary_scope_as = other_temp } any_vassal = { # Is there another vassal of root faith who is not cynical and doesn't like the other one? has_court_event_flag = no is_available_ai_adult = yes faith = root.faith NOT = { has_trait = cynical } NOR = { has_relation_friend = scope:other_temp scope:other_temp = { has_friendly_relationship_trigger = { CHARACTER = prev } } } } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly } } immediate = { random_vassal = { limit = { hold_court_8200_infidel_trigger = yes } weight = { modifier = { factor = 2 primary_title.tier > tier_barony } } save_scope_as = infidel_vassal } random_vassal = { limit = { is_available_ai_adult = yes faith = root.faith NOR = { has_relation_friend = scope:infidel_vassal scope:infidel_vassal = { has_friendly_relationship_trigger = { CHARACTER = prev } } } } weight = { modifier = { # Aggressor is zealous factor = 4 has_trait = zealous } modifier = { # Aggressor is a meanie factor = 2 OR = { has_trait = vengeful has_trait = wrathful has_trait = arbitrary } } modifier = { # Aggressor is not a baron/mayor factor = 2 primary_title.tier > tier_barony } modifier = { # Aggressor borders the victim factor = 2 any_held_title = { title_tier = county any_neighboring_county = { holder = scope:infidel_vassal } } } modifier = { # Aggressor has claim beef with victim factor = 2 any_claim = { OR = { holder = scope:infidel_vassal de_jure_liege.holder = scope:infidel_vassal de_facto_liege.holder = scope:infidel_vassal } } } modifier = { # Aggressor is a rival of the victim factor = 4 has_relation_rival = scope:infidel_vassal } modifier = { # Aggressor doesn't like the victim factor = 2 opinion = { target = scope:infidel_vassal value <= 0 } } modifier = { # Aggressor is the same rank as the victim factor = 2 primary_title.tier = scope:infidel_vassal.primary_title.tier } modifier = { # Aggressor is a powerful vassal factor = 2 is_powerful_vassal = yes } } save_scope_as = aggressor_vassal court_event_character_flag_effect = yes } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { # Demand the vassal's conversion name = hold_court.8200.a add_dread = miniscule_dread_gain scope:aggressor_vassal = { add_opinion = { target = root modifier = pleased_opinion opinion = 10 } } every_vassal = { limit = { NOR = { faith = root.faith this = scope:infidel_vassal } } custom = hold_court.8200.a.tt.vassals add_opinion = { target = root modifier = hurt_opinion opinion = -10 } } if = { limit = { any_realm_county = { faith = scope:infidel_vassal.faith } } every_realm_county = { limit = { faith = scope:infidel_vassal.faith } custom = hold_court.8200.a.tt.convert add_county_modifier = { modifier = hold_court_8200_vassal_modifier years = 15 } } } random_list = { 40 = { modifier = { add = -20 scope:infidel_vassal.religion != root.religion } modifier = { add = -20 scope:infidel_vassal = { has_trait = zealous } } show_chance = no desc = hold_court.8200.a.tt_accept send_interface_toast = { title = hold_court.8200.a.tt_accept left_icon = scope:infidel_vassal add_piety = medium_piety_gain save_scope_as = actor scope:infidel_vassal = { save_scope_as = recipient } demand_conversion_interaction_effect = yes } } 60 = { show_chance = no desc = hold_court.8200.a.tt_refuse send_interface_toast = { title = hold_court.8200.a.tt_refuse left_icon = scope:infidel_vassal if = { limit = { refusing_conversion_is_crime_trigger = { CHARACTER = scope:infidel_vassal } } add_opinion = { modifier = illegal_resisted_conversion_opinion target = scope:infidel_vassal } } scope:infidel_vassal = { add_opinion = { modifier = angry_opinion target = root opinion = -15 } } stress_impact = { zealous = medium_stress_impact_gain } } } } stress_impact = { cynical = medium_stress_impact_gain compassionate = medium_stress_impact_gain just = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = -2 ai_zeal = 2 ai_boldness = 2 } modifier = { #Weight down for stress. add = -15 has_trait = cynical } modifier = { #Weight down for stress. add = -15 has_trait = compassionate } modifier = { #Weight down for stress. add = -15 has_trait = just } } } option = { # Adopt heretic's faith name = hold_court.8200.c trigger = { NOT = { has_trait = zealous } } if = { limit = { religion = scope:infidel_vassal.religion } add_piety = medium_piety_loss } else = { add_piety = major_piety_loss } scope:aggressor_vassal = { add_opinion = { target = root modifier = angry_opinion opinion = -40 } } scope:infidel_vassal = { add_opinion = { target = root modifier = respect_opinion opinion = 10 } } every_vassal = { limit = { faith = scope:infidel_vassal.faith this != scope:infidel_vassal } custom = hold_court.8200.c.tt.vassals add_opinion = { target = root modifier = pleased_opinion opinion = 5 } } set_character_faith_with_conversion = scope:infidel_vassal.faith stress_impact = { zealous = massive_stress_impact_gain cynical = medium_stress_impact_gain } ai_chance = { base = 25 ai_value_modifier = { ai_compassion = 2 ai_zeal = -4 ai_boldness = 2 } modifier = { #Weight down for stress. add = -60 has_trait = zealous } modifier = { #Weight down for stress. add = -15 has_trait = cynical } } } option = { # Side with the heretic name = hold_court.8200.d trigger = { NOT = { has_relation_rival = scope:infidel_vassal } } scope:aggressor_vassal = { add_opinion = { target = root modifier = angry_opinion opinion = -20 } } scope:infidel_vassal = { add_opinion = { target = root modifier = grateful_opinion opinion = 20 } progress_towards_friend_effect = { REASON = friend_respected_other_religion CHARACTER = root OPINION = 0 } } stress_impact = { zealous = medium_stress_impact_gain shy = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = 2 ai_zeal = -2 ai_boldness = 2 } modifier = { #Weight down for stress. add = -15 has_trait = zealous } modifier = { #Weight down for stress. add = -15 has_trait = shy } } } option = { # Dismiss zealotry name = hold_court.8200.e trigger = { NOT = { has_trait = zealous } } change_current_court_grandeur = minor_court_grandeur_gain every_vassal = { limit = { faith != root.faith } custom = hold_court.8200.a.tt.vassals add_opinion = { target = root modifier = respect_opinion opinion = 10 } } scope:aggressor_vassal = { add_opinion = { target = root modifier = angry_opinion opinion = -15 } } if = { limit = { any_vassal = { faith = root.faith has_trait = zealous this != scope:aggressor_vassal } } every_vassal = { limit = { faith = root.faith has_trait = zealous this != scope:aggressor_vassal } add_opinion = { target = root modifier = disappointed_opinion opinion = -5 } } } stress_impact = { zealous = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = 1 ai_zeal = -2 ai_boldness = 2 } modifier = { #Weight down for stress. add = -15 has_trait = zealous } } } after = { scope:aggressor_vassal = { clear_court_event_participation = yes } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # Rightful Lands # by Joe Parkin # 8210 - 211 ################################################## scripted_trigger hold_court_8210_claim_trigger = { tier = tier_county is_landless_type_title = no NOT = { this = root.capital_county } holder = { NOT = { this = $VASSAL$ } OR = { AND = { this = root root = { any_held_title = { count > 1 tier = tier_county is_landless_type_title = no } } } is_vassal_of = root } NOR = { has_friendly_relationship_trigger = { CHARACTER = $VASSAL$ } is_parent_of = $VASSAL$ is_spouse_of = $VASSAL$ } } } scripted_trigger hold_court_8210_vassal_trigger = { has_court_event_flag = no is_available_ai_adult = yes NOT = { has_trait = content } is_at_war = no NOT = { is_close_family_of = root } save_temporary_scope_as = vassal_temp OR = { any_de_jure_claim = { hold_court_8210_claim_trigger = { VASSAL = scope:vassal_temp } } any_claim = { hold_court_8210_claim_trigger = { VASSAL = scope:vassal_temp } } any_held_title = { title_tier = county any_neighboring_county = { holder = { this = root NOR = { has_friendly_relationship_trigger = { CHARACTER = scope:vassal_temp } is_parent_of = scope:vassal_temp is_spouse_of = scope:vassal_temp } } } } } } scripted_effect hold_court_8211_duel_win_effect = { if = { limit = { NOR = { this = root scope:defender_vassal = root } } add_opinion = { target = root modifier = respect_opinion opinion = 10 } } } scripted_effect hold_court_8211_duel_lose_effect = { if = { limit = { this != root } add_opinion = { target = root modifier = annoyed_opinion opinion = -10 } } } # A vassal wants a dejure or claimed county from another vassal hold_court.8210 = { type = court_event title = hold_court.8210.t desc = { desc = hold_court.8210.desc.intro first_valid = { triggered_desc = { trigger = { scope:aggressor_vassal = { any_de_jure_claim = { this = scope:vassal_claim } } } desc = hold_court.8210.desc.de_jure } triggered_desc = { trigger = { scope:aggressor_vassal = { has_strong_claim_on = scope:vassal_claim } } desc = hold_court.8210.desc.strong } desc = hold_court.8210.desc.weak } first_valid = { triggered_desc = { trigger = { scope:defender_vassal = root } desc = hold_court.8210.desc.self } desc = hold_court.8210.desc.other } } theme = court lower_right_portrait = scope:defender_vassal court_scene = { button_position_character = scope:aggressor_vassal court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:aggressor_vassal = { group = petitioners_group animation = disapproval } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } cooldown = { years = 10 } trigger = { any_vassal = { hold_court_8210_vassal_trigger = yes } # Is there a vassal with a de jure claim on a title held by another vassal? } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative } } immediate = { random_vassal = { limit = { hold_court_8210_vassal_trigger = yes } weight = { modifier = { factor = 4 primary_title.tier > tier_barony } modifier = { # Aggressor is a meanie factor = 2 OR = { has_trait = vengeful has_trait = wrathful } } modifier = { # Aggressor is a coward factor = 2 has_trait = craven } modifier = { # Aggressor is a powerful vassal factor = 2 is_powerful_vassal = yes } modifier = { factor = 10 any_de_jure_claim = { hold_court_8210_claim_trigger = { VASSAL = scope:vassal_temp } } } modifier = { factor = 5 any_claim = { hold_court_8210_claim_trigger = { VASSAL = scope:vassal_temp } } } } save_scope_as = aggressor_vassal court_event_character_flag_effect = yes if = { limit = { any_de_jure_claim = { hold_court_8210_claim_trigger = { VASSAL = scope:aggressor_vassal } } } random_de_jure_claim = { limit = { hold_court_8210_claim_trigger = { VASSAL = scope:aggressor_vassal } } weight = { modifier = { factor = 4 any_neighboring_county = { holder = scope:aggressor_vassal } } modifier = { factor = 2 de_jure_liege.tier = tier_duchy } modifier = { factor = 2 holder.max_military_strength > scope:aggressor_vassal.max_military_strength } modifier = { # More relevant if war declaration is limited factor = 2 root = { OR = { has_realm_law = crown_authority_2 has_realm_law = crown_authority_3 } } } modifier = { factor = 2 scope:aggressor_vassal = { has_strong_claim_on = prev } } modifier = { factor = 4 holder = { has_relation_rival = scope:aggressor_vassal } } modifier = { factor = 4 holder = { reverse_opinion = { target = scope:aggressor_vassal value <= 0 } } } } save_scope_as = vassal_claim holder = { save_scope_as = defender_vassal } } } else_if = { limit = { any_claim = { hold_court_8210_claim_trigger = { VASSAL = scope:aggressor_vassal } } } random_claim = { limit = { hold_court_8210_claim_trigger = { VASSAL = scope:aggressor_vassal } } weight = { modifier = { factor = 4 any_neighboring_county = { holder = scope:aggressor_vassal } } modifier = { factor = 2 de_jure_liege.tier = tier_duchy } modifier = { factor = 2 holder.max_military_strength > scope:aggressor_vassal.max_military_strength } modifier = { # More relevant if war declaration is limited factor = 2 root = { OR = { has_realm_law = crown_authority_2 has_realm_law = crown_authority_3 } } } modifier = { factor = 2 scope:aggressor_vassal = { has_strong_claim_on = prev } } } save_scope_as = vassal_claim holder = { save_scope_as = defender_vassal } } } else = { random_held_title = { title_tier = county limit = { any_neighboring_county = { NOT = { this = root.capital_county } holder = { this = root NOR = { has_friendly_relationship_trigger = { CHARACTER = scope:aggressor_vassal } is_parent_of = scope:aggressor_vassal is_spouse_of = scope:aggressor_vassal } } } } random_neighboring_county = { limit = { NOT = { this = root.capital_county } holder = { this = root NOR = { has_friendly_relationship_trigger = { CHARACTER = scope:aggressor_vassal } is_parent_of = scope:aggressor_vassal is_spouse_of = scope:aggressor_vassal } } } save_scope_as = vassal_claim holder = { save_scope_as = defender_vassal } } } } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { # Support claimant name = hold_court.8210.a trigger = { trigger_if = { limit = { scope:aggressor_vassal = { NOR = { any_de_jure_claim = { this = scope:vassal_claim } has_claim_on = scope:vassal_claim } } } scope:defender_vassal != root } } if = { limit = { scope:defender_vassal = root } } else_if = { limit = { scope:aggressor_vassal = { NOR = { any_de_jure_claim = { this = scope:vassal_claim } has_strong_claim_on = scope:vassal_claim } } } add_tyranny = major_tyranny_gain } else = { add_tyranny = minor_tyranny_gain } create_title_and_vassal_change = { type = granted save_scope_as = change add_claim_on_loss = no } scope:vassal_claim = { change_title_holder = { holder = scope:aggressor_vassal change = scope:change } } resolve_title_and_vassal_change = scope:change scope:aggressor_vassal = { add_opinion = { target = root modifier = grateful_opinion opinion = 20 } } if = { limit = { scope:defender_vassal = root } stress_impact = { greedy = medium_stress_impact_gain } } else = { scope:defender_vassal = { progress_towards_rival_effect = { CHARACTER = scope:aggressor_vassal REASON = rival_claimant_fight OPINION = 0 } add_opinion = { target = root modifier = angry_opinion opinion = -30 } } stress_impact = { just = medium_stress_impact_gain } } ai_chance = { base = 100 ai_value_modifier = { ai_honor = -2 ai_boldness = 2 } modifier = { #Weight down for stress. add = -15 has_trait = just } modifier = { #Weight up for relatives. add = 2 scope:aggressor_vassal = { is_close_family_of = root } NOT = { scope:defender_vassal = { is_close_family_of = root } } } } } option = { # Start vassal war name = hold_court.8210.b trigger = { is_valid_for_east_asian_events_trigger = no NOT = { faith = { has_doctrine = tenet_pacifism } } NOR = { has_realm_law = crown_authority_2 has_realm_law = crown_authority_3 } scope:defender_vassal != root } scope:aggressor_vassal = { add_opinion = { target = root modifier = angry_opinion opinion = -10 } add_character_flag = temp_no_claim_war_cost start_war = { cb = claim_cb target = scope:vassal_claim.holder claimant = scope:aggressor_vassal target_title = scope:vassal_claim } remove_character_flag = temp_no_claim_war_cost } scope:defender_vassal = { add_opinion = { target = root modifier = annoyed_opinion opinion = -10 } } stress_impact = { compassionate = medium_stress_impact_gain craven = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_honor = 1 ai_boldness = 2 } modifier = { #Weight down for stress. add = -15 has_trait = compassionate } modifier = { #Weight down for stress. add = -15 has_trait = craven } modifier = { add = 30 culture = { has_cultural_pillar = ethos_bellicose } } } } option = { # Start vassal duel name = { trigger = { scope:defender_vassal != root } text = hold_court.8210.f.other } name = { trigger = { always = yes } text = hold_court.8210.f.self } trigger = { is_valid_for_east_asian_events_trigger = no scope:defender_vassal = { is_adult = yes } } custom_tooltip = hold_court.8210.duel_tt show_as_tooltip = { random_list = { 10 = { show_chance = no desc = hold_court.8210.b.tt_aggressor create_title_and_vassal_change = { type = granted save_scope_as = change add_claim_on_loss = no } scope:vassal_claim = { change_title_holder = { holder = scope:aggressor_vassal change = scope:change } } resolve_title_and_vassal_change = scope:change scope:aggressor_vassal = { hold_court_8211_duel_win_effect = yes } scope:defender_vassal = { hold_court_8211_duel_lose_effect = yes } } 10 = { show_chance = no desc = hold_court.8210.b.tt_defender scope:defender_vassal = { hold_court_8211_duel_win_effect = yes } scope:aggressor_vassal = { hold_court_8211_duel_lose_effect = yes } } } } configure_start_single_combat_effect = { SC_INITIATOR = scope:aggressor_vassal SC_ATTACKER = scope:aggressor_vassal SC_DEFENDER = scope:defender_vassal FATALITY = no FIXED = no LOCALE = terrain_scope OUTPUT_EVENT = hold_court.8211 INVALIDATION_EVENT = fp1_tbc.0102 } stress_impact = { lifestyle_blademaster = medium_stress_impact_loss viking = medium_stress_impact_loss varangian = medium_stress_impact_loss berserker = medium_stress_impact_loss brave = medium_stress_impact_loss } stress_impact = { compassionate = medium_stress_impact_gain craven = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_honor = 1 ai_boldness = 2 } modifier = { #Weight down for stress. add = -15 has_trait = compassionate } modifier = { #Weight down for stress. add = -15 has_trait = craven } modifier = { add = 30 OR = { culture = { has_cultural_tradition = tradition_martial_admiration } culture = { has_cultural_tradition = tradition_chivalry } culture = { has_cultural_tradition = tradition_futuwaa } has_trait = gallant has_perk = stalwart_leader_perk } } } } option = { # Support defender name = { trigger = { NOR = { scope:aggressor_vassal = { any_de_jure_claim = { this = scope:vassal_claim } } scope:aggressor_vassal = { has_claim_on = scope:vassal_claim } } } text = hold_court.8210.c.none } name = { trigger = { scope:defender_vassal = root } text = hold_court.8210.c.self } name = { trigger = { scope:defender_vassal != root } text = hold_court.8210.c.other } scope:aggressor_vassal = { if = { limit = { NOT = { any_de_jure_claim = { this = scope:vassal_claim } } } add_opinion = { target = root modifier = angry_opinion opinion = -30 } if = { limit = { has_strong_claim_on = scope:vassal_claim } make_claim_weak = scope:vassal_claim } else = { remove_claim = scope:vassal_claim } } else = { add_opinion = { target = root modifier = angry_opinion opinion = -15 } } } if = { limit = { scope:defender_vassal != root } scope:defender_vassal = { add_opinion = { target = root modifier = respect_opinion opinion = 15 } progress_towards_friend_effect = { REASON = friend_took_side_in_dispute CHARACTER = root OPINION = 0 } } } stress_impact = { arbitrary = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_boldness = 1 ai_honor = 2 } modifier = { #Weight down for stress. add = -15 has_trait = arbitrary } } } option = { # Change liege name = hold_court.8210.e trigger = { scope:defender_vassal != root scope:aggressor_vassal = { any_de_jure_claim = { this = scope:vassal_claim } } scope:defender_vassal.primary_title.tier < scope:aggressor_vassal.primary_title.tier } create_title_and_vassal_change = { type = created save_scope_as = change add_claim_on_loss = no } scope:defender_vassal = { change_liege = { liege = scope:aggressor_vassal change = scope:change } } resolve_title_and_vassal_change = scope:change scope:aggressor_vassal = { add_opinion = { target = root modifier = pleased_opinion opinion = 10 } } scope:defender_vassal = { add_opinion = { target = root modifier = disappointed_opinion opinion = -5 } } stress_impact = { arbitrary = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_boldness = -1 ai_honor = 2 } modifier = { #Weight down for stress. add = -15 has_trait = arbitrary } } } option = { # Not my problem name = hold_court.8210.d trigger = { scope:defender_vassal != root } add_prestige = minor_prestige_gain scope:aggressor_vassal = { add_opinion = { target = root modifier = disappointed_opinion opinion = -10 } } scope:defender_vassal = { add_opinion = { target = root modifier = respect_opinion opinion = 5 } } stress_impact = { arrogant = medium_stress_impact_gain diligent = medium_stress_impact_gain just = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_boldness = -2 ai_honor = 1 } modifier = { #Weight down for stress. add = -15 has_trait = arrogant } modifier = { #Weight down for stress. add = -15 has_trait = diligent } modifier = { #Weight down for stress. add = -15 has_trait = just } } } after = { scope:aggressor_vassal = { clear_court_event_participation = yes } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } hold_court.8211 = { hidden = yes immediate = { scope:aggressor_vassal.liege = { send_interface_toast = { title = hold_court.8031.t left_icon = scope:sc_victor right_icon = scope:sc_loser scope:sc_victor = { if = { limit = { this != scope:vassal_claim.holder } create_title_and_vassal_change = { type = granted save_scope_as = change add_claim_on_loss = no } scope:vassal_claim = { change_title_holder = { holder = scope:sc_victor change = scope:change } } resolve_title_and_vassal_change = scope:change } if = { limit = { liege != root } hold_court_8211_duel_win_effect = yes } } scope:sc_loser = { if = { limit = { NOR = { liege = root this = root } } hold_court_8211_duel_lose_effect = yes } } } } } } ################################################## # The King's Peace # by Joe Parkin # 8260 ################################################## scripted_trigger hold_court_8260_faction_trigger = { exists = yes OR = { faction_is_type = liberty_faction faction_is_type = claimant_faction } OR = { faction_power >= faction_power_threshold faction_is_at_war = yes } trigger_if = { limit = { exists = special_character } special_character != root } } hold_court.8260 = { type = court_event title = hold_court.8260.t desc = { desc = hold_court.8260.desc.intro first_valid = { triggered_desc = { trigger = { exists = scope:vassal_faction.special_character scope:vassal_faction.faction_leader = scope:vassal_faction.special_character scope:vassal_faction = { faction_is_type = claimant_faction } } desc = hold_court.8220.desc.claimant_self } triggered_desc = { trigger = { scope:vassal_faction = { faction_is_type = claimant_faction } } desc = hold_court.8220.desc.claimant } triggered_desc = { trigger = { always = yes } desc = hold_court.8220.desc.liberty } } desc = hold_court.8260.desc.body } theme = court override_background = { reference = throne_room } cooldown = { years = 10 } lower_center_portrait = { character = scope:vassal_faction.special_character trigger = { scope:vassal_faction = { exists = special_character special_character != faction_leader } } } lower_right_portrait = scope:vassal_faction.faction_leader court_scene = { button_position_character = scope:vassal_faction.faction_target court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:vassal_faction_target = { group = petitioners_group animation = anger } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic } ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative } } trigger = { any_vassal = { has_court_event_flag = no is_available_ai_adult = yes any_targeting_faction = { target_of_powerful_faction_trigger = yes } } } immediate = { random_vassal = { limit = { has_court_event_flag = no is_available_ai_adult = yes any_targeting_faction = { target_of_powerful_faction_trigger = yes } } weight = { base = 1 modifier = { factor = 4 any_targeting_faction = { faction_can_press_demands = yes } } modifier = { factor = 4 any_targeting_faction = { faction_type = claimant_faction special_title ?= prev.primary_title } } modifier = { factor = 8 is_close_family_of = root } modifier = { factor = 2 this = root.primary_heir } modifier = { factor = 0.5 primary_title.tier < tier_duchy } } save_scope_as = vassal_faction_target court_event_character_flag_effect = yes ordered_targeting_faction = { limit = { target_of_powerful_faction_trigger = yes faction_can_press_demands = yes } alternative_limit = { target_of_powerful_faction_trigger = yes faction_is_at_war = yes } alternative_limit = { target_of_powerful_faction_trigger = yes } order_by = faction_discontent save_scope_as = vassal_faction faction_leader = { save_scope_as = vassal_faction_leader } # For loc if = { limit = { exists = special_character } special_character = { save_scope_as = vassal_claimant } } } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { # Break up the faction/force surrender name = { trigger = { scope:vassal_faction = { faction_is_at_war = yes } } text = hold_court.8260.a.war } name = { trigger = { always = yes } text = hold_court.8260.a.peace } scope:vassal_faction = { faction_target = { add_opinion = { target = root modifier = grateful_opinion opinion = 10 } } if = { limit = { exists = special_character NOT = { any_faction_member = { this = scope:vassal_faction.special_character } } } special_character = { add_opinion = { target = root modifier = angry_opinion opinion = -10 } } } if = { limit = { faction_is_at_war = no } every_faction_member = { custom = hold_court_8260_faction_member_tt add_faction_cooldown_effect = { YEARS = faction_war_white_peace_cooldown } add_opinion = { target = root modifier = angry_opinion opinion = -10 } } destroy_faction = yes } else = { every_faction_member = { custom = hold_court_8260_faction_member_tt add_faction_cooldown_effect = { YEARS = faction_war_defeat_cooldown } add_opinion = { target = root modifier = angry_opinion opinion = -25 } } faction_war = { end_war = defender } } } stress_impact = { arbitrary = medium_stress_impact_gain lazy = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_boldness = 2 ai_energy = 2 } modifier = { #Weight down for stress. add = -15 has_trait = arbitrary } modifier = { #Weight down for stress. add = -15 has_trait = lazy } modifier = { #Weight up for family add = 25 scope:vassal_faction.faction_target = { is_close_family_of = root } } modifier = { #Weight up for relatives add = 25 scope:vassal_faction.faction_target = { is_close_or_extended_family_of = root } } } } option = { # Imprison faction leader name = hold_court.8260.b add_dread = minor_dread_gain scope:vassal_faction.faction_target = { add_opinion = { target = root modifier = grateful_opinion opinion = 20 } } imprison_character_effect = { TARGET = scope:vassal_faction.faction_leader IMPRISONER = root } scope:vassal_faction = { if = { limit = { exists = special_character faction_leader != special_character } special_character = { add_opinion = { target = root modifier = angry_opinion opinion = -20 } } } every_faction_member = { limit = { is_a_faction_leader = no } custom = hold_court_8260_faction_member_tt add_faction_cooldown_effect = { YEARS = faction_war_defeat_cooldown } add_opinion = { target = root modifier = angry_opinion opinion = -20 } } scope:vassal_faction = { if = { limit = { faction_is_at_war = no } destroy_faction = yes } else = { faction_war = { end_war = defender } } } } stress_impact = { just = medium_stress_impact_gain forgiving = medium_stress_impact_gain compassionate = medium_stress_impact_gain } ai_chance = { base = 50 ai_value_modifier = { ai_honor = -1 ai_compassion = -2 ai_boldness = 1 ai_vengefulness = 2 } modifier = { #Weight down for stress. add = -15 has_trait = just } modifier = { #Weight down for stress. add = -15 has_trait = forgiving } modifier = { #Weight down for stress. add = -15 has_trait = compassionate } } } option = { # End war white peace name = hold_court.8260.c trigger = { scope:vassal_faction = { faction_is_at_war = yes } } scope:vassal_faction = { scope:vassal_faction.faction_target = { add_opinion = { target = root modifier = grateful_opinion opinion = 5 } } if = { limit = { exists = special_character faction_leader != special_character } special_character = { add_opinion = { target = root modifier = annoyed_opinion opinion = -5 } } } every_faction_member = { limit = { is_a_faction_leader = no } custom = hold_court_8260_faction_member_tt add_opinion = { target = root modifier = annoyed_opinion opinion = -5 } } faction_war = { end_war = white_peace } } stress_impact = { arbitrary = medium_stress_impact_gain wrathful = medium_stress_impact_gain vengeful = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_honor = 2 ai_compassion = 1 ai_boldness = 1 ai_vengefulness = -1 } modifier = { #Weight down for stress. add = -15 has_trait = arbitrary } modifier = { #Weight down for stress. add = -15 has_trait = wrathful } } } option = { # Make vassal surrender name = hold_court.8260.d add_tyranny = minor_tyranny_gain scope:vassal_faction = { faction_target = { add_opinion = { target = root modifier = angry_opinion opinion = -30 } } faction_leader = { add_opinion = { target = root modifier = grateful_opinion opinion = 20 } } if = { limit = { exists = special_character faction_leader != special_character } special_character = { add_opinion = { target = root modifier = grateful_opinion opinion = 20 } } } every_faction_member = { limit = { is_a_faction_leader = no } custom = hold_court_8260_faction_member_tt add_opinion = { target = root modifier = grateful_opinion opinion = 10 } } if = { limit = { faction_is_at_war = no } if = { limit = { faction_is_type = claimant_faction } create_title_and_vassal_change = { type = granted save_scope_as = change add_claim_on_loss = yes } special_title = { change_title_holder_include_vassals = { holder = scope:vassal_faction.special_character change = scope:change } } resolve_title_and_vassal_change = scope:change } else = { faction_target = { decrease_crown_authority_effect = yes } } } else = { faction_war = { end_war = attacker } } hidden_effect = { if = { limit = {exists = scope:vassal_faction } destroy_faction = yes } } } stress_impact = { paranoid = medium_stress_impact_gain trusting = medium_stress_impact_gain vengeful = medium_stress_impact_gain } ai_chance = { base = 50 ai_value_modifier = { ai_honor = -2 ai_compassion = -1 ai_boldness = 1 ai_vengefulness = 1 } modifier = { #Weight down for stress. add = -15 has_trait = just } modifier = { #Weight down for family add = -25 scope:vassal_faction.faction_target = { is_close_family_of = root } } modifier = { #Weight down for relatives add = -25 scope:vassal_faction.faction_target = { is_close_or_extended_family_of = root } } } } option = { # Refuse name = hold_court.8260.e scope:vassal_faction = { faction_target = { add_opinion = { target = root modifier = disappointed_opinion opinion = -10 } } every_faction_member = { custom = hold_court_8260_faction_member_tt add_opinion = { target = root modifier = disappointed_opinion opinion = -5 } } } stress_impact = { humble = medium_stress_impact_gain diligent = medium_stress_impact_gain just = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_honor = 1 ai_compassion = 1 ai_boldness = -1 ai_vengefulness = -1 } modifier = { #Weight down for stress. add = -15 has_trait = humble } modifier = { #Weight down for stress. add = -15 has_trait = diligent } modifier = { #Weight down for stress. add = -15 has_trait = just } } } after = { scope:vassal_faction_target = { clear_court_event_participation = yes } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # Oath of Fealty # by Joe Parkin # 8270 ################################################## scripted_trigger hold_court_8270_neighbor_trigger = { has_court_event_flag = no is_available_ai_adult = yes top_liege = this primary_title.tier < root.primary_title.tier primary_title.tier <= tier_duchy NOT = { has_relation_rival = root } opinion = { target = root value >= -25 } NOT = { faith = { faith_hostility_level = { target = root.faith value >= faith_hostile_level } } } any_neighboring_top_liege_realm_owner = { count >= 2 primary_title.tier >= prev.primary_title.tier NOT = { is_allied_to = prev } max_military_strength > prev.max_military_strength } calc_true_if = { amount >= 2 primary_title = { # is a de jure vassal any_this_title_or_de_jure_above = { this != prev holder = root } } OR = { # cultural acceptance is good culture = root.culture culture = { cultural_acceptance = { target = root.culture value >= 50 } } } primary_title.tier = tier_county } } hold_court.8270 = { type = court_event title = hold_court.8270.t desc = hold_court.8270.desc theme = court override_background = { reference = throne_room } cooldown = { years = 15 } court_scene = { button_position_character = scope:neighbor court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:neighbor = { group = petitioners_group animation = admiration } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } trigger = { any_neighboring_top_liege_realm_owner = { hold_court_8270_neighbor_trigger = yes } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative } } immediate = { random_neighboring_top_liege_realm_owner = { limit = { hold_court_8270_neighbor_trigger = yes } weight = { base = 1 modifier = { factor = 4 is_close_or_extended_family_of = root } modifier = { factor = 10 primary_title.tier = tier_county } modifier = { factor = 4 faith = root.faith } modifier = { factor = 2 religion = root.religion } modifier = { factor = 2 culture = root.culture } modifier = { factor = 4 opinion = { target = root value >= 50 } } modifier = { factor = 4 any_neighboring_top_liege_realm_owner = { this != root primary_title.tier >= tier_kingdom OR = { AND = { prev.faith = root.faith faith != prev.faith } AND = { prev.religion = root.religion religion != prev.religion } AND = { prev.culture = root.culture culture != prev.culture } } } } } save_scope_as = neighbor court_event_character_flag_effect = yes } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { # Accept name = hold_court.8270.a create_title_and_vassal_change = { type = swear_fealty save_scope_as = change add_claim_on_loss = no } scope:neighbor = { change_liege = { liege = root change = scope:change } } resolve_title_and_vassal_change = scope:change scope:neighbor = { add_opinion = { target = root modifier = grateful_opinion opinion = 10 } # Feudal vassals get contracts. if = { limit = { government_has_flag = government_is_feudal } hidden_effect = { if = { limit = { top_liege != this } # To avoid errors during tooltip generation (prior to the contract being generated) vassal_contract_set_obligation_level = { type = feudal_government_taxes level = 1 } vassal_contract_set_obligation_level = { type = feudal_government_levies level = 1 } } } custom_tooltip = low_obligations_taxes custom_tooltip = low_obligations_levies } } stress_impact = { greedy = medium_stress_impact_gain paranoid = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_rationality = 2 ai_greed = -2 } modifier = { #Weight down for stress. add = -15 has_trait = greedy } modifier = { #Weight down for stress. add = -15 has_trait = paranoid } } } option = { # Demand better deal name = hold_court.8270.b random_list = { 2 = { show_chance = no desc = hold_court.8270.b.accept modifier = { factor = 2 scope:neighbor = { has_trait = craven } } modifier = { factor = 2 scope:neighbor = { has_trait = fickle } } modifier = { factor = 2 scope:neighbor = { has_trait = content } } modifier = { factor = 2 scope:neighbor = { has_trait = humble } } modifier = { factor = 2 scope:neighbor = { has_trait = wrathful } } modifier = { factor = 2 scope:neighbor = { has_trait = vengeful } } send_interface_toast = { title = hold_court.8270.b.accept left_icon = scope:neighbor create_title_and_vassal_change = { type = swear_fealty save_scope_as = change add_claim_on_loss = no } scope:neighbor = { change_liege = { liege = root change = scope:change } } resolve_title_and_vassal_change = scope:change custom_tooltip = normal_obligations_taxes custom_tooltip = normal_obligations_levies } } 4 = { show_chance = no desc = hold_court.8270.b.refuse modifier = { factor = 2 scope:neighbor = { has_trait = brave } } modifier = { factor = 2 scope:neighbor = { has_trait = stubborn } } modifier = { factor = 2 scope:neighbor = { has_trait = ambitious } } modifier = { factor = 2 scope:neighbor = { has_trait = arrogant } } modifier = { factor = 2 scope:neighbor = { has_trait = patient } } modifier = { factor = 2 scope:neighbor = { has_trait = forgiving } } change_current_court_grandeur = medium_court_grandeur_loss send_interface_toast = { title = hold_court.8270.b.refuse left_icon = scope:neighbor scope:neighbor = { add_opinion = { target = root modifier = insulted_opinion opinion = -20 } } } } } stress_impact = { generous = medium_stress_impact_gain compassionate = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_boldness = 2 ai_greed = 2 } modifier = { #Weight down for stress. add = -15 has_trait = generous } modifier = { #Weight down for stress. add = -15 has_trait = compassionate } } } option = { # Refuse name = hold_court.8270.d change_current_court_grandeur = minor_court_grandeur_gain scope:neighbor = { add_opinion = { target = root modifier = annoyed_opinion opinion = -10 } } stress_impact = { honest = medium_stress_impact_gain trusting = medium_stress_impact_gain fickle = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_boldness = 2 ai_rationality = -2 } modifier = { #Weight down for stress. add = -15 has_trait = honest } modifier = { #Weight down for stress. add = -15 has_trait = trusting } modifier = { #Weight down for stress. add = -15 has_trait = fickle } } } after = { scope:neighbor = { clear_court_event_participation = yes } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } } ################################################## # Nomadic Neighbors # by Joe Parkin # 8280 ################################################## scripted_trigger nomadic_cultural_traditions_trigger = { culture = { OR = { has_cultural_tradition = tradition_horse_lords has_cultural_tradition = tradition_pastoralists } } } scripted_trigger hold_court_8280_nomad_county_trigger = { nomadic_cultural_traditions_trigger = yes holder = { government_has_flag = government_is_tribal this != root nomadic_cultural_traditions_trigger = yes trigger_if = { limit = { top_liege = root } is_available_ai_adult = yes } } } scripted_trigger hold_court_8280_feudal_county_trigger = { nomadic_cultural_traditions_trigger = no holder = { has_court_event_flag = no is_available_ai_adult = yes nomadic_cultural_traditions_trigger = no this != root OR = { government_has_flag = government_is_feudal government_has_flag = government_is_clan } } any_neighboring_county = { hold_court_8280_nomad_county_trigger = yes } } hold_court.8280 = { type = court_event title = hold_court.8280.t desc = { first_valid = { # triggered_desc = { trigger = { scope:nomad.top_liege != root } desc = hold_court.8280.desc.foreign } triggered_desc = { trigger = { always = yes } desc = hold_court.8280.desc.local } } } theme = court override_background = { reference = throne_room } cooldown = { years = 15 } lower_right_portrait = { character = scope:nomad.top_liege trigger = { scope:nomad.top_liege != root } } court_scene = { button_position_character = scope:feudal_vassal court_event_force_open = yes show_timeout_info = no should_pause_time = yes roles = { scope:feudal_vassal = { group = petitioners_group animation = worry } scope:nomad_same_liege = { group = petitioners_group animation = dismissal } } } widget = { gui = "event_window_widget_event_chain_progress" container = "custom_widgets_container" controller = event_chain_progress } trigger = { nomadic_cultural_traditions_trigger = no any_realm_county = { hold_court_8280_feudal_county_trigger = yes } } weight_multiplier = { base = 1 # Court weightings. ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike } ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative } } immediate = { random_realm_county = { limit = { holder = { is_vassal_of = root } hold_court_8280_feudal_county_trigger = yes } alternative_limit = { hold_court_8280_feudal_county_trigger = yes } holder = { save_scope_as = feudal_vassal court_event_character_flag_effect = yes } save_scope_as = feudal_county ordered_neighboring_county = { limit = { holder.top_liege = { this != root government_has_flag = government_is_tribal culture = { has_cultural_tradition = tradition_horse_lords } } hold_court_8280_nomad_county_trigger = yes } alternative_limit = { holder.top_liege != root hold_court_8280_nomad_county_trigger = yes } alternative_limit = { hold_court_8280_nomad_county_trigger = yes } order_by = { value = 0 subtract = development_level } save_scope_as = nomad_county culture = { save_scope_as = nomad_culture } holder = { save_scope_as = nomad } # Set up portrait groups. scope:nomad = { if = { limit = { top_liege = root } save_scope_as = nomad_same_liege court_event_character_flag_effect = yes } } } } # Trigger next event in chain. hold_court_queue_next_event_effect = yes } option = { # Kick nomads out trigger = { trigger_if = { limit = { is_ai = yes } short_term_treasury_or_gold >= minor_treasury_or_gold_value } } name = { trigger = { scope:nomad.top_liege = root } text = hold_court.8280.a.local } name = { trigger = { always = yes } text = hold_court.8280.a.foreign } add_prestige = medium_prestige_gain remove_treasury_or_gold = tiny_treasury_or_gold_value scope:feudal_vassal = { add_opinion = { target = root modifier = grateful_opinion opinion = 10 } } scope:nomad = { if = { limit = { top_liege != root } top_liege = { add_opinion = { target = root modifier = angry_opinion opinion = -10 } } } else = { add_opinion = { target = root modifier = angry_opinion opinion = -10 } } culture = { if = { limit = { this != root.culture } change_cultural_acceptance = { target = root.culture value = -10 desc = cultural_intolerance_tt } } } } if = { limit = { scope:feudal_vassal.culture != root.culture } scope:feudal_vassal.culture = { if = { limit = { this != scope:nomad_culture } change_cultural_acceptance = { target = scope:nomad_culture value = -10 desc = cultural_intolerance_tt } } } } stress_impact = { compassionate = medium_stress_impact_gain generous = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_greed = 1 ai_compassion = -1 } modifier = { #Weight down for stress. add = -15 has_trait = compassionate } modifier = { #Weight down for stress. add = -15 has_trait = generous } } } option = { # Recruit them name = hold_court.8280.b trigger = { trigger_if = { limit = { is_ai = yes } short_term_treasury_or_gold >= massive_treasury_or_gold_value } } remove_treasury_or_gold = major_treasury_or_gold_value culture = { if = { limit = { this != scope:nomad_culture } change_cultural_acceptance = { target = scope:nomad.culture value = 10 desc = cultural_intolerance_tt } } } scope:feudal_vassal = { add_opinion = { target = root modifier = grateful_opinion opinion = 10 } } scope:nomad = { if = { limit = { top_liege != root } top_liege = { add_opinion = { target = root modifier = respect_opinion opinion = 10 } } } else = { add_opinion = { target = root modifier = respect_opinion opinion = 10 } } } add_character_modifier = { modifier = hold_court_8280_nomadic_guard years = 5 } if = { limit = { culture != scope:nomad_culture } stress_impact = { paranoid = medium_stress_impact_gain arrogant = medium_stress_impact_gain } } stress_impact = { greedy = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_greed = -2 ai_energy = 2 } modifier = { #Weight down for stress. add = -15 has_trait = greedy } modifier = { #Weight down for stress. add = -15 culture != scope:nomad_culture has_trait = paranoid } modifier = { #Weight down for stress. add = -15 culture != scope:nomad_culture has_trait = arrogant } } } option = { # Dismiss name = hold_court.8280.c scope:feudal_vassal = { add_opinion = { target = root modifier = disappointed_opinion opinion = -10 } } scope:nomad = { if = { limit = { top_liege = root } add_opinion = { target = root modifier = respect_opinion opinion = 10 } } } scope:feudal_county = { set_county_culture = scope:nomad_culture } culture = { if = { limit = { this != scope:nomad_culture } change_cultural_acceptance = { target = scope:nomad_culture value = 5 desc = cultural_intolerance_tt } } } if = { limit = { culture != scope:nomad_culture } stress_impact = { diligent = medium_stress_impact_gain paranoid = medium_stress_impact_gain } } stress_impact = { just = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_boldness = 2 ai_energy = 1 ai_honor = -1 } modifier = { #Weight down for stress. add = -15 has_trait = just } modifier = { #Weight down for stress. add = -15 culture != scope:nomad_culture has_trait = diligent } modifier = { #Weight down for stress. add = -15 culture != scope:nomad_culture has_trait = paranoid } } } after = { scope:feudal_vassal = { clear_court_event_participation = yes } if = { limit = { exists = scope:nomad_same_liege } scope:nomad_same_liege = { clear_court_event_participation = yes } } # Finish up the chain if relevant. hold_court_queue_post_event_effect = yes } }