namespace = tgp_east_asia_interaction_events #Notify the former Suzerain that they were dropped! tgp_east_asia_interaction_events.0010 = { type = letter_event opening = tgp_east_asia_interaction_events.0010.opening desc = tgp_east_asia_interaction_events.0010.desc sender = { character = scope:leaving_tributary animation = personality_honorable } immediate = { custom_tooltip = tgp_east_asia_interaction_events.0010.tt } #How can this be! option = { name = tgp_east_asia_interaction_events.0010.a } } #I'm sorry, let me keep being your tributary for a while longer! tgp_east_asia_interaction_events.0020 = { type = letter_event opening = tgp_east_asia_interaction_events.0020.opening desc = tgp_east_asia_interaction_events.0020.desc sender = { character = scope:recipient animation = personality_honorable } immediate = { if = { limit = { NOR = { scope:decrease_tax_obligation_1 = yes scope:decrease_tax_obligation_2 = yes scope:decrease_tax_obligation_3 = yes scope:decrease_tax_obligation_4 = yes scope:decrease_tax_obligation_5 = yes scope:decrease_piety_obligation_1 = yes scope:decrease_piety_obligation_2 = yes scope:decrease_prestige_obligation_1 = yes scope:decrease_prestige_obligation_2 = yes scope:decrease_levy_obligation_1 = yes scope:decrease_levy_obligation_2 = yes scope:decrease_levy_obligation_3 = yes scope:decrease_levy_obligation_4 = yes scope:decrease_levy_obligation_5 = yes scope:hook = yes #scope:dread = yes } } #You're quite the smooth-talker huh scope:actor.dynasty ?= { add_dynasty_prestige = { value = miniscule_dynasty_prestige_value divide = 2 } } } } #That's what I thought. option = { name = tgp_east_asia_interaction_events.0020.a custom_tooltip = reassert_tributary_interaction_effect_tt } } #Nah, I don't feel like being reasserted tgp_east_asia_interaction_events.0025 = { type = letter_event opening = tgp_east_asia_interaction_events.0025.opening desc = tgp_east_asia_interaction_events.0025.desc sender = { character = scope:recipient animation = dismissal } immediate = { scope:actor = { add_prestige = medium_prestige_loss } scope:recipient = { add_opinion = { modifier = reassertion_request_denied_opinion target = scope:actor opinion = -20 } } } #Ayyy option = { name = tgp_east_asia_interaction_events.0025.a } } #Suzerain: Your Tributary is being Embraced by someone else! tgp_east_asia_interaction_events.0030 = { type = character_event title = tgp_east_asia_interaction_events.0030.t desc = tgp_east_asia_interaction_events.0030.desc theme = mandala left_portrait = { character = scope:recipient animation = prayer camera = camera_event_very_left_further_back } right_portrait = { character = scope:actor animation = wedding_priest camera = camera_event_scheme_far_right } immediate = { add_character_flag = allowed_war_declaration_sans_truce_penalties } #Spend some resources option = { name = tgp_east_asia_interaction_events.0030.a #Pay some resources to make them stay add_piety = major_piety_loss #Let the instigator know what happened scope:actor = { trigger_event = tgp_east_asia_interaction_events.0035 } ai_chance = { base = 100 modifier = { piety <= major_piety_value factor = 0 } } } #Start a war against the Tributary option = { name = tgp_east_asia_interaction_events.0030.b scope:recipient.suzerain = { save_scope_as = warring_suzerain } reason = alert add_internal_flag = special # To war! if = { limit = { has_truce = scope:recipient } cancel_truce_one_way = scope:recipient } start_war = { casus_belli = make_tributary_cb target = scope:recipient } #Let the instigator know what happened scope:actor = { trigger_event = tgp_east_asia_interaction_events.0035 } ai_chance = { base = 100 modifier = { house = { has_house_aspiration_parameter = aspect_of_serenity } factor = 0 } modifier = { is_at_war = yes factor = 0 } modifier = { military_power <= scope:recipient.military_power factor = 0 } } } #_This is fine_ option = { name = tgp_east_asia_interaction_events.0030.c #They're a bit irked scope:recipient.suzerain = { if = { limit = { is_ai = yes } add_opinion = { target = scope:actor modifier = embraced_my_tributary_opinion opinion = -20 } } } #No more tributary, huh scope:recipient = { end_tributary = yes hidden_effect = { mandala_embrace_tributary_effect = yes } } #Wa-waw add_piety = miniscule_piety_loss ai_chance = { base = 100 } } after = { remove_character_flag = allowed_war_declaration_sans_truce_penalties } } #Embracer: Your Tributary (with a former and also present Suzerain) is in another castle tgp_east_asia_interaction_events.0035 = { type = letter_event opening = tgp_east_asia_interaction_events.0035.opening desc = { first_valid = { triggered_desc = { trigger = { exists = scope:warring_suzerain } desc = tgp_east_asia_interaction_events.0035.desc.warring } desc = tgp_east_asia_interaction_events.0035.desc } } sender = { character = scope:sending_character triggered_animation = { trigger = { NOT = { scope:sending_character = scope:recipient } } animation = rage } animation = dismissal } immediate = { if = { limit = { exists = scope:warring_suzerain } scope:warring_suzerain = { save_scope_as = sending_character add_opinion = { target = root modifier = attempted_to_embrace_my_tributary_opinion opinion = -10 } } scope:recipient = { add_opinion = { modifier = warred_into_submission_opinion # this opinion acts as a built-in cooldown target = scope:actor years = 5 } } } else = { scope:recipient = { save_scope_as = sending_character add_opinion = { modifier = tributary_request_denied_opinion # this opinion also acts as a built-in cooldown target = scope:actor years = 3 } } } } #How can this be! option = { name = tgp_east_asia_interaction_events.0035.a } } # Favor tgp_east_asia_interaction_events.1000 = { type = letter_event opening = tgp_east_asia_interaction_events.1000.opening desc = { desc = tgp_east_asia_interaction_events.1000.desc desc = tgp_east_asia_interaction_events.1000.favor } sender = scope:recipient trigger = { exists = scope:demanded_mandala scope:recipient.primary_title = scope:demanded_mandala scope:recipient = { target_is_liege_or_above = scope:actor } } #Accept option = { name = tgp_east_asia_interaction_events.1000.a scope:recipient = { send_interface_toast = { type = event_toast_effect_neutral title = tgp_east_asia_interaction_events.1000.accept_toast left_icon = scope:actor right_icon = scope:demanded_mandala add_hook = { target = scope:actor type = favor_hook } change_to_mandala_interaction_effect = yes } } stress_impact = { arrogant = medium_stress_impact_gain } ai_chance = { base = 75 opinion_modifier = { opinion_target = scope:recipient multiplier = 0.5 } } } #Refuse option = { name = tgp_east_asia_interaction_events.1000.b scope:recipient = { send_interface_toast = { type = event_toast_effect_bad title = tgp_east_asia_interaction_events.1000.refuse_toast left_icon = scope:actor right_icon = scope:demanded_mandala custom_tooltip = demand_mandala_interaction_vassal_refuses # Opinion if = { limit = { scope:actor = { is_ai = yes } } reverse_add_opinion = { target = scope:actor modifier = angry_opinion opinion = -25 } } } } ai_chance = { base = 10 } } #Use a Hook to force it through option = { name = religious_interaction.2012.c trigger = { has_strong_usable_hook = scope:recipient } scope:recipient = { send_interface_toast = { type = event_toast_effect_neutral title = tgp_east_asia_interaction_events.1000.force_toast left_icon = scope:actor right_icon = scope:demanded_mandala scope:actor = { use_hook = scope:recipient } change_to_mandala_interaction_effect = yes } } ai_chance = { base = 100 ai_value_modifier = { ai_rationality = 1 } } } } # Gold tgp_east_asia_interaction_events.1001 = { type = letter_event opening = tgp_east_asia_interaction_events.1000.opening desc = { desc = tgp_east_asia_interaction_events.1000.desc desc = tgp_east_asia_interaction_events.1001.gold } sender = scope:recipient trigger = { exists = scope:demanded_mandala scope:recipient.primary_title = scope:demanded_mandala scope:recipient = { target_is_liege_or_above = scope:actor } } #Accept option = { name = tgp_east_asia_interaction_events.1002.a scope:recipient = { send_interface_toast = { type = event_toast_effect_neutral title = tgp_east_asia_interaction_events.1000.accept_toast left_icon = scope:actor right_icon = scope:demanded_mandala change_to_mandala_interaction_effect = yes } } stress_impact = { greedy = medium_stress_impact_gain } ai_chance = { base = 75 ai_value_modifier = { ai_greed = -1 ai_rationality = 0.5 } modifier = { factor = 0.2 gold <= 0 } opinion_modifier = { opinion_target = scope:recipient multiplier = 0.5 } } } #Refuse option = { name = tgp_east_asia_interaction_events.1000.b scope:recipient = { send_interface_toast = { type = event_toast_effect_bad title = tgp_east_asia_interaction_events.1000.refuse_toast left_icon = scope:actor right_icon = scope:demanded_mandala custom_tooltip = demand_mandala_interaction_vassal_refuses if = { limit = { scope:actor = { is_ai = yes } } reverse_add_opinion = { target = scope:actor modifier = angry_opinion opinion = -25 } } } } ai_chance = { base = 10 modifier = { add = 100 gold < medium_gold_value } } } #Use a Hook to force it through option = { name = religious_interaction.2011.c trigger = { has_strong_usable_hook = scope:recipient } save_scope_value_as = { # Cancel extra gold name = gold value = no } scope:recipient = { send_interface_toast = { type = event_toast_effect_neutral title = tgp_east_asia_interaction_events.1000.force_toast left_icon = scope:actor right_icon = scope:demanded_mandala scope:actor = { use_hook = scope:recipient } change_to_mandala_interaction_effect = yes } } ai_chance = { base = 100 ai_value_modifier = { ai_rationality = 1 } } } } tgp_east_asia_interaction_events.1002 = { type = letter_event opening = tgp_east_asia_interaction_events.1003.opening desc = tgp_east_asia_interaction_events.1003.desc sender = scope:actor trigger = { exists = scope:demanded_mandala scope:recipient.primary_title = scope:demanded_mandala scope:recipient = { target_is_liege_or_above = scope:actor } } #Accept option = { name = tgp_east_asia_interaction_events.1003.a scope:actor = { send_interface_toast = { type = event_toast_effect_good title = turn_subject_into_mandala_interaction_accept left_icon = scope:recipient change_to_mandala_interaction_effect = yes } } stress_impact = { greedy = medium_stress_impact_gain } ai_chance = { base = 0 turn_subject_into_mandala_acceptance_modifier = yes modifier = { # We increase the value to compensate for the potentially high AI values in the other options factor = 2 always = yes } } } #Favor option = { name = tgp_east_asia_interaction_events.1003.b trigger = { can_add_hook = { target = scope:actor type = favor_hook } scope:hook = no } show_as_unavailable = { scope:hook = yes } custom_description_no_bullet = { text = if_actor_accepts_desc object = scope:actor } show_as_tooltip = { add_hook = { target = scope:actor type = favor_hook } change_to_mandala_interaction_effect = yes } scope:actor = { trigger_event = { id = tgp_east_asia_interaction_events.1000 days = 5 } } ai_chance = { base = 100 modifier = { add = { value = 50 # This goes double for your Powerful Vassals. A better contract is likely to be much more important than a short-term payout. if = { limit = { is_powerful_vassal_of = scope:actor } add = 100 } } this.liege = scope:actor } modifier = { has_trait = ambitious add = 50 } } } #Gold option = { name = tgp_east_asia_interaction_events.1003.c trigger = { scope:hook = no } show_as_unavailable = { scope:hook = yes } save_scope_value_as = { name = gold value = yes } custom_description_no_bullet = { text = if_actor_accepts_desc object = scope:actor } show_as_tooltip = { change_to_mandala_interaction_effect = yes } scope:actor = { trigger_event = { id = tgp_east_asia_interaction_events.1001 days = 5 } } ai_chance = { base = 100 modifier = { add = 50 # More likely to ask for gold if they're poor scope:recipient.short_term_gold < medium_gold_value } modifier = { add = { # Much more likely to ask for gold if involved in one of their own wars (they want to win). value = 50 if = { # Especially true if they're in debt! limit = { gold < 0 } add = 150 } } is_at_war = yes any_character_war = { is_war_leader = scope:recipient } } modifier = { has_trait = greedy add = 50 } modifier = { ai_greed < high_negative_ai_value add = -50 } } } #Refuse option = { name = tgp_east_asia_interaction_events.1003.d trigger = { scope:hook = no } show_as_unavailable = { scope:hook = yes } scope:actor = { send_interface_toast = { type = event_toast_effect_bad title = turn_subject_into_mandala_interaction_refuse left_icon = scope:recipient custom_tooltip = demand_mandala_interaction_vassal_refuses } if = { limit = { is_ai = yes } add_opinion = { modifier = angry_opinion target = scope:recipient opinion = -25 } } } ai_chance = { base = 20 opinion_modifier = { opinion_target = scope:actor multiplier = -0.5 } modifier = { has_dread_level_towards = { target = scope:actor level = 1 } add = -15 } modifier = { has_dread_level_towards = { target = scope:actor level = 2 } add = -30 } modifier = { has_trait = stubborn add = 25 } modifier = { has_trait = arrogant add = 25 } modifier = { has_trait = ambitious add = -25 } } } } scripted_trigger is_root_faith_dominant_gender = { OR = { AND = { is_male = yes root.faith = { OR = { has_doctrine_parameter = male_dominated_law has_doctrine_parameter = gender_equal_law } } } AND = { is_female = yes root.faith = { OR = { has_doctrine_parameter = female_dominated_law has_doctrine_parameter = gender_equal_law } } } } } tgp_east_asia_interaction_events.2000 = { type = character_event title = tgp_east_asia_interaction_events.2000.t desc = tgp_east_asia_interaction_events.2000.desc window = big_event_window theme = prison override_background = dungeon left_portrait = { character = scope:third_prisoner animation = prisondungeon outfit_tags = { beggar_rags } override_imprisonment_visuals = yes } center_portrait = { character = scope:recipient animation = prisondungeon outfit_tags = { beggar_rags } override_imprisonment_visuals = yes } right_portrait = { character = scope:second_prisoner animation = prisondungeon outfit_tags = { beggar_rags } override_imprisonment_visuals = yes } immediate = { hidden_effect = { scope:recipient = { every_close_or_extended_family_member = { if = { limit = { top_liege = scope:actor house = scope:recipient.house is_travelling = no NOR = { any_spouse = { house ?= scope:actor.house } any_parent = { house ?= scope:actor.house } } } if = { limit = { age >= 16 NOT = { tgp_is_above_retirement_age_trigger = { REALM_OWNER = scope:actor } } AND = { is_root_faith_dominant_gender = yes OR = { is_parent_of = scope:recipient is_child_of = scope:recipient } } } add_to_list = those_to_kill } else = { add_to_list = those_to_banish } } # If they're beyond your reach, we make sure you can still punish them if they return if = { limit = { house = scope:recipient.house OR = { top_liege != scope:actor is_travelling = yes } NOR = { any_spouse = { house ?= scope:actor.house } any_parent = { house ?= scope:actor.house } } } if = { limit = { age >= 16 NOT = { tgp_is_above_retirement_age_trigger = { REALM_OWNER = scope:actor } } AND = { is_root_faith_dominant_gender = yes OR = { is_parent_of = scope:recipient is_child_of = scope:recipient } } } reverse_add_opinion = { target = root opinion = -25 modifier = purged_execution_opinion } } else = { reverse_add_opinion = { target = root opinion = -25 modifier = purged_banishment_opinion } } } } every_consort = { if = { limit = { top_liege = scope:actor is_travelling = no NOR = { any_parent = { house ?= scope:actor.house } tgp_is_above_retirement_age_trigger = { REALM_OWNER = scope:actor } } } add_to_list = those_to_banish } else = { reverse_add_opinion = { target = root opinion = -25 modifier = purged_banishment_opinion } } } # we don't want you to get tyranny from swinging the hammer, as we decide that elsewhere every_in_list = { list = those_to_banish reverse_add_opinion = { target = root opinion = -25 modifier = purged_banishment_opinion } } every_in_list = { list = those_to_kill reverse_add_opinion = { target = root opinion = -25 modifier = purged_execution_opinion } } random_in_list = { list = those_to_kill save_scope_as = second_prisoner } random_in_list = { list = those_to_banish save_scope_as = third_prisoner } if = { limit = { NOT = { exists = scope:third_prisoner } } random_in_list = { list = those_to_kill limit = { this != scope:second_prisoner } save_scope_as = third_prisoner } } } every_in_list = { list = those_to_banish limit = { is_imprisoned = no } scope:actor = { imprison = { target = prev type = house_arrest } } add_character_flag = is_currently_being_purged add_to_list = asset_forfeiture_list } every_in_list = { list = those_to_kill limit = { is_imprisoned = no } scope:actor = { imprison = { target = prev type = house_arrest } } add_character_flag = is_currently_being_purged add_to_list = asset_forfeiture_list } scope:recipient = { add_character_flag = is_currently_being_purged add_to_list = asset_forfeiture_list } } } option = { name = tgp_east_asia_interaction_events.2000.a scope:actor = { add_treasury_or_gold = { value = { add = { every_in_list = { list = asset_forfeiture_list limit = { gold > 0 } add = current_gold_value } } } } add_dread = { value = miniscule_dread_gain multiply = { value = { value = 0 add = { every_in_list = { list = those_to_banish limit = { NOT = { scope:actor = { OR = { has_banish_reason = prev has_execute_reason = prev } } } } add = { value = highest_held_title_tier multiply = 0.5 round = yes } } } add = { every_in_list = { list = those_to_kill limit = { NOT = { scope:actor = { has_execute_reason = prev } } } add = highest_held_title_tier } } add = scope:recipient.highest_held_title_tier } } } if = { limit = { NOT = { scope:actor = { has_execute_reason = scope:recipient } } } add_tyranny = { value = medium_tyranny_gain multiply = { value = { value = 0 add = { every_in_list = { list = those_to_banish add = { value = highest_held_title_tier multiply = 0.5 round = yes } } } add = { every_in_list = { list = those_to_kill add = highest_held_title_tier } } add = scope:recipient.highest_held_title_tier } } } if = { limit = { exists = top_participant_group:dynastic_cycle any_character_situation = { situation_type = dynastic_cycle } } situation:dynastic_cycle ?= { if = { limit = { situation_top_has_catalyst = catalyst_tyrannical_extinguish_noble_family } trigger_situation_catalyst = { catalyst = catalyst_tyrannical_extinguish_noble_family character = root } } } } } } hidden_effect = { every_in_list = { list = asset_forfeiture_list limit = { gold > 0 } remove_short_term_gold = { value = current_gold_value # we make sure the asset forfeiture sticks } } } every_in_list = { list = those_to_banish hidden_effect = { release_from_prison = yes # we can't banish them directly from prison, so we need to temporarily cut them loose if = { limit = { is_ruler = no liege != scope:recipient } set_employer = scope:recipient # and then we round them up again so they have a realm to be banished from } root = { remove_opinion = { # because the imprisonment reason was already consumed earlier, we need to reset this in case they come back later modifier = purged_banishment_opinion target = prev } } reverse_add_opinion = { target = root opinion = -25 modifier = purged_banishment_opinion } } banish = yes # and then we give them the boot if = { limit = { has_character_flag = is_currently_being_purged } remove_character_flag = is_currently_being_purged } } hidden_effect = { every_in_list = { list = those_to_kill family_purge_execute_prisoner_effect = { VICTIM = this EXECUTIONER = root } } family_purge_execute_prisoner_effect = { VICTIM = scope:recipient EXECUTIONER = root } } show_as_tooltip = { # So we don't get spammed with the opinion changes from the effects above in the tooltip every_in_list = { list = those_to_kill death = { death_reason = death_execution killer = root } } scope:recipient = { death = { death_reason = death_execution killer = root } } } save_scope_as = purger hidden_effect = { every_player = { limit = { dynasty = scope:recipient.dynasty } send_interface_toast = { type = event_toast_effect_bad title = tgp_east_asia_interaction_events.2000.a.title left_icon = root right_icon = scope:recipient custom_tooltip = tgp_east_asia_interaction_events.2000.a.tt } } } if = { limit = { has_execute_reason = scope:recipient } stress_impact = { sadistic = medium_stress_impact_loss compassionate = minor_stress_impact_gain forgiving = medium_stress_impact_gain generous = minor_stress_impact_gain } } else = { stress_impact = { sadistic = medium_stress_impact_loss compassionate = major_stress_impact_gain forgiving = medium_stress_impact_gain generous = medium_stress_impact_gain trusting = minor_stress_impact_gain content = minor_stress_impact_gain } } } }