namespace = tribute_mission # 0001 -> Hidden: Set the parameters ## Character Events ## # 1000 -> Tributary: Fork over Tribute, try to influence reward # 1002 -> Overlord: Do you want the Human Tribute? # 1005 -> Overlord: Decide the reward # 1006 -> Overlord: CHINA - Decide whether to grant a Seal of Investiture or not # 1007 -> Tributary: CHINA - Receive the Seal of Investiture # 1008 -> Tributary: HEGEMON - Decide whether to become a Tributary or not # 1010 -> Tributary: Receive reward, go home ## Court Events ## # 3000 -> Tributary: Fork over Tribute, try to influence reward # 3002 -> Overlord: Do you want the Human Tribute? ###DEPRECATED # 3005 -> Overlord: Decide the reward ###DEPRECATED # 3010 -> Tributary: Receive reward, go home ## Letter Events ## # 9000 -> Tributary: Overlord is informing you of your imminent loss of tributary-status (unless you Tribute Mission) # 9500 -> Tributary: You ignored the Tribute Mission, Overlord goes bye-bye ## Travel Events ## # 9750 -> Tributary: You lost your Human Tribute # 9760 -> Tributary: Your to-be Eunuch is trying to escape # Note on scope naming: 'overlord_scope' and 'tributary_scope' can be misleading since it's technically possible for some # non-tributaries to go on tribute missions as well. Consider these equivalent to "tribute receiver" and "tribute payer". scripted_trigger tribute_mission_1000_available_receiver_trigger = { is_available = yes location = scope:overlord_scope.capital_province } #Hidden: Set the parameters tribute_mission.0001 = { hidden = yes immediate = { #Determine who is who save_scope_as = tributary_scope var:tribute_mission_target_scope ?= { save_scope_as = overlord_scope } #Who is the receiving character? scope:overlord_scope = { #Overlord if = { limit = { is_available = yes is_adult = yes } save_scope_as = receiving_character } #Diarch else_if = { limit = { diarch ?= { tribute_mission_1000_available_receiver_trigger = yes } } diarch = { save_scope_as = receiving_character } } #Councillor else_if = { limit = { OR = { cp:councillor_court_chaplain ?= { tribute_mission_1000_available_receiver_trigger = yes } cp:councillor_chancellor ?= { tribute_mission_1000_available_receiver_trigger = yes } cp:councillor_steward ?= { tribute_mission_1000_available_receiver_trigger = yes } cp:councillor_marshal ?= { tribute_mission_1000_available_receiver_trigger = yes } cp:councillor_spymaster ?= { tribute_mission_1000_available_receiver_trigger = yes } } } if = { limit = { cp:councillor_steward ?= { tribute_mission_1000_available_receiver_trigger = yes } } cp:councillor_steward = { save_scope_as = receiving_character } } if = { limit = { NOT = { exists = scope:receiving_character } cp:councillor_chancellor ?= { tribute_mission_1000_available_receiver_trigger = yes } } cp:councillor_chancellor = { save_scope_as = receiving_character } } if = { limit = { NOT = { exists = scope:receiving_character } cp:councillor_spymaster ?= { tribute_mission_1000_available_receiver_trigger = yes } } cp:councillor_spymaster = { save_scope_as = receiving_character } } if = { limit = { NOT = { exists = scope:receiving_character } cp:councillor_court_chaplain ?= { tribute_mission_1000_available_receiver_trigger = yes } } cp:councillor_court_chaplain = { save_scope_as = receiving_character } } if = { limit = { NOT = { exists = scope:receiving_character } cp:councillor_marshal ?= { tribute_mission_1000_available_receiver_trigger = yes } } cp:councillor_marshal = { save_scope_as = receiving_character } } } #Random attendant else = { create_character = { template = servant_character location = scope:overlord_scope.capital_province culture = scope:overlord_scope.capital_province.culture faith = scope:overlord_scope.capital_province.faith dynasty = none save_scope_as = receiving_character } scope:receiving_character = { remove_character_flag = peasant_outfit add_character_flag = created_attendant } scope:overlord_scope = { hidden_effect = { add_courtier = scope:receiving_character } } } # Save Overlord's opinion of the Tributary save_opinion_value_as = { name = opinion_of_tributary target = scope:tributary_scope } } #Set up the human tribute scopes if = { limit = { var:tribute_mission_type ?= flag:concubine_tribute } var:offered_concubine ?= { save_scope_as = concubine_character } } if = { limit = { var:tribute_mission_type ?= flag:eunuch_tribute } var:offered_eunuch ?= { save_scope_as = eunuch_character if = { limit = { is_eunuch_trigger = no } remove_opinion = { modifier = slated_for_castration_opinion target = scope:tributary_scope } add_trait = eunuch_1 add_opinion = { modifier = castration_opinion target = scope:tributary_scope opinion = -50 } add_character_flag = { flag = tribute_mission_recently_castrated days = 30 } } } } #... or the non-living scopes if = { limit = { var:tribute_mission_type ?= flag:artifact_tribute } var:offered_artifact ?= { save_scope_as = artifact_to_tribute } } if = { limit = { var:tribute_mission_type ?= flag:bunga_mas_tribute } var:offered_bunga_mas ?= { save_scope_as = artifact_to_tribute } } #Hol' up while we're here hidden_effect = { current_travel_plan ?= { pause_travel_plan = yes } } #Roll for Bunga Mas if = { limit = { is_ai = yes scope:overlord_scope = { government_has_flag = government_is_mandala NOT = { has_variable = bunga_mas_cooldown } } } random = { chance = 1 modifier = { scope:overlord_scope = { has_unruined_mandala_capital_trigger = yes } add = { value = scope:overlord_scope.mandala_radiance_value divide = 10 } } scope:overlord_scope = { get_artifact_quality_effect = yes get_artifact_wealth_effect = yes set_variable = { name = bunga_mas_cooldown years = 5 } } hidden_effect_new_object = { scope:tributary_scope = { create_bunga_mas_artifact_effect = yes } scope:newly_created_bunga_mas = { remove_artifact_modifier = artifact_placeholder_modifier if = { limit = { rarity = illustrious } set_artifact_description = tribute_mission_illustrious_bunga_mas_desc add_artifact_modifier = artifact_legitimacy_gain_mult_5_modifier add_artifact_modifier = artifact_health_gain_3_modifier if = { limit = { scope:overlord_scope = { house = { has_house_aspiration_parameter = aspect_of_creation } } } add_artifact_modifier = artifact_seduce_scheme_phase_duration_add_3_modifier add_artifact_modifier = artifact_fertility_gain_3_modifier add_artifact_modifier = artifact_build_gold_cost_3_modifier } if = { limit = { scope:overlord_scope = { house = { has_house_aspiration_parameter = aspect_of_serenity } } } add_artifact_modifier = artifact_befriend_scheme_phase_duration_add_3_modifier add_artifact_modifier = artifact_scheme_resistance_add_3_modifier add_artifact_modifier = artifact_stress_gain_4_modifier } if = { limit = { scope:overlord_scope = { house = { has_house_aspiration_parameter = aspect_of_destruction } } } add_artifact_modifier = artifact_pursue_efficiency_2_modifier add_artifact_modifier = artifact_prowess_4_modifier add_artifact_modifier = artifact_knight_limit_1_modifier } if = { limit = { scope:overlord_scope = { house = { has_house_aspiration_parameter = aspect_of_trickery } } } add_artifact_modifier = artifact_owned_hostile_scheme_success_chance_add_10_modifier add_artifact_modifier = artifact_owned_personal_scheme_success_chance_add_10_modifier add_artifact_modifier = artifact_owned_scheme_secrecy_add_10_modifier } } else_if = { limit = { rarity = famed } set_artifact_description = tribute_mission_famed_bunga_mas_desc add_artifact_modifier = artifact_legitimacy_gain_mult_4_modifier add_artifact_modifier = artifact_health_gain_2_modifier if = { limit = { scope:overlord_scope = { house = { has_house_aspiration_parameter = aspect_of_creation } } } add_artifact_modifier = artifact_seduce_scheme_phase_duration_add_2_modifier add_artifact_modifier = artifact_fertility_gain_1_modifier add_artifact_modifier = artifact_build_gold_cost_1_modifier } if = { limit = { scope:overlord_scope = { house = { has_house_aspiration_parameter = aspect_of_serenity } } } add_artifact_modifier = artifact_befriend_scheme_phase_duration_add_2_modifier add_artifact_modifier = artifact_scheme_resistance_add_1_modifier add_artifact_modifier = artifact_stress_gain_2_modifier } if = { limit = { scope:overlord_scope = { house = { has_house_aspiration_parameter = aspect_of_destruction } } } add_artifact_modifier = artifact_pursue_efficiency_1_modifier add_artifact_modifier = artifact_prowess_2_modifier } if = { limit = { scope:overlord_scope = { house = { has_house_aspiration_parameter = aspect_of_trickery } } } add_artifact_modifier = artifact_owned_hostile_scheme_success_chance_add_5_modifier add_artifact_modifier = artifact_owned_personal_scheme_success_chance_add_5_modifier add_artifact_modifier = artifact_owned_scheme_secrecy_add_5_modifier } } else_if = { limit = { rarity = masterwork } set_artifact_description = tribute_mission_masterwork_bunga_mas_desc add_artifact_modifier = artifact_legitimacy_gain_mult_3_modifier add_artifact_modifier = artifact_health_gain_1_modifier } else = { set_artifact_description = tribute_mission_common_bunga_mas_desc add_artifact_modifier = artifact_legitimacy_gain_mult_2_modifier } } } } } #Do they have a royal court and is the overlord available? Trigger court event for the tributary if = { limit = { scope:overlord_scope = { has_royal_court = yes this = scope:receiving_character } } trigger_event = tribute_mission.3000 } else = { trigger_event = tribute_mission.1000 } } } tribute_mission.0002 = { hidden = yes #Double-check the status of the human tribute immediate = { if = { limit = { OR = { AND = { var:tribute_mission_type ?= flag:concubine_tribute var:offered_concubine ?= { is_alive = no } } AND = { var:tribute_mission_type ?= flag:eunuch_tribute var:offered_eunuch ?= { is_alive = no } } } } add_character_flag = revisit_tribute_mission_0001 trigger_event = tribute_mission.9750 } else = { trigger_event = tribute_mission.0001 } } } #Make any stray created attendant disappear tribute_mission.0005 = { hidden = yes immediate = { silent_disappearance_effect = yes } } ### TRIBUTES ### #Gold scripted_trigger tribute_mission_1000_gold_tributary_trigger = { scope:tributary_scope = { has_variable = offered_gold_value } } scripted_effect tribute_mission_1000_fork_over_gold_effect = { scope:overlord_scope = { add_gold = scope:tributary_scope.var:offered_gold_value } } #Herd scripted_trigger tribute_mission_1000_herd_tributary_trigger = { scope:tributary_scope = { has_variable = offered_herd_value } } scripted_effect tribute_mission_1000_fork_over_herd_effect = { scope:overlord_scope = { add_gold = herd_conversion_tribute_value } } #Concubine scripted_trigger tribute_mission_1000_concubine_tributary_trigger = { scope:tributary_scope = { has_variable = offered_concubine } } scripted_effect tribute_mission_1000_common_arrival_effect = { #Save the concubine if = { limit = { exists = scope:concubine_character } scope:concubine_character = { save_scope_as = human_tribute } } #Save the eunuch if = { limit = { exists = scope:eunuch_character } scope:eunuch_character = { save_scope_as = human_tribute } } #If we're gifting an artifact scope:artifact_to_tribute ?= { set_variable = { name = suppress_artifact_notifications value = yes days = 10 } } #Or a Bunga Mas scope:newly_created_bunga_mas ?= { set_variable = { name = suppress_artifact_notifications value = yes days = 10 } } #Grant Legitimacy to Hegemonic Suzerains depending on the tier of the tributary if = { limit = { scope:overlord_scope = { highest_held_title_tier = tier_hegemony } } save_temporary_scope_value_as = { name = legitimacy_gain value = { switch = { trigger = scope:tributary_scope.primary_title.tier tier_county = { add = miniscule_legitimacy_gain } tier_duchy = { add = minor_legitimacy_gain } tier_kingdom = { add = medium_legitimacy_gain } tier_empire = { add = major_legitimacy_gain } } } } scope:overlord_scope = { send_interface_toast = { type = event_toast_effect_good title = tribute_mission_suzerain_legitimacy_gain_title left_icon = scope:tributary_scope right_icon = this add_legitimacy_effect = { LEGITIMACY = scope:legitimacy_gain } } } } } scripted_effect tribute_mission_1000_make_concubine_effect = { hidden_effect = { scope:tributary_scope = { current_travel_plan ?= { remove_character = scope:concubine_character } } } make_concubine = scope:concubine_character # make_concubine inherently also adds them as a courtier first, for reference } scripted_effect tribute_mission_1000_make_courtier_effect = { hidden_effect = { scope:tributary_scope = { current_travel_plan ?= { remove_character = $HUMAN_TRIB$ } } } if = { limit = { $HUMAN_TRIB$ = { employer != scope:overlord_scope } } scope:overlord_scope = { add_courtier = $HUMAN_TRIB$ } } } scripted_trigger tribute_mission_1000_overlord_can_employ_concubine_trigger = { scope:overlord_scope = { allowed_more_concubines = yes } } scripted_effect tribute_mission_1000_fork_over_concubine_effect = { scope:overlord_scope = { #If the overlord is AI, they've already accepted the concubine via the interaction so just assign them right away if = { limit = { is_ai = yes } if = { limit = { tribute_mission_1000_overlord_can_employ_concubine_trigger = yes } tribute_mission_1000_make_concubine_effect = yes } else = { tribute_mission_1000_make_courtier_effect = { HUMAN_TRIB = scope:concubine_character } } } } } #Eunuch scripted_trigger tribute_mission_1000_eunuch_tributary_trigger = { scope:tributary_scope = { has_variable = offered_eunuch } } #Artifact scripted_trigger tribute_mission_1000_artifact_tributary_trigger = { scope:tributary_scope = { has_variable = offered_artifact } } scripted_effect tribute_mission_1000_fork_over_artifact_effect = { scope:artifact_to_tribute = { set_owner = scope:overlord_scope } } #Bunga Mas scripted_trigger tribute_mission_1000_bunga_mas_tributary_trigger = { scope:tributary_scope = { has_variable = offered_bunga_mas } } scripted_effect tribute_mission_1000_determine_bunga_mas_scale_effect = { if = { limit = { var:tribute_mission_type ?= flag:bunga_mas_tribute } if = { limit = { scope:artifact_to_tribute = { rarity = illustrious } } set_variable = { name = bunga_mas_tribute_modifier value = 3 years = 10 } } else_if = { limit = { scope:artifact_to_tribute = { rarity = famed } } set_variable = { name = bunga_mas_tribute_modifier value = 2 years = 10 } } else_if = { limit = { scope:artifact_to_tribute = { rarity = masterwork } } random_list = { 50 = { set_variable = { name = bunga_mas_tribute_modifier value = 2 years = 10 } } 50 = { set_variable = { name = bunga_mas_tribute_modifier value = 1 years = 10 } } } } else = { set_variable = { name = bunga_mas_tribute_modifier value = 1 years = 10 } } } } #Give the actual Tribute scripted_effect tribute_mission_1000_fork_over_tribute_effect = { if = { limit = { tribute_mission_1000_gold_tributary_trigger = yes } tribute_mission_1000_fork_over_gold_effect = yes } if = { limit = { tribute_mission_1000_herd_tributary_trigger = yes } tribute_mission_1000_fork_over_herd_effect = yes } if = { limit = { tribute_mission_1000_concubine_tributary_trigger = yes } tribute_mission_1000_fork_over_concubine_effect = yes } if = { limit = { tribute_mission_1000_eunuch_tributary_trigger = yes } tribute_mission_1000_make_courtier_effect = { HUMAN_TRIB = scope:eunuch_character } } if = { limit = { tribute_mission_1000_artifact_tributary_trigger = yes } tribute_mission_1000_fork_over_artifact_effect = yes } #Bunga Mas! if = { limit = { exists = scope:newly_created_bunga_mas } scope:newly_created_bunga_mas = { set_owner = scope:overlord_scope } } if = { limit = { tribute_mission_1000_bunga_mas_tributary_trigger = yes } tribute_mission_1000_fork_over_artifact_effect = yes #We should be able to reuse this } #Some Mandala piety tribute_mission_mandala_piety_effect = yes } #If the Overlord is not AI and are away, notify them what they got scripted_effect tribute_mission_1000_fork_over_with_notification_effect = { if = { limit = { scope:overlord_scope != scope:receiving_character scope:overlord_scope = { is_ai = no } } #If the overlord isn't available and is a player, let them know what happened scope:overlord_scope = { send_interface_message = { type = event_tribute_good_with_text title = tribute_mission_notification.title left_icon = scope:tributary_scope desc = tribute_mission_notification.desc tribute_mission_1000_fork_over_tribute_effect = yes } } } else = { tribute_mission_1000_fork_over_tribute_effect = yes } } #What options should an AI receiver be able to use when the Overlord is an unavailable player scripted_trigger tribute_mission_1000_is_available_to_ai_receiver_trigger = { scope:overlord_scope != scope:receiving_character scope:receiving_character = { is_ai = yes } scope:overlord_scope = { is_ai = no #Mainly for Hegemons has_treasury = yes } } ### REWARDS ### scripted_effect tribute_mission_1000_display_potential_rewards_effect = { show_as_tooltip = { random_list = { #Treasury 10 = { trigger = { tribute_mission_1000_can_give_treasury_trigger = yes } show_chance = no desc = tribute_mission.1000.abstain.treasury.desc tribute_mission_1000_give_treasury_effect = yes } #Artifact 10 = { trigger = { tribute_mission_1000_can_set_artifact_reward_trigger = yes } show_chance = no desc = tribute_mission.1000.abstain.artifact.desc custom_tooltip = tribute_mission.1000.artifact.tt } #Innovation 10 = { trigger = { tribute_mission_1000_can_set_innovation_reward_trigger = yes } show_chance = no desc = tribute_mission.1000.abstain.innovation.desc custom_tooltip = tribute_mission.1000.innovation.tt } #Development 10 = { trigger = { tribute_mission_1000_eligible_development_trigger = yes } show_chance = no desc = tribute_mission.1000.abstain.development.desc tribute_mission_1000_give_development_effect = yes } #Monk 10 = { trigger = { tribute_mission_1000_eligible_for_monk_trigger = yes } show_chance = no desc = tribute_mission.1000.abstain.monk.desc custom_tooltip = tribute_mission.1000.monk.tt } #Generic Legitimacy 10 = { show_chance = no desc = tribute_mission.1000.abstain.legitimacy.desc tribute_mission_1000_give_legitimacy_effect = yes } } if = { limit = { var:tribute_mission_type ?= flag:bunga_mas_tribute } add_character_modifier = { modifier = bunga_mas_tribute_modifier years = 10 } } } } #China: Treasury / Trade Goods scripted_trigger tribute_mission_1000_can_give_treasury_trigger = { trigger_if = { limit = { scope:overlord_scope = { has_treasury = yes } } scope:overlord_scope.treasury > tribute_treasury_reward_value } trigger_else = { always = no } tribute_mission_1000_is_available_to_ai_receiver_trigger = no } scripted_effect tribute_mission_1000_set_treasury_reward_effect = { if = { limit = { NOT = { exists = scope:tribute_reward_type_treasury } } save_scope_value_as = { name = tribute_reward_type_treasury value = tribute_treasury_reward_value } } } #Artifact scripted_trigger tribute_mission_1000_can_set_artifact_reward_trigger = { tribute_mission_1000_is_available_to_ai_receiver_trigger = no } scripted_trigger tribute_mission_1000_eligible_smith_trigger = { is_physically_able_ai_adult = yes OR = { #Someone new? AND = { has_no_particular_noble_roots_trigger = yes } #A previous smithy has_variable = tribute_mission_1000_smith } } scripted_effect tribute_mission_1000_eligible_smith_scope_effect = { if = { limit = { any_pool_character = { province = scope:overlord_scope.capital_province tribute_mission_1000_eligible_smith_trigger = yes } } random_pool_character = { province = scope:overlord_scope.capital_province limit = { tribute_mission_1000_eligible_smith_trigger = yes } save_scope_as = smith_character } } else = { create_character = { template = merchant_template location = scope:overlord_scope.capital_province culture = scope:overlord_scope.capital_province.culture faith = scope:overlord_scope.capital_province.faith dynasty = none save_scope_as = smith_character after_creation = { set_variable = tribute_mission_1000_smith } } } if = { limit = { NOT = { exists = scope:smith_character } } error_log = "Failed to create a valid smith in tribute_mission_1000_eligible_smith_scope_effect!" } } scripted_effect tribute_mission_1000_reward_cost_effect = { #A small fee for human players if = { limit = { is_ai = no } if = { limit = { scope:overlord_scope = { has_treasury = yes } } remove_treasury = scope:overlord_scope.tribute_reward_treasury_cost } else = { remove_short_term_gold = miniscule_gold_value } } } scripted_effect tribute_mission_1000_set_artifact_reward_effect = { scope:overlord_scope = { #A small fee for human players tribute_mission_1000_reward_cost_effect = yes hidden_effect = { #Randomize the quality, somewhat random_list = { 50 = { get_artifact_quality_effect = yes get_artifact_wealth_effect = yes } 25 = { set_artifact_rarity_famed = yes } 10 = { trigger = { has_relation_best_friend = scope:tributary_scope } set_artifact_rarity_illustrious = yes } } #Create the artifact hidden_effect_new_object = { #Who is making it tribute_mission_1000_eligible_smith_scope_effect = yes #What are we making random_list = { 10 = { create_artifact_armor_effect = { OWNER = scope:overlord_scope CREATOR = scope:smith_character SET_ARMOR_TYPE = flag:no } } 10 = { create_artifact_regalia_effect = { OWNER = scope:overlord_scope SMITH = scope:smith_character } } 10 = { create_artifact_brooch_effect = { OWNER = scope:overlord_scope SMITH = scope:smith_character } } 10 = { create_artifact_necklace_effect = { OWNER = scope:overlord_scope SMITH = scope:smith_character } } 10 = { create_artifact_ring_effect = { OWNER = scope:overlord_scope SMITH = scope:smith_character } } 10 = { create_artifact_weapon_effect = { OWNER = scope:overlord_scope CREATOR = scope:smith_character SET_WEAPON_TYPE = flag:artifact_weapon_type_dagger } } } scope:newly_created_artifact = { save_scope_as = tribute_reward_type_artifact add_artifact_modifier = artifact_legitimacy_gain_mult_4_modifier set_variable = { name = suppress_artifact_notifications value = yes days = 10 } } } } } } #Innovation scripted_trigger tribute_mission_1000_eligible_innovation_trigger = { NOT = { is_known_by_culture = scope:tributary_scope.culture } culture_can_know_innovation = scope:tributary_scope.culture } scripted_trigger tribute_mission_1000_can_set_innovation_reward_trigger = { NOT = { scope:tributary_scope.culture = scope:overlord_scope.culture } OR = { #Either they have a fascination we can feed/progress scope:tributary_scope.culture = { culture_has_any_fascination = yes } #Or we have an innovation they can unlock to research scope:overlord_scope.culture = { any_known_innovation = { tribute_mission_1000_eligible_innovation_trigger = yes } } } } scripted_effect tribute_mission_1000_set_innovation_reward_effect = { if = { limit = { scope:overlord_scope.culture = { any_known_innovation = { tribute_mission_1000_eligible_innovation_trigger = yes } } } scope:saved_innovation = { save_scope_as = tribute_reward_type_innovation } } else = { save_scope_value_as = { name = tribute_reward_type_innovation # This scope still needs to exist and be consistent for loc triggers and other things value = yes } scope:tributary_scope = { set_variable = { name = tribute_reward_fascination_progress # But the comparison will break if the scope can be two different things, so we use a variable value = yes } } } } #Development scripted_trigger tribute_mission_1000_eligible_development_trigger = { scope:overlord_scope.capital_province != scope:tributary_scope.capital_province scope:tributary_scope.capital_county = { NOT = { has_county_modifier = suzerain_trade_post_modifier } } tribute_mission_1000_is_available_to_ai_receiver_trigger = no } scripted_effect tribute_mission_1000_set_development_reward_effect = { scope:overlord_scope = { #A small fee for human players tribute_mission_1000_reward_cost_effect = yes save_scope_value_as = { name = tribute_reward_type_development value = yes } } } #Mandala: Priest scripted_trigger tribute_mission_1000_eligible_for_monk_trigger = { scope:overlord_scope = { government_has_flag = government_is_mandala NOR = { faith = { has_doctrine_parameter = unreformed } faith = scope:tributary_scope.faith } } scope:tributary_scope.faith = { has_doctrine_parameter = unreformed } } scripted_effect tribute_mission_1000_set_monk_reward_effect = { scope:overlord_scope = { #A small fee for human players tribute_mission_1000_reward_cost_effect = yes } hidden_effect_new_object = { create_character = { location = scope:overlord_scope.capital_province template = monk_character_template culture = scope:overlord_scope.culture faith = scope:overlord_scope.faith save_scope_as = new_monk after_creation = { add_character_flag = suzerains_missionary } } } save_scope_value_as = { name = tribute_reward_type_monk value = scope:new_monk } } #Generic Legitimacy scripted_trigger tribute_mission_1000_eligible_legitimacy_trigger = { scope:receiving_character = scope:overlord_scope } scripted_effect tribute_mission_1000_set_legitimacy_reward_effect = { save_scope_value_as = { name = tribute_reward_type_legitimacy value = yes } } #Determine the reward scripted_effect tribute_mission_1000_generate_reward_effect = { #Were we successfully influenced? if = { limit = { scope:successful_influence ?= flag:treasury } tribute_mission_1000_set_treasury_reward_effect = yes save_scope_value_as = { name = decided_on_treasury_reward value = flag:yes } } else_if = { limit = { scope:successful_influence ?= flag:artifact } tribute_mission_1000_set_artifact_reward_effect = yes } else_if = { limit = { scope:successful_influence ?= flag:innovation } tribute_mission_1000_set_innovation_reward_effect = yes } else_if = { limit = { scope:successful_influence ?= flag:development } tribute_mission_1000_set_development_reward_effect = yes } else = { hidden_effect = { random_list = { #Treasury 10 = { trigger = { tribute_mission_1000_can_give_treasury_trigger = yes } tribute_mission_1000_set_treasury_reward_effect = yes save_scope_value_as = { name = decided_on_treasury_reward value = flag:yes } } #Artifact 10 = { tribute_mission_1000_set_artifact_reward_effect = yes } #Innovation 10 = { trigger = { tribute_mission_1000_can_set_innovation_reward_trigger = yes } tribute_mission_1000_set_innovation_reward_effect = yes } #Development 10 = { trigger = { tribute_mission_1000_eligible_development_trigger = yes } tribute_mission_1000_set_development_reward_effect = yes } #Priest 50 = { trigger = { tribute_mission_1000_eligible_for_monk_trigger = yes } tribute_mission_1000_set_monk_reward_effect = yes } #Generic Legitimacy 25 = { trigger = { tribute_mission_1000_eligible_legitimacy_trigger = yes } tribute_mission_1000_set_legitimacy_reward_effect = yes } } } } } #These are re-used for when the player Overlord picks the reward scripted_effect tribute_mission_1000_give_treasury_effect = { scope:overlord_scope = { remove_treasury = scope:tribute_reward_type_treasury } scope:tributary_scope = { add_gold = scope:tribute_reward_type_treasury } } scripted_effect tribute_mission_1000_give_artifact_effect = { scope:tribute_reward_type_artifact = { set_owner = scope:tributary_scope } } scripted_effect tribute_mission_1000_give_innovation_progress_effect = { if = { limit = { scope:tributary_scope = { has_variable = tribute_reward_fascination_progress } } scope:tributary_scope.culture = { add_fascination_progress = tribute_reward_fascination_progress_value } } else = { scope:tributary_scope.culture = { add_innovation_progress = { value = tribute_reward_innovation_progress_value target = scope:tribute_reward_type_innovation } } } } scripted_effect tribute_mission_1000_give_development_effect = { scope:tributary_scope.capital_county = { add_county_modifier = { modifier = suzerain_trade_post_modifier years = 10 } } } scripted_effect tribute_mission_1000_give_monk_effect = { scope:tributary_scope = { add_courtier = scope:new_monk current_travel_plan = { add_companion = scope:new_monk } } scope:overlord_scope.faith = { change_fervor = { value = 5 desc = fervor_gain_suzerain_missionaries } } } scripted_effect tribute_mission_1000_give_legitimacy_effect = { scope:tributary_scope = { add_legitimacy_effect = { LEGITIMACY = tribute_generic_legitimacy_reward_value } } } scripted_effect tribute_mission_1000_rejection_effect = { scope:tributary_scope = { add_legitimacy = { value = tribute_legitimacy_reward_value multiply = -1 } add_opinion = { target = scope:overlord_scope modifier = annoyed_opinion opinion = -50 } } } scripted_effect tribute_mission_1000_generic_reward_effect = { scope:tributary_scope = { if = { limit = { is_ai = yes } add_opinion = { modifier = pleased_opinion opinion = 40 target = scope:overlord_scope } } if = { limit = { exists = scope:tribute_reward_type_legitimacy } tribute_mission_1000_give_legitimacy_effect = yes } else = { add_legitimacy_effect = { LEGITIMACY = tribute_legitimacy_reward_value } } #Disburse the Bunga Mas modifier! if = { limit = { var:tribute_mission_type ?= flag:bunga_mas_tribute } add_character_modifier = { modifier = bunga_mas_tribute_modifier years = 10 } } } } #Actually disburse the reward scripted_effect tribute_mission_1000_disburse_reward_effect = { if = { limit = { exists = scope:tribute_reward_type_treasury scope:decided_on_treasury_reward = flag:yes } tribute_mission_1000_give_treasury_effect = yes } if = { limit = { exists = scope:tribute_reward_type_artifact } tribute_mission_1000_give_artifact_effect = yes } if = { limit = { exists = scope:tribute_reward_type_innovation } tribute_mission_1000_give_innovation_progress_effect = yes } if = { limit = { exists = scope:tribute_reward_type_development } tribute_mission_1000_give_development_effect = yes } if = { limit = { exists = scope:tribute_reward_type_monk } tribute_mission_1000_give_monk_effect = yes } #Generic Legitimacy is baked into the tribute_mission_1000_generic_reward_effect scope:tributary_scope = { if = { # if the contract uses Subject Standing, grant some limit = { subject_standing >= 0 } hidden_effect = { send_interface_toast = { type = event_toast_effect_good title = tribute_mission_tributary_subject_standing_gain_title left_icon = this right_icon = scope:overlord_scope # add minimum 5, maximum 30, average 10 (if unsuccessful) or 17.5 (if successful) add_subject_standing = { value = 10 if = { limit = { exists = scope:successful_influence } add = { integer_range = { min = 0 max = 15 } } } add = { integer_range = { min = -5 max = 5 } } } } } if = { limit = { exists = scope:successful_influence } custom_tooltip = tribute_mission_tributary_subject_standing_gain_tt_major } else = { custom_tooltip = tribute_mission_tributary_subject_standing_gain_tt_minor } } } tribute_mission_1000_generic_reward_effect = yes } ### INFLUENCE ### #Influence duel scripted_effect tribute_mission_1000_determine_duel_skill_effect = { random_list = { 10 = { trigger = { scope:tributary_scope = { highest_skill = diplomacy } } tribute_mission_1000_duel_effect = { INFLUENCED_REWARD = $INFLUENCED_REWARD$ REWARD_INCREMENT = $REWARD_INCREMENT$ SKILL = diplomacy } } 10 = { trigger = { scope:tributary_scope = { highest_skill = martial } } tribute_mission_1000_duel_effect = { INFLUENCED_REWARD = $INFLUENCED_REWARD$ REWARD_INCREMENT = $REWARD_INCREMENT$ SKILL = martial } } 10 = { trigger = { scope:tributary_scope = { highest_skill = stewardship } } tribute_mission_1000_duel_effect = { INFLUENCED_REWARD = $INFLUENCED_REWARD$ REWARD_INCREMENT = $REWARD_INCREMENT$ SKILL = stewardship } } 10 = { trigger = { scope:tributary_scope = { highest_skill = intrigue } } tribute_mission_1000_duel_effect = { INFLUENCED_REWARD = $INFLUENCED_REWARD$ REWARD_INCREMENT = $REWARD_INCREMENT$ SKILL = intrigue } } 10 = { trigger = { scope:tributary_scope = { highest_skill = learning } } tribute_mission_1000_duel_effect = { INFLUENCED_REWARD = $INFLUENCED_REWARD$ REWARD_INCREMENT = $REWARD_INCREMENT$ SKILL = learning } } } } #Actual duel scripted_effect tribute_mission_1000_duel_effect = { duel = { skill = $SKILL$ target = scope:receiving_character #You convince them 50 = { compare_modifier = { value = scope:duel_value multiplier = 3.5 } modifier = { culture = { has_cultural_parameter = more_successful_kowtows } add = 25 } desc = tribute_mission.1000.success.desc send_interface_toast = { type = event_toast_effect_good title = tribute_mission.1000.success.t left_icon = scope:tributary_scope right_icon = scope:receiving_character #Woo! save_scope_value_as = { name = successful_influence value = flag:$INFLUENCED_REWARD$ } if = { limit = { $REWARD_INCREMENT$ = 0 } show_as_tooltip = { tribute_mission_1000_give_treasury_effect = yes } } if = { limit = { $REWARD_INCREMENT$ = 1 } custom_tooltip = tribute_mission.1000.artifact.tt } if = { limit = { $REWARD_INCREMENT$ = 2 } custom_tooltip = tribute_mission.1000.innovation.tt } if = { limit = { $REWARD_INCREMENT$ = 3 } show_as_tooltip = { tribute_mission_1000_give_development_effect = yes } } } } #Hmm no 50 = { compare_modifier = { value = scope:duel_value multiplier = -3.5 } desc = tribute_mission.1000.failure.desc send_interface_toast = { type = event_toast_effect_bad title = tribute_mission.1000.failure.t left_icon = scope:tributary_scope right_icon = scope:receiving_character custom_tooltip = tribute_mission.1000.failure.tt #Ayy stress_impact = { base = miniscule_stress_impact_gain } } } } } #Tributary: Fork over Tribute tribute_mission.1000 = { type = character_event title = tribute_mission.1000.t desc = { desc = tribute_mission.1000.intro #Who is greeting us? first_valid = { triggered_desc = { trigger = { scope:overlord_scope = scope:receiving_character } desc = tribute_mission.1000.intro.overlord } triggered_desc = { trigger = { scope:overlord_scope.diarch ?= scope:receiving_character } desc = tribute_mission.1000.intro.diarch } triggered_desc = { trigger = { OR = { scope:overlord_scope.cp:councillor_steward ?= scope:receiving_character scope:overlord_scope.cp:councillor_chancellor ?= scope:receiving_character scope:overlord_scope.cp:councillor_spymaster ?= scope:receiving_character scope:overlord_scope.cp:councillor_court_chaplain ?= scope:receiving_character scope:overlord_scope.cp:councillor_marshal ?= scope:receiving_character } } desc = tribute_mission.1000.intro.councillor } desc = tribute_mission.1000.intro.attendant } desc = tribute_mission.1000.desc.segway #What did we bring? first_valid = { triggered_desc = { trigger = { var:tribute_mission_type ?= flag:bunga_mas_tribute } desc = tribute_mission.1000.desc.bunga_mas } triggered_desc = { trigger = { var:tribute_mission_type ?= flag:small_gold_tribute } desc = tribute_mission.1000.desc.small_gold } triggered_desc = { trigger = { var:tribute_mission_type ?= flag:adequate_gold_tribute } desc = tribute_mission.1000.desc.adequate_gold } triggered_desc = { trigger = { var:tribute_mission_type ?= flag:excessive_gold_tribute } desc = tribute_mission.1000.desc.excessive_gold } triggered_desc = { trigger = { var:tribute_mission_type ?= flag:small_herd_tribute } desc = tribute_mission.1000.desc.small_herd } triggered_desc = { trigger = { var:tribute_mission_type ?= flag:adequate_herd_tribute } desc = tribute_mission.1000.desc.adequate_herd } triggered_desc = { trigger = { var:tribute_mission_type ?= flag:excessive_herd_tribute } desc = tribute_mission.1000.desc.excessive_herd } triggered_desc = { trigger = { exists = scope:concubine_character } desc = tribute_mission.1000.desc.concubine } triggered_desc = { trigger = { exists = scope:eunuch_character } desc = tribute_mission.1000.desc.eunuch } triggered_desc = { trigger = { exists = scope:artifact_to_tribute } desc = tribute_mission.1000.desc.artifact } } first_valid = { triggered_desc = { trigger = { scope:receiving_character = { has_character_flag = created_attendant } } desc = tribute_mission.1000.outro.attendant } desc = tribute_mission.1000.outro } } theme = tributary left_portrait = { character = root animation = personality_rational } right_portrait = { character = scope:receiving_character triggered_animation = { trigger = { scope:tributary_scope = { var:tribute_mission_type ?= flag:bunga_mas_tribute } } animation = shock } animation = personality_honorable } lower_center_portrait = { character = scope:human_tribute trigger = { exists = scope:human_tribute } } #Artifact Tribute artifact = { trigger = { exists = scope:artifact_to_tribute } target = scope:artifact_to_tribute position = lower_left_portrait } immediate = { tribute_mission_1000_common_arrival_effect = yes #For the tooltip if = { limit = { tribute_mission_1000_can_give_treasury_trigger = yes } tribute_mission_1000_set_treasury_reward_effect = yes } if = { limit = { scope:overlord_scope.culture = { any_known_innovation = { tribute_mission_1000_eligible_innovation_trigger = yes } } } scope:overlord_scope.culture = { random_known_innovation = { limit = { tribute_mission_1000_eligible_innovation_trigger = yes } save_scope_as = saved_innovation } } } else = { save_scope_as = grant_fascination } #What level of Bunga Mas modifier? tribute_mission_1000_determine_bunga_mas_scale_effect = yes } #China: Duel for Treasury option = { name = tribute_mission.1000.treasury trigger = { scope:receiving_character = { is_ai = yes } tribute_mission_1000_can_give_treasury_trigger = yes } tribute_mission_1000_determine_duel_skill_effect = { INFLUENCED_REWARD = treasury REWARD_INCREMENT = 0 } ai_chance = { base = 100 } } #Duel for Artifact option = { name = tribute_mission.1000.artifact trigger = { scope:receiving_character = { is_ai = yes } tribute_mission_1000_can_set_artifact_reward_trigger = yes } tribute_mission_1000_determine_duel_skill_effect = { INFLUENCED_REWARD = artifact REWARD_INCREMENT = 1 } ai_chance = { base = 150 } } #Duel for Innovation option = { name = tribute_mission.1000.innovation trigger = { scope:receiving_character = { is_ai = yes } tribute_mission_1000_can_set_innovation_reward_trigger = yes } tribute_mission_1000_determine_duel_skill_effect = { INFLUENCED_REWARD = innovation REWARD_INCREMENT = 2 } ai_chance = { base = 200 } } #Duel for Development option = { name = tribute_mission.1000.development trigger = { scope:receiving_character = { is_ai = yes } tribute_mission_1000_eligible_development_trigger = yes } tribute_mission_1000_determine_duel_skill_effect = { INFLUENCED_REWARD = development REWARD_INCREMENT = 3 } ai_chance = { base = 100 } } #I'm sure it'll be fine option = { name = tribute_mission.1000.abstain tribute_mission_1000_display_potential_rewards_effect = yes ai_chance = { base = 100 modifier = { has_trait = arbitrary add = 200 } } } after = { #Non-AI Receiving person: Decide on if you want to accept the human tribute if = { limit = { OR = { exists = scope:concubine_character exists = scope:eunuch_character } AND = { #If the overlord is an AI, they've already said yay/nay scope:overlord_scope = { is_ai = no } #... so if we're a player diarch of a player ruler, you get to decide scope:receiving_character = { is_ai = no } } } show_as_tooltip = { tribute_mission_1000_fork_over_with_notification_effect = yes } scope:receiving_character = { trigger_event = tribute_mission.1002 } } #Or the Non-AI Receiving person / Hegemon gets to decide the reward else_if = { limit = { scope:receiving_character = { OR = { is_ai = no scope:overlord_scope = { highest_held_title_tier = tier_hegemony } } } } show_as_tooltip = { tribute_mission_1000_fork_over_with_notification_effect = yes } scope:receiving_character = { trigger_event = tribute_mission.1005 } } #Or if the Receiving person is AI then we we skip the event and just generate the reward else = { tribute_mission_1000_fork_over_with_notification_effect = yes scope:overlord_scope = { tribute_mission_1000_generate_reward_effect = yes } scope:tributary_scope = { trigger_event = tribute_mission.1010 } } } } #What's their personality like? scripted_trigger 1002_human_tribute_shy_personality_trigger = { has_trait = shy } scripted_trigger 1002_human_tribute_bold_personality_trigger = { OR = { has_trait = brave has_trait = gregarious } } scripted_trigger 1002_human_tribute_callous_personality_trigger = { OR = { has_trait = cynical has_trait = callous } } scripted_trigger 1002_human_tribute_angry_personality_trigger = { OR = { has_trait = wrathful has_trait = irritable has_trait = arrogant } } #Recipient: Decide on the human tribute tribute_mission.1002 = { type = character_event title = tribute_mission.1002.t desc = { desc = tribute_mission.1002.segway first_valid = { triggered_desc = { trigger = { exists = scope:concubine_character } desc = tribute_mission.1002.desc.concubine } triggered_desc = { trigger = { scope:eunuch_character ?= { has_character_flag = tribute_mission_recently_castrated } } desc = tribute_mission.1002.desc.new_eunuch } triggered_desc = { trigger = { exists = scope:eunuch_character } desc = tribute_mission.1002.desc.eunuch } } #Some descriptive exterior words first_valid = { #Beauty triggered_desc = { trigger = { exists = scope:concubine_character scope:human_tribute = { OR = { has_trait = beauty_good_1 has_trait = beauty_good_2 has_trait = beauty_good_3 } } } desc = tribute_mission.1002.beauty.concubine.good } #Bad Beauty triggered_desc = { trigger = { exists = scope:concubine_character scope:human_tribute = { OR = { has_trait = beauty_bad_1 has_trait = beauty_bad_2 has_trait = beauty_bad_3 } } } desc = tribute_mission.1002.beauty.concubine.bad } #Physique triggered_desc = { trigger = { exists = scope:concubine_character scope:human_tribute = { OR = { has_trait = physique_good_1 has_trait = physique_good_2 has_trait = physique_good_3 } } } desc = tribute_mission.1002.physique.concubine.good } #Bad Physique triggered_desc = { trigger = { exists = scope:concubine_character scope:human_tribute = { OR = { has_trait = physique_bad_1 has_trait = physique_bad_2 has_trait = physique_bad_3 } } } desc = tribute_mission.1002.physique.concubine.bad } #Fallback triggered_desc = { trigger = { exists = scope:concubine_character } desc = tribute_mission.1002.exterior.plain } } #Some descriptive personality words first_valid = { #Shy triggered_desc = { trigger = { scope:human_tribute = { 1002_human_tribute_shy_personality_trigger = yes } } desc = tribute_mission.1002.personality.shy } #Bold triggered_desc = { trigger = { scope:human_tribute = { 1002_human_tribute_bold_personality_trigger = yes } } desc = tribute_mission.1002.personality.bold } #Cynical triggered_desc = { trigger = { scope:human_tribute = { 1002_human_tribute_callous_personality_trigger = yes } } desc = tribute_mission.1002.personality.cynical } #Angry triggered_desc = { trigger = { scope:human_tribute = { 1002_human_tribute_angry_personality_trigger = yes } } desc = tribute_mission.1002.personality.angry } #Fallback desc = tribute_mission.1002.personality.fallback } } theme = tributary left_portrait = { character = scope:receiving_character animation = interested } right_portrait = { character = scope:human_tribute triggered_animation = { trigger = { has_character_flag = tribute_mission_recently_castrated } animation = severelywounded } triggered_animation = { trigger = { 1002_human_tribute_shy_personality_trigger = yes } animation = shame } triggered_animation = { trigger = { 1002_human_tribute_bold_personality_trigger = yes } animation = personality_bold } triggered_animation = { trigger = { 1002_human_tribute_callous_personality_trigger = yes } animation = personality_cynical } triggered_animation = { trigger = { 1002_human_tribute_angry_personality_trigger = yes } animation = disapproval } animation = personality_honorable } lower_right_portrait = { character = scope:tributary_scope } immediate = { tribute_mission_1000_fork_over_with_notification_effect = yes } #Add 'em to court option = { name = tribute_mission.1002.a if = { limit = { exists = scope:concubine_character } tribute_mission_1000_make_courtier_effect = { HUMAN_TRIB = scope:concubine_character } } else = { tribute_mission_1000_make_courtier_effect = { HUMAN_TRIB = scope:eunuch_character } } ai_chance = { base = 100 } } #Make 'em your concubine option = { name = tribute_mission.1002.b trigger = { exists = scope:concubine_character scope:overlord_scope = scope:receiving_character tribute_mission_1000_overlord_can_employ_concubine_trigger = yes } flavor = tribute_mission.1002.b.flavor tribute_mission_1000_make_concubine_effect = yes save_scope_value_as = { name = appointed_concubine value = flag:yes } ai_chance = { base = 100 modifier = { add = { value = 50 multiply = scope:concubine_character.num_of_good_genetic_traits } scope:concubine_character = { num_of_good_genetic_traits > 0 trigger_if = { limit = { is_female = yes } is_aging_character = no } } } modifier = { add = 50 scope:concubine_character = { is_lowborn = no trigger_if = { limit = { is_female = yes } is_aging_character = no } } } modifier = { add = { value = -50 multiply = scope:concubine_character.num_of_bad_genetic_traits } scope:concubine_character = { num_of_bad_genetic_traits > 0 trigger_if = { limit = { is_female = yes } is_aging_character = no } } } modifier = { add = { value = -50 } scope:concubine_character = { is_lowborn = yes num_of_good_genetic_traits = 0 trigger_if = { limit = { is_female = yes } is_aging_character = no } } } opinion_modifier = { # Opinion of you who = scope:overlord_scope opinion_target = scope:tributary_scope multiplier = 1.0 desc = AI_OPINION_REASON } opinion_modifier = { # Opinion of concubine who = scope:overlord_scope opinion_target = scope:concubine_character multiplier = 0.25 desc = AI_OPINION_REASON } compare_modifier = { # Recipient is reluctant to marry old women (procreation is a key factor) trigger = { scope:concubine_character = { is_young_character = no is_female = yes } } target = scope:concubine_character value = age multiplier = -5 step = 1 offset = -29 } modifier = { add = 50 scope:overlord_scope = { is_attracted_to_gender_of = scope:concubine_character } } #More/Less likely based on difference in rank between tributary_scope and overlord_scope modifier = { add = 50 scope:tributary_scope = { tier_difference = { target = scope:overlord_scope value > 1 } } } modifier = { add = -20 scope:tributary_scope = { tier_difference = { target = scope:overlord_scope value < 1 } } } } } #Appoint 'em head Eunuch option = { name = tribute_mission.1002.c trigger = { exists = scope:eunuch_character scope:overlord_scope = scope:receiving_character can_employ_court_position_type = chief_eunuch_court_position } #Make 'em courtier tribute_mission_1000_make_courtier_effect = { HUMAN_TRIB = scope:eunuch_character } #Gain obligation hook custom_tooltip = obligation_hook_tt add_hook = { type = obligation_hook target = scope:eunuch_character } #Replace current Chief Eunuch if = { limit = { employs_court_position = chief_eunuch_court_position } every_court_position_holder = { type = chief_eunuch_court_position save_temporary_scope_as = current_chief_eunuch } replace_court_position = { recipient = scope:eunuch_character holder = scope:current_chief_eunuch court_position = chief_eunuch_court_position } } #Or simply appoint new Eunuch else = { appoint_court_position = { recipient = scope:eunuch_character court_position = chief_eunuch_court_position } } save_scope_value_as = { name = appointed_eunuch value = flag:yes } ai_chance = { base = 100 opinion_modifier = { who = scope:overlord_scope opinion_target = scope:tributary_scope multiplier = 0.5 } opinion_modifier = { who = scope:overlord_scope opinion_target = scope:eunuch_character multiplier = 0.5 } modifier = { add = { value = 50 subtract = scope:eunuch_character.age } } modifier = { add = { add = scope:eunuch_character.diplomacy add = scope:eunuch_character.intrigue add = scope:eunuch_character.stewardship add = scope:eunuch_character.martial add = scope:eunuch_character.learning } } modifier = { scope:eunuch_character = { has_trait = beardless_eunuch } add = 25 } } } #Um... nah option = { name = tribute_mission.1002.d custom_tooltip = tribute_mission.1002.d.tt if = { limit = { exists = scope:concubine_character } save_scope_value_as = { name = rejected_concubine value = flag:yes } } else = { save_scope_value_as = { name = rejected_eunuch value = flag:yes } } ai_chance = { base = 10 modifier = { has_trait = paranoid add = 1000 } } } after = { #Moving on trigger_event = tribute_mission.1005 } } #Recipient: What do you give? tribute_mission.1005 = { type = character_event title = { first_valid = { triggered_desc = { # Bunga Mas trigger = { exists = scope:newly_created_bunga_mas } desc = tribute_mission.1005.t.ai.bunga_mas } triggered_desc = { # Bunga Mas trigger = { tribute_mission_1000_bunga_mas_tributary_trigger = yes } desc = tribute_mission.1005.t.bunga_mas } triggered_desc = { # Gold trigger = { tribute_mission_1000_gold_tributary_trigger = yes } desc = tribute_mission.1005.t.gold } triggered_desc = { # Herd trigger = { tribute_mission_1000_herd_tributary_trigger = yes } desc = tribute_mission.1005.t.herd } triggered_desc = { # Concubine trigger = { tribute_mission_1000_concubine_tributary_trigger = yes } desc = tribute_mission.1005.t.concubine } triggered_desc = { # Eunuch trigger = { tribute_mission_1000_eunuch_tributary_trigger = yes } desc = tribute_mission.1005.t.eunuch } triggered_desc = { # Artifact trigger = { tribute_mission_1000_artifact_tributary_trigger = yes } desc = tribute_mission.1005.t.artifact } desc = tribute_mission.1005.t } } desc = { first_valid = { triggered_desc = { trigger = { OR = { exists = scope:concubine_character exists = scope:eunuch_character } } desc = tribute_mission.1005.intro.human_tribute } desc = tribute_mission.1005.intro } first_valid = { triggered_desc = { trigger = { OR = { exists = scope:newly_created_bunga_mas tribute_mission_1000_bunga_mas_tributary_trigger = yes } } desc = tribute_mission.1005.desc.bunga_mas } triggered_desc = { trigger = { scope:tributary_scope.var:tribute_mission_type ?= flag:small_gold_tribute } desc = tribute_mission.1005.desc.small_gold } triggered_desc = { trigger = { scope:tributary_scope.var:tribute_mission_type ?= flag:adequate_gold_tribute } desc = tribute_mission.1005.desc.adequate_gold } triggered_desc = { trigger = { scope:tributary_scope.var:tribute_mission_type ?= flag:excessive_gold_tribute } desc = tribute_mission.1005.desc.excessive_gold } triggered_desc = { trigger = { scope:tributary_scope.var:tribute_mission_type ?= flag:small_herd_tribute } desc = tribute_mission.1005.desc.small_herd } triggered_desc = { trigger = { scope:tributary_scope.var:tribute_mission_type ?= flag:adequate_herd_tribute } desc = tribute_mission.1005.desc.adequate_herd } triggered_desc = { trigger = { scope:tributary_scope.var:tribute_mission_type ?= flag:excessive_herd_tribute } desc = tribute_mission.1005.desc.excessive_herd } triggered_desc = { trigger = { exists = scope:rejected_concubine } desc = tribute_mission.1005.desc.rejected_concubine } triggered_desc = { trigger = { exists = scope:appointed_concubine } desc = tribute_mission.1005.desc.appointed_concubine } triggered_desc = { trigger = { exists = scope:concubine_character } desc = tribute_mission.1005.desc.concubine } triggered_desc = { trigger = { exists = scope:rejected_eunuch } desc = tribute_mission.1005.desc.rejected_eunuch } triggered_desc = { trigger = { exists = scope:appointed_eunuch } desc = tribute_mission.1005.desc.appointed_eunuch } triggered_desc = { trigger = { exists = scope:eunuch_character } desc = tribute_mission.1005.desc.eunuch } triggered_desc = { trigger = { exists = scope:artifact_to_tribute } desc = tribute_mission.1005.desc.artifact } #Fallback desc = tribute_mission.1005.desc } } theme = tributary left_portrait = { character = root triggered_animation = { trigger = { exists = scope:newly_created_bunga_mas } animation = disbelief } animation = personality_rational } right_portrait = { character = scope:tributary_scope triggered_animation = { trigger = { exists = scope:newly_created_bunga_mas } animation = admiration } animation = personality_honorable } #Human Tribute lower_center_portrait = { trigger = { exists = scope:human_tribute } character = scope:human_tribute } #Artifact Tribute artifact = { trigger = { exists = scope:artifact_to_tribute } target = scope:artifact_to_tribute position = lower_left_portrait } #Bunga Mas artifact = { trigger = { exists = scope:newly_created_bunga_mas } target = scope:newly_created_bunga_mas position = lower_right_portrait } immediate = { #For the tooltip if = { limit = { scope:overlord_scope.culture = { any_known_innovation = { tribute_mission_1000_eligible_innovation_trigger = yes } } } scope:overlord_scope.culture = { random_known_innovation = { limit = { tribute_mission_1000_eligible_innovation_trigger = yes } save_scope_as = saved_innovation } } } else = { save_scope_as = grant_fascination } #Ful-fix save_scope_value_as = { name = decided_on_treasury_reward value = flag:no } } #China: Treasury / Trade Goods option = { name = tribute_mission.1005.treasury trigger = { tribute_mission_1000_can_give_treasury_trigger = yes } show_as_tooltip = { tribute_mission_1000_give_treasury_effect = yes } #Default is set in the immediate save_scope_value_as = { name = decided_on_treasury_reward value = flag:yes } ai_chance = { base = 0 # If we were not influenced, just add a base chance modifier = { NOT = { exists = scope:successful_influence } add = 20 } # Always choose this option if we were successfully influenced modifier = { scope:successful_influence ?= flag:treasury add = 1000 } } } #Artifact option = { name = tribute_mission.1005.artifact trigger = { tribute_mission_1000_can_set_artifact_reward_trigger = yes } #Inform the player what will happen (since the artifact doesn't exist yet) custom_tooltip = tribute_mission.1005.artifact.tt tribute_mission_1000_set_artifact_reward_effect = yes ai_chance = { base = 0 # If we were not influenced, just add a base chance modifier = { NOT = { exists = scope:successful_influence } add = 20 } # Always choose this option if we were successfully influenced modifier = { scope:successful_influence ?= flag:artifact add = 1000 } } } #Innovation option = { name = tribute_mission.1005.innovation trigger = { tribute_mission_1000_can_set_innovation_reward_trigger = yes } tribute_mission_1000_set_innovation_reward_effect = yes #Display the effects show_as_tooltip = { if = { limit = { exists = scope:saved_innovation } scope:tributary_scope.culture = { add_innovation_progress = { value = tribute_reward_innovation_progress_value target = scope:saved_innovation } } } if = { limit = { exists = scope:grant_fascination } scope:tributary_scope.culture = { add_fascination_progress = tribute_reward_fascination_progress_value } } } ai_chance = { base = 0 # If we were not influenced, just add a base chance modifier = { NOT = { exists = scope:successful_influence } add = 20 } # Always choose this option if we were successfully influenced modifier = { scope:successful_influence ?= flag:innovation add = 1000 } } } #Development option = { name = tribute_mission.1005.development trigger = { tribute_mission_1000_eligible_development_trigger = yes } show_as_tooltip = { tribute_mission_1000_give_development_effect = yes } tribute_mission_1000_set_development_reward_effect = yes ai_chance = { base = 0 # If we were not influenced, just add a base chance modifier = { NOT = { exists = scope:successful_influence } add = 20 } # Always choose this option if we were successfully influenced modifier = { scope:successful_influence ?= flag:development add = 1000 } } } #Monk option = { name = tribute_mission.1005.monk trigger = { tribute_mission_1000_eligible_for_monk_trigger = yes } show_as_tooltip = { tribute_mission_1000_give_monk_effect = yes } tribute_mission_1000_set_monk_reward_effect = yes ai_chance = { base = 0 # If we were not influenced, just add a base chance modifier = { NOT = { exists = scope:successful_influence } add = 100 } } } #Generic Legitimacy option = { name = tribute_mission.1005.legitimacy show_as_tooltip = { tribute_mission_1000_give_legitimacy_effect = yes } tribute_mission_1000_set_legitimacy_reward_effect = yes ai_chance = { base = 100 } } #Rejection option = { name = imperial_examination.7100.b.singular #I refuse to accept mediocrity not a tributary we can reject them. trigger = { NOT = { government_has_flag = government_is_mandala } } show_as_tooltip = { tribute_mission_1000_rejection_effect = yes } scope:tributary_scope = { set_variable = new_overlord_unable_to_accept_tribute } save_scope_value_as = { name = tribute_reward_type_rejection value = flag:yes } ai_chance = { base = 0 } } after = { if = { limit = { scope:tributary_scope = { has_variable = new_overlord_unable_to_accept_tribute } } scope:tributary_scope = { trigger_event = tribute_mission.9800 } } else = { tribute_mission_1000_fork_over_with_notification_effect = yes show_as_tooltip = { tribute_mission_1000_common_arrival_effect = yes } if = { limit = { scope:tributary_scope = { subject_standing > seal_of_investiture_minimum_subject_standing NOT = { any_character_artifact = { OR = { artifact_type = seal_of_investiture artifact_type = seal_of_investiture_court } } } } scope:overlord_scope = { primary_title = title:h_china this = scope:receiving_character } } trigger_event = tribute_mission.1006 } else_if = { limit = { scope:tributary_scope = { is_tributary = no } } scope:tributary_scope = { if = { limit = { scope:overlord_scope = { has_royal_court = yes } scope:overlord_scope = scope:receiving_character } trigger_event = tribute_mission.3008 } else = { trigger_event = tribute_mission.1008 } } } else = { scope:tributary_scope = { if = { limit = { scope:overlord_scope = { has_royal_court = yes } scope:overlord_scope = scope:receiving_character } trigger_event = tribute_mission.3010 } else = { trigger_event = tribute_mission.1010 } } } } } } scripted_trigger tribute_mission_1006_eligible_scribe_trigger = { is_physically_able_ai_adult = yes OR = { #Someone new? AND = { has_no_particular_noble_roots_trigger = yes learning > 10 culture = scope:overlord_scope.culture } #A previous scribe has_variable = tribute_mission_1006_scribe } } scripted_effect tribute_mission_1006_eligible_scribe_scope_effect = { scope:overlord_scope = { # Try to grab someone from a suitable court position first random_courtier = { limit = { has_court_position = court_artificer_court_position } save_scope_as = scribe_character set_variable = tribute_mission_1006_scribe } if = { limit = { NOT = { exists = scope:scribe_character } } court_position:chronicler_court_position ?= { save_scope_as = scribe_character set_variable = tribute_mission_1006_scribe } } if = { limit = { NOT = { exists = scope:scribe_character } } court_position:antiquarian_court_position ?= { save_scope_as = scribe_character set_variable = tribute_mission_1006_scribe } } # If we can't find an official scribe, try to find one in the crowd if = { limit = { NOT = { exists = scope:scribe_character } } random_courtier = { limit = { tribute_mission_1006_eligible_scribe_trigger = yes } save_scope_as = scribe_character set_variable = tribute_mission_1006_scribe } } # Or in the city if = { limit = { NOT = { exists = scope:scribe_character } } random_pool_character = { province = scope:overlord_scope.capital_province limit = { tribute_mission_1006_eligible_scribe_trigger = yes } save_scope_as = scribe_character set_variable = tribute_mission_1006_scribe } } # If all else fails, make one if = { limit = { NOT = { exists = scope:scribe_character } } create_character = { template = random_learned_eunuch_character location = scope:overlord_scope.capital_province culture = scope:overlord_scope.capital_province.culture faith = scope:overlord_scope.capital_province.faith dynasty = none save_scope_as = scribe_character after_creation = { set_variable = tribute_mission_1006_scribe } } } } if = { limit = { NOT = { exists = scope:scribe_character } } error_log = "Failed to create a valid scribe in tribute_mission_1006_eligible_scribe_scope_effect!" } } #Overlord: Decide whether to grant a Seal of Investiture or not tribute_mission.1006 = { type = character_event title = tribute_mission.1006.t desc = tribute_mission.1006.desc theme = tributary override_sound = { reference = "event:/SFX/Events/Themes/sfx_event_theme_type_duty" } immediate = { tribute_mission_1006_eligible_scribe_scope_effect = yes } left_portrait = { character = root animation = personality_honorable } right_portrait = { character = scope:tributary_scope animation = personality_rational } #Grant the Seal option = { name = tribute_mission.1006.grant trigger = { trigger_if = { limit = { scope:receiving_character = { is_ai = yes } } treasury > tribute_seal_of_investiture_cost } trigger_else = { always = yes #Humans can always get one } } show_as_unavailable = { always = yes } custom_tooltip = { text = tribute_mission.1006.grant.tt create_artifact_imperial_seal_effect = { OWNER = scope:receiving_character SMITH = scope:scribe_character } } remove_treasury = tribute_seal_of_investiture_cost add_legitimacy = 50 scope:tributary_scope = { if = { limit = { scope:overlord_scope = { has_royal_court = yes } } trigger_event = tribute_mission.3007 } else = { trigger_event = tribute_mission.1007 } } # do not change from making this only the scripted value; add additions to the value itself if needed ai_will_select = scope:tributary_scope.tribute_mission_seal_of_investiture_ai_will_select } #Decline to grant the Seal option = { name = { text = { first_valid = { triggered_desc = { trigger = { treasury < tribute_seal_of_investiture_cost } desc = tribute_mission.1006.decline.no_money } desc = tribute_mission.1006.decline.dont_wanna } } } add_legitimacy = -50 reverse_add_opinion = { target = scope:tributary_scope modifier = refused_seal_of_investiture_opinion opinion = -50 } scope:tributary_scope = { if = { limit = { scope:overlord_scope = { has_royal_court = yes } } trigger_event = tribute_mission.3010 } else = { trigger_event = tribute_mission.1010 } } # do not change from making this only the scripted value; add additions to the value itself if needed ai_will_select = scope:tributary_scope.tribute_mission_no_seal_of_investiture_ai_will_select } } ### IS THIS ACTUALLY USED? (Hegemons that receive Tributary scopes should always have Royal Courts) #Tributary: Receive the Seal of Investiture tribute_mission.1007 = { type = character_event title = tribute_mission.1007.t desc = tribute_mission.1007.desc theme = tributary override_sound = { reference = "event:/SFX/Events/Themes/sfx_event_theme_type_duty" } left_portrait = { character = root animation = personality_rational } artifact = { trigger = { exists = scope:tribute_reward_type_artifact } target = scope:seal_of_investiture_scope position = lower_center_portrait } right_portrait = { character = scope:receiving_character animation = personality_honorable } #Grant the Seal option = { name = tribute_mission.1007.a scope:seal_of_investiture_scope = { set_owner = scope:tributary_scope } } after = { scope:tributary_scope = { if = { limit = { scope:overlord_scope = { has_royal_court = yes } } trigger_event = tribute_mission.3010 } else = { trigger_event = tribute_mission.1010 } } } } ### ARE THESE ACTUALLY USED? (Hegemons that receive Tributary scopes should always have Royal Courts) #Tributary: Decide whether to become a Tributary or not tribute_mission.1008 = { type = character_event title = tribute_mission.1008.t desc = tribute_mission.1008.desc theme = tributary override_sound = { reference = "event:/SFX/Events/Themes/sfx_event_theme_type_duty" } left_portrait = { character = root animation = personality_rational } right_portrait = { character = scope:receiving_character animation = personality_honorable } #Become a Tributary option = { name = tribute_mission.1008.a start_tributary_interaction_effect = { TRIBUTARY = scope:tributary_scope SUZERAIN = scope:overlord_scope } scope:overlord_scope = { send_interface_message = { type = event_tribute_good_text title = tribute_mission.new_tributary.title left_icon = scope:tributary_scope desc = tribute_mission.new_tributary.desc } } } #No thanks option = { name = tribute_mission.1008.b } after = { trigger_event = tribute_mission.1010 } } scripted_effect tribute_mission_1010_complete_effect = { scope:tributary_scope = { #Scaling grace if = { limit = { OR = { var:tribute_mission_type ?= flag:excessive_gold_tribute var:tribute_mission_type ?= flag:excessive_herd_tribute AND = { var:tribute_mission_type ?= flag:artifact_tribute scope:artifact_to_tribute ?= { OR = { rarity = famed rarity = illustrious } } } exists = scope:appointed_concubine exists = scope:appointed_eunuch } } set_variable = { name = tribute_mission_grace value = scope:overlord_scope years = tribute_mission_cooldown_most_years } } else_if = { limit = { OR = { var:tribute_mission_type ?= flag:adequate_gold_tribute var:tribute_mission_type ?= flag:adequate_herd_tribute AND = { var:tribute_mission_type ?= flag:artifact_tribute scope:artifact_to_tribute ?= { rarity = masterwork } } exists = scope:concubine_character exists = scope:eunuch_character } } set_variable = { name = tribute_mission_grace value = scope:overlord_scope years = tribute_mission_cooldown_more_years } } else = { set_variable = { name = tribute_mission_grace value = scope:overlord_scope years = tribute_mission_cooldown_years } } #Clean up & head back home tribute_mission_clean_up_variables_effect = yes tribute_mission_clean_up_request_variables_effect = yes current_travel_plan ?= { resume_travel_plan = yes } } scope:receiving_character = { if = { limit = { has_character_flag = created_attendant } #Clean 'em up trigger_event = tribute_mission.0005 } } scope:artifact_to_tribute ?= { remove_variable = is_tribute_mission_artifact set_variable = { name = given_via_tribute_mission value = scope:tributary_scope } if = { limit = { has_variable = given_via_tribute_mission } #Error supression } } } #Tributary: Receive reward, go home tribute_mission.1010 = { type = character_event title = { first_valid = { #Treasury triggered_desc = { trigger = { exists = scope:tribute_reward_type_treasury } desc = tribute_mission.1010.t.treasury } #Artifact triggered_desc = { trigger = { exists = scope:tribute_reward_type_artifact } desc = tribute_mission.1010.t.artifact } #Innovation triggered_desc = { trigger = { exists = scope:tribute_reward_type_innovation } desc = tribute_mission.1010.t.innovation } #Development triggered_desc = { trigger = { exists = scope:tribute_reward_type_development } desc = tribute_mission.1010.t.development } #Monk triggered_desc = { trigger = { exists = scope:tribute_reward_type_monk } desc = tribute_mission.1010.t.monk } #Legitimacy triggered_desc = { trigger = { exists = scope:tribute_reward_type_legitimacy } desc = tribute_mission.1010.t.legitimacy } desc = tribute_mission.1010.t } } desc = { first_valid = { triggered_desc = { trigger = { exists = scope:seal_of_investiture_scope } desc = tribute_mission.1010.intro.postseal } triggered_desc = { trigger = { scope:receiving_character = { has_character_flag = created_attendant } } desc = tribute_mission.1010.intro.attendant } desc = tribute_mission.1010.intro } first_valid = { #Treasury triggered_desc = { trigger = { exists = scope:tribute_reward_type_treasury } desc = tribute_mission.1010.desc.treasury } #Artifact triggered_desc = { trigger = { exists = scope:tribute_reward_type_artifact } desc = tribute_mission.1010.desc.artifact } #Innovation triggered_desc = { trigger = { exists = scope:tribute_reward_type_innovation } desc = tribute_mission.1010.desc.innovation } #Development triggered_desc = { trigger = { exists = scope:tribute_reward_type_development } desc = tribute_mission.1010.desc.development } #Monk triggered_desc = { trigger = { exists = scope:tribute_reward_type_monk } desc = tribute_mission.1010.desc.monk } #Legitimacy triggered_desc = { trigger = { exists = scope:tribute_reward_type_legitimacy } desc = tribute_mission.1010.desc.legitimacy } } desc = tribute_mission.1010.outro } theme = tributary left_portrait = { character = root animation = personality_rational } artifact = { trigger = { exists = scope:tribute_reward_type_artifact } target = scope:tribute_reward_type_artifact position = lower_center_portrait } right_portrait = { character = scope:receiving_character animation = personality_honorable } immediate = { tribute_mission_1000_disburse_reward_effect = yes } #Thanks, bye! option = { name = tribute_mission.1010.a } after = { #Clean up variables & set up cooldown tribute_mission_1010_complete_effect = yes } } ### COURT EVENTS ### #Tributary: Fork over Tribute, try to influence reward tribute_mission.3000 = { type = court_event title = tribute_mission.3000.t desc = { desc = tribute_mission.3000.intro #Who is greeting us? first_valid = { triggered_desc = { trigger = { scope:overlord_scope = scope:receiving_character } desc = tribute_mission.3000.intro.overlord } triggered_desc = { trigger = { scope:overlord_scope.diarch ?= scope:receiving_character } desc = tribute_mission.3000.intro.diarch } triggered_desc = { trigger = { OR = { scope:overlord_scope.cp:councillor_steward ?= scope:receiving_character scope:overlord_scope.cp:councillor_chancellor ?= scope:receiving_character scope:overlord_scope.cp:councillor_spymaster ?= scope:receiving_character scope:overlord_scope.cp:councillor_court_chaplain ?= scope:receiving_character scope:overlord_scope.cp:councillor_marshal ?= scope:receiving_character } } desc = tribute_mission.3000.intro.councillor } desc = tribute_mission.3000.intro.attendant } desc = tribute_mission.3000.desc.segway #What did we bring? first_valid = { triggered_desc = { trigger = { var:tribute_mission_type ?= flag:bunga_mas_tribute } desc = tribute_mission.3000.desc.bunga_mas } triggered_desc = { trigger = { var:tribute_mission_type ?= flag:small_gold_tribute } desc = tribute_mission.3000.desc.small_gold } triggered_desc = { trigger = { var:tribute_mission_type ?= flag:adequate_gold_tribute } desc = tribute_mission.3000.desc.adequate_gold } triggered_desc = { trigger = { var:tribute_mission_type ?= flag:excessive_gold_tribute } desc = tribute_mission.3000.desc.excessive_gold } triggered_desc = { trigger = { var:tribute_mission_type ?= flag:small_herd_tribute } desc = tribute_mission.3000.desc.small_herd } triggered_desc = { trigger = { var:tribute_mission_type ?= flag:adequate_herd_tribute } desc = tribute_mission.3000.desc.adequate_herd } triggered_desc = { trigger = { var:tribute_mission_type ?= flag:excessive_herd_tribute } desc = tribute_mission.3000.desc.excessive_herd } triggered_desc = { trigger = { exists = scope:concubine_character } desc = tribute_mission.3000.desc.concubine } triggered_desc = { trigger = { exists = scope:eunuch_character } desc = tribute_mission.3000.desc.eunuch } triggered_desc = { trigger = { exists = scope:artifact_to_tribute } desc = tribute_mission.3000.desc.artifact } } first_valid = { triggered_desc = { trigger = { scope:receiving_character = { has_character_flag = created_attendant } } desc = tribute_mission.3000.outro.attendant } desc = tribute_mission.3000.outro } } theme = tributary override_sound = { reference = "event:/SFX/Events/Themes/sfx_event_theme_type_duty" } court_scene = { button_position_character = scope:receiving_character court_owner = scope:overlord_scope court_event_force_open = no show_timeout_info = yes should_pause_time = yes roles = { scope:tributary_scope = { group = petition_liege_group animation = throne_room_kneel_1 } scope:human_tribute = { group = petition_liege_group animation = throne_room_kneel_1 } } } immediate = { scope:overlord_scope = { open_view_data = { view = royal_court secondary_actor = scope:tributary_scope player = scope:tributary_scope } } tribute_mission_1000_common_arrival_effect = yes #For the tooltips if = { limit = { tribute_mission_1000_can_give_treasury_trigger = yes } tribute_mission_1000_set_treasury_reward_effect = yes } if = { limit = { scope:overlord_scope.culture = { any_known_innovation = { tribute_mission_1000_eligible_innovation_trigger = yes } } } scope:overlord_scope.culture = { random_known_innovation = { limit = { tribute_mission_1000_eligible_innovation_trigger = yes } save_scope_as = saved_innovation } } } else = { save_scope_as = grant_fascination } #What level of Bunga Mas modifier? tribute_mission_1000_determine_bunga_mas_scale_effect = yes } #China: Duel for Treasury option = { name = tribute_mission.3000.treasury trigger = { scope:receiving_character = { is_ai = yes } tribute_mission_1000_can_give_treasury_trigger = yes } tribute_mission_1000_determine_duel_skill_effect = { INFLUENCED_REWARD = treasury REWARD_INCREMENT = 0 } ai_chance = { base = 100 } } #Duel for Artifact option = { name = tribute_mission.3000.artifact trigger = { scope:receiving_character = { is_ai = yes } tribute_mission_1000_can_set_artifact_reward_trigger = yes } tribute_mission_1000_determine_duel_skill_effect = { INFLUENCED_REWARD = artifact REWARD_INCREMENT = 1 } ai_chance = { base = 150 } } #Duel for Innovation option = { name = tribute_mission.3000.innovation trigger = { scope:receiving_character = { is_ai = yes } tribute_mission_1000_can_set_innovation_reward_trigger = yes } tribute_mission_1000_determine_duel_skill_effect = { INFLUENCED_REWARD = innovation REWARD_INCREMENT = 2 } ai_chance = { base = 200 } } #Duel for Development option = { name = tribute_mission.3000.development trigger = { scope:receiving_character = { is_ai = yes } tribute_mission_1000_eligible_development_trigger = yes } tribute_mission_1000_determine_duel_skill_effect = { INFLUENCED_REWARD = development REWARD_INCREMENT = 3 } ai_chance = { base = 150 } } #I'm sure it'll be fine option = { name = tribute_mission.3000.abstain tribute_mission_1000_display_potential_rewards_effect = yes ai_chance = { base = 100 modifier = { has_trait = arbitrary add = 200 } } } after = { #Non-AI Receiving person: Decide on if you want to accept the human tribute if = { limit = { OR = { exists = scope:concubine_character exists = scope:eunuch_character } AND = { #If the overlord is an AI, they've already said yay/nay scope:overlord_scope = { is_ai = no } #... so if we're a player diarch of a player ruler, you get to decide scope:receiving_character = { is_ai = no } } } show_as_tooltip = { tribute_mission_1000_fork_over_with_notification_effect = yes } scope:receiving_character = { trigger_event = tribute_mission.1002 } } #Or the Non-AI Receiving person / Hegemon gets to decide the reward else_if = { limit = { scope:receiving_character = { OR = { is_ai = no scope:overlord_scope = { highest_held_title_tier = tier_hegemony } } } } show_as_tooltip = { tribute_mission_1000_fork_over_with_notification_effect = yes } scope:receiving_character = { trigger_event = tribute_mission.1005 } } #Or if the Receiving person is AI then we we skip the event and just generate the reward else = { tribute_mission_1000_fork_over_with_notification_effect = yes scope:overlord_scope = { tribute_mission_1000_generate_reward_effect = yes } scope:tributary_scope = { trigger_event = tribute_mission.3010 } } } } ###DEPRECATED #Recipient: Decide on the human tribute tribute_mission.3002 = { orphan = yes type = court_event title = tribute_mission.3002.t desc = { desc = tribute_mission.3002.segway first_valid = { triggered_desc = { trigger = { exists = scope:concubine_character } desc = tribute_mission.3002.desc.concubine } triggered_desc = { trigger = { scope:eunuch_character ?= { has_character_flag = tribute_mission_recently_castrated } } desc = tribute_mission.3002.desc.new_eunuch } triggered_desc = { trigger = { exists = scope:eunuch_character } desc = tribute_mission.3002.desc.eunuch } } #Some descriptive exterior words first_valid = { #Beauty triggered_desc = { trigger = { exists = scope:concubine_character scope:human_tribute = { OR = { has_trait = beauty_good_1 has_trait = beauty_good_2 has_trait = beauty_good_3 } } } desc = tribute_mission.3002.beauty.concubine.good } #Bad Beauty triggered_desc = { trigger = { exists = scope:concubine_character scope:human_tribute = { OR = { has_trait = beauty_bad_1 has_trait = beauty_bad_2 has_trait = beauty_bad_3 } } } desc = tribute_mission.3002.beauty.concubine.bad } #Physique triggered_desc = { trigger = { exists = scope:concubine_character scope:human_tribute = { OR = { has_trait = physique_good_1 has_trait = physique_good_2 has_trait = physique_good_3 } } } desc = tribute_mission.3002.physique.concubine.good } #Bad Physique triggered_desc = { trigger = { exists = scope:concubine_character scope:human_tribute = { OR = { has_trait = physique_bad_1 has_trait = physique_bad_2 has_trait = physique_bad_3 } } } desc = tribute_mission.3002.physique.concubine.bad } #Fallback triggered_desc = { trigger = { exists = scope:concubine_character } desc = tribute_mission.3002.exterior.plain } } #Some descriptive personality words first_valid = { #Shy triggered_desc = { trigger = { scope:human_tribute = { 1002_human_tribute_shy_personality_trigger = yes } } desc = tribute_mission.3002.personality.shy } #Bold triggered_desc = { trigger = { scope:human_tribute = { 1002_human_tribute_bold_personality_trigger = yes } } desc = tribute_mission.3002.personality.bold } #Cynical triggered_desc = { trigger = { scope:human_tribute = { 1002_human_tribute_callous_personality_trigger = yes } } desc = tribute_mission.3002.personality.cynical } #Angry triggered_desc = { trigger = { scope:human_tribute = { 1002_human_tribute_angry_personality_trigger = yes } } desc = tribute_mission.3002.personality.angry } #Fallback desc = tribute_mission.3002.personality.fallback } } theme = tributary left_portrait = { character = scope:receiving_character animation = interested } right_portrait = { character = scope:human_tribute triggered_animation = { trigger = { has_character_flag = tribute_mission_recently_castrated } animation = severelywounded } triggered_animation = { trigger = { 1002_human_tribute_shy_personality_trigger = yes } animation = shame } triggered_animation = { trigger = { 1002_human_tribute_bold_personality_trigger = yes } animation = personality_bold } triggered_animation = { trigger = { 1002_human_tribute_callous_personality_trigger = yes } animation = personality_cynical } triggered_animation = { trigger = { 1002_human_tribute_angry_personality_trigger = yes } animation = disapproval } animation = personality_honorable } lower_right_portrait = { character = scope:tributary_scope } court_scene = { button_position_character = scope:receiving_character court_owner = scope:overlord_scope court_event_force_open = no show_timeout_info = yes should_pause_time = yes roles = { scope:tributary_scope = { group = petition_liege_group animation = throne_room_kneel_1 } scope:human_tribute = { group = petition_liege_group animation = throne_room_kneel_1 } } } immediate = { tribute_mission_1000_fork_over_with_notification_effect = yes } #Add 'em to court option = { name = tribute_mission.3002.a if = { limit = { exists = scope:concubine_character } tribute_mission_1000_make_courtier_effect = { HUMAN_TRIB = scope:concubine_character } } else = { tribute_mission_1000_make_courtier_effect = { HUMAN_TRIB = scope:eunuch_character } } ai_chance = { base = 100 } } #Make 'em your concubine option = { name = tribute_mission.3002.b trigger = { exists = scope:concubine_character scope:overlord_scope = scope:receiving_character tribute_mission_1000_overlord_can_employ_concubine_trigger = yes } flavor = tribute_mission.3002.b.flavor tribute_mission_1000_make_concubine_effect = yes save_scope_value_as = { name = appointed_concubine value = flag:yes } ai_chance = { base = 100 modifier = { add = { value = 50 multiply = scope:concubine_character.num_of_good_genetic_traits } scope:concubine_character = { num_of_good_genetic_traits > 0 trigger_if = { limit = { is_female = yes } is_aging_character = no } } } modifier = { add = 50 scope:concubine_character = { is_lowborn = no trigger_if = { limit = { is_female = yes } is_aging_character = no } } } modifier = { add = { value = -50 multiply = scope:concubine_character.num_of_bad_genetic_traits } scope:concubine_character = { num_of_bad_genetic_traits > 0 trigger_if = { limit = { is_female = yes } is_aging_character = no } } } modifier = { add = { value = -50 } scope:concubine_character = { is_lowborn = yes num_of_good_genetic_traits = 0 trigger_if = { limit = { is_female = yes } is_aging_character = no } } } opinion_modifier = { # Opinion of you who = scope:overlord_scope opinion_target = scope:tributary_scope multiplier = 1.0 desc = AI_OPINION_REASON } opinion_modifier = { # Opinion of concubine who = scope:overlord_scope opinion_target = scope:concubine_character multiplier = 0.25 desc = AI_OPINION_REASON } compare_modifier = { # Recipient is reluctant to marry old women (procreation is a key factor) trigger = { scope:concubine_character = { is_young_character = no is_female = yes } } target = scope:concubine_character value = age multiplier = -5 step = 1 offset = -29 } modifier = { add = 50 scope:overlord_scope = { is_attracted_to_gender_of = scope:concubine_character } } #More/Less likely based on difference in rank between tributary_scope and overlord_scope modifier = { add = 50 scope:tributary_scope = { tier_difference = { target = scope:overlord_scope value > 1 } } } modifier = { add = -20 scope:tributary_scope = { tier_difference = { target = scope:overlord_scope value < 1 } } } } } #Appoint 'em head Eunuch option = { name = tribute_mission.3002.c trigger = { exists = scope:eunuch_character scope:overlord_scope = scope:receiving_character can_employ_court_position_type = chief_eunuch_court_position } #Make 'em courtier tribute_mission_1000_make_courtier_effect = { HUMAN_TRIB = scope:eunuch_character } #Gain obligation hook custom_tooltip = obligation_hook_tt add_hook = { type = obligation_hook target = scope:eunuch_character } #Replace current Chief Eunuch if = { limit = { employs_court_position = chief_eunuch_court_position } every_court_position_holder = { type = chief_eunuch_court_position save_temporary_scope_as = current_chief_eunuch } replace_court_position = { recipient = scope:eunuch_character holder = scope:current_chief_eunuch court_position = chief_eunuch_court_position } } #Or simply appoint new Eunuch else = { appoint_court_position = { recipient = scope:eunuch_character court_position = chief_eunuch_court_position } } save_scope_value_as = { name = appointed_eunuch value = flag:yes } ai_chance = { base = 100 opinion_modifier = { who = scope:overlord_scope opinion_target = scope:tributary_scope multiplier = 0.5 } opinion_modifier = { who = scope:overlord_scope opinion_target = scope:eunuch_character multiplier = 0.5 } modifier = { add = { value = 50 subtract = scope:eunuch_character.age } } modifier = { add = { add = scope:eunuch_character.diplomacy add = scope:eunuch_character.intrigue add = scope:eunuch_character.stewardship add = scope:eunuch_character.martial add = scope:eunuch_character.learning } } modifier = { scope:eunuch_character = { has_trait = beardless_eunuch } add = 25 } } } #Um... nah option = { name = tribute_mission.3002.d custom_tooltip = tribute_mission.3002.d.tt if = { limit = { exists = scope:concubine_character } save_scope_value_as = { name = rejected_concubine value = flag:yes } } else = { save_scope_value_as = { name = rejected_eunuch value = flag:yes } } ai_chance = { base = 10 modifier = { has_trait = paranoid add = 1000 } } } after = { #Moving on trigger_event = tribute_mission.3005 } } ###DEPRECATED #Recipient: What do you give? tribute_mission.3005 = { type = court_event title = { first_valid = { triggered_desc = { # Gold trigger = { tribute_mission_1000_gold_tributary_trigger = yes } desc = tribute_mission.3005.t.gold } triggered_desc = { # Herd trigger = { tribute_mission_1000_herd_tributary_trigger = yes } desc = tribute_mission.3005.t.herd } triggered_desc = { # Concubine trigger = { tribute_mission_1000_concubine_tributary_trigger = yes } desc = tribute_mission.3005.t.concubine } triggered_desc = { # Eunuch trigger = { tribute_mission_1000_eunuch_tributary_trigger = yes } desc = tribute_mission.3005.t.eunuch } triggered_desc = { # Artifact trigger = { tribute_mission_1000_artifact_tributary_trigger = yes } desc = tribute_mission.3005.t.artifact } desc = tribute_mission.3005.t } } desc = { first_valid = { triggered_desc = { trigger = { OR = { exists = scope:concubine_character exists = scope:eunuch_character } } desc = tribute_mission.3005.intro.human_tribute } desc = tribute_mission.3005.intro } first_valid = { triggered_desc = { trigger = { scope:tributary_scope.var:tribute_mission_type ?= flag:small_gold_tribute } desc = tribute_mission.3005.desc.small_gold } triggered_desc = { trigger = { scope:tributary_scope.var:tribute_mission_type ?= flag:adequate_gold_tribute } desc = tribute_mission.3005.desc.adequate_gold } triggered_desc = { trigger = { scope:tributary_scope.var:tribute_mission_type ?= flag:excessive_gold_tribute } desc = tribute_mission.3005.desc.excessive_gold } triggered_desc = { trigger = { scope:tributary_scope.var:tribute_mission_type ?= flag:small_herd_tribute } desc = tribute_mission.3005.desc.small_herd } triggered_desc = { trigger = { scope:tributary_scope.var:tribute_mission_type ?= flag:adequate_herd_tribute } desc = tribute_mission.3005.desc.adequate_herd } triggered_desc = { trigger = { scope:tributary_scope.var:tribute_mission_type ?= flag:excessive_herd_tribute } desc = tribute_mission.3005.desc.excessive_herd } triggered_desc = { trigger = { exists = scope:rejected_concubine } desc = tribute_mission.3005.desc.rejected_concubine } triggered_desc = { trigger = { exists = scope:appointed_concubine } desc = tribute_mission.3005.desc.appointed_concubine } triggered_desc = { trigger = { exists = scope:concubine_character } desc = tribute_mission.3005.desc.concubine } triggered_desc = { trigger = { exists = scope:rejected_eunuch } desc = tribute_mission.3005.desc.rejected_eunuch } triggered_desc = { trigger = { exists = scope:appointed_eunuch } desc = tribute_mission.3005.desc.appointed_eunuch } triggered_desc = { trigger = { exists = scope:eunuch_character } desc = tribute_mission.3005.desc.eunuch } triggered_desc = { trigger = { exists = scope:artifact_to_tribute } desc = tribute_mission.3005.desc.artifact } #Fallback desc = tribute_mission.3005.desc } } theme = tributary override_sound = { reference = "event:/SFX/Events/Themes/sfx_event_theme_type_duty" } court_scene = { button_position_character = scope:receiving_character court_owner = scope:overlord_scope court_event_force_open = no show_timeout_info = yes should_pause_time = yes roles = { scope:tributary_scope = { group = petition_liege_group animation = throne_room_kneel_1 } scope:human_tribute = { group = petition_liege_group animation = throne_room_kneel_1 } } } immediate = { tribute_mission_1000_fork_over_with_notification_effect = yes } #China: Treasury / Trade Goods option = { name = tribute_mission.3005.treasury trigger = { tribute_mission_1000_can_give_treasury_trigger = yes } show_as_tooltip = { tribute_mission_1000_give_treasury_effect = yes } tribute_mission_1000_set_treasury_reward_effect = yes ai_chance = { base = 0 # If we were not influenced, just add a base chance modifier = { NOT = { exists = scope:successful_influence } add = 20 } # Always choose this option if we were successfully influenced modifier = { scope:successful_influence ?= flag:treasury add = 1000 } } } #Artifact option = { name = tribute_mission.3005.artifact #Inform the player what will happen (since the artifact doesn't exist yet) custom_tooltip = tribute_mission.3005.artifact.tt tribute_mission_1000_set_artifact_reward_effect = yes ai_chance = { base = 0 # If we were not influenced, just add a base chance modifier = { NOT = { exists = scope:successful_influence } add = 20 } # Always choose this option if we were successfully influenced modifier = { scope:successful_influence ?= flag:artifact add = 1000 } } } #Innovation option = { name = tribute_mission.3005.innovation trigger = { tribute_mission_1000_can_set_innovation_reward_trigger = yes } tribute_mission_1000_set_innovation_reward_effect = yes #Display the effects show_as_tooltip = { if = { limit = { exists = scope:saved_innovation } scope:tributary_scope.culture = { add_innovation_progress = { value = tribute_reward_innovation_progress_value target = scope:saved_innovation } } } if = { limit = { exists = scope:grant_fascination } scope:tributary_scope.culture = { add_fascination_progress = tribute_reward_fascination_progress_value } } } ai_chance = { base = 0 # If we were not influenced, just add a base chance modifier = { NOT = { exists = scope:successful_influence } add = 20 } # Always choose this option if we were successfully influenced modifier = { scope:successful_influence ?= flag:innovation add = 1000 } } } #Development option = { name = tribute_mission.3005.development trigger = { tribute_mission_1000_eligible_development_trigger = yes } show_as_tooltip = { tribute_mission_1000_give_development_effect = yes } tribute_mission_1000_set_development_reward_effect = yes ai_chance = { base = 0 # If we were not influenced, just add a base chance modifier = { NOT = { exists = scope:successful_influence } add = 20 } # Always choose this option if we were successfully influenced modifier = { scope:successful_influence ?= flag:development add = 1000 } } } #Monk option = { name = tribute_mission.3005.monk trigger = { tribute_mission_1000_eligible_for_monk_trigger = yes } show_as_tooltip = { tribute_mission_1000_give_monk_effect = yes } tribute_mission_1000_set_monk_reward_effect = yes ai_chance = { base = 0 # If we were not influenced, just add a base chance modifier = { NOT = { exists = scope:successful_influence } add = 100 } } } #Generic Legitimacy option = { name = tribute_mission.3005.legitimacy show_as_tooltip = { tribute_mission_1000_give_legitimacy_effect = yes } tribute_mission_1000_set_legitimacy_reward_effect = yes ai_chance = { base = 100 } } after = { if = { limit = { scope:tributary_scope = { subject_standing > seal_of_investiture_minimum_subject_standing NOT = { any_character_artifact = { OR = { artifact_type = seal_of_investiture artifact_type = seal_of_investiture_court } } } } } trigger_event = { id = tribute_mission.3006 } } else_if = { limit = { scope:tributary_scope = { is_tributary = no } } scope:tributary_scope = { trigger_event = tribute_mission.3008 } } else = { scope:tributary_scope = { trigger_event = { id = tribute_mission.3010 } } } } } ###DEPRECATED #Overlord: Decide whether to grant a Seal of Investiture or not tribute_mission.3006 = { type = court_event title = tribute_mission.3006.t desc = tribute_mission.3006.desc theme = tributary override_sound = { reference = "event:/SFX/Events/Themes/sfx_event_theme_type_duty" } court_scene = { button_position_character = scope:receiving_character court_owner = scope:overlord_scope court_event_force_open = no show_timeout_info = yes should_pause_time = yes roles = { scope:tributary_scope = { group = petition_liege_group animation = throne_room_kneel_1 } } } immediate = { tribute_mission_1006_eligible_scribe_scope_effect = yes } #Grant the Seal option = { name = tribute_mission.3006.grant trigger = { trigger_if = { limit = { scope:receiving_character = { is_ai = yes } } treasury > tribute_seal_of_investiture_cost } trigger_else = { always = yes #Humans can always get one } } show_as_unavailable = { always = yes } custom_tooltip = { text = tribute_mission.3006.grant.tt create_artifact_imperial_seal_effect = { OWNER = scope:receiving_character SMITH = scope:scribe_character } } remove_treasury = tribute_seal_of_investiture_cost add_legitimacy = 50 scope:tributary_scope = { trigger_event = tribute_mission.3007 } ai_chance = { base = 50 modifier = { exists = scope:successful_influence add = 50 } modifier = { always = yes add = scope:tributary_scope.subject_standing add = -50 } ai_value_modifier = { ai_greed = -0.5 ai_honor = 0.5 } } } #Decline to grant the Seal option = { name = { text = { first_valid = { triggered_desc = { trigger = { treasury < tribute_seal_of_investiture_cost } desc = tribute_mission.3006.decline.no_money } desc = tribute_mission.3006.decline.dont_wanna } } } add_legitimacy = -50 reverse_add_opinion = { target = scope:tributary_scope modifier = refused_seal_of_investiture_opinion opinion = -50 } scope:tributary_scope = { trigger_event = { id = tribute_mission.3010 } } ai_chance = { base = 10 } } } #Tributary: Receive the Seal of Investiture tribute_mission.3007 = { type = court_event title = tribute_mission.3007.t desc = tribute_mission.3007.desc theme = tributary override_sound = { reference = "event:/SFX/Events/Themes/sfx_event_theme_type_duty" } court_scene = { button_position_character = scope:receiving_character court_owner = scope:overlord_scope court_event_force_open = no show_timeout_info = yes should_pause_time = yes roles = { scope:receiving_character = { group = petition_liege_group } scope:scribe_character = { group = petition_liege_group } scope:tributary_scope = { group = petition_liege_group animation = throne_room_kneel_1 } } } #Grant the Seal option = { name = tribute_mission.3007.a scope:seal_of_investiture_scope = { set_owner = scope:tributary_scope } } after = { scope:tributary_scope = { trigger_event = tribute_mission.3010 } } } #Tributary: Decide whether to become a Tributary or not tribute_mission.3008 = { type = court_event title = tribute_mission.3008.t desc = tribute_mission.3008.desc theme = tributary override_sound = { reference = "event:/SFX/Events/Themes/sfx_event_theme_type_duty" } court_scene = { button_position_character = scope:receiving_character court_owner = scope:overlord_scope court_event_force_open = no show_timeout_info = yes should_pause_time = yes roles = { scope:receiving_character = { group = petition_liege_group } scope:tributary_scope = { group = petition_liege_group animation = throne_room_kneel_1 } } } #Become a Tributary option = { name = tribute_mission.3008.a start_tributary_interaction_effect = { TRIBUTARY = scope:tributary_scope SUZERAIN = scope:overlord_scope } scope:overlord_scope = { send_interface_message = { type = event_tribute_good_text title = tribute_mission.new_tributary.title left_icon = scope:tributary_scope desc = tribute_mission.new_tributary.desc } } if = { limit = { has_variable = wants_to_become_tributary_of_china } debug_log = "wants_to_become_tributary_of_china realized!" } else = { debug_log = "Became tributary through tribute mission" } ai_chance = { # essentially a copy of the ai_chance for become_tributary_interaction base = -50 modifier = { # Special case for Hegemonic Tributaries scope:overlord_scope = { highest_held_title_tier >= tier_hegemony } add = { add = 25 if = { limit = { OR = { NOT = { scope:overlord_scope.primary_title = title:h_china } government_has_flag = government_is_meritocratic } } add = 25 } } desc = tributary_interaction_aibehavior_recipient_hegemon_tier_tt } modifier = { # Special case for Hegemonic Tributaries in the Dynastic Cycle - Stable Phase scope:overlord_scope = { highest_held_title_tier >= tier_hegemony any_character_situation = { situation_type = dynastic_cycle } } add = { if = { # Unstable Phase limit = { any_character_situation = { situation_type = dynastic_cycle OR = { situation_current_phase = situation_dynastic_cycle_phase_instability situation_current_phase = situation_dynastic_cycle_phase_instability_conquest } } } add = -50 desc = tributary_interaction_aibehavior_recipient_unstable_cycle_tt } else = { # Stable Phase if = { limit = { scope:overlord_scope.legitimacy_level < dynastic_cycle_legitimacy_expectation } add = -25 desc = tributary_interaction_aibehavior_recipient_low_legitimacy_tt } else_if = { limit = { scope:overlord_scope.legitimacy_level >= dynastic_cycle_legitimacy_expectation } add = 25 desc = tributary_interaction_aibehavior_recipient_high_legitimacy_tt } } } desc = ai_will_do_debug # For debugging, not shown to players } #A devaraja should never willingly _offer_ to become a tributary modifier = { trigger = { government_has_flag = government_is_mandala OR = { has_unruined_mandala_capital_trigger = yes has_mandala_aspect_trigger = yes } } add = -1000 } #MINOR MODIFIERS ai_military_threat_modifier = { SENDER = scope:tributary_scope RECEIVER = scope:overlord_scope MULTIPLIER = 0.5 } modifier = { is_obedient_to = scope:overlord_scope add = 40 desc = obedient_interaction_reason } modifier = { highest_held_title_tier <= tier_duchy OR = { government_has_flag = government_is_feudal government_has_flag = government_is_tribal_excluding_wanua } add = 25 } modifier = { OR = { NOT = { any_neighboring_top_liege_realm_owner = { always = yes # no neighbors, i.e. island } } any_neighboring_top_liege_realm_owner = { top_suzerain = scope:overlord_scope # this includes direct neighbors with overlord } } add = 25 } modifier = { # Rivalry modifier. desc = offer_vassalization_interaction_aibehavior_rival_tt trigger = { scope:tributary_scope = { has_relation_rival = scope:overlord_scope NOT = { has_relation_nemesis = scope:overlord_scope } } } add = -10 } modifier = { # Nemesis modifier. desc = offer_vassalization_interaction_aibehavior_nemesis_tt trigger = { scope:tributary_scope = { has_relation_nemesis = scope:overlord_scope } } add = -100 } modifier = { # Different faith, no pluralism. desc = offer_vassalization_interaction_aibehavior_differentfaith_tt trigger = { scope:tributary_scope = { NOR = { # Of two different faiths AND the potential vassal's faith is not pluralistic. faith = scope:overlord_scope.faith faith = { has_doctrine = doctrine_pluralism_pluralistic } } } } add = { value = -25 if = { limit = { scope:tributary_scope.faith = { faith_hostility_level = { target = scope:overlord_scope.faith value >= faith_hostile_level } } } add = -10 } if = { limit = { scope:tributary_scope.faith = { faith_hostility_level = { target = scope:overlord_scope.faith value >= faith_evil_level } } } add = -25 } } } modifier = { # Cultural Acceptance scope:tributary_scope = { NOT = { # cultural condition below doesn't have to apply if both actor and recipient have nomadic_philosophy has_trait = nomadic_philosophy scope:overlord_scope = { has_trait = nomadic_philosophy } } NOT = { has_same_culture_as = scope:overlord_scope } culture = { cultural_acceptance = { target = scope:overlord_scope.culture value < 50 } } } add = { add = -10 if = { limit = { scope:tributary_scope.culture = { has_cultural_pillar = ethos_bellicose } } add = -10 } } desc = cultural_acceptance_interaction_reason } modifier = { # Same language add = 5 desc = speaks_same_language_interaction_reason trigger = { scope:tributary_scope = { knows_language_of_culture = scope:overlord_scope.culture } } } } } #No thanks option = { name = tribute_mission.3008.b ai_chance = 10 } after = { trigger_event = tribute_mission.3010 } } #Tributary: Receive reward, go home tribute_mission.3010 = { type = court_event title = { first_valid = { #Treasury triggered_desc = { trigger = { exists = scope:tribute_reward_type_treasury } desc = tribute_mission.3010.t.treasury } #Artifact triggered_desc = { trigger = { exists = scope:tribute_reward_type_artifact } desc = tribute_mission.3010.t.artifact } #Innovation triggered_desc = { trigger = { exists = scope:tribute_reward_type_innovation } desc = tribute_mission.3010.t.innovation } #Development triggered_desc = { trigger = { exists = scope:tribute_reward_type_development } desc = tribute_mission.3010.t.development } #Monk triggered_desc = { trigger = { exists = scope:tribute_reward_type_monk } desc = tribute_mission.3010.t.monk } #Monk triggered_desc = { trigger = { exists = scope:tribute_reward_type_legitimacy } desc = tribute_mission.3010.t.legitimacy } desc = tribute_mission.3010.t } } desc = { first_valid = { triggered_desc = { trigger = { exists = scope:seal_of_investiture_scope } desc = tribute_mission.3010.intro.postseal } triggered_desc = { trigger = { scope:receiving_character = { has_character_flag = created_attendant } } desc = tribute_mission.3010.intro.attendant } desc = tribute_mission.3010.intro } first_valid = { #Treasury triggered_desc = { trigger = { exists = scope:tribute_reward_type_treasury } desc = tribute_mission.3010.desc.treasury } #Artifact triggered_desc = { trigger = { exists = scope:tribute_reward_type_artifact } desc = tribute_mission.3010.desc.artifact } #Innovation triggered_desc = { trigger = { exists = scope:tribute_reward_type_innovation } desc = tribute_mission.3010.desc.innovation } #Development triggered_desc = { trigger = { exists = scope:tribute_reward_type_development } desc = tribute_mission.3010.desc.development } #Monk triggered_desc = { trigger = { exists = scope:tribute_reward_type_monk } desc = tribute_mission.3010.desc.monk } #Legitimacy triggered_desc = { trigger = { exists = scope:tribute_reward_type_legitimacy } desc = tribute_mission.3010.desc.legitimacy } } desc = tribute_mission.3010.outro } theme = tributary override_sound = { reference = "event:/SFX/Events/Themes/sfx_event_theme_type_duty" } artifact = { trigger = { exists = scope:tribute_reward_type_artifact } target = scope:tribute_reward_type_artifact position = lower_center_portrait } court_scene = { button_position_character = scope:receiving_character court_owner = scope:overlord_scope court_event_force_open = no show_timeout_info = yes should_pause_time = yes roles = { scope:tributary_scope = { group = petition_liege_group animation = throne_room_kneel_1 } } } immediate = { tribute_mission_1000_disburse_reward_effect = yes } #Thanks, bye! option = { name = tribute_mission.3010.a } after = { close_view = { view = royal_court player = scope:tributary_scope } #Clean up variables & set up cooldown tribute_mission_1010_complete_effect = yes } } ### LETTER EVENTS ### #Your Tributary refused your Exact Tribute Interaction tribute_mission.9000 = { type = letter_event opening = tribute_mission.9000.opening desc = tribute_mission.9000.desc sender = scope:recipient immediate = { scope:recipient = { show_as_tooltip = { add_legitimacy = minor_legitimacy_loss if = { limit = { is_ai = yes } add_opinion = { modifier = declined_tribute_mission_opinion opinion = -30 target = scope:actor } } } } } #Hokay... option = { name = tribute_mission.9000.a ai_chance = { base = 25 ai_value_modifier = { ai_greed = -1 ai_boldness = -1 } } } } #Tributary is going on a mission! tribute_mission.9010 = { type = letter_event opening = tribute_mission.9010.opening desc = tribute_mission.9010.desc sender = scope:recipient immediate = { } #Yay! option = { name = tribute_mission.9010.a ai_chance = { base = 25 ai_value_modifier = { ai_greed = -1 ai_boldness = -1 } } } } #Tributary: You ignored the Requested Tribute Mission, have some penalty tribute_mission.9500 = { type = letter_event opening = tribute_mission.9500.opening desc = tribute_mission.9500.desc sender = scope:overlord trigger = { is_tributary = yes has_variable = requested_tribute_mission var:requested_tribute_mission = overlord #We're going, we're going... NOT = { has_variable = tribute_mission_type exists = current_travel_plan } } on_trigger_fail = { set_variable = invalidation_should_fail_ongoing_requested_tribute_mission } immediate = { add_legitimacy = minor_legitimacy_loss if = { limit = { NOT = { exists = scope:overlord } } overlord = { save_scope_as = overlord } } scope:overlord = { if = { limit = { is_ai = yes } add_opinion = { modifier = declined_tribute_mission_opinion opinion = -30 target = root } } } #Clean up Requested Tribute Mission variables requested_tribute_mission_clean_up_variables_effect = yes } #Hokay... option = { name = tribute_mission.9500.a ai_chance = { base = 25 ai_value_modifier = { ai_greed = -1 ai_boldness = -1 } } } } ### TRAVEL EVENTS ### #Your human tribute is not available any more tribute_mission.9750 = { type = character_event title = tribute_mission.9750.t desc = tribute_mission.9750.desc theme = travel override_icon = { reference = "gfx/interface/icons/event_types/type_tributary.dds" } left_portrait = { character = root animation = stress } right_portrait = { character = scope:human_tribute trigger = { NOT = { has_character_flag = tribute_mission_escaped_eunuch } } triggered_animation = { trigger = { is_alive = no } animation = dead } animation = prisonhouse } immediate = { #Hol' up current_travel_plan ?= { pause_travel_plan = yes } #Save the concubine if = { limit = { has_variable = offered_concubine } var:offered_concubine = { save_scope_as = human_tribute } } #Save the eunuch if = { limit = { has_variable = offered_eunuch } var:offered_eunuch = { save_scope_as = human_tribute } } } #Swap to gold? option = { name = tribute_mission.9750.a show_as_unavailable = { always = yes } #Define how much gold it is set_variable = { name = tribute_mission_type value = flag:adequate_gold_tribute } set_variable = { name = offered_gold_value value = adequate_gold_tribute_value } #Clear out the old variables remove_variable = offered_concubine remove_variable = offered_eunuch #Stash the gold so you don't use it elsewhere on your trip to the capital custom_tooltip = { text = tribute_mission.adequate_reserved_gold hidden_effect = { remove_short_term_gold = adequate_gold_tribute_value } } #Keep on keeping on current_travel_plan ?= { resume_travel_plan = yes } if = { limit = { has_character_flag = revisit_tribute_mission_0001 } trigger_event = { id = tribute_mission.0001 delayed = yes } } } #Or go home option = { name = tribute_mission.9750.b current_travel_plan = { if = { limit = { can_cancel = yes } cancel_travel_plan = yes } } custom_tooltip = tribute_mission.9750.tt #Keep on keeping on hidden_effect = { current_travel_plan ?= { resume_travel_plan = yes } } tribute_mission_clean_up_variables_effect = yes tribute_mission_clean_up_request_variables_effect = yes } after = { if = { limit = { has_character_flag = revisit_tribute_mission_0001 } remove_character_flag = revisit_tribute_mission_0001 } } } scripted_effect tribute_mission_9760_escape_effect = { scope:escapee_eunuch = { add_character_flag = { flag = tribute_mission_escaped_eunuch days = 30 } } current_travel_plan = { remove_character = scope:escapee_eunuch } hidden_effect = { scope:escapee_eunuch = { move_to_pool_at = root.location } } trigger_event = { id = tribute_mission.9750 delayed = yes } } #Your slated eunuch is trying to escape tribute_mission.9760 = { type = character_event title = tribute_mission.9760.t desc = { first_valid = { triggered_desc = { trigger = { exists = scope:vengeful_eunuch } desc = tribute_mission.9760.desc.vengeful } desc = tribute_mission.9760.desc } } theme = travel override_icon = { reference = "gfx/interface/icons/event_types/type_tributary.dds" } override_background = { reference = bedchamber } left_portrait = { character = root animation = disbelief } right_portrait = { character = scope:escapee_eunuch triggered_animation = { trigger = { exists = scope:vengeful_eunuch } animation = menacing } animation = shock } trigger = { is_tributary = yes location != var:tribute_mission_target_scope.capital_province has_variable = offered_eunuch var:offered_eunuch = { has_character_flag = tribute_mission_attempt_escape } } immediate = { #Save the eunuch if = { limit = { has_variable = offered_eunuch } var:offered_eunuch = { save_scope_as = escapee_eunuch } } scope:escapee_eunuch = { if = { limit = { OR = { 1002_human_tribute_angry_personality_trigger = yes has_trait = sadistic has_trait = just } } save_scope_as = vengeful_eunuch } } } #Vengeful eunuch option = { name = tribute_mission.9760.a trigger = { exists = scope:vengeful_eunuch } duel = { skill = prowess target = scope:vengeful_eunuch #You overpower them 50 = { compare_modifier = { value = scope:duel_value multiplier = 3.5 } desc = tribute_mission.9760.a.success custom_tooltip = tribute_mission.9760.a.success.tt #You learned something! random = { chance = 10 add_prowess_skill = 1 } } #You get injured 40 = { compare_modifier = { value = scope:duel_value multiplier = -3.5 } desc = tribute_mission.9760.a.failure increase_wounds_effect = { REASON = fight } #Hmmm, vindication if = { limit = { is_female = no } random = { chance = 5 add_trait = eunuch_1 } } tribute_mission_9760_escape_effect = yes } } } #Guards!!! option = { name = tribute_mission.9760.b trigger = { NOT = { exists = scope:vengeful_eunuch } } scope:escapee_eunuch = { duel = { skill = prowess value = very_high_skill_rating #Eunuch is overpowered 30 = { compare_modifier = { value = scope:duel_value multiplier = -3.5 } desc = tribute_mission.9760.b.success custom_tooltip = tribute_mission.9760.a.success.tt } #Eunuch escapes 60 = { compare_modifier = { value = scope:duel_value multiplier = 3.5 } desc = tribute_mission.9760.b.failure tribute_mission_9760_escape_effect = yes } #Eunuch is killed in the process 5 = { compare_modifier = { value = scope:duel_value multiplier = -3.5 min = 5 } desc = tribute_mission.9760.b.critical_failure death = { death_reason = death_fight } trigger_event = { id = tribute_mission.9750 delayed = yes } } } } } #Let 'em go option = { name = tribute_mission.9760.c tribute_mission_9760_escape_effect = yes } after = { scope:escapee_eunuch = { if = { limit = { is_alive = yes } remove_character_flag = tribute_mission_attempt_escape } } } } #Somehow your Tribute Mission invalidated, refund and return home tribute_mission.9800 = { type = character_event title = tribute_mission.9800.t desc = { first_valid = { #New overlord can't accept my tribute triggered_desc = { trigger = { has_variable = new_overlord_unable_to_accept_tribute } desc = tribute_mission.9800.desc.unable_to_accept_tribute } #Hmm got vassalized by Suzerain triggered_desc = { trigger = { is_tributary = no liege = var:tribute_mission_target_scope } desc = tribute_mission.9800.desc.suzerain_turned_liege } #No longer Tributary triggered_desc = { trigger = { is_tributary = no } desc = tribute_mission.9800.desc.no_longer_tributary } #New overlord has a different end destination triggered_desc = { trigger = { has_variable = new_overlord_somewhere_else } desc = tribute_mission.9800.desc.different_end_location } } } theme = travel override_icon = { reference = "gfx/interface/icons/event_types/type_tributary.dds" } left_portrait = { character = root animation = thinking } lower_right_portrait = scope:current_overlord immediate = { overlord = { if = { limit = { this != root } save_scope_as = current_overlord } } #Refunds if = { limit = { has_variable = offered_gold_value } add_short_term_gold = var:offered_gold_value } if = { limit = { has_variable = offered_herd_value } domicile ?= { change_herd = { add = var:offered_herd_value } } } } #Oh well option = { name = tribute_mission.9800.a current_travel_plan = { if = { limit = { can_cancel = yes } cancel_travel_plan = yes } } } after = { tribute_mission_clean_up_variables_effect = yes tribute_mission_clean_up_request_variables_effect = yes remove_variable = new_overlord_unable_to_accept_tribute if = { limit = { exists = scope:tribute_reward_type_rejection } tribute_mission_1000_rejection_effect = yes } } }