namespace = ep1_decision ################################################## # # Royal Court Court Grandeur Level & Amenity Decisions Events # # COURT GRANDEUR LEVELS # 0001 - 0010 Host Fundraiser # 0011 - 0020 Host Summit # # AMENITIES # 0101 - 0110 Order Mass Eviction # 0111 - 0120 Commission Exotic Bedchamber ################################################## ################################################## # COURT GRANDEUR LEVELS ep1_decision.0201 = { type = character_event title = ep1_decision.0201.t desc = ep1_decision.0201.desc theme = education left_portrait = scope:good_linguist lower_left_portrait = scope:cheap_linguist right_portrait = scope:medium_linguist lower_right_portrait = scope:scholarly_linguist override_background = { reference = throne_room } immediate = { ### Save cultures and languages # Find 1st culture that speaks target language natively random_culture_global = { limit = { exists = culture_head scope:target_court_language = { has_court_language_of_culture = prev } } save_scope_as = ling_cul_1 } # Save liege as example to fetch faiths if relevant if = { limit = { exists = scope:language_scheme_type liege = { has_court_language_of_culture = root.liege.culture } } liege = { save_scope_as = ling_cul_1_ruler } } # Otherwise find random cul_1 ruler else = { linguist_random_realm_effect = { CULTURE = ling_cul_1 } } # Find 2nd culture that speaks target language natively if = { limit = { any_culture_global = { exists = culture_head scope:target_court_language = { has_court_language_of_culture = prev } THIS != scope:ling_cul_1 } } random_culture_global = { limit = { exists = culture_head scope:target_court_language = { has_court_language_of_culture = prev } THIS != scope:ling_cul_1 } save_scope_as = ling_cul_2 } } # If none, duplicate 1st else = { scope:ling_cul_1 = { save_scope_as = ling_cul_2 } } # Save random ruler of cul 2 to find faith linguist_random_realm_effect = { CULTURE = ling_cul_2 } # Save own culture culture = { save_scope_as = ling_cul_3 } # Bonus languages good linguists may know in addition to root and target linguist_bonus_culture_effect = { CULTURE = ling_cul_1 } linguist_bonus_culture_effect = { CULTURE = ling_cul_2 } linguist_bonus_culture_effect = { CULTURE = ling_cul_3 } #### Create Linguists hidden_effect = { # Poor Linguist if = { limit = { has_trait = greedy } create_character = { dynasty = none template = court_linguist_cheap_template location = root.capital_province save_scope_as = cheap_linguist } } # Average Linguist create_character = { dynasty = none template = court_linguist_medium_template location = root.capital_province save_scope_as = medium_linguist } # Good Linguist create_character = { dynasty = none template = court_linguist_good_template culture = scope:ling_cul_2 faith = scope:ling_cul_2_ruler.faith location = root.capital_province save_scope_as = good_linguist } # Scholarly Linguist if = { limit = { has_trait = scholar } create_character = { dynasty = none template = court_linguist_good_template culture = scope:ling_cul_1 faith = scope:ling_cul_1_ruler.faith location = root.capital_province trait = scholar save_scope_as = scholarly_linguist } if = { limit = { exists = scope:ling_cul_2_bonus NOT = { scope:scholarly_linguist = { knows_language_of_culture = scope:ling_cul_2_bonus } } } scope:scholarly_linguist = { learn_language_of_culture = scope:ling_cul_2_bonus } } } } } # Expensive linguist, great teacher option = { name = ep1_decision.0201.a pay_short_term_gold = { target = scope:good_linguist gold = medium_gold_value } learn_language_linguist_effect = { LINGUIST = scope:good_linguist } stress_impact = { greedy = medium_stress_impact_gain } ai_chance = { base = 100 modifier = { short_term_gold < medium_gold_value factor = 0 } } } # Cheaper linguist; less learning, not a good teacher option = { name = ep1_decision.0201.b pay_short_term_gold = { target = scope:medium_linguist gold = minor_gold_value } learn_language_linguist_effect = { LINGUIST = scope:medium_linguist } stress_impact = { greedy = medium_stress_impact_gain } ai_chance = { base = 100 modifier = { short_term_gold < minor_gold_value_check factor = 0 } } } # I know a good tutor through scholarly circles! option = { name = ep1_decision.0201.c trait = scholar trigger = { has_trait = scholar } learn_language_linguist_effect = { LINGUIST = scope:scholarly_linguist } ai_chance = { base = 100 } } # I'm cheap, get me anyone who can vaguely speak my language option = { name = ep1_decision.0201.d trait = greedy trigger = { has_trait = greedy } learn_language_linguist_effect = { LINGUIST = scope:cheap_linguist } ai_chance = { base = 1000 modifier = { # Don't do it if you can hire the cool guy has_trait = scholar factor = 0 } } } # On seconds thoughts, I won't hire a linguist at all... option = { name = ep1_decision.0201.e ai_chance = { base = 0 modifier = { short_term_gold < minor_gold_value_check NOR = { has_trait = scholar has_trait = greedy } add = 10 } } } after = { every_in_list = { list = court_linguist_list limit = { NOT = { is_courtier_of = root } } silent_disappearance_effect = yes } } } ################################################## # AMENITIES ################################################## # Out with the Old # by Ewan Cowhig Croft # 0101 - 0110 ################################################## # Pay a little prestige to boot out all the guests from your palace. ep1_decision.0101 = { type = character_event title = ep1_decision.0101.t desc = ep1_decision.0101.desc theme = court left_portrait = { character = root animation = personality_rational } override_background = { reference = throne_room } immediate = { # Grab the capital for easy loc. capital_barony = { save_scope_as = capital } } # Scope:capital is not an inn. Away, leeches! option = { name = ep1_decision.0101.a # Evict your guests. order_mass_eviction_decision_guests_only_effect = yes stress_impact = { shy = minor_stress_impact_loss gregarious = medium_stress_impact_gain } ai_chance = { # AI cannot access this event. base = 100 } } # Everyone who doesn't have a job or a close blood tie, *out*! option = { name = ep1_decision.0101.b trigger = { # If you have no spare rooms at all, you can dismiss useless courtiers for a bit extra. amenity_level = { target = court_lodging_standards value <= low_amenity_level } } # Charge an extra premium. add_prestige = { value = order_mass_eviction_decision_cost_value multiply = -1 } # Evict your guests *&* courtiers. order_mass_eviction_decision_courtiers_&_guests_effect = yes stress_impact = { shy = medium_stress_impact_loss gregarious = major_stress_impact_gain } ai_chance = { # AI cannot access this event. base = 100 } } # On seconds thoughts, this is unbecoming... option = { name = ep1_decision.0101.c # Return invested prestige. hidden_effect = { add_prestige_no_experience = order_mass_eviction_decision_cost_value } # & reset the cooldown. remove_decision_cooldown = order_mass_eviction_decision # No stress impact for cancelling out of the decision. ai_chance = { # AI cannot access this event. base = 100 } } } ################################################## # Grandiose Decor # by Ewan Cowhig Croft # 0111 - 0120 ################################################## # For technical reasons, this trigger can't be the same as exoticise_a_grand_hall_decision_list_builder_guts_trigger, but maintains (almost) technical parity with it. scripted_trigger ep1_decision_0111_list_builder_guts_trigger = { # Is the title presently active? is_title_created = yes # Filter out anyone already in the list. NOT = { is_in_list = royal_courts_list } # Check assorted holder things. holder = { # Filter out anyone who has the right rank but lacks a mechanical royal court. has_royal_court = yes this != root # Can the two communicate? in_diplomatic_range = root } } scripted_effect ep1_decision_0111_apply_hall_effect = { # Add mutual opinion for each non-AI involved with the interaction. $CHOICE$ = { if = { limit = { is_ai = yes } add_opinion = { target = root modifier = flattered_opinion opinion = 30 } } } if = { limit = { is_ai = yes } add_opinion = { target = $CHOICE$ modifier = impressed_opinion opinion = 30 } } # Gain a fraction of the CGV difference. change_current_court_grandeur = $CHOICE$.ep1_decision_0111_proportional_cgv_gain_value # Pay prestige proportional to how much CGV is gained. add_prestige = $CHOICE$.ep1_decision_0111_proportional_prestige_cost_value # Hand over a lil participation prestige for $CHOICE$ so that they know someone thinks their court is rad. $CHOICE$ = { send_interface_toast = { title = ep1_decision.0111.toast.t left_icon = root # Give a little more for emperors doing this. if = { limit = { $CHOICE$.primary_title.tier >= tier_empire } add_prestige = medium_prestige_gain } # Otherwise, just a few crumbs of prestige. else = { add_prestige = minor_prestige_gain } } } # Stress impact handled in the scripted effect, since it'll always be the same for each char. stress_impact = { architect = minor_stress_impact_loss humble = medium_stress_impact_loss arrogant = major_stress_impact_gain } } # Arrange for a major room to be remodelled with decor inspired by a more grandiose culture. ep1_decision.0111 = { type = character_event title = ep1_decision.0111.t desc = ep1_decision.0111.desc theme = court left_portrait = { character = root animation = throne_room_conversation_4 } lower_left_portrait = scope:option_1 lower_center_portrait = scope:option_2 lower_right_portrait = scope:option_3 immediate = { # Build a list of suitable courts. ## We add the title rather than the characters to the list for a cleaner debug tooltip in-game. every_empire = { limit = { ep1_decision_0111_list_builder_guts_trigger = yes } # Rack 'em up. add_to_list = royal_courts_list } every_kingdom = { limit = { ep1_decision_0111_list_builder_guts_trigger = yes } # Rack 'em up. add_to_list = royal_courts_list } # Then, filter through the list and grab appropriate options. ordered_in_list = { list = royal_courts_list max = 4 check_range_bounds = no order_by = { # Use CGV as a base. add = holder.court_grandeur_current # Weight up for neighbouring realms. if = { limit = { holder = { OR = { any_neighboring_and_across_water_realm_same_rank_owner = { this = root } any_neighboring_and_across_water_top_liege_realm_owner = { this = root } } } } multiply = 5 } } if = { limit = { NOT = { exists = scope:option_1 } } holder = { save_scope_as = option_1 } } else_if = { limit = { NOT = { holder = { this = scope:option_1 } exists = scope:option_2 } } holder = { save_scope_as = option_2 } } else_if = { limit = { NOT = { holder = { this = scope:option_1 } holder = { this = scope:option_2 } exists = scope:option_3 } } holder = { save_scope_as = option_3 } } } } # Scope:option_1 is a grand, grand place. option = { name = { trigger = { scope:option_1.court_grandeur_current > root.court_grandeur_current } text = ep1_decision.0111.a.greater_cgv } name = { trigger = { always = yes } text = ep1_decision.0111.a.lesser_cgv } trigger = { exists = scope:option_1 } # Build a hall in the relevant scope's style. ep1_decision_0111_apply_hall_effect = { CHOICE = scope:option_1 } # Stress_impact block handled in the scripted effect. ai_chance = { # Generally equal likelihood for each option. base = 100 # Otherwise, people want to model themselves after characters they like. #opinion_modifier = { opinion_target = scope:option_1 } } } # I find the architecture of scope:option_2 enthralling! option = { name = { trigger = { scope:option_2.court_grandeur_current > root.court_grandeur_current } text = ep1_decision.0111.b.greater_cgv } name = { trigger = { always = yes } text = ep1_decision.0111.b.lesser_cgv } trigger = { exists = scope:option_2 } # Build a hall in the relevant scope's style. ep1_decision_0111_apply_hall_effect = { CHOICE = scope:option_2 } # Stress_impact block handled in the scripted effect. ai_chance = { # Generally equal likelihood for each option. base = 100 # Otherwise, people want to model themselves after characters they like. #opinion_modifier = { opinion_target = scope:option_2 } } } # Perhaps a scope:option_3ikkan lounge? option = { name = { trigger = { scope:option_3.court_grandeur_current > root.court_grandeur_current } text = ep1_decision.0111.c.greater_cgv } name = { trigger = { always = yes } text = ep1_decision.0111.c.lesser_cgv } trigger = { exists = scope:option_3 } # Build a hall in the relevant scope's style. ep1_decision_0111_apply_hall_effect = { CHOICE = scope:option_3 } # Stress_impact block handled in the scripted effect. ai_chance = { # Generally equal likelihood for each option. base = 100 # Otherwise, people want to model themselves after characters they like. #opinion_modifier = { opinion_target = scope:option_3 } } } # These all seem quite foreign... option = { name = ep1_decision.0111.d # Refund the gold paid; we mention this in a tooltip so that it's a bit less noticeable. hidden_effect = { add_gold = var:exoticise_a_grand_hall_decision_refund_value } custom_tooltip = ep1_decision.0111.d.tt # Take the decision off cooldown. remove_decision_cooldown = exoticise_a_grand_hall_decision # No stress impact for cancelling out. ai_chance = { # If the AI has gotten this far, they should pick an option. base = 0 } } after = { # Whatever else happens, clear the refund value. remove_variable = exoticise_a_grand_hall_decision_refund_value } }