imprison_interaction = { interface_priority = 120 common_interaction = yes icon = prison category = interaction_category_hostile highlighted_reason = { triggered_desc = { trigger = { scope:actor = { has_title = title:e_minister_of_justice NOT = { has_imprisonment_reason = scope:recipient } } } desc = HIGHLIGHTED_MINISTER_IMPRISONMENT_REASON } triggered_desc = { trigger = { scope:actor = { has_imprisonment_reason = scope:recipient } } desc = HIGHLIGHTED_HAS_IMPRISONMENT_REASON } } ai_maybe = yes ai_min_reply_days = 4 ai_max_reply_days = 9 can_send_despite_rejection = yes popup_on_receive = yes pause_on_receive = yes desc = imprison_interaction_desc greeting = negative notification_text = REQUEST_ARREST_NOTIFICATION_TEXT pre_answer_maybe_key = ANSWER_MIGHT_SUCCEED pre_answer_no_key = ANSWER_CANT_SUCCEED pre_answer_yes_key = ANSWER_WILL_SUCCEED pre_answer_maybe_breakdown_key = ANSWER_SUM_CHANCE on_decline_summary = { triggered_desc = { trigger = { scope:recipient = { NOR = { AND = { has_government = landless_adventurer_government reverse_has_opinion_modifier = { target = scope:actor modifier = eviction_ignored_opinion } } scope:actor = { has_title = title:e_minister_of_justice } scope:recipient = { is_landed = no any_held_title = { is_noble_family_title = yes } } } } } desc = imprison_decline_summary } } ai_potential = { trigger_if = { limit = { has_realm_law_flag = imprisonment_toggle_enable } has_realm_law_flag = imprisonment_toggle_on } is_imprisoned = no } is_shown = { scope:actor != scope:recipient scope:actor = { OR = { AND = { has_title = title:e_minister_of_justice scope:recipient = { tgp_is_any_minister = no liege = { basic_allowed_to_imprison_character_trigger = { CHARACTER = scope:recipient } } } } basic_allowed_to_imprison_character_trigger = { CHARACTER = scope:recipient } } } # Scope:recipient can't be visiting elsewhere. trigger_if = { limit = { scope:recipient = { is_courtier_of = scope:actor } } NOT = { scope:recipient.host = { any_foreign_court_guest = { this = scope:recipient } } } } } is_valid_showing_failures_only = { scope:actor = { trigger_if = { limit = { has_title = title:e_minister_of_justice scope:recipient = { tgp_is_any_minister = no } NOT = { allowed_to_imprison_character_trigger = { CHARACTER = scope:recipient } } } top_liege = { allowed_to_imprison_character_trigger = { CHARACTER = scope:recipient } } } trigger_else = { allowed_to_imprison_character_trigger = { CHARACTER = scope:recipient } } trigger_if = { limit = { government_has_flag = government_is_nomadic } NOT = { has_realm_law = nomadic_authority_1 } } trigger_if = { limit = { has_title = title:e_minister_of_justice } scope:recipient = { NOT = { is_close_or_extended_family_of = scope:actor.top_liege } } } } imprison_neutral_is_valid_showing_failures_only_triggers_trigger = yes custom_tooltip = { text = cannot_take_overt_hostile_actions_against_diarch.tt NOT = { scope:recipient ?= scope:actor.diarch } } } can_send = { scope:actor = { custom_description = { text = "character_interactions_hostile_actions_disabled_delay" NOT = { has_character_flag = flag_hostile_actions_disabled_delay } } trigger_if = { limit = { is_ai = no } scope:recipient = { trigger_if = { limit = { has_government = landless_adventurer_government reverse_has_opinion_modifier = { target = scope:actor modifier = eviction_ignored_opinion } } is_travelling = no } } } trigger_else = { OR = { has_imprisonment_reason = scope:recipient any_character_struggle = { involvement = involved } } } } } is_highlighted = { scope:recipient = { is_imprisoned = no } scope:actor = { OR = { has_imprisonment_reason = scope:recipient has_title = title:e_minister_of_justice } } } #Use hook send_option = { is_valid = { exists = scope:recipient scope:actor = { has_usable_hook = scope:recipient } } flag = hook localization = SCHEME_HOOK } should_use_extra_icon = { scope:actor = { has_usable_hook = scope:recipient } } extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" send_options_exclusive = no cost = { # Usually, this action is free, but during certain diarchies, we want it to cost. prestige = liege_diarchy_surcharge_interaction_imprison_interaction_value treasury = { if = { limit = { scope:actor = { has_title = title:e_minister_of_justice } scope:recipient = { NOT = { is_courtier_of = scope:actor } } } value = { value = 0 desc = BASE } add = { value = scope:actor.major_treasury_value desc = IMPRISON_MINISTER_OF_JUSTICE_TREASURY_COST } } } } on_send = { scope:actor = { add_character_flag = { flag = flag_hostile_actions_disabled_delay days = 10 } } } on_auto_accept = { # the rest of the necessary logic is covered by auto_accept also triggering on_accept below scope:recipient = { trigger_event = char_interaction.0233 } } on_accept = { scope:actor = { if = { limit = { has_title = title:e_minister_of_justice } if = { limit = { NOR = { has_imprisonment_reason = scope:recipient scope:recipient.liege = { has_imprisonment_reason = scope:recipient } scope:hook = yes } any_character_situation = { situation_type = dynastic_cycle situation_top_has_catalyst = catalyst_minister_imprison } } save_scope_value_as = { name = use_strife_not_tyranny value = yes } situation:dynastic_cycle = { trigger_situation_catalyst = { catalyst = catalyst_minister_imprison character = scope:recipient } } } if = { limit = { government_allows = merit } change_merit = { value = minor_merit_gain multiply = scope:recipient.highest_held_title_tier } } if = { limit = { government_has_flag = government_has_influence } change_influence = { value = minor_influence_gain multiply = scope:recipient.highest_held_title_tier } } scope:recipient.liege = { if = { limit = { has_imprisonment_reason = scope:recipient } consume_imprisonment_reasons = scope:recipient } } } } if = { limit = { scope:hook = yes } scope:actor = { use_hook = scope:recipient } } illegal_imprisonment_dread_effect = yes imprison_court_chaplain_consequences_effect = yes imprison_HoF_consequences_effect = yes scope:recipient = { if = { limit = { is_a_faction_member = yes liege = scope:actor } joined_faction = { save_scope_as = retaliating_faction } } } imprison_character_effect = { TARGET = scope:recipient IMPRISONER = scope:actor } # If they recently revoked your title, or asked for your excommunication, they become your rival imprison_attempt_escalates_rivalry_effect = yes scope:actor = { trigger_event = char_interaction.0231 if = { limit = { has_imprisonment_reason = scope:recipient } stress_impact = { compassionate = minor_stress_impact_gain forgiving = minor_stress_impact_gain } } else = { stress_impact = { just = medium_stress_impact_gain compassionate = medium_stress_impact_gain } if = { limit = { exists = scope:retaliating_faction} scope:retaliating_faction = { imprisonment_retribution_start_faction_war_if_valid = yes } } } } if = { limit = { scope:actor = { has_character_flag = flag_hostile_actions_disabled_delay } } scope:actor = { remove_character_flag = flag_hostile_actions_disabled_delay } } # If we're a clan this interaction affects unity if = { # If you don't have an imprisonment reason, and the target is landed, you lose more unity limit = { NOT = { scope:actor = { has_imprisonment_reason = scope:recipient } } scope:recipient = { is_landed_or_landless_administrative = yes } } add_clan_unity_interaction_effect = { CHARACTER = scope:actor TARGET = scope:recipient VALUE = major_unity_loss DESC = clan_unity_imprison.desc REVERSE_NON_HOUSE_TARGET = no } } else_if = { # If you don't have an imprisonment reason, and the target is unlanded, you lose slightly less unity limit = { NOT = { scope:actor = { has_imprisonment_reason = scope:recipient } } scope:recipient = { is_landed_or_landless_administrative = no } } add_clan_unity_interaction_effect = { CHARACTER = scope:actor TARGET = scope:recipient VALUE = medium_unity_loss DESC = clan_unity_imprison.desc REVERSE_NON_HOUSE_TARGET = no } } else = { # If you have a valid reason, you lose only a tiny bit of unity (criminal or not, they are still family) add_clan_unity_interaction_effect = { CHARACTER = scope:actor TARGET = scope:recipient VALUE = minor_unity_loss DESC = clan_unity_imprison.desc REVERSE_NON_HOUSE_TARGET = no } } # Harrying logic. scope:actor = { if = { limit = { character_is_valid_for_harrying_of_the_north_trigger = yes scope:recipient = { character_is_valid_for_harrying_of_the_north_trigger = yes is_important_or_vip_struggle_character = yes } culture != scope:recipient.culture } global_var:harrying_of_the_north = { save_scope_as = story } if = { limit = { character_is_valid_norman_for_harrying_of_the_north_trigger = yes scope:recipient = { character_is_valid_anglo_saxon_for_harrying_of_the_north_trigger = yes } } ep3_increase_pacification_effect = { AMOUNT = harrying_minor_increase_value } } else_if = { limit = { character_is_valid_anglo_saxon_for_harrying_of_the_north_trigger = yes scope:recipient = { character_is_valid_norman_for_harrying_of_the_north_trigger = yes } } ep3_increase_resistance_effect = { AMOUNT = harrying_minor_increase_value } } } } } on_decline = { if = { limit = { scope:recipient = { has_government = landless_adventurer_government reverse_has_opinion_modifier = { target = scope:actor modifier = eviction_ignored_opinion } } } scope:recipient = { if = { limit = { current_military_strength >= ep3_interactions_events_0500_troops_count_value } start_war = { cb = ep3_laamp_apprehend_adventurer_cb target = scope:actor } } else = { # Remove them immediately. remove_laamp_from_exiled_county_automatically_effect = { PROVINCE = scope:recipient.location LAAMP = scope:recipient } } } } else = { scope:actor = { imprison_HoF_consequences_effect = yes imprison_tyranny_effect = yes } scope:recipient = { #If target is count or higher, start war. if = { limit = { is_playable_character = yes primary_title.tier > tier_barony } if = { limit = { is_a_faction_member = yes liege = scope:actor joined_faction = { faction_target = scope:actor NOT = { faction_is_type = populist_faction } } } joined_faction = { save_scope_as = retaliating_faction # For loc imprisonment_retribution_start_faction_war_if_valid = yes } hidden_effect = { if = { limit = { NOT = { exists = joined_faction.faction_war } } war_for_imprison_effect = yes } } } else = { war_for_imprison_effect = yes } } #If target is a baron or unlanded, have them escape. else = { if = { #To block them from being instantly rehired limit = { is_councillor_of = scope:actor can_be_fired_from_council_trigger = { COURT_OWNER = scope:actor } } set_variable = { name = escaped_imprisonment_from value = scope:actor years = 20 } } imprison_court_chaplain_consequences_effect = yes if = { limit = { is_landed_or_landless_administrative = yes } depose_effect = { DEPOSER = scope:actor } } else_if = { limit = { is_hostage = yes warden = scope:actor } save_scope_as = imprison_failure save_scope_as = hostage warden = { save_scope_as = warden } home_court = { save_scope_as = home_court } scope:warden = { trigger_event = bp2_hostage_system.0400 } scope:home_court = { trigger_event = bp2_hostage_system.0401 } return_hostage = yes } else_if = { limit = { is_landed_or_landless_administrative = no trigger_if = { limit = { is_councillor = yes } can_be_fired_from_council_trigger = { COURT_OWNER = scope:recipient.liege } } trigger_if = { limit = { exists = scope:actor.faith.religious_head } scope:actor.faith.religious_head != scope:recipient } } select_and_move_to_pool_effect = yes } add_opinion = { target = scope:actor modifier = attempted_imprisonment_opinion } } } if = { limit = { scope:actor = { has_realm_law_flag = vassal_refusal_is_treason } } scope:actor = { add_opinion = { target = scope:recipient modifier = treasonous_imprison_refusal } } } } #Remove them as guardian/ward for any courtier (feedback given in char_interaction.0230) scope:actor = { if = { limit = { any_courtier = { has_relation_guardian = scope:recipient } } every_courtier = { limit = { has_relation_guardian = scope:recipient } save_scope_as = ward scope:recipient = { remove_relation_ward = scope:ward } scope:ward = { if = { limit = { host != liege } return_to_court = yes } guardian_remove_opinion_effect = { GUARDIAN = scope:recipient WARD = this WARD_LIEGE = scope:actor } } add_to_list = ward_children } } if = { limit = { any_courtier = { has_relation_ward = scope:recipient } } random_courtier = { limit = { has_relation_ward = scope:recipient } save_scope_as = guardian scope:guardian = { remove_relation_ward = scope:recipient } scope:guardian = { if = { limit = { host != liege } return_to_court = yes } guardian_remove_opinion_effect = { GUARDIAN = this WARD = scope:recipient WARD_LIEGE = scope:actor } } add_to_list = guardian_list } hidden_effect = { scope:guardian = { send_interface_message = { type = event_childhood_neutral title = remove_guardian_interaction_notification left_icon = scope:recipient right_icon = scope:guardian remove_guardian_effect = { GUARDIAN = scope:guardian WARD = scope:recipient RETURN_WARD = yes HIDE_OPINION = no } } } } } } scope:actor = { if = { limit = { scope:recipient = { OR = { is_playable_character = no AND = { is_playable_character = yes primary_title.tier = tier_barony } } } } trigger_event = char_interaction.0230 } } if = { limit = { scope:actor = { has_character_flag = flag_hostile_actions_disabled_delay } } scope:actor = { remove_character_flag = flag_hostile_actions_disabled_delay } } # If we're a clan this interaction affects unity if = { # If you don't have an imprisonment reason, and the target is landed, you lose more unity limit = { NOT = { scope:actor = { has_imprisonment_reason = scope:recipient } } scope:recipient = { is_landed_or_landless_administrative = yes } } add_clan_unity_interaction_effect = { CHARACTER = scope:actor TARGET = scope:recipient VALUE = major_unity_loss DESC = clan_unity_imprison.desc REVERSE_NON_HOUSE_TARGET = no } } else_if = { # If you don't have an imprisonment reason, and the target is unlanded, you lose slightly less unity limit = { NOT = { scope:actor = { has_imprisonment_reason = scope:recipient } } scope:recipient = { is_landed_or_landless_administrative = no } } add_clan_unity_interaction_effect = { CHARACTER = scope:actor TARGET = scope:recipient VALUE = medium_unity_loss DESC = clan_unity_imprison.desc REVERSE_NON_HOUSE_TARGET = no } } else = { # If you have a valid reason, you lose only a tiny bit of unity (criminal or not, they are still family) add_clan_unity_interaction_effect = { CHARACTER = scope:actor TARGET = scope:recipient VALUE = miniscule_unity_loss DESC = clan_unity_imprison.desc REVERSE_NON_HOUSE_TARGET = no } } } auto_accept = { # OR does not display properly here trigger_if = { limit = { scope:actor = { has_title = title:e_minister_of_justice } } custom_description = { text = you_are_the_minister_of_justice scope:actor = { has_title = title:e_minister_of_justice } } } trigger_else_if = { limit = { scope:recipient = { is_landed = no any_held_title = { is_noble_family_title = yes } } } custom_description = { text = noble_family_head_cannot_refuse_your_power scope:recipient = { is_landed = no any_held_title = { is_noble_family_title = yes } } } } trigger_else = { always = no } } ai_accept = { base = 0 # Try to make it 0 for most interactions modifier = { add = { value = scope:actor.intrigue multiply = 1 } desc = IMPRISON_INTRIGUE_ACTOR } modifier = { add = { value = scope:recipient.intrigue multiply = -2 } desc = IMPRISON_INTRIGUE_RECIPIENT } modifier = { add = 30 scope:hook = yes desc = SCHEME_HOOK_USED } opinion_modifier = { # Opinion Factor who = scope:recipient opinion_target = scope:actor multiplier = 0.5 desc = AI_OPINION_REASON } ai_value_modifier = { who = scope:recipient ai_boldness = { if = { limit = { scope:recipient = { NOT = { ai_boldness = 0 } } } value = -0.5 } } ai_honor = { if = { limit = { scope:recipient = { #If AI is honorable and the law compels to obey the liege, AI will be more likely to obey. ai_honor > 0 } scope:actor = { has_imprisonment_reason = scope:recipient has_realm_law_flag = vassal_refusal_is_treason } } value = 0.75 } } } modifier = { add = 20 scope:actor = { any_vassal_or_below = { this = scope:recipient } has_realm_law_flag = vassal_refusal_is_treason } desc = AI_REFUSAL_IS_TREASON } modifier = { add = 50 scope:actor = { has_perk = prison_feudal_complex_perk } desc = AI_PRISON_FEUDAL_COMPLEX_PERK } modifier = { #I am a King! desc = offer_vassalization_interaction_aibehavior_hightier_tt scope:recipient = { highest_held_title_tier = tier_kingdom } add = -40 } modifier = { #Courtiers. desc = AI_REFUSAL_COURTIER scope:recipient = { is_ruler = no } add = 50 } modifier = { # Your young children can't really stop you desc = AI_REFUSAL_YOUNG_CHILD scope:recipient = { is_child_of = scope:actor is_courtier_of = scope:actor is_adult = no } add = 200 } modifier = { #They're a claimant against you desc = AI_CLAIMANT_PENALTY scope:actor = { OR = { any_targeting_faction = { faction_type = claimant_faction faction_is_at_war = yes special_character ?= scope:recipient } AND = { exists = var:claimant_faction_sent_demand var:claimant_faction_sent_demand = scope:recipient } } } add = -70 } modifier = { #Rank difference. desc = AI_REFUSAL_RANK_DIFFERENCE scope:recipient = { is_ruler = yes is_landed = yes highest_held_title_tier < tier_kingdom } add = { value = -15 if = { limit = { scope:actor = { tier_difference = { target = scope:recipient value >= 2 } } } add = 5 } if = { limit = { scope:actor = { tier_difference = { target = scope:recipient value >= 3 } } } add = 5 } if = { #King asking Baron, modifier becomes positive. limit = { scope:actor = { tier_difference = { target = scope:recipient value >= 4 } } } add = 10 } } } modifier = { add = intimidated_halved_reason_value scope:recipient = { target_is_liege_or_above = scope:actor has_dread_level_towards = { target = scope:actor level = 1 } } desc = INTIMIDATED_REASON } modifier = { add = cowed_halved_reason_value scope:recipient = { target_is_liege_or_above = scope:actor has_dread_level_towards = { target = scope:actor level = 2 } } desc = COWED_REASON } modifier = { add = intimidated_external_reason_value scope:recipient = { NOT = { target_is_liege_or_above = scope:actor } has_dread_level_towards = { target = scope:actor level = 1 } } desc = INTIMIDATED_REASON } modifier = { add = cowed_external_reason_value scope:recipient = { NOT = { target_is_liege_or_above = scope:actor } has_dread_level_towards = { target = scope:actor level = 2 } } desc = COWED_REASON } modifier = { #Comparative military strength. desc = offer_vassalization_interaction_aibehavior_power_tt trigger = { scope:actor = { is_ruler = yes } scope:recipient = { is_ruler = yes } } add = { value = 1 subtract = { value = scope:recipient.current_military_strength divide = { value = scope:actor.current_military_strength min = 1 } } multiply = 100 min = -1000 # This max needs to match the loc in offer_vassalization_interaction_aibehavior_power_tt max = 20 } } modifier = { #Rivalry modifier. desc = offer_vassalization_interaction_aibehavior_rival_tt trigger = { scope:recipient = { has_relation_rival = scope:actor NOT = { has_relation_nemesis = scope:actor } } } add = -50 } modifier = { #Nemesis modifier. desc = offer_vassalization_interaction_aibehavior_nemesis_tt trigger = { scope:recipient = { has_relation_nemesis = scope:actor } } add = -100 } modifier = { add = 10 scope:actor = { has_royal_court = yes has_dlc_feature = royal_court is_liege_or_above_of = scope:recipient court_grandeur_current_level >= 7 court_grandeur_current_level < 9 } desc = GRANDEUR_REASON } modifier = { add = 20 scope:actor = { has_royal_court = yes has_dlc_feature = royal_court is_liege_or_above_of = scope:recipient court_grandeur_current_level >= 9 } desc = GRANDEUR_REASON } modifier = { # Legalistic tradition desc = tradition_legalistic_name scope:actor = { has_imprisonment_reason = scope:recipient culture = { has_cultural_parameter = vassals_more_likely_accept_punishments } } add = legalistic_vassal_punishment_acceptance } modifier = { # AI Mongols, tyranny wars just delay the inevitable fun! scope:actor = { is_ai = yes OR = { has_trait = greatest_of_khans has_character_modifier = the_great_khan_modifier } } scope:recipient = { is_ai = yes } add = 500 } # Thug accolade increases imprison chance because they scary modifier = { scope:actor = { any_active_accolade = { accolade_parameter = accolade_imprisonment_chance } } desc = THUG_REASON add = accolade_imprisonment_chance_value } modifier = { scope:actor = { any_active_accolade = { accolade_parameter = accolade_imprisonment_chance_high } } desc = THUG_REASON_HIGH add = accolade_imprisonment_chance_value_high } evaluate_action_decreasing_house_unity = { VALUE = 100 } modifier = { add = -25 scope:recipient = { culture = { has_cultural_parameter = vassals_more_likely_to_refuse_demands } } desc = VASSALS_REFUSAL_indomitable_azatani } modifier = { add = 10 scope:recipient = { has_character_modifier = ach_intent_imprisonment_modifier } desc = ach_host_intent_imprison_reason } } # AI ai_targets = { ai_recipients = vassals chance = 0.5 } ai_targets = { ai_recipients = courtiers chance = 0.25 } ai_frequency_by_tier = { barony = 0 county = 36 duchy = 10 kingdom = 10 empire = 10 hegemony = 10 } ai_will_do = { base = -100 modifier = { # Make sure the AI uses hooks for this as it's % based scope:hook = yes add = 1 } modifier = { # Default imprisonment reason weight add = 200 scope:actor = { has_imprisonment_reason = scope:recipient } } modifier = { # More likely to imprison criminal Soryo's if Ritsuryo add = 200 scope:actor = { has_imprisonment_reason = scope:recipient government_has_flag = government_is_japan_administrative } scope:recipient = { government_has_flag = government_is_japan_feudal } } modifier = { # Even more imprisonment reason if you are a danger to the Kampaku add = 400 scope:actor = { primary_title = title:e_japan has_imprisonment_reason = scope:recipient } scope:recipient = { exists = house.house_confederation house.house_confederation.combined_military_strength > scope:actor.current_military_strength } } modifier = { # Avoid Tyranny wars at inopportune times add = -190 scope:actor = { ai_rationality > -100 # Lunatics can do whatever, let the world burn... is_at_war = yes } scope:recipient = { is_playable_character = yes } } modifier = { # Avoid imprisonments in certain circumstances add = -190 scope:actor = { ai_rationality > -100 # Lunatics can do whatever, let the world burn... NOR = { AND = { intrigue > scope:recipient.intrigue intrigue >= 12 } has_perk = prison_feudal_complex_perk scope:recipient = { has_dread_level_towards = { target = scope:actor level >= 1 } } culture = { has_cultural_parameter = vassals_more_likely_accept_punishments } current_military_strength >= scope:recipient.twice_current_military_strength scope:recipient.ai_boldness <= -100 } } scope:recipient = { is_playable_character = yes } } modifier = { # If the AI is not very bold, avoid imprisoning people unless you're more powerful add = -190 scope:actor.ai_rationality > -100 # Lunatics can do whatever, let the world burn... scope:actor.ai_boldness <= 25 scope:actor.current_military_strength < scope:recipient.one_and_a_half_times_current_military_strength } modifier = { # Avoid imprisoning people that would destroy you add = -190 scope:actor.ai_rationality > -100 # Lunatics can do whatever, let the world burn... scope:actor.current_military_strength < scope:recipient.current_military_strength } modifier = { # Do not imprison when the chance of success if exceedingly low add = -190 scope:actor.ai_rationality > -100 # Lunatics can do whatever, let the world burn... scope:recipient = { is_playable_character = yes } NOT = { scope:recipient = { highest_held_title_tier = tier_barony } } scope:actor = { gold < minimum_ai_gold_value_for_tyranny_wars } } modifier = { # Don't imprison people you like scope:actor = { NOT = { has_trait = sadistic } OR = { has_secret_relation_lover = scope:recipient has_relation_lover = scope:recipient has_relation_soulmate = scope:recipient has_relation_friend = scope:recipient has_relation_best_friend = scope:recipient opinion = { target = scope:recipient value > very_high_positive_opinion } } } add = -1000 } modifier = { # Don't imprison your own children... unless they're your rival/nemesis scope:recipient = { is_child_of = scope:actor NOR = { has_relation_rival = scope:actor has_relation_nemesis = scope:actor } } add = -1000 } modifier = { # Don't imprison your spouse, unless they're your rival/have cheated on you scope:recipient = { is_spouse_of = scope:actor NOR = { has_relation_rival = scope:actor has_relation_nemesis = scope:actor exposed_cheating_on_spouse_trigger = { SPOUSE = scope:actor } } } add = -1000 } modifier = { # Try to avoid pointless imprisonments scope:recipient = { NOR = { scope:actor = { # Sadists want people to torture has_trait = sadistic } AND = { # Imprisoning vassals you have revoke reasons on is relevant is_playable_character = yes scope:actor = { has_revoke_title_reason = scope:recipient } } is_a_faction_member = yes has_relation_rival = scope:actor has_relation_nemesis = scope:actor exposed_cheating_on_spouse_trigger = { SPOUSE = scope:actor } scope:actor = { # Scheme Agents should be imprisoned indiscriminately any_targeting_scheme = { hostile_scheme_trigger = yes is_scheme_agent_exposed = scope:recipient } } AND = { # Zealots will imprison characters of other faiths scope:actor.ai_zeal >= medium_positive_ai_value scope:actor.faith != scope:recipient.faith } scope:actor = { has_opinion_modifier = { modifier = murdered_close_family_crime target = scope:recipient } } scope:actor = { has_opinion_modifier = { modifier = attempted_murder_close_family_crime target = scope:recipient } } scope:actor = { has_opinion_modifier = { modifier = executed_close_family target = scope:recipient } } scope:actor = { has_opinion_modifier = { modifier = slept_with_spouse_discovered_opinion target = scope:recipient } } scope:actor = { has_opinion_modifier = { modifier = slept_with_spouse_exposed_opinion target = scope:recipient } } scope:actor = { has_opinion_modifier = { modifier = unfaithful_spouse_discovered_opinion target = scope:recipient } } scope:actor = { has_opinion_modifier = { modifier = unfaithful_spouse_exposed_opinion target = scope:recipient } } scope:actor = { has_opinion_modifier = { modifier = refused_to_renounce_lover_opinion target = scope:recipient } } scope:actor = { has_opinion_modifier = { modifier = betrayed_our_promise target = scope:recipient } } scope:actor = { has_opinion_modifier = { modifier = botched_my_treatment_crime_opinion target = scope:recipient } } scope:actor = { has_opinion_modifier = { modifier = botched_treatment_of_kin_crime_opinion target = scope:recipient } } scope:actor = { has_opinion_modifier = { modifier = smeared_opinion target = scope:recipient } } scope:actor = { has_opinion_modifier = { modifier = insulted_opinion target = scope:recipient } } scope:actor = { has_opinion_modifier = { modifier = mocked_me_in_time_of_need target = scope:recipient } } scope:actor = { has_opinion_modifier = { modifier = loved_one_dungeon_death target = scope:recipient } } scope:actor = { has_opinion_modifier = { modifier = abandoned_me_opinion target = scope:recipient } } scope:actor = { has_opinion_modifier = { modifier = reason_child_died target = scope:recipient } } scope:actor = { has_opinion_modifier = { modifier = falsely_accused target = scope:recipient } } } } add = -1000 } modifier = { exists = scope:recipient.primary_title add = scope:recipient.primary_title.tier } # Agenda impact modifier = { scope:recipient = { is_important_or_vip_struggle_character = yes any_character_struggle = { involvement = involved } } add = { value = 0 if = { limit = { scope:actor = { any_character_struggle = { phase_has_catalyst = catalyst_imprison_important } has_character_flag = agenda_towards_escalation } } add = 200 } else_if = { limit = { scope:actor = { any_character_struggle = { phase_has_catalyst = catalyst_imprison_important } } } add = -100 } } } modifier = { scope:recipient = { has_trait = fp3_struggle_supporter any_character_struggle = { involvement = involved } } add = { value = 0 if = { limit = { scope:actor = { any_character_struggle = { phase_has_catalyst = catalyst_imprison_supporter } has_trait = fp3_struggle_detractor } } add = 200 } else_if = { limit = { scope:actor = { any_character_struggle = { phase_has_catalyst = catalyst_imprison_supporter } } } add = -100 } } } modifier = { scope:recipient = { has_trait = fp3_struggle_detractor any_character_struggle = { involvement = involved } } add = { value = 0 if = { limit = { scope:actor = { any_character_struggle = { phase_has_catalyst = catalyst_imprison_detractor } has_trait = fp3_struggle_supporter } } add = 200 } else_if = { limit = { scope:actor = { any_character_struggle = { phase_has_catalyst = catalyst_imprison_detractor } } } add = -100 } } } # TGP Be more careful with blocs generally house_bloc_tyranny_war_modifiers = yes modifier = { # Avoid triggering Tyranny wars mid-grand activity factor = 0 scope:actor = { has_ongoing_grand_activity_trigger = yes } scope:recipient = { highest_held_title_tier >= tier_county } } evaluate_action_decreasing_house_unity = { VALUE = 100 } } } move_to_dungeon_interaction = { interface_priority = 30 category = interaction_category_prison desc = move_to_dungeon_interaction_desc icon = prison is_shown = { scope:actor = { is_landless_ruler = no } scope:recipient = { is_imprisoned_by = scope:actor is_in_prison_type = house_arrest } } is_valid_showing_failures_only = { scope:recipient = { custom_description = { text = "currently_being_tortured" NOT = { has_character_flag = is_being_tortured } } } tgp_blocked_action_against_tenno_trigger = { ACTOR = scope:actor TARGET = scope:recipient } custom_tooltip = { text = is_currently_being_purged_tt scope:recipient = { NOT = { has_character_flag = is_currently_being_purged } } } } on_accept = { if = { limit = { scope:recipient = { has_character_modifier = allowed_to_go_outside } } scope:recipient = { remove_character_modifier = allowed_to_go_outside } } scope:recipient = { hidden_effect = { change_prison_type = dungeon } trigger_event = prison_notification.1001 custom_tooltip = MOVE_PRISONER_TO_DUNGEON scope:recipient = { every_close_or_extended_family_member = { custom = all_family_members limit = { scope:actor != this } add_opinion = { modifier = family_moved_to_dungeon_opinion target = scope:actor } } } } scope:actor = { stress_impact = { compassionate = medium_stress_impact_gain forgiving = medium_stress_impact_gain } hidden_effect = { send_interface_message = { type = event_prison_neutral title = msg_move_prisoner_to_dungeon right_icon = scope:recipient custom_tooltip = MOVE_PRISONER_TO_DUNGEON } } } # If we're a clan this interaction affects unity add_clan_unity_interaction_effect = { CHARACTER = scope:actor TARGET = scope:recipient VALUE = medium_unity_loss DESC = clan_unity_move_to_dungeon.desc REVERSE_NON_HOUSE_TARGET = no } } auto_accept = yes # AI ai_targets = { ai_recipients = prisoners } ai_frequency_by_tier = { barony = 0 county = 48 duchy = 12 kingdom = 12 empire = 12 hegemony = 12 } ai_potential = { always = yes } ai_will_do = { base = 0 modifier = { add = 100 scope:actor.ai_compassion < medium_positive_ai_value scope:actor = { opinion = { target = scope:recipient value <= high_negative_opinion } } } modifier = { # Family Feud add = 25 trigger = { scope:actor = { house_has_feud_relation_with_trigger = { TARGET = scope:recipient } } } desc = INTERACTION_FAMILY_FEUD_REASON } } } move_to_house_arrest_interaction = { interface_priority = 30 category = interaction_category_prison desc = move_to_house_arrest_interaction_desc icon = prison is_shown = { scope:actor = { is_landless_ruler = no } scope:recipient = { is_imprisoned_by = scope:actor is_in_prison_type = dungeon } } is_valid_showing_failures_only = { scope:recipient = { custom_description = { text = "currently_being_tortured" NOT = { has_character_flag = is_being_tortured } } } custom_tooltip = { text = is_currently_being_purged_tt scope:recipient = { NOT = { has_character_flag = is_currently_being_purged } } } } on_accept = { if = { limit = { scope:recipient = { has_character_modifier = allowed_to_go_outside } } scope:recipient = { remove_character_modifier = allowed_to_go_outside } } if = { limit = { scope:recipient = { has_character_modifier = moldy_gruel_diet } } scope:recipient = { remove_character_modifier = moldy_gruel_diet } } scope:recipient = { hidden_effect = { change_prison_type = house_arrest trigger_event = prison_notification.1002 } custom_tooltip = MOVE_PRISONER_TO_HOUSE_ARREST scope:recipient = { every_close_or_extended_family_member = { custom = all_family_members limit = { scope:actor != this } add_opinion = { modifier = moved_to_house_arrest_opinion target = scope:actor } } } } scope:actor = { stress_impact = { sadistic = medium_stress_impact_gain vengeful = medium_stress_impact_gain } hidden_effect = { send_interface_message = { type = event_prison_neutral title = msg_move_prisoner_to_house_arrest right_icon = scope:recipient custom_tooltip = MOVE_PRISONER_TO_HOUSE_ARREST } } } } auto_accept = yes } ransom_interaction = { interface_priority = 50 common_interaction = no use_diplomatic_range = no category = interaction_category_prison special_interaction = ransom_interaction icon = icon_gold redirect = { scope:recipient = { save_scope_as = secondary_recipient if = { limit = { is_ruler = no exists = liege } liege = { save_scope_as = recipient } } } } desc = ransom_interaction_desc notification_text = { first_valid = { triggered_desc = { trigger = { scope:secondary_recipient = scope:recipient } desc = OFFER_RANSOM_PROPOSAL_PERSONAL } desc = OFFER_RANSOM_PROPOSAL } } is_shown = { scope:secondary_recipient = { #exists = liege is_imprisoned_by = scope:actor } scope:actor != scope:recipient } is_valid_showing_failures_only = { trigger_if = { limit = { scope:invalid = yes } always = no } scope:secondary_recipient = { custom_description = { text = "currently_being_tortured" NOT = { has_character_flag = is_being_tortured } } } cannot_release_former_regent_whilst_old_regent_holds_power_trigger = { PRISONER = scope:recipient REGENT = scope:recipient.var:imprisoned_by_diarch } custom_tooltip = { text = is_currently_being_purged_tt scope:secondary_recipient = { NOT = { has_character_flag = is_currently_being_purged } } } } cost = { influence = { value = 0 if = { limit = { scope:influence_send_option = yes } add = scope:actor.medium_influence_value desc = INFLUENCE_INTERACTION_ACCEPTANCE_SEND_OPTION } } } on_accept = { if = { limit = { scope:recipient = { has_character_modifier = allowed_to_go_outside } } scope:recipient = { remove_character_modifier = allowed_to_go_outside } } if = { limit = { scope:recipient = { has_character_modifier = moldy_gruel_diet } } scope:recipient = { remove_character_modifier = moldy_gruel_diet } } # Set up event scopes and trigger the exchange. if = { limit = { scope:secondary_recipient = { is_imprisoned_by = scope:actor } } # To prevent simultaneous release-shenanigans scope:secondary_recipient = { save_scope_as = prisoner } scope:recipient = { save_scope_as = payer if = { limit = { employs_court_position = person_haggler_camp_officer is_asking_for_gold_in_ransom_trigger = yes } random_court_position_holder = { type = person_haggler_camp_officer save_scope_as = haggler } scope:prisoner = { save_scope_value_as = { name = new_ransom_value value = haggler_ransom_cost_modifier } } custom_tooltip = has_person_haggler_decrease_ransom_cost } # If the recipient doesn't have enough funds to pay the full amount and we're only requesting their current funds, save how much they've agreed to pay. if = { limit = { OR = { exists = scope:current_gold exists = scope:extortionate_current_gold } } save_scope_value_as = { name = ransom_saved_gold_value value = scope:payer.current_gold_value } } } scope:actor = { save_scope_as = imprisoner if = { limit = { employs_court_position = person_haggler_camp_officer is_asking_for_gold_in_ransom_trigger = yes } random_court_position_holder = { type = person_haggler_camp_officer save_scope_as = haggler } scope:recipient = { scope:prisoner = { save_scope_value_as = { name = new_ransom_value value = haggler_ransom_cost_modifier } } custom_tooltip = has_person_haggler_increase_ransom_cost } } #Save scopes for portraits scope:recipient = { save_scope_as = portrait_first } if = { limit = { scope:portrait_first != scope:prisoner } scope:prisoner = { save_scope_as = portrait_second } # Must come after we save the payment value, or the payer won't know how much they need to pay. send_interface_message = { type = event_prison_good title = msg_ransom_prisoner right_icon = scope:portrait_first left_icon = scope:portrait_second ransom_interaction_effect = yes } } else = { # Must come after we save the payment value, or the payer won't know how much they need to pay. send_interface_message = { type = event_prison_good title = msg_ransom_prisoner right_icon = scope:portrait_first ransom_interaction_effect = yes } } # Struggle Catalyst if = { limit = { any_character_struggle = { involvement = involved activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { CATALYST = catalyst_ransom_important CHAR = scope:secondary_recipient } } } every_character_struggle = { involvement = involved limit = { activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { CATALYST = catalyst_ransom_important CHAR = scope:secondary_recipient } } activate_struggle_catalyst = { catalyst = catalyst_ransom_important character = scope:actor } } } } } } on_decline = { # If a player declines this ransom offer, wait 10 years before sending another one (they presumably will ransom that character themselves when they want them back). if = { limit = { scope:recipient = { is_ai = no } } scope:secondary_recipient = { add_character_flag = { flag = character_ransom_refused_by_player years = 10 } } } # Trigger notification event scope:actor = { trigger_event = char_interaction.0131 } } # Pay me an extortionate amount! send_option = { is_shown = { scope:actor = { dynasty ?= { has_dynasty_perk = fp1_pillage_legacy_3 } } scope:recipient ?= { gold >= scope:secondary_recipient.increased_ransom_cost_value } } flag = extortionate_gold localization = "RANSOM_EXTORTIONATE_GOLD_OPTION" } # If you don't have what they're worth, pay me what you have (extort version)! send_option = { is_shown = { scope:actor = { dynasty ?= { has_dynasty_perk = fp1_pillage_legacy_3 } } scope:recipient ?= { gold < scope:secondary_recipient.increased_ransom_cost_value gold >= 1 } } flag = extortionate_current_gold localization = "RANSOM_EXTORTIONATE_CURRENT_GOLD_OPTION" } # Pay me what they're worth! send_option = { is_shown = { scope:actor = { OR = { is_lowborn = yes NOT = { dynasty = { has_dynasty_perk = fp1_pillage_legacy_3 } } } } scope:recipient ?= { gold >= scope:secondary_recipient.ransom_cost_value } } flag = gold localization = "RANSOM_GOLD_OPTION" } # If you don't have what they're worth, pay me what you have! send_option = { is_shown = { scope:actor = { OR = { is_lowborn = yes NOT = { dynasty = { has_dynasty_perk = fp1_pillage_legacy_3 } } } } scope:recipient ?= { gold < scope:secondary_recipient.ransom_cost_value gold >= 1 } } flag = current_gold localization = "RANSOM_CURRENT_GOLD_OPTION" } send_option = { is_shown = { trigger_if = { # in the mass action ransom we only want to do it for gold limit = { exists = scope:mass_action } scope:mass_action = no } } is_valid = { scope:actor = { can_add_hook = { #To match the hook added through ransom_interaction_effect target = scope:recipient type = favor_hook } } } flag = favor localization = "RANSOM_FAVOR_OPTION" } send_option = { # EP3 Influence is_shown = { # Actor must have a government that uses influence trigger_if = { # in the mass action ransom we only want to do it for gold limit = { exists = scope:mass_action } scope:mass_action = no } scope:actor = { government_has_flag = government_has_influence } } is_valid = { # Actor has enough influence scope:actor = { influence >= medium_influence_value } # Both characters are within the same top realm custom_tooltip = { text = not_same_realm_tt scope:recipient.top_liege = scope:actor.top_liege } } flag = influence_send_option localization = TRADE_INFLUENCE_FOR_BETTER_AI_ACCEPTANCE } # MPO Herd send_option = { is_shown = { # Actor must have a government that uses Herd scope:actor = { government_has_flag = government_is_nomadic exists = domicile is_ai = no } # Recipient must care about Herd scope:recipient ?= { government_has_flag = government_is_nomadic exists = domicile } } is_valid = { # Recipient has enough Herd scope:recipient = { domicile.herd >= domicile.medium_herd_value } } flag = herd_send_option localization = RANSOM_HERD_OPTION } localization_values = { EXTORTIONATE_RANSOM_COST = scope:secondary_recipient.increased_ransom_cost_value RANSOM_COST = scope:secondary_recipient.ransom_cost_value CURRENT_GOLD = scope:recipient.gold RANSOM_HERD_COST = ransom_herd_value_recipient } ai_accept = { base = 0 modifier = { # Greedy characters can have their greed get the better of them... add = { value = scope:recipient.ai_greed multiply = -0.5 } scope:recipient.ai_greed >= medium_positive_ai_value OR = { scope:gold = yes scope:extortionate_gold = yes } scope:recipient != scope:secondary_recipient desc = AI_VALUE_MODIFIER_GREED } modifier = { # Generous characters are more willing to pay add = { value = scope:recipient.ai_greed multiply = -0.10 } OR = { scope:gold = yes scope:extortionate_gold = yes } scope:recipient != scope:secondary_recipient scope:recipient.ai_greed <= medium_negative_ai_value desc = AI_VALUE_MODIFIER_GENEROUS } modifier = { add = -10 scope:recipient != scope:secondary_recipient scope:recipient = { NOR = { is_spouse_of = scope:secondary_recipient is_close_or_extended_family_of = scope:secondary_recipient has_relation_lover = scope:secondary_recipient has_relation_friend = scope:secondary_recipient has_secret_relation_lover = scope:secondary_recipient has_relation_soulmate = scope:secondary_recipient has_relation_best_friend = scope:secondary_recipient is_parent_of = scope:secondary_recipient } } desc = "UNIMPORTANT_CHAR_REASON" } modifier = { add = 100 scope:recipient = scope:secondary_recipient desc = "WANTS_FREEDOM_REASON" } modifier = { # Acceptance boon for lovers, friends, etc add = 25 scope:recipient != scope:secondary_recipient scope:recipient = { OR = { is_spouse_of = scope:secondary_recipient is_close_or_extended_family_of = scope:secondary_recipient has_relation_lover = scope:secondary_recipient has_relation_friend = scope:secondary_recipient has_secret_relation_lover = scope:secondary_recipient } NOR = { has_relation_soulmate = scope:secondary_recipient has_relation_best_friend = scope:secondary_recipient is_parent_of = scope:secondary_recipient } } desc = "DEAR_TO_ME_REASON" } modifier = { # Massive acceptance boon for Soulmates and Best Friends add = 200 scope:recipient = { OR = { has_relation_soulmate = scope:secondary_recipient has_relation_best_friend = scope:secondary_recipient is_parent_of = scope:secondary_recipient } NOR = { is_spouse_of = scope:secondary_recipient AND = { NOT = { is_parent_of = scope:secondary_recipient } is_close_or_extended_family_of = scope:secondary_recipient } has_relation_lover = scope:secondary_recipient has_relation_friend = scope:secondary_recipient has_secret_relation_lover = scope:secondary_recipient } } desc = "DEAR_TO_ME_REASON" } modifier = { # Say no to rivals add = -200 scope:recipient = { has_relation_rival = scope:secondary_recipient } desc = "RIVAL_TO_ME_REASON" } modifier = { # Say no to rivals add = -500 scope:recipient = { has_relation_nemesis = scope:secondary_recipient } desc = "NEMESIS_TO_ME_REASON" } modifier = { add = 10 scope:recipient = { NOR = { this = scope:secondary_recipient is_spouse_of = scope:secondary_recipient is_close_or_extended_family_of = scope:secondary_recipient has_relation_lover = scope:secondary_recipient has_relation_soulmate = scope:secondary_recipient has_secret_relation_lover = scope:secondary_recipient } NOR = { has_relation_rival = scope:secondary_recipient has_relation_nemesis = scope:secondary_recipient } } scope:recipient.dynasty = scope:secondary_recipient.dynasty desc = "MY_DYNASTY_REASON" } modifier = { # An Intimidated recipient is significantly more likely to accept an offer from the liege add = intimidated_reason_value trigger = { scope:recipient = { target_is_liege_or_above = scope:actor has_dread_level_towards = { target = scope:actor level = 1 } } } desc = INTIMIDATED_REASON } modifier = { # An Cowed recipient is significantly more likely to accept an offer from the liege add = cowed_reason_value trigger = { scope:recipient = { target_is_liege_or_above = scope:actor has_dread_level_towards = { target = scope:actor level = 2 } } } desc = COWED_REASON } } # AI ai_targets = { ai_recipients = prisoners } ai_frequency_by_tier = { barony = 36 county = 6 duchy = 6 kingdom = 6 empire = 6 hegemony = 6 } ai_potential = { always = yes } ai_will_do = { base = 0 modifier = { add = 100 OR = { OR = { scope:gold = yes scope:extortionate_gold = yes } AND = { scope:recipient = { gold >= 25 } scope:secondary_recipient = { time_in_prison = { years > 1 } } scope:current_gold = yes } } } modifier = { add = ai_greed ai_greed > 0 OR = { scope:gold = yes scope:extortionate_gold = yes } } modifier = { add = -100 has_relation_rival = scope:secondary_recipient } modifier = { add = -300 has_relation_nemesis = scope:secondary_recipient } modifier = { add = 100 scope:favor = yes scope:recipient = { OR = { is_vassal_of = scope:actor liege ?= scope:actor } } } # Struggle Agenda modifier = { scope:secondary_recipient = { any_character_struggle = { involvement = involved } } scope:actor = { any_character_struggle = { involvement = involved } } add = { value = 0 if = { limit = { scope:actor = { any_character_struggle = { phase_has_catalyst = catalyst_ransom_important } has_character_flag = agenda_towards_escalation } } add = -100 } else_if = { limit = { scope:actor = { any_character_struggle = { phase_has_catalyst = catalyst_ransom_important } } } add = 200 } } } modifier = { # Do not ransom at war factor = 0 scope:actor = { is_at_war = yes } } modifier = { # Don't annoy players factor = 0 scope:recipient = { is_ai = no } OR = { scope:recipient = { is_at_war = yes } scope:secondary_recipient = { has_character_flag = character_ransom_refused_by_player } } } #don't ransom if they are tied with a prison break contract, we don't want it invalidating all the time modifier = { factor = 0 scope:secondary_recipient = { has_character_flag = being_prisonbroken_by_laamp } } } # Needs to be after all other send options so we only default to it if everything else is blocked send_option = { is_shown = { # When doing the mass ransom, its possible for no option to be valid for the gold costs, so instead of defaulting wrong we explitly fail it exists = scope:mass_action scope:mass_action = yes } flag = invalid localization = "INVALID" } } #For lieges to ransom their courtiers pay_ransom_interaction = { interface_priority = 50 common_interaction = no use_diplomatic_range = no category = interaction_category_prison icon = icon_gold redirect = { scope:recipient = { save_scope_as = secondary_recipient if = { limit = { exists = imprisoner } imprisoner = { save_scope_as = recipient } } } } desc = pay_ransom_interaction_desc cost = { influence = { value = 0 if = { limit = { scope:influence_send_option = yes } add = scope:actor.medium_influence_value desc = INFLUENCE_INTERACTION_ACCEPTANCE_SEND_OPTION } } } greeting = positive notification_text = PAY_RANSOM_PROPOSAL is_shown = { exists = scope:recipient scope:secondary_recipient = { this != scope:actor is_imprisoned_by = scope:recipient OR = { liege ?= scope:actor # You can ransom anyone you have in your court is_close_family_of = scope:actor # And anyone who is your close family dynasty ?= { # And anyone from your Dynasty this ?= scope:actor.dynasty } any_spouse = { # And anyone married to one of your close kin or dynasty members OR = { is_close_family_of = scope:actor dynasty ?= { this ?= scope:actor.dynasty } } } has_relation_lover = scope:actor # And Lovers has_relation_friend = scope:actor # And Friends } } scope:actor != scope:recipient } is_valid_showing_failures_only = { scope:secondary_recipient = { custom_description = { text = "currently_being_tortured" NOT = { has_character_flag = is_being_tortured } } } cannot_release_former_regent_whilst_old_regent_holds_power_trigger = { PRISONER = scope:recipient REGENT = scope:recipient.var:imprisoned_by_diarch } } on_accept = { # Set up event scopes and trigger the exchange. if = { limit = { scope:secondary_recipient = { is_imprisoned_by = scope:recipient } } scope:secondary_recipient = { save_scope_as = prisoner } scope:recipient = { save_scope_as = imprisoner if = { limit = { employs_court_position = person_haggler_camp_officer is_asking_for_gold_in_ransom_trigger = yes } random_court_position_holder = { type = person_haggler_camp_officer save_scope_as = haggler } custom_tooltip = has_person_haggler_increase_ransom_cost } } scope:actor = { save_scope_as = payer if = { limit = { employs_court_position = person_haggler_camp_officer is_asking_for_gold_in_ransom_trigger = yes } random_court_position_holder = { type = person_haggler_camp_officer save_scope_as = haggler } scope:prisoner = { save_scope_value_as = { name = new_ransom_value value = haggler_ransom_cost_modifier } } custom_tooltip = has_person_haggler_decrease_ransom_cost } # Stress impacts if = { limit = { scope:prisoner = { # Stress impact for random courtiers NOR = { is_vassal_of = scope:actor is_consort_of = scope:actor is_close_family_of = scope:actor dynasty ?= { this ?= scope:actor.dynasty } any_spouse = { OR = { is_close_family_of = scope:actor dynasty ?= { this ?= scope:actor.dynasty } } } has_relation_lover = scope:actor has_relation_friend = scope:actor } } } stress_impact = { compassionate = minor_stress_impact_loss generous = medium_stress_impact_loss } } else_if = { # Stress impact for 'relevant' ransoms; in other words, everyone but random courtiers limit = { scope:prisoner = { OR = { is_vassal_of = scope:actor is_consort_of = scope:actor is_close_family_of = scope:actor dynasty ?= { this ?= scope:actor.dynasty } any_spouse = { OR = { is_close_family_of = scope:actor dynasty ?= { this ?= scope:actor.dynasty } } } has_relation_lover = scope:actor has_relation_friend = scope:actor } } } stress_impact = { compassionate = medium_stress_impact_loss generous = minor_stress_impact_loss just = minor_stress_impact_loss } } if = { # Lustful characters want their lovers back limit = { scope:prisoner = { has_relation_lover = scope:actor } } stress_impact = { lustful = major_stress_impact_loss } } if = { # Loyal characters want to free their friends and lovers limit = { scope:prisoner = { OR = { has_relation_friend = scope:actor has_relation_lover = scope:actor } } } stress_impact = { loyal = major_stress_impact_loss } } if = { # Family should be free! limit = { scope:prisoner = { is_close_family_of = scope:payer } } stress_impact = { family_first = miniscule_stress_impact_loss } } # If the payer doesn't have enough funds to pay the full amount and we're only requesting their current funds, save how much they've agreed to pay. if = { limit = { OR = { exists = scope:current_gold exists = scope:extortionate_current_gold } } save_scope_value_as = { name = ransom_saved_gold_value value = scope:payer.current_gold_value } } # Must come after we save the payment value, or the payer won't know how much they need to pay. trigger_event = char_interaction.0140 } hidden_effect = { scope:prisoner = { send_interface_toast = { type = event_toast_effect_good title = ransomed_by_someone left_icon = scope:payer show_as_tooltip = { scope:imprisoner = { ransom_interaction_effect = yes } } } } scope:prisoner = { if = { limit = { liege ?= { is_ai = no NOR = { this = scope:payer this = scope:imprisoner } OR = { is_close_or_extended_family_of = scope:prisoner is_consort_of = scope:prisoner has_relation_lover = scope:prisoner has_relation_friend = scope:prisoner } } } liege = { save_scope_as = prisoner_liege_scope send_interface_toast = { type = event_toast_effect_good title = ransomed_by_someone_third_party left_icon = scope:payer right_icon = scope:prisoner custom_tooltip = ransomed_by_someone_third_party_desc } } } } } scope:imprisoner = { send_interface_message = { type = event_prison_neutral title = recipient_released_from_prison right_icon = scope:prisoner left_icon = scope:imprisoner ransom_interaction_effect = yes } # Struggle Catalyst if = { limit = { any_character_struggle = { involvement = involved activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { CATALYST = catalyst_ransom_important CHAR = scope:prisoner } } } every_character_struggle = { involvement = involved limit = { activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { CATALYST = catalyst_ransom_important CHAR = scope:prisoner } } activate_struggle_catalyst = { catalyst = catalyst_ransom_important character = scope:imprisoner } } } if = { limit = { fp3_struggle_involves_one_supporter_and_one_detractor = { FIRST = scope:imprisoner SECOND = scope:prisoner } any_character_struggle = { involvement = involved activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { CATALYST = catalyst_ransom_supporter_detractor CHAR = scope:prisoner } } } every_character_struggle = { involvement = involved limit = { activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { CATALYST = catalyst_ransom_supporter_detractor CHAR = scope:prisoner } } activate_struggle_catalyst = { catalyst = catalyst_ransom_supporter_detractor character = scope:imprisoner } log_debug_variable_for_persian_struggle_effect = { VAR = concession_catalyst_ransom_supporter_detractor } } } } if = { limit = { scope:hook = yes } scope:actor = { use_hook = scope:recipient } } } # If we're a clan this interaction affects unity add_clan_unity_interaction_effect = { CHARACTER = scope:actor TARGET = scope:prisoner VALUE = medium_unity_gain DESC = clan_unity_ransom.desc REVERSE_NON_HOUSE_TARGET = no } } on_decline = { # If a player declines this ransom offer, wait 10 years before sending another one (they presumably have reasons for keeping that character in prison). if = { limit = { scope:recipient = { is_ai = no } } scope:secondary_recipient = { add_character_flag = { flag = character_ransom_refused_by_player years = 10 } } } # Trigger notification event scope:actor = { trigger_event = char_interaction.0141 } } send_option = { is_shown = { exists = scope:recipient scope:recipient = { dynasty ?= { has_dynasty_perk = fp1_pillage_legacy_3 } } } is_valid = { exists = scope:recipient scope:actor = { gold >= scope:secondary_recipient.increased_ransom_cost_value } } starts_enabled = { exists = scope:recipient scope:recipient = { dynasty ?= { has_dynasty_perk = fp1_pillage_legacy_3 } } scope:actor = { gold >= scope:secondary_recipient.increased_ransom_cost_value } } flag = extortionate_gold localization = "RANSOM_EXTORTIONATE_GOLD_IMPRISONED_PERSPECTIVE_OPTION" } # If you don't have what they're worth, pay me what you have (extort version)! send_option = { is_shown = { exists = scope:recipient scope:recipient = { dynasty ?= { has_dynasty_perk = fp1_pillage_legacy_3 } } scope:actor = { gold < scope:secondary_recipient.increased_ransom_cost_value gold > 0 } } starts_enabled = { exists = scope:recipient scope:recipient = { dynasty ?= { has_dynasty_perk = fp1_pillage_legacy_3 } } scope:actor = { gold < scope:secondary_recipient.increased_ransom_cost_value gold > 0 } } flag = extortionate_current_gold localization = "RANSOM_EXTORTIONATE_CURRENT_GOLD_IMPRISONED_PERSPECTIVE_OPTION" } send_option = { is_shown = { exists = scope:recipient scope:recipient = { OR = { is_lowborn = yes NOT = { dynasty = { has_dynasty_perk = fp1_pillage_legacy_3 } } } } } is_valid = { exists = scope:recipient scope:actor = { gold >= scope:secondary_recipient.ransom_cost_value } } starts_enabled = { exists = scope:recipient scope:recipient = { OR = { is_lowborn = yes NOT = { dynasty = { has_dynasty_perk = fp1_pillage_legacy_3 } } } } scope:actor = { gold >= scope:secondary_recipient.ransom_cost_value } } flag = gold localization = "RANSOM_GOLD_PAY_OPTION" } # If you don't have what they're worth, pay me what you have! send_option = { is_shown = { exists = scope:recipient scope:recipient = { OR = { is_lowborn = yes NOT = { dynasty = { has_dynasty_perk = fp1_pillage_legacy_3 } } } } scope:actor = { gold < scope:secondary_recipient.ransom_cost_value gold > 0 } } starts_enabled = { exists = scope:recipient scope:recipient = { OR = { is_lowborn = yes NOT = { dynasty = { has_dynasty_perk = fp1_pillage_legacy_3 } } } } scope:actor = { gold < scope:secondary_recipient.ransom_cost_value gold > 0 } } flag = current_gold localization = "RANSOM_CURRENT_PAY_GOLD_OPTION" } send_option = { is_valid = { exists = scope:recipient scope:recipient = { can_add_hook = { #To match the hook added through ransom_interaction_effect target = scope:actor type = favor_hook } } } flag = favor localization = "RANSOM_OWE_FAVOR_OPTION" } send_option = { # EP3 Influence is_shown = { # Actor must have a government that uses influence scope:actor = { government_has_flag = government_has_influence } } is_valid = { # Actor has enough influence scope:actor = { influence >= medium_influence_value } # Both characters are within the same top realm custom_tooltip = { text = not_same_realm_tt scope:recipient.top_liege = scope:actor.top_liege } } flag = influence_send_option localization = TRADE_INFLUENCE_FOR_BETTER_AI_ACCEPTANCE } send_option = { # MPO Herd is_shown = { # Actor must have a government that uses Herd scope:actor = { government_has_flag = government_is_nomadic exists = domicile is_ai = no } # Recipient must care about Herd scope:recipient = { government_has_flag = government_is_nomadic exists = domicile } } is_valid = { # Actor has enough Herd scope:actor = { domicile.herd >= domicile.medium_herd_value } } flag = herd_send_option localization = PAY_FOR_BETTER_AI_ACCEPTANCE } #Use hook send_option = { is_valid = { exists = scope:recipient scope:actor = { has_usable_hook = scope:recipient } } flag = hook localization = SCHEME_HOOK } should_use_extra_icon = { scope:actor = { has_usable_hook = scope:recipient } } extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" send_options_exclusive = no localization_values = { EXTORTIONATE_RANSOM_COST = scope:secondary_recipient.increased_ransom_cost_value RANSOM_COST = scope:secondary_recipient.ransom_cost_value CURRENT_GOLD = scope:actor.gold RANSOM_HERD_COST = ransom_herd_value_actor } ai_accept = { base = 0 modifier = { add = 50 OR = { scope:gold = yes scope:extortionate_gold = yes } desc = "GOLD_POSITIVE_REASON" } modifier = { # Accept more than half the ransom (unless greedy) add = 25 scope:current_gold = yes AND = { scope:actor = { gold >= scope:secondary_recipient.half_ransom_cost_value } NOT = { scope:recipient.ai_greed >= medium_positive_ai_value } } desc = "GOLD_POSITIVE_REASON" } modifier = { # Accept more than half the ransom (unless greedy) add = 25 scope:extortionate_current_gold = yes AND = { scope:actor = { gold >= scope:secondary_recipient.half_increased_ransom_cost_value } NOT = { scope:recipient.ai_greed >= medium_positive_ai_value } } desc = "GOLD_POSITIVE_REASON" } modifier = { add = 50 scope:favor = yes scope:recipient.top_liege = scope:actor.top_liege desc = "FAVOR_POSITIVE_REASON" } modifier = { add = 0 scope:favor = yes scope:recipient.top_liege != scope:actor.top_liege desc = "NO_USE_FOR_A_FAVOR_REASON" } modifier = { # For clarification add = 0 OR = { scope:current_gold = yes scope:extortionate_current_gold = yes } OR = { scope:actor = { gold < scope:secondary_recipient.half_ransom_cost_value } scope:recipient.ai_greed >= medium_positive_ai_value } desc = "WANTS_MORE_GOLD" } modifier = { # Say no to rivals add = -55 scope:recipient = { has_relation_rival = scope:secondary_recipient } desc = "RIVAL_TO_ME_REASON" } modifier = { # Say no to rivals add = -300 scope:recipient = { has_relation_nemesis = scope:secondary_recipient } desc = "NEMESIS_TO_ME_REASON" } modifier = { # At war add = -300 scope:recipient = { is_at_war_with = scope:actor } desc = "IS_AT_WAR_REASON" } modifier = { # At war add = -300 scope:recipient = { is_at_war = yes any_primary_war_enemy = { scope:secondary_recipient = { liege ?= prev } } } desc = "IS_POW_REASON" } modifier = { # At war add = -300 scope:recipient = { is_at_war_with = scope:secondary_recipient } desc = "IS_AT_WAR_WITH_TARGET_REASON" } #opinion_modifier = { # A lot more likely if Recipient likes Actor # who = scope:recipient # opinion_target = scope:actor # multiplier = 1.0 # desc = AI_OPINION_REASON #} #opinion_modifier = { # A lot more likely if Recipient likes secondary_recipient/prisoner # who = scope:recipient # opinion_target = scope:secondary_recipient # multiplier = 1.0 # desc = AI_OPINION_REASON #} modifier = { scope:hook = yes add = 100 desc = SCHEME_WEAK_HOOK_USED } modifier = { # An Intimidated recipient is significantly more likely to accept an offer from the liege add = 40 trigger = { scope:recipient = { target_is_liege_or_above = scope:actor has_dread_level_towards = { target = scope:actor level = 1 } } } desc = INTIMIDATED_REASON } modifier = { # An Cowed recipient is significantly more likely to accept an offer from the liege add = 100 trigger = { scope:recipient = { target_is_liege_or_above = scope:actor has_dread_level_towards = { target = scope:actor level = 2 } } } desc = COWED_REASON } modifier = { add = 25 scope:influence_send_option = yes desc = INFLUENCE_INTERACTION_ACCEPTANCE_SEND_OPTION } modifier = { add = 25 scope:herd_send_option = yes desc = HERD_INTERACTION_ACCEPTANCE_SEND_OPTION } } auto_accept = { custom_description = { text = "spending_hook" subject = scope:actor object = scope:recipient scope:hook = yes scope:actor = { has_strong_hook = scope:recipient } } } # AI ai_targets = { ai_recipients = family ai_recipients = spouses ai_recipients = scripted_relations ai_recipients = liege } ai_targets = { ai_recipients = neighboring_rulers ai_recipients = peer_vassals ai_recipients = top_realm_domicile_owners max = 5 } ai_frequency_by_tier = { barony = 0 county = 6 duchy = 6 kingdom = 6 empire = 6 hegemony = 6 } ai_potential = { gold >= 25 } ai_target_quick_trigger = { prison = yes } ai_will_do = { base = 0 modifier = { add = 100 OR = { scope:gold = yes scope:extortionate_gold = yes AND = { scope:actor = { gold >= 25 } scope:secondary_recipient = { time_in_prison = { years > 1 } } OR = { scope:current_gold = yes scope:extortionate_current_gold = yes } } } } modifier = { add = -100 has_relation_rival = scope:secondary_recipient } modifier = { add = -300 has_relation_nemesis = scope:secondary_recipient } modifier = { add = 100 scope:favor = yes scope:recipient = { OR = { is_vassal_of = scope:actor liege ?= scope:actor } } } modifier = { # Ransom your primary heir first add = 10 OR = { scope:gold = yes scope:extortionate_gold = yes AND = { scope:actor = { gold >= 25 } scope:secondary_recipient = { time_in_prison = { years > 1 } } OR = { scope:current_gold = yes scope:extortionate_current_gold = yes } } AND = { scope:favor = yes scope:recipient = { OR = { is_vassal_of = scope:actor liege ?= scope:actor } } } } scope:secondary_recipient = { is_primary_heir_of = scope:actor } } modifier = { # Only ransom people you care about... unless you're very compassionate factor = 0 ai_compassion < high_positive_ai_value scope:secondary_recipient = { NOR = { is_heir_of = scope:actor is_child_of = scope:actor is_grandchild_of = scope:actor is_great_grandchild_of = scope:actor is_consort_of = scope:actor is_parent_of = scope:actor is_grandparent_of = scope:actor is_great_grandparent_of = scope:actor has_relation_friend = scope:actor has_relation_lover = scope:actor has_secret_relation_lover = scope:actor any_spouse = { OR = { is_heir_of = scope:actor is_child_of = scope:actor is_grandchild_of = scope:actor is_great_grandchild_of = scope:actor is_parent_of = scope:actor is_grandparent_of = scope:actor is_great_grandparent_of = scope:actor has_relation_friend = scope:actor } } } } } modifier = { # If you're very compassionate, well, then you ransom most people you can! factor = 0 ai_compassion >= high_positive_ai_value scope:secondary_recipient = { NOR = { is_heir_of = scope:actor is_close_or_extended_family_of = scope:actor is_consort_of = scope:actor has_relation_friend = scope:actor has_relation_lover = scope:actor has_secret_relation_lover = scope:actor any_spouse = { OR = { is_heir_of = scope:actor is_close_or_extended_family_of = scope:actor has_relation_friend = scope:actor } } } } } modifier = { # If you're very greedy... then they're a little bit more restrictive! factor = 0 ai_greed >= high_positive_ai_value scope:secondary_recipient = { NOR = { # Very Greedy rulers only ransom people in their own realm, or their heir is_courtier_of = scope:actor is_vassal_or_below_of = scope:actor is_heir_of = scope:actor } NOR = { is_heir_of = scope:actor is_close_or_extended_family_of = scope:actor is_consort_of = scope:actor has_relation_friend = scope:actor has_relation_lover = scope:actor has_secret_relation_lover = scope:actor any_spouse = { OR = { is_heir_of = scope:actor is_close_or_extended_family_of = scope:actor has_relation_friend = scope:actor } } } } } # Some exceptions! modifier = { # Lustful characters want to ransom lovers add = 100 has_trait = lustful ai_greed <= 50 scope:secondary_recipient = { has_relation_lover = scope:actor } OR = { scope:gold = yes scope:extortionate_gold = yes AND = { scope:actor = { gold >= 25 } scope:secondary_recipient = { time_in_prison = { years > 1 } } OR = { scope:current_gold = yes scope:extortionate_current_gold = yes } } } } modifier = { # Loyal characters want to ransom their relations add = 100 has_trait = loyal scope:secondary_recipient = { OR = { has_relation_lover = scope:actor has_relation_friend = scope:actor } } OR = { scope:gold = yes scope:extortionate_gold = yes AND = { scope:actor = { gold >= 25 } scope:secondary_recipient = { time_in_prison = { years > 1 } } OR = { scope:current_gold = yes scope:extortionate_current_gold = yes } } } } modifier = { # Certain characters will try to ransom their liege! add = 100 ai_greed <= very_high_negative_ai_value ai_compassion >= very_high_negative_ai_value NOT = { exists = joined_faction } is_at_war = no OR = { has_trait = loyal ai_honor >= high_positive_ai_value } scope:secondary_recipient = { is_liege_or_above_of = scope:actor } OR = { scope:gold = yes scope:extortionate_gold = yes # They won't offer current gold, only full ransoms } } modifier = { # Favors only relevant within the realm add = -100 scope:favor = yes scope:recipient = { NOR = { is_vassal_of = scope:actor liege ?= scope:actor } } } modifier = { # Don't spam the player with cheapskate offers add = -100 scope:current_gold = yes scope:recipient = { is_ai = no } scope:secondary_recipient = { highest_held_title_tier >= tier_duchy } } # Struggle Agenda modifier = { scope:secondary_recipient = { any_character_struggle = { involvement = involved } } scope:actor = { any_character_struggle = { involvement = involved } } add = { value = 0 if = { limit = { scope:actor = { any_character_struggle = { phase_has_catalyst = catalyst_ransom_important } has_character_flag = agenda_towards_escalation } } add = -100 } else_if = { limit = { scope:actor = { any_character_struggle = { phase_has_catalyst = catalyst_ransom_important } } } add = 200 } } } evaluate_action_increasing_house_unity = { VALUE = 100 } modifier = { # Don't give away prisoners for free factor = 0 NOR = { scope:favor = yes scope:extortionate_gold = yes scope:extortionate_current_gold = yes scope:gold = yes AND = { scope:actor = { gold >= 25 } scope:current_gold = yes } } } modifier = { # Don't annoy players factor = 0 scope:recipient = { is_ai = no } OR = { scope:recipient = { is_at_war = yes } scope:secondary_recipient = { has_character_flag = character_ransom_refused_by_player } } } #don't ransom prisoners that are tied with a prison break contract, we don't want it invalidating all the time modifier = { factor = 0 scope:secondary_recipient = { has_character_flag = being_prisonbroken_by_laamp } } } } #To ransom yourself ransom_me_interaction = { interface_priority = 50 common_interaction = yes use_diplomatic_range = no category = interaction_category_prison icon = icon_gold greeting = positive notification_text = PAY_RANSOM_PROPOSAL_PERSONAL desc = ransom_me_interaction_desc redirect = { # So that users can ransom themselves by clicking on their portrait if = { limit = { scope:actor = scope:recipient exists = scope:actor.imprisoner } scope:actor.imprisoner = { save_scope_as = recipient } } } is_shown = { scope:actor = { is_imprisoned_by = scope:recipient } } is_valid_showing_failures_only = { scope:actor = { custom_description = { text = "currently_being_tortured" NOT = { has_character_flag = is_being_tortured } } } cannot_release_former_regent_whilst_old_regent_holds_power_trigger = { PRISONER = scope:recipient REGENT = scope:recipient.var:imprisoned_by_diarch } custom_tooltip = { text = is_currently_being_purged_tt scope:recipient = { NOT = { has_character_flag = is_currently_being_purged } } } } on_accept = { if = { limit = { scope:actor = { is_imprisoned_by = scope:recipient } } scope:actor = { save_scope_as = prisoner } scope:recipient = { save_scope_as = imprisoner } scope:actor = { save_scope_as = payer if = { limit = { employs_court_position = person_haggler_camp_officer is_asking_for_gold_in_ransom_trigger = yes } random_court_position_holder = { type = person_haggler_camp_officer save_scope_as = haggler } save_scope_value_as = { name = new_ransom_value value = haggler_ransom_cost_modifier } custom_tooltip = has_person_haggler_decrease_ransom_cost } # If the payer doesn't have enough funds to pay the full amount and we're only requesting their current funds, save how much they've agreed to pay. if = { limit = { OR = { exists = scope:current_gold exists = scope:extortionate_current_gold } } save_scope_value_as = { name = ransom_saved_gold_value value = scope:payer.current_gold_value } } # Must come after we save the payment value, or the payer won't know how much they need to pay. trigger_event = char_interaction.0150 } scope:imprisoner = { if = { limit = { employs_court_position = person_haggler_camp_officer is_asking_for_gold_in_ransom_trigger = yes } random_court_position_holder = { type = person_haggler_camp_officer save_scope_as = haggler } scope:actor = { custom_tooltip = has_person_haggler_increase_ransom_cost } } send_interface_message = { type = event_prison_neutral title = recipient_released_from_prison right_icon = scope:prisoner left_icon = scope:imprisoner ransom_interaction_effect = yes } # Struggle Catalyst if = { limit = { any_character_struggle = { involvement = involved activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { CATALYST = catalyst_ransom_important CHAR = scope:prisoner } } } every_character_struggle = { involvement = involved limit = { activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { CATALYST = catalyst_ransom_important CHAR = scope:prisoner } } activate_struggle_catalyst = { catalyst = catalyst_ransom_important character = scope:imprisoner } } } } if = { limit = { always = scope:hook } scope:actor = { use_hook = scope:recipient } } } } on_decline = { # If a player declines this ransom offer, wait 10 years before sending another one (they presumably have reasons for keeping you in prison). if = { limit = { scope:recipient = { is_ai = no } } scope:actor = { add_character_flag = { flag = character_ransom_refused_by_player years = 10 } } } # Trigger notification event scope:actor = { trigger_event = char_interaction.0151 } } cost = { influence = { value = 0 if = { limit = { scope:influence_send_option = yes } add = scope:actor.medium_influence_value desc = INFLUENCE_INTERACTION_ACCEPTANCE_SEND_OPTION } } } send_option = { is_shown = { exists = scope:recipient scope:recipient = { dynasty ?= { has_dynasty_perk = fp1_pillage_legacy_3 } } } is_valid = { scope:actor = { gold >= increased_ransom_cost } } flag = extortionate_gold localization = "RANSOM_EXTORTIONATE_GOLD_IMPRISONED_PERSPECTIVE_OPTION" } # If you don't have what they're worth, pay me what you have (extort version)! send_option = { is_shown = { exists = scope:recipient scope:recipient = { dynasty ?= { has_dynasty_perk = fp1_pillage_legacy_3 } } scope:actor = { gold < increased_ransom_cost gold > 0 } } flag = extortionate_current_gold localization = "RANSOM_EXTORTIONATE_CURRENT_GOLD_IMPRISONED_PERSPECTIVE_OPTION" } send_option = { is_shown = { exists = scope:recipient scope:recipient = { OR = { is_lowborn = yes NOT = { dynasty = { has_dynasty_perk = fp1_pillage_legacy_3 } } } } } is_valid = { scope:actor = { gold >= ransom_cost } } flag = gold localization = "RANSOM_GOLD_OPTION" } # If you don't have what they're worth, pay me what you have! send_option = { is_shown = { exists = scope:recipient scope:recipient = { OR = { is_lowborn = yes NOT = { dynasty = { has_dynasty_perk = fp1_pillage_legacy_3 } } } } scope:actor = { gold < ransom_cost gold > 0 } } flag = current_gold localization = "RANSOM_CURRENT_GOLD_OPTION" } send_option = { is_valid = { scope:recipient = { can_add_hook = { #To match the hook added through ransom_interaction_effect target = scope:actor type = favor_hook } } } flag = favor localization = "RANSOM_FAVOR_OPTION" } send_option = { # EP3 Influence is_shown = { # Actor must have a government that uses influence scope:actor = { government_has_flag = government_has_influence } } is_valid = { # Actor has enough influence scope:actor = { influence >= medium_influence_value } # Both characters are within the same top realm custom_tooltip = { text = not_same_realm_tt scope:recipient.top_liege = scope:actor.top_liege } } flag = influence_send_option localization = TRADE_INFLUENCE_FOR_BETTER_AI_ACCEPTANCE } send_option = { # MPO Herd is_shown = { # Actor must have a government that uses Herd scope:actor = { government_has_flag = government_is_nomadic exists = domicile } # Recipient must care about Herd scope:recipient = { government_has_flag = government_is_nomadic exists = domicile } } is_valid = { # Actor has enough Herd scope:actor = { domicile.herd >= domicile.medium_herd_value } } flag = herd_send_option localization = PAY_FOR_BETTER_AI_ACCEPTANCE } #Use hook send_option = { is_valid = { scope:actor = { has_usable_hook = scope:recipient } } flag = hook localization = SCHEME_HOOK } should_use_extra_icon = { scope:actor = { has_usable_hook = scope:recipient } } extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" send_options_exclusive = no localization_values = { EXTORTIONATE_RANSOM_COST = scope:actor.increased_ransom_cost_value RANSOM_COST = scope:actor.ransom_cost_value CURRENT_GOLD = scope:actor.gold RANSOM_HERD_COST = ransom_herd_value_actor } ai_accept = { base = 0 modifier = { add = 50 OR = { scope:gold = yes scope:extortionate_gold = yes } desc = "GOLD_POSITIVE_REASON" } modifier = { # Accept more than half the ransom (unless greedy) add = 25 scope:current_gold = yes AND = { scope:actor = { gold >= half_ransom_cost_value } NOT = { scope:recipient.ai_greed >= medium_positive_ai_value } } desc = "GOLD_POSITIVE_REASON" } modifier = { # Accept more than half the ransom (unless greedy) add = 25 scope:extortionate_current_gold = yes AND = { scope:actor = { gold >= half_increased_ransom_cost_value } NOT = { scope:recipient.ai_greed >= medium_positive_ai_value } } desc = "GOLD_POSITIVE_REASON" } modifier = { add = 50 scope:favor = yes scope:recipient.top_liege = scope:actor.top_liege desc = "FAVOR_POSITIVE_REASON" } modifier = { add = -50 scope:favor = yes NOR = { scope:gold = yes scope:extortionate_gold = yes } OR = { scope:recipient.top_liege != scope:actor.top_liege scope:recipient.ai_greed >= medium_positive_ai_value } desc = "NO_USE_FOR_A_FAVOR_REASON" } modifier = { # For clarification add = 0 OR = { scope:current_gold = yes scope:extortionate_current_gold = yes } OR = { scope:actor = { gold < half_ransom_cost_value } scope:recipient.ai_greed >= medium_positive_ai_value } desc = "WANTS_MORE_GOLD" } #opinion_modifier = { # A lot more likely if Recipient likes Actor # who = scope:recipient # opinion_target = scope:actor # multiplier = 1.0 # desc = AI_OPINION_REASON #} modifier = { # Say no to rivals add = -55 scope:recipient = { has_relation_rival = scope:actor } desc = "ACTOR_RIVAL_TO_ME_REASON" } modifier = { # Say no to nemesis add = -300 scope:recipient = { has_relation_nemesis = scope:actor } desc = "ACTOR_NEMESIS_TO_ME_REASON" } modifier = { # At war add = -300 scope:recipient = { is_at_war_with = scope:actor } desc = "IS_AT_WAR_REASON" } modifier = { scope:hook = yes add = 100 desc = SCHEME_WEAK_HOOK_USED } modifier = { # An Intimidated recipient is significantly more likely to accept an offer from the liege add = intimidated_reason_value trigger = { scope:recipient = { target_is_liege_or_above = scope:actor has_dread_level_towards = { target = scope:actor level = 1 } } } desc = INTIMIDATED_REASON } modifier = { # A Cowed recipient is significantly more likely to accept an offer from the liege add = cowed_reason_value trigger = { scope:recipient = { target_is_liege_or_above = scope:actor has_dread_level_towards = { target = scope:actor level = 2 } } } desc = COWED_REASON } modifier = { # Family Feud add = -50 trigger = { scope:recipient = { house_has_feud_relation_with_trigger = { TARGET = scope:actor } } } desc = INTERACTION_FAMILY_FEUD_REVERSE_REASON } modifier = { add = 25 scope:influence_send_option = yes desc = INFLUENCE_INTERACTION_ACCEPTANCE_SEND_OPTION } modifier = { add = 25 scope:herd_send_option = yes desc = HERD_INTERACTION_ACCEPTANCE_SEND_OPTION } } auto_accept = { custom_description = { text = "spending_hook" subject = scope:actor object = scope:recipient scope:hook = yes scope:actor = { has_strong_hook = scope:recipient } } } # AI ai_frequency_by_tier = { barony = 72 county = 24 duchy = 24 kingdom = 12 empire = 12 hegemony = 12 } ai_targets = { ai_recipients = self } ai_potential = { always = yes } ai_will_do = { base = 0 modifier = { add = 100 OR = { scope:gold = yes scope:extortionate_gold = yes AND = { scope:actor = { gold >= 25 } OR = { time_in_prison = { years > 1 } has_trait = impatient #LET ME OUT! I want out! NOW! } OR = { scope:current_gold = yes scope:extortionate_current_gold = yes } } scope:herd_send_option = yes } } modifier = { add = 100 scope:favor = yes scope:recipient = { OR = { is_vassal_of = scope:actor liege ?= scope:actor } } } modifier = { add = -100 scope:favor = yes scope:recipient = { NOR = { is_vassal_of = scope:actor liege ?= scope:actor } } } # Struggle Agenda modifier = { scope:recipient = { any_character_struggle = { involvement = involved } } scope:actor = { any_character_struggle = { involvement = involved } } add = { value = 0 if = { limit = { scope:actor = { any_character_struggle = { phase_has_catalyst = catalyst_ransom_important } has_character_flag = agenda_towards_escalation } } add = -100 } else_if = { limit = { scope:actor = { any_character_struggle = { phase_has_catalyst = catalyst_ransom_important } } } add = 200 } } } modifier = { # Don't give away prisoners for free factor = 0 NOR = { scope:favor = yes scope:gold = yes scope:extortionate_gold = yes scope:current_gold = yes scope:herd_send_option = yes AND = { scope:actor = { gold >= 25 } scope:current_gold = yes } } } modifier = { # Don't annoy players factor = 0 scope:recipient = { is_ai = no } OR = { scope:recipient = { is_at_war = yes } scope:actor = { has_character_flag = character_ransom_refused_by_player } } } #don't do it if you are tied with a prison break contract, we don't want it invalidating all the time modifier = { factor = 0 scope:actor = { has_character_flag = being_prisonbroken_by_laamp } } } } release_from_prison_interaction = { interface_priority = 30 common_interaction = yes category = interaction_category_prison special_interaction = release_from_prison_interaction icon = prison desc = release_from_prison_interaction_desc notification_text = { first_valid = { triggered_desc = { trigger = { scope:demand_conversion = no scope:renounce_claims = no scope:banish = no scope:take_vows = no scope:recruit = no scope:disfigure = no scope:blind = no scope:castrate = no } desc = RELEASE_PRISONER_OFFER } desc = RELEASE_PRISONER_OFFER_CONDITIONAL } } is_shown = { scope:recipient = { is_imprisoned_by = scope:actor } } is_valid_showing_failures_only = { scope:recipient = { custom_description = { text = "currently_being_tortured" NOT = { has_character_flag = is_being_tortured } } } cannot_release_former_regent_whilst_old_regent_holds_power_trigger = { PRISONER = scope:recipient REGENT = scope:recipient.var:imprisoned_by_diarch } custom_tooltip = { text = is_currently_being_purged_tt scope:recipient = { NOT = { has_character_flag = is_currently_being_purged } } } } on_accept = { if = { limit = { scope:recipient = { has_character_modifier = allowed_to_go_outside } } scope:recipient = { remove_character_modifier = allowed_to_go_outside } } if = { limit = { scope:recipient = { has_character_modifier = moldy_gruel_diet } } scope:recipient = { remove_character_modifier = moldy_gruel_diet } } if = { limit = { scope:recipient = { is_imprisoned_by = scope:actor } } scope:recipient = { # Demand Conversion if = { limit = { scope:demand_conversion = yes } demand_conversion_interaction_effect = yes add_opinion = { modifier = demanded_my_conversion_opinion target = scope:actor } # Struggle Catalyst if = { limit = { scope:actor = { any_character_struggle = { involvement = involved activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { CATALYST = catalyst_demanding_important_conversion CHAR = scope:recipient } } } } scope:actor = { every_character_struggle = { involvement = involved limit = { activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { CATALYST = catalyst_demanding_important_conversion CHAR = scope:recipient } } activate_struggle_catalyst = { catalyst = catalyst_demanding_important_conversion character = scope:actor } } } } } # Banish Landed Character if = { limit = { scope:banish = yes scope:recipient = { is_landed_or_landless_administrative = yes } } banish_effect = { BANISHER = scope:actor } if = { limit = { NOT = { scope:actor = { has_banish_reason = scope:recipient } } } scope:actor = { add_tyranny = banishment_tyranny_gain } } add_opinion = { modifier = banished_me target = scope:actor } } # Banish Unlanded Character else_if = { limit = { AND = { scope:banish = yes scope:recipient = { is_landless_adventurer = no is_pool_character = no # It is possible for them to end up in the pool between the interaction being sent, and it being accepted } } } if = { limit = { this.gold > 0 NOR = { has_character_flag = realm_priest has_character_flag = was_bookmaker } } pay_short_term_gold = { target = scope:actor gold = this.gold } } if = { limit = { has_any_artifact = yes } every_character_artifact = { set_owner = { target = scope:actor history = { location = scope:recipient.location actor = scope:recipient recipient = scope:actor type = stolen } } scope:actor = { if = { limit = { NOT = { has_variable = stolen_artifact } } set_variable = { name = stolen_artifact value = 1 } } else = { change_variable = { name = stolen_artifact add = 1 } } } } } banish = yes add_opinion = { modifier = banished_me target = scope:actor } } # 'Banish' Pool Character else_if = { limit = { AND = { scope:banish = yes scope:recipient = { is_playable_character = no is_pool_character = yes # They'll just leave for the pool } } } if = { limit = { this.gold > 0 } pay_short_term_gold = { target = scope:actor gold = this.gold } } add_opinion = { modifier = banished_me target = scope:actor } } # Recruit Character if = { limit = { scope:recruit = yes } if = { limit = { scope:actor = { culture = { has_cultural_parameter = can_recruit_prisoners_easily } } } add_opinion = { modifier = loyal_servant target = scope:actor } scope:actor = { if = { limit = { can_add_hook = { target = scope:recipient type = loyalty_hook } } add_hook = { type = loyalty_hook target = scope:recipient } } } } else = { add_opinion = { modifier = demanded_recruitment target = scope:actor } } scope:actor = { if = { limit = { AND = { scope:actor.faith = { has_doctrine = tenet_communal_possessions } scope:recipient = { has_trait = peasant_leader } } } scope:actor = { add_piety = medium_piety_gain } } } scope:actor = { add_courtier = scope:recipient } } # Renounce Claims if = { limit = { scope:renounce_claims = yes } add_opinion = { modifier = demanded_claim_renouncement target = scope:actor } scope:recipient = { every_claim = { explicit = yes limit = { save_temporary_scope_as = temp_claim OR = { holder = scope:actor AND = { exists = holder NOT = { prev = { target_is_liege_or_above = scope:actor } } holder = { target_is_liege_or_above = scope:actor } } scope:actor = { any_held_title = { is_de_jure_liege_or_above_target = scope:temp_claim } } } } scope:recipient = { remove_claim = prev } } } } # Gain Hook if = { limit = { scope:gain_hook = yes } add_opinion = { modifier = demanded_hook target = scope:actor } scope:actor = { add_hook = { #Hook effect must match gain_hook option condition target = scope:recipient type = favor_hook } } } # Take Vows if = { limit = { scope:take_vows = yes } send_child_to_clergy_effect = yes #Does Byzan go hay-wire with deposing vassals? if = { limit = { scope:actor = { is_ai = yes culture = { has_cultural_pillar = heritage_byzantine } } } debug_log = debug_ai_byzan_forced_vows_on_prison_release debug_log_scopes = yes } #Does the AI in general go haywire with deposing prisoners? else_if = { limit = { scope:actor = { is_ai = yes } } debug_log = debug_ai_forced_vows_on_prison_release debug_log_scopes = yes } } # Become Executioner if = { limit = { scope:become_executioner = yes } release_as_executioner_effect = yes } # Disfigure if = { limit = { scope:disfigure = yes } scope:recipient = { add_character_flag = { flag = is_being_tortured months = 6 # Players in MP can keep the event window open... } } blind_castrate_and_disfigure_effect = yes #Stress & dread show_as_tooltip = { scope:recipient = { add_trait = disfigured } } torture_blind_castrate_disfigure_opinion_effect = { VERB = disfigured } scope:actor = { trigger_event = { id = prison.1030 days = 1 } } } # Blind if = { limit = { scope:blind = yes } scope:recipient = { add_character_flag = { flag = is_being_tortured months = 6 # Players in MP can keep the event window open... } } blind_castrate_and_disfigure_effect = yes #Stress & dread show_as_tooltip = { scope:recipient = { add_trait = blind } } # Merciful Blindings scope:actor = { if = { limit = { culture = { has_cultural_parameter = merciful_blinding } OR = { has_execute_reason = scope:recipient has_banish_reason = scope:recipient } } add_piety = medium_piety_gain } } torture_blind_castrate_disfigure_opinion_effect = { VERB = blinded } scope:actor = { trigger_event = { id = prison.1020 days = 1 } } # If we're a clan this interaction affects unity if = { limit = { scope:actor.culture = { has_cultural_parameter = merciful_blinding } } # If actor's culture has Merciful Blindings, they lose less unity add_clan_unity_interaction_effect = { CHARACTER = scope:actor TARGET = scope:recipient VALUE = minor_unity_loss DESC = clan_unity_blinding.desc REVERSE_NON_HOUSE_TARGET = no } } else = { add_clan_unity_interaction_effect = { CHARACTER = scope:actor TARGET = scope:recipient VALUE = medium_unity_loss DESC = clan_unity_blinding.desc REVERSE_NON_HOUSE_TARGET = no } } } # Castrate if = { limit = { scope:castrate = yes } scope:recipient = { add_character_flag = { flag = is_being_tortured months = 6 # Players in MP can keep the event window open... } } blind_castrate_and_disfigure_effect = yes #Stress & dread show_as_tooltip = { scope:recipient = { if = { limit = { age < 12 } ep3_child_castration_effect = yes } else = { ep3_youth_castration_effect = yes } } } torture_blind_castrate_disfigure_opinion_effect = { VERB = castrated } scope:actor = { trigger_event = { id = prison.1025 days = 1 } } # If we're a clan this interaction affects unity add_clan_unity_interaction_effect = { CHARACTER = scope:actor TARGET = scope:recipient VALUE = major_unity_loss DESC = clan_unity_abelarding.desc REVERSE_NON_HOUSE_TARGET = no } } # Demand Admin if = { limit = { scope:demand_admin = yes } scope:recipient = { change_to_administrative_effect = yes } } # Shared Torture effects if = { limit = { OR = { scope:disfigure = yes scope:blind = yes scope:castrate = yes } } scope:recipient.house ?= { change_house_relation_effect = { HOUSE = scope:actor.house VALUE = house_relation_damage_medium_value REASON = torture CHAR = scope:actor TARGET_CHAR = scope:recipient TITLE = scope:dummy_gender } } } # No Demands Added if = { limit = { scope:demand_conversion = no scope:renounce_claims = no scope:banish = no scope:gain_hook = no scope:take_vows = no scope:become_executioner = no scope:recruit = no scope:disfigure = no scope:blind = no scope:castrate = no scope:demand_admin = no } # Notification to the imprisoner scope:actor = { send_interface_toast = { type = event_toast_effect_neutral title = recipient_released_from_prison left_icon = scope:recipient scope:recipient = { add_opinion = { modifier = released_from_prison target = scope:actor } } } house ?= { change_house_relation_effect = { HOUSE = scope:recipient.house VALUE = house_relation_improve_medium_value REASON = prison_released CHAR = scope:actor TARGET_CHAR = scope:recipient TITLE = scope:dummy_gender } } add_dread = minor_dread_loss stress_impact = { sadistic = medium_stress_impact_gain callous = minor_stress_impact_gain } # Struggle impact if = { limit = { any_character_struggle = { involvement = involved OR = { has_struggle_phase_parameter = release_prisoner_diff_culture_gives_prestige has_struggle_phase_parameter = release_prisoner_diff_faith_gives_prestige } } is_diff_faith_or_culture_trigger = { CHAR = scope:recipient STATUS = involved } } add_prestige = medium_prestige_gain } # Struggle Catalyst if = { limit = { any_character_struggle = { involvement = involved activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { CATALYST = catalyst_release_important CHAR = scope:recipient } } } every_character_struggle = { involvement = involved limit = { activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { CATALYST = catalyst_release_important CHAR = scope:recipient } } activate_struggle_catalyst = { catalyst = catalyst_release_important character = scope:actor } } } if = { limit = { fp3_struggle_involves_one_supporter_and_one_detractor = { FIRST = scope:actor SECOND = scope:recipient } any_character_struggle = { involvement = involved activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { CATALYST = catalyst_release_supporter_detractor CHAR = scope:recipient } } } every_character_struggle = { involvement = involved limit = { activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { CATALYST = catalyst_release_supporter_detractor CHAR = scope:recipient } } activate_struggle_catalyst = { catalyst = catalyst_release_supporter_detractor character = scope:actor } log_debug_variable_for_persian_struggle_effect = { VAR = concession_catalyst_release_supporter_detractor } } } } # If we're a clan (and not making any demands) this interaction affects unity add_clan_unity_interaction_effect = { CHARACTER = scope:actor TARGET = scope:recipient VALUE = minor_unity_gain DESC = clan_unity_released_from_own_prison.desc REVERSE_NON_HOUSE_TARGET = no } # LEGITIMACY GAIN FROM RELEASING DUKES AND ABOVE if = { limit = { exists = scope:recipient.primary_title scope:recipient.primary_title.tier >= tier_duchy } # Minus 2, since we want Duchy to be 1, and it's normally 3 save_scope_value_as = { name = title_tier_minus_2 value = { value = scope:recipient.primary_title.tier subtract = 2 } } scope:actor = { send_interface_toast = { type = msg_legitimacy_gain title = legitimacy_gain_toast left_icon = scope:actor right_icon = scope:recipient add_legitimacy = { value = { value = miniscule_legitimacy_gain multiply = scope:title_tier_minus_2 } } } } } } else = { scope:actor = { trigger_event = char_interaction.0160 } } # If a child was imprisoned due to yearly_4021 they'll come back to say hi if = { limit = { exists = var:marked_for_revenge_in_event_yearly_4021 } add_opinion = { modifier = abandoned_me_opinion target = var:marked_for_revenge_in_event_yearly_4021 } if = { limit = { var:marked_for_revenge_in_event_yearly_4021 = { is_alive = yes is_ai = no } } save_scope_as = child if = { limit = { #Make sure they're sadistic! NOT = { has_trait = sadistic } number_of_personality_traits < personality_trait_limit } add_trait = sadistic } var:marked_for_revenge_in_event_yearly_4021 = { add_character_flag = { #TO make sure that they don't get spammed about the release flag = block_for_prison_release_notification days = 10 } trigger_event = yearly.4022 } remove_variable = marked_for_revenge_in_event_yearly_4021 } } if = { limit = { is_imprisoned = yes # Release is handled in follow-up events scope:disfigure = no scope:blind = no scope:castrate = no } release_from_prison = yes } } # FP3 - If prisoner is important for war scope:actor = { # FP3 if = { limit = { exists = scope:recipient.house any_character_war = { using_cb = fp3_free_house_member_cb is_defender = scope:actor primary_attacker.house = scope:recipient.house } } random_character_war = { limit = { using_cb = fp3_free_house_member_cb is_defender = scope:actor primary_attacker.house = scope:recipient.house } primary_attacker = { hidden_effect = { send_interface_message = { type = event_war_good title = lesson_war_final_notes_victory_step_1 left_icon = scope:recipient right_icon = scope:actor show_as_tooltip = { scope:recipient = { release_from_prison = yes } add_prestige = major_prestige_gain prev.primary_defender = { add_prestige = major_prestige_loss } } } } add_prestige = major_prestige_gain prev.primary_defender = { add_prestige = major_prestige_loss } } } } } } } on_decline = { scope:actor = { trigger_event = char_interaction.0161 } } send_option = { flag = demand_conversion localization = "RELEASE_DEMAND_CONVERSION" is_shown = { scope:recipient.faith != scope:actor.faith } is_valid = { trigger_if = { limit = { scope:actor = { is_ai = yes } } scope:recipient = { OR = { is_close_or_extended_family_of = scope:actor is_vassal_of = scope:actor } } } # Cannot ask Landed Rulers to convert if they're not your vassal custom_description = { text = cannot_demand_unsubordinate_landed_ruler_conversion scope:recipient = { trigger_if = { limit = { is_playable_character = yes } is_vassal_or_below_of = scope:actor } } } # Cannot ask Religious Heads to convert custom_description = { text = cannot_demand_religious_head_conversion NAND = { exists = scope:recipient.faith.religious_head scope:recipient.faith.religious_head = scope:recipient } } # Cannot ask Holy Order Master to convert custom_description = { text = cannot_demand_holy_order_master_conversion NAND = { exists = scope:recipient.faith scope:recipient.faith = { any_faith_holy_order = { leader = scope:recipient } } } } } } send_option = { flag = renounce_claims localization = RELEASE_RENOUNCE_CLAIMS is_shown = { custom_description = { text = "release_renounce_claims" subject = scope:recipient scope:recipient = { any_claim = { explicit = yes save_temporary_scope_as = temp_claim OR = { holder = scope:actor AND = { NOT = { prev = { target_is_liege_or_above = scope:actor } } trigger_if = { limit = { exists = holder } holder = { target_is_liege_or_above = scope:actor } } } scope:actor = { any_held_title = { is_de_jure_liege_or_above_target = scope:temp_claim } } } } } } } current_description = { desc = RELEASE_RENOUNCE_CLAIMS_DESC } } send_option = { flag = banish localization = "RELEASE_BANISH" is_shown = { trigger_if = { limit = { scope:actor = { is_ai = yes } } scope:recipient = { OR = { AND = { is_playable_character = no is_ruler = no gold > scope:actor.gold gold > scope:actor.medium_gold_value scope:actor.ai_greed > low_negative_ai_value } AND = { is_playable_character = no is_ruler = no gold > 0 scope:actor = { has_banish_reason = scope:recipient } } AND = { is_playable_character = no is_ruler = no gold > 100 scope:actor.ai_greed >= high_positive_ai_value } AND = { scope:actor = { has_banish_reason = scope:recipient } scope:actor = { opinion = { target = scope:recipient value <= medium_negative_opinion } } } } } } trigger_if = { limit = { scope:recipient = { is_playable_character = yes } } scope:recipient = { is_vassal_of = scope:actor } } trigger_else = { scope:recipient = { is_courtier_of = scope:actor } } custom_description = { text = "release_banish_invalid_take_vows" object = scope:recipient scope:take_vows = no } scope:recruit = no #Should be impossible to have both but just in case NOT = { scope:recipient = { is_spouse_of = scope:actor } } } } send_option = { flag = gain_hook localization = "RELEASE_GAIN_HOOK" is_shown = { trigger_if = { limit = { scope:actor = { is_ai = yes } } scope:recipient = { OR = { is_vassal_of = scope:actor liege ?= scope:actor } } } } is_valid = { scope:actor = { can_add_hook = { type = favor_hook #Matches the hook added in the on_accept target = scope:recipient } } } } send_option = { flag = take_vows localization = "RELEASE_TAKE_VOWS" is_shown = { scope:actor = { take_vows_available_trigger = yes } } is_valid = { #Handle AI trigger_if = { limit = { scope:actor = { is_ai = yes } } #We're AI and Byzantium trigger_if = { limit = { scope:actor = { culture = { has_cultural_pillar = heritage_byzantine } } } scope:recipient = { is_ai = yes #Not gonna depose player characters, for now OR = { is_close_or_extended_family_of = scope:actor is_vassal_or_below_of = scope:actor #Weigh this for Byz AI in the modifiers below has_relation_rival = scope:actor is_courtier_of = scope:actor } NOT = { is_heir_of = scope:actor } } #Get rid of rivals despite potentially liking them trigger_if = { limit = { scope:recipient = { has_relation_rival = scope:actor } } always = yes } #Only get rid of family members if we dislike them trigger_else = { scope:actor = { opinion = { target = scope:recipient value <= medium_negative_opinion } } } } #We're not Byzantium but plain AI trigger_else = { scope:recipient = { is_ai = yes #Not gonna depose player characters, for now is_close_or_extended_family_of = scope:actor NOT = { is_heir_of = scope:actor } } scope:actor = { opinion = { target = scope:recipient value <= medium_negative_opinion } } custom_description = { text = "release_vows_invalid_not_your_court" object = scope:recipient subject = scope:actor OR = { scope:recipient = { is_courtier_of = scope:actor } scope:recruit = yes } } } } #Enhanced Take the Vows for Byzantium players -- who do we want to boot to a monastery far, far away? trigger_else_if = { limit = { scope:actor = { culture = { has_cultural_pillar = heritage_byzantine } } } scope:recipient = { is_ai = yes #Not gonna depose player characters, for now custom_description = { text = "release_byz_vows_invalid" object = scope:recipient subject = scope:actor OR = { is_close_or_extended_family_of = scope:actor is_vassal_or_below_of = scope:actor has_relation_rival = scope:actor is_courtier_of = scope:actor } } } } #Otherwise standard procedure Take the Vows requirements trigger_else = { scope:recipient = { is_ai = yes #Not gonna depose player characters, for now } scope:actor = { is_close_or_extended_family_of = scope:recipient } #Triggering I_AM_NOT instead of CHARACTER_IS_NOT makes the tooltip look less cursed custom_description = { text = "release_vows_invalid_not_your_court" object = scope:recipient subject = scope:actor OR = { scope:recipient = { is_courtier_of = scope:actor } scope:recruit = yes } } } custom_description = { text = "release_vows_invalid_not_your_faith" object = scope:recipient subject = scope:actor trigger_if = { limit = { scope:recipient.faith != scope:actor.faith } scope:demand_conversion = yes } } custom_description = { text = "release_executioner_invalid_take_vows_condition" object = scope:recipient scope:become_executioner = no } custom_description = { text = "release_banish_invalid_take_vows" object = scope:recipient scope:banish = no } scope:recipient = { age >= 10 NOR = { has_trait = excommunicated has_trait = devoted has_trait = incapable } #Do they have the "wrong" marriage type? NOR = { custom_description = { text = is_married_matrilineally subject = scope:recipient any_spouse = { is_female = yes matrilinear_marriage = yes } } custom_description = { text = is_married_patrilineally subject = scope:recipient any_spouse = { is_male = yes patrilinear_marriage = yes } } custom_description = { text = matrilinear_betrothal subject = scope:recipient betrothed ?= { is_female = yes matrilinear_betrothal = yes } } custom_description = { text = patrilinear_betrothal subject = scope:recipient betrothed ?= { is_male = yes patrilinear_betrothal = yes } } } } } } send_option = { flag = become_executioner localization = "RELEASE_AS_EXECUTIONER" is_shown = { has_ep1_court_positions_dlc_trigger = yes scope:actor = { has_royal_court = yes } scope:recipient = { is_adult = yes } } is_valid = { scope:actor = { can_employ_court_position_type = executioner_court_position NOT = { employs_court_position = executioner_court_position } } scope:recipient = { trigger_if = { limit = { scope:recruit = yes } custom_description = { text = "release_executioner_invalid_recruit" object = scope:recipient scope:recruit = yes } } trigger_else = { is_courtier_of = scope:actor } custom_description = { text = "release_executioner_invalid_take_vows_condition" object = scope:recipient scope:take_vows = no } NOT = { is_spouse_of = scope:actor } } } } send_option = { flag = recruit localization = "RELEASE_RECRUIT" is_shown = { trigger_if = { limit = { scope:actor = { is_ai = yes } } scope:recipient = { OR = { has_relation_best_friend = scope:actor has_relation_friend = scope:actor has_relation_lover = scope:actor has_relation_soulmate = scope:actor has_secret_relation_lover = scope:actor is_heir_of = scope:actor } } } scope:recipient = { is_ruler = no NOT = { is_courtier_of = scope:actor } OR = { is_adult = yes AND = { is_adult = no OR = { trigger_if = { limit = { exists = liege } NOT = { is_heir_of = liege } } NOT = { exists = liege } } } } } } } send_option = { flag = disfigure localization = "RELEASE_DISFIGURE" is_shown = { scope:actor = { government_allows = administrative culture = { has_cultural_tradition = tradition_ep3_palace_politics } # If they're our partner emperor, we should use the maiming interaction instead. liege_should_systematically_maim_co_ruler_trigger = no } scope:recipient = { is_adult = yes } } is_valid = { scope:recipient = { NOT = { has_trait = disfigured } } # Byzantines can't disfigure those not in their realm trigger_if = { limit = { scope:actor = { culture = { has_cultural_pillar = heritage_byzantine } } } scope:recipient = { custom_description = { text = "release_byz_disfigure_invalid" object = scope:recipient subject = scope:actor OR = { is_close_or_extended_family_of = scope:actor is_vassal_or_below_of = scope:actor has_relation_rival = scope:actor is_courtier_of = scope:actor } } } } custom_description = { text = "release_prisoner_disfigure_blind_castrate_condition" object = scope:recipient scope:blind = no scope:castrate = no } } } send_option = { flag = blind localization = "RELEASE_BLIND" is_shown = { scope:actor = { is_adult = yes culture = { has_cultural_parameter = can_blind_prisoners } # If they're our partner emperor, we should use the maiming interaction instead. liege_should_systematically_maim_co_ruler_trigger = no } scope:recipient = { is_adult = yes } } is_valid = { scope:recipient = { NOT = { has_trait = blind } } custom_description = { text = "release_prisoner_disfigure_blind_castrate_condition" object = scope:recipient scope:disfigure = no scope:castrate = no } } } send_option = { flag = castrate localization = "RELEASE_CASTRATE" is_shown = { scope:recipient = { is_imprisoned_by = scope:actor is_eunuch_trigger = no is_male = yes } scope:actor = { is_adult = yes culture = { has_cultural_parameter = can_castrate_prisoners } # If they're our partner emperor, we should use the maiming interaction instead. liege_should_systematically_maim_co_ruler_trigger = no } } is_valid = { scope:recipient = { is_eunuch_trigger = no } custom_description = { text = "release_prisoner_disfigure_blind_castrate_condition" object = scope:recipient scope:disfigure = no scope:blind = no } } } send_option = { flag = demand_admin localization = "RELEASE_DEMAND_ADMIN" is_shown = { scope:actor = { government_allows = administrative } scope:actor = scope:recipient.liege scope:recipient = { #Requirements match demand admin interaction highest_held_title_tier >= tier_county is_landed = yes is_ruler = yes NOT = { government_allows = administrative } NOT = { scope:recipient = { government_has_flag = government_is_tribal } } NOT = { scope:recipient ?= scope:recipient.faith.religious_head } NOT = { scope:recipient ?= scope:actor.diarch } } } is_valid = { scope:recipient = { NOT = { government_allows = administrative } } } } send_options_exclusive = no auto_accept = { scope:demand_conversion = no scope:renounce_claims = no scope:banish = no scope:gain_hook = no scope:take_vows = no scope:recruit = no scope:disfigure = no scope:blind = no scope:castrate = no scope:demand_admin = no } ai_accept = { base = 0 modifier = { add = 100 desc = "WANTS_FREEDOM_REASON" } # Basic modifiers modifier = { trigger = { has_trait = ambitious } add = -20 desc = "RECIPIENT_IS_AMBITIOUS" } # Demand conversion modifier = { trigger = { scope:recipient = { ai_zeal <= 20 } scope:demand_conversion = yes } add = -20 desc = "CONVERSION_NEGATIVE_REASON" } modifier = { trigger = { scope:recipient = { ai_zeal > 20 } scope:demand_conversion = yes } add = { value = ai_zeal if = { limit = { scope:recipient.faith = { faith_hostility_level = { target = scope:actor.faith value = faith_astray_level } } } multiply = -1 } else = { multiply = -2 } } desc = "CONVERSION_NEGATIVE_REASON" } # Renounce claims modifier = { add = -25 trigger = { scope:renounce_claims = yes ai_greed < 0 } desc = "RENOUNCE_CLAIMS_REASON" } modifier = { add = -50 trigger = { scope:renounce_claims = yes ai_greed >= 0 ai_greed < 26 } desc = "RENOUNCE_CLAIMS_REASON" } modifier = { add = -75 trigger = { scope:renounce_claims = yes ai_greed >= 26 ai_greed < 51 } desc = "RENOUNCE_CLAIMS_REASON" } modifier = { add = -95 trigger = { scope:renounce_claims = yes ai_greed >= 51 } desc = "RENOUNCE_CLAIMS_REASON" } # Employ executioner modifier = { add = -50 trigger = { scope:become_executioner = yes # Sadists don't care about becoming an executioner NOR = { has_trait = sadistic has_trait = callous } } desc = "BECOME_EXECUTIONER_REASON" } # Banish modifier = { add = -50 trigger = { scope:banish = yes } NOT = { scope:actor = { has_imprisonment_reason = scope:recipient culture = { has_cultural_parameter = vassals_more_likely_accept_punishments } } } desc = "BANISH_NEGATIVE_REASON" } modifier = { # Legalistic tradition add = legalistic_vassal_punishment_acceptance trigger = { scope:banish = yes } scope:actor = { has_imprisonment_reason = scope:recipient culture = { has_cultural_parameter = vassals_more_likely_accept_punishments } } desc = tradition_legalistic_name } # Gain hook modifier = { add = { value = -50 if = { limit = { scope:recipient = { ai_vengefulness > 0 } } subtract = ai_vengefulness } } trigger = { scope:gain_hook = yes } desc = "GAIN_HOOK_NEGATIVE_REASON" } # Take vows modifier = { add = -30 trigger = { scope:take_vows = yes } desc = "TAKE_VOWS_NEGATIVE_REASON" } modifier = { add = -30 trigger = { scope:take_vows = yes has_trait = lustful } desc = "TAKE_VOWS_LUSTFUL_REASON" } modifier = { add = -30 trigger = { scope:take_vows = yes has_trait = rakish } desc = "TAKE_VOWS_RAKISH_REASON" } modifier = { add = -30 trigger = { scope:take_vows = yes has_trait = fornicator } desc = "TAKE_VOWS_FORNICATOR_REASON" } modifier = { add = -30 trigger = { scope:take_vows = yes has_trait = seducer } desc = "TAKE_VOWS_SEDUCER_REASON" } modifier = { add = -30 trigger = { scope:take_vows = yes has_trait = deviant } desc = "TAKE_VOWS_DEVIANT_REASON" } modifier = { add = { value = -15 multiply = num_sinful_traits } trigger = { scope:take_vows = yes num_sinful_traits > 1 } desc = "TAKE_VOWS_SINS_REASON" } modifier = { add = -30 trigger = { scope:take_vows = yes has_trait = cynical } desc = "TAKE_VOWS_CYNICAL_REASON" } # Recruitment modifier = { add = -10 trigger = { scope:recruit = yes NOT = { scope:actor = { culture = { has_cultural_parameter = can_recruit_prisoners_easily } } } } desc = "RECRUITMET_NEGATIVE_REASON" } # Disfigure modifier = { add = { value = -100 if = { limit = { has_trait = beauty_good } multiply = 2 } } trigger = { scope:disfigure = yes OR = { NOR = { has_trait = maimed has_trait = beauty_bad ai_sociability < -75 } has_trait = beauty_good } } desc = "DISFIGURE_NEGATIVE_REASON" } modifier = { add = -75 trigger = { scope:disfigure = yes OR = { has_trait = maimed has_trait = beauty_bad ai_sociability < -75 } NOT = { has_trait = beauty_good } } desc = "DISFIGURE_NEGATIVE_REASON" } # Blind modifier = { add = -100 trigger = { scope:blind = yes NOR = { has_trait = one_eyed has_trait = infirm age > 60 # I.e. they have poor eyesight already } } desc = "BLIND_NEGATIVE_REASON" } modifier = { add = -75 trigger = { scope:blind = yes OR = { has_trait = one_eyed has_trait = infirm age > 60 # I.e. they have poor eyesight already } } desc = "BLIND_NEGATIVE_REASON" } # Castrate modifier = { add = -75 trigger = { scope:castrate = yes any_child = { count > 0 } ai_boldness < -50 } desc = "CASTRATE_NEGATIVE_REASON" } modifier = { add = -100 trigger = { scope:castrate = yes any_child = { count > 0 } ai_boldness >= -50 } desc = "CASTRATE_NEGATIVE_REASON" } modifier = { add = -100 trigger = { scope:castrate = yes any_child = { count <= 0 } } desc = "CASTRATE_NO_CHILDREN_NEGATIVE_REASON" } modifier = { add = -100 trigger = { scope:castrate = yes has_trait = lustful } desc = "TAKE_VOWS_LUSTFUL_REASON" } # Demand admin modifier = { add = -20 trigger = { scope:demand_admin = yes OR = { culture = { OR = { # Historical cultures this = culture:greek any_parent_culture_or_above = { this = culture:greek } this = culture:han any_parent_culture_or_above = { this = culture:han } # Bureaucratic culture has_cultural_pillar = ethos_bureaucratic } } # Another admin government government_allows = administrative } } desc = "DEMAND_ADMIN_NEGATIVE_REASON" } modifier = { add = -50 trigger = { scope:demand_admin = yes NOR = { culture = { OR = { # Historical cultures this = culture:greek any_parent_culture_or_above = { this = culture:greek } this = culture:han any_parent_culture_or_above = { this = culture:han } # Bureaucratic culture has_cultural_pillar = ethos_bureaucratic } } # Another admin government government_allows = administrative } culture = { NOR = { has_cultural_tradition = tradition_hereditary_hierarchy has_cultural_tradition = tradition_staunch_traditionalists } } } desc = "DEMAND_ADMIN_NEGATIVE_REASON" } modifier = { add = -100 trigger = { scope:demand_admin = yes NOR = { culture = { OR = { # Historical cultures this = culture:greek any_parent_culture_or_above = { this = culture:greek } this = culture:han any_parent_culture_or_above = { this = culture:han } # Bureaucratic culture has_cultural_pillar = ethos_bureaucratic } } # Another admin government government_allows = administrative } culture = { OR = { has_cultural_tradition = tradition_hereditary_hierarchy has_cultural_tradition = tradition_staunch_traditionalists } } } desc = "DEMAND_ADMIN_NEGATIVE_REASON" } # Struggle modifier = { trigger = { scope:demand_conversion = no scope:renounce_claims = no scope:banish = no scope:gain_hook = no scope:take_vows = no scope:recruit = no } scope:recipient = { any_character_struggle = { involvement = involved } } scope:actor = { any_character_struggle = { involvement = involved } } add = { value = 0 if = { limit = { scope:recipient = { any_character_struggle = { phase_has_catalyst = catalyst_release_important } has_character_flag = agenda_towards_escalation } } add = -100 } else_if = { limit = { scope:recipient = { any_character_struggle = { phase_has_catalyst = catalyst_release_important } } } add = 200 } } } } # AI ai_targets = { ai_recipients = prisoners } ai_frequency = 1 ai_potential = { has_prisoners = yes } ai_will_do = { base = 0 modifier = { add = 20 scope:demand_conversion = yes } modifier = { add = 100 scope:demand_conversion = yes scope:recipient = { is_vassal_of = scope:actor } } modifier = { add = 30 scope:renounce_claims = yes } modifier = { add = 50 scope:banish = yes } modifier = { add = 30 scope:take_vows = yes } modifier = { add = 10 scope:recruit = yes } modifier = { add = 30 scope:disfigure = yes } modifier = { add = 20 scope:blind = yes } modifier = { add = 50 scope:castrate = yes } modifier = { # Rivals can rot add = -40 scope:actor = { NOT = { has_trait = forgiving } } scope:recipient = { OR = { has_relation_rival = scope:actor has_relation_nemesis = scope:actor scope:recipient = { is_spouse_of = scope:actor exposed_cheating_on_spouse_trigger = { SPOUSE = scope:actor } } } } } modifier = { # Rivals can rot FOREVER if vengeful add = -100 scope:actor = { NOT = { has_trait = forgiving } } scope:actor.ai_vengefulness >= very_high_positive_ai_value scope:recipient = { OR = { has_relation_rival = scope:actor has_relation_nemesis = scope:actor scope:recipient = { is_spouse_of = scope:actor exposed_cheating_on_spouse_trigger = { SPOUSE = scope:actor } } } } } modifier = { # Compassionate characters don't want to keep children in their dungeon for too long add = 10 scope:actor = { is_at_war = no ai_compassion >= low_positive_ai_value } scope:recipient = { is_adult = no time_in_prison = { years > 1 } } } modifier = { # Very compassionate characters tend to release prisoners add = 10 scope:actor = { is_at_war = no ai_compassion >= very_high_positive_ai_value } scope:recipient = { time_in_prison = { years > 1 } } } modifier = { # Somewhat compassionate characters tend to keep people in their dungeon for a while add = 10 scope:actor = { is_at_war = no ai_compassion >= medium_positive_ai_value } scope:recipient = { is_playable_character = no time_in_prison = { years > 3 } } } modifier = { # Only truly discompassionate characters will have their dungeon full of hapless victims after 5 years add = 10 scope:actor = { is_at_war = no ai_compassion >= low_negative_ai_value } scope:recipient = { is_playable_character = no time_in_prison = { years > 5 } } } modifier = { # Most AI characters will let family out... add = 10 scope:actor = { is_at_war = no OR = { ai_compassion >= very_high_positive_ai_value AND = { ai_compassion >= high_negative_ai_value opinion = { target = scope:recipient value >= low_negative_opinion } } } } scope:recipient = { time_in_prison = { years > 1 } is_playable_character = no is_close_family_of = scope:actor } } modifier = { # Almost all will let their own children out add = 40 scope:actor = { is_at_war = no ai_compassion >= very_high_negative_ai_value } scope:recipient = { is_playable_character = no is_child_of = scope:actor } } # Struggle modifier = { trigger = { scope:demand_conversion = no scope:renounce_claims = no scope:banish = no scope:gain_hook = no scope:take_vows = no scope:recruit = no } scope:recipient = { any_character_struggle = { involvement = involved } } scope:actor = { any_character_struggle = { involvement = involved } } add = { value = 0 if = { limit = { scope:actor = { any_character_struggle = { phase_has_catalyst = catalyst_release_important } has_character_flag = agenda_towards_escalation } } add = -100 } else_if = { limit = { scope:actor = { any_character_struggle = { phase_has_catalyst = catalyst_release_important } NOT = { ai_greed >= 25 } OR = { ai_compassion > 50 AND = { ai_compassion > 0 scope:recipient = { time_in_prison = { years > 1 } } } } } } add = 200 } } } modifier = { # Family Feud add = -50 scope:actor = { house_has_feud_relation_with_trigger = { TARGET = scope:recipient } } } #Byz AI can shove vassals off to remote monasteries - weigh that here modifier = { add = -10 scope:take_vows = yes scope:actor = { culture = { has_cultural_pillar = heritage_byzantine } } scope:recipient = { is_vassal_or_below_of = scope:actor } } evaluate_action_increasing_house_unity = { VALUE = 100 } #don't release prisoners that are tied with a prison break contract, we don't want it invalidating all the time modifier = { factor = 0 scope:recipient = { has_character_flag = being_prisonbroken_by_laamp } } } } execute_prisoner_interaction = { interface_priority = 120 common_interaction = yes category = interaction_category_prison special_interaction = execute_prisoner_interaction icon = icon_dead desc = execute_prisoner_interaction_desc ai_targets = { ai_recipients = prisoners } ai_frequency_by_tier = { barony = 72 county = 12 duchy = 12 kingdom = 12 empire = 12 hegemony = 12 } ai_potential = { is_at_war = no } ai_will_do = { base = 0 opinion_modifier = { trigger = { scope:actor != scope:recipient } opinion_target = scope:recipient multiplier = -1 } ai_value_modifier = { ai_compassion = -1 } modifier = { add = -20 ai_compassion >= low_positive_ai_value scope:recipient = { is_adult = no } } # Try to avoid Kinslaying modifier = { add = -20 scope:actor.dynasty = scope:recipient.dynasty NOT = { faith = { has_doctrine = doctrine_kinslaying_any_dynasty_member_crime } } } modifier = { add = -20 is_close_or_extended_family_of = scope:recipient NOT = { faith = { has_doctrine = doctrine_kinslaying_extended_family_crime } } } modifier = { add = -20 is_close_family_of = scope:recipient NOT = { faith = { has_doctrine = doctrine_kinslaying_close_kin_crime } } } modifier = { add = 50 has_execute_reason = scope:recipient OR = { has_trait = sadistic has_trait = lunatic } } modifier = { # Executing your way to new titles is a worthy cause... add = 20 scope:actor = { has_execute_reason = scope:recipient ai_greed > 0 any_heir_title = { # Execute rulers you can inherit land from holder ?= scope:recipient } } } modifier = { # Vengeful characters enjoy executing their rivals add = 20 scope:actor = { has_execute_reason = scope:recipient ai_vengefulness >= medium_positive_ai_value OR = { has_relation_rival = scope:recipient # Execute rivals has_relation_nemesis = scope:recipient # Execute rivals scope:recipient = { is_spouse_of = scope:actor exposed_cheating_on_spouse_trigger = { SPOUSE = scope:actor } } } } } modifier = { # Executing your way to new titles is a worthy cause... and very greedy characters need no execution reason add = 35 scope:actor = { ai_greed >= very_high_positive_ai_value any_heir_title = { # Execute rulers you can inherit land from holder ?= scope:recipient } } } modifier = { # Vengeful characters enjoy executing their rivals, and very vengeful characters need no execution reason add = 35 scope:actor = { ai_vengefulness >= very_high_positive_ai_value OR = { has_relation_rival = scope:recipient # Execute rivals has_relation_nemesis = scope:recipient # Execute rivals scope:recipient = { is_spouse_of = scope:actor exposed_cheating_on_spouse_trigger = { SPOUSE = scope:actor } } } } } #Scope:target has caused internal strife in the realm character_hates_scope_due_to_strife_modifier = { TARGET = scope:recipient } modifier = { factor = 0 scope:actor = { NOR = { # Do not execute unless you have some sort of reason to do it has_execute_reason = scope:recipient has_relation_rival = scope:recipient # Execute rivals has_relation_nemesis = scope:recipient # Execute rivals scope:recipient = { is_spouse_of = scope:actor exposed_cheating_on_spouse_trigger = { SPOUSE = scope:actor } } any_heir_title = { # Execute rulers you can inherit land from holder ?= scope:recipient } has_trait = lunatic # Self explanatory } } } # Agenda impact modifier = { scope:recipient = { any_character_struggle = { involvement = involved } is_important_or_vip_struggle_character = yes } add = { value = 0 if = { limit = { scope:actor = { any_character_struggle = { phase_has_catalyst = catalyst_execute_important } has_character_flag = agenda_towards_escalation } } add = 200 } else_if = { limit = { scope:actor = { any_character_struggle = { phase_has_catalyst = catalyst_execute_important } } } add = -100 } } } modifier = { scope:recipient = { any_character_struggle = { involvement = involved } has_trait = fp3_struggle_supporter } add = { value = 0 if = { limit = { scope:actor = { any_character_struggle = { phase_has_catalyst = catalyst_execute_supporter } has_trait = fp3_struggle_detractor } } add = 200 } else_if = { limit = { scope:actor = { any_character_struggle = { phase_has_catalyst = catalyst_execute_supporter } } } add = -100 } } } #Nomads get the special beheading stuff modifier = { scope:actor = { mpo_keep_prisoners_heads_trigger = yes scope:recipient = { is_ruler = yes highest_held_title_tier >= tier_county is_adult = yes } NOT = { scope:recipient.top_liege ?= { current_military_strength > scope:actor.current_military_strength tier_difference = { target = scope:actor value >= -1 } } } } NOT = { scope:actor.faith = { has_doctrine_parameter = human_sacrifice_active } } add = 10 } #Boost further if actor if want to keep head modifier = { #want to keep head scope:actor = { mpo_keep_prisoners_heads_trigger = yes } scope:recipient = { highest_held_title_tier >= tier_kingdom is_adult = yes } NOT = { scope:actor.faith = { has_doctrine_parameter = human_sacrifice_active } } add = 20 } #Boost further if actor wants to be scary modifier = { #want to keep head scope:actor = { mpo_keep_prisoners_heads_trigger = yes scope:recipient = { is_ruler = yes highest_held_title_tier >= tier_county is_adult = yes } OR = { has_trait = conqueror has_trait = greatest_of_khans is_gurkhan = yes } } NOT = { scope:actor.faith = { has_doctrine_parameter = human_sacrifice_active } } add = 30 } modifier = { scope:recipient = { any_character_struggle = { involvement = involved } has_trait = fp3_struggle_detractor } add = { value = 0 if = { limit = { scope:actor = { any_character_struggle = { phase_has_catalyst = catalyst_execute_detractor } has_trait = fp3_struggle_supporter } } add = 200 } else_if = { limit = { scope:actor = { any_character_struggle = { phase_has_catalyst = catalyst_execute_detractor } } } add = -100 } } } modifier = { add = 200 scope:actor.faith = { has_doctrine = tenet_extinction_of_dharma } scope:recipient.faith = { religion = root.faith.religion NOT = { has_doctrine = tenet_extinction_of_dharma } } } #don't kill prisoners that are tied with a prison break contract, we don't want it invalidating all the time modifier = { factor = 0 scope:recipient = { has_character_flag = being_prisonbroken_by_laamp } } } is_shown = { scope:recipient = { is_imprisoned_by = scope:actor } } is_valid_showing_failures_only = { scope:recipient = { NOT = { has_strong_hook = scope:actor } } scope:recipient = { custom_description = { text = "currently_being_tortured" NOT = { has_character_flag = is_being_tortured } } } # Blocked by current struggle phase custom_tooltip = { text = struggle_parameter_struggle_cannot_execute_involved_prisoners NOT = { scope:actor = { any_character_struggle = { involvement = involved has_struggle_phase_parameter = struggle_cannot_execute_involved_prisoners is_secondary_character_involvement_involved_trigger = { CHAR = scope:recipient } } } } } custom_tooltip = { text = is_currently_being_purged_tt scope:recipient = { NOT = { has_character_flag = is_currently_being_purged } } } # For use with co-ruler diarchs. scope:recipient = { is_imprisoned_by = scope:actor } } cost = { # Usually, this action is free, but during certain diarchies, we want it to cost. prestige = liege_diarchy_surcharge_interaction_execute_prisoner_interaction_value } on_accept = { # If this is a co-ruler we're executing, tell us if we have alternatives. scope:actor = { if = { limit = { OR = { AND = { has_diarchy_active_parameter = diarchy_is_co_rulership diarch ?= scope:recipient } AND = { scope:recipient = { has_diarchy_active_parameter = diarchy_is_co_rulership } is_diarch_of_target = scope:recipient } } } # If the player doesn't have to execute their partner, point that out. if = { limit = { liege_can_maim_co_ruler_without_killing_them_trigger = yes } custom_tooltip = execute_prisoner_interaction.tt.can_maim_diarch } # Otherwise, if they're out diarch, we end it. if = { limit = { scope:actor.diarch = scope:recipient } end_diarchy = yes every_player = { limit = { NOR = { this = scope:actor this = scope:recipient } top_liege = scope:actor.top_liege } trigger_event = diarchy.8022 } } # Else, usurp. else = { custom_description_no_bullet = { text = execute_prisoner_interaction_tt_co_emperor_usurpation object = scope:recipient } create_title_and_vassal_change = { type = usurped save_scope_as = change } scope:recipient = { every_held_title = { limit = { OR = { this = scope:recipient.capital_county this = scope:recipient.capital_county.duchy AND = { tier = tier_county this.duchy = scope:recipient.capital_county.duchy } tier >= scope:recipient.highest_held_title_tier } } change_title_holder = { holder = scope:actor change = scope:change } } every_vassal = { custom = custom.recipient_every_vassal change_liege = { LIEGE = scope:actor CHANGE = scope:change } } hidden_effect = { change_liege = { LIEGE = scope:actor CHANGE = scope:change } } } resolve_title_and_vassal_change = scope:change every_player = { limit = { NOR = { this = scope:actor this = scope:recipient } top_liege = scope:actor.top_liege } trigger_event = diarchy.8023 } } } # Regardless, this is legit politics, so we don't deduct legitimacy for it. save_scope_value_as = { name = suppress_legitimacy_from_crime value = yes } } # Now, the rest of it. if = { limit = { scope:recipient = { is_imprisoned_by = scope:actor } } # Are you HumSac'ing the HoF of a faith that doesn't practice HumSac? hidden_effect = { scope:actor = { humsacd_a_hof_effect = { SACRIFICER = scope:actor SACRIFICED_HOF = scope:recipient } } } if = { limit = { always = scope:execution_public } if = { limit = { scope:actor.capital_county = { NOT = { has_county_modifier = held_public_execution_modifier } } } custom_description_no_bullet = { text = public_execution_tooltip } scope:actor = { capital_county = { add_county_modifier = { modifier = held_public_execution_modifier days = 1850 } } custom_tooltip = public_execution_control_effect hidden_effect = { every_held_title = { title_tier = county change_county_control = executioner_control_value } } } } else = { custom_description_no_bullet = { text = public_execution_too_soon_tooltip } } } # Other Effects if = { # Boil their skull? limit = { NOT = { always = scope:execution_devour } scope:actor = { has_relation_rival = scope:recipient has_personality_malicious_trigger = yes has_royal_court = yes has_dlc_feature = court_artifacts } scope:recipient = { is_adult = yes } } scope:actor = { random = { chance = { value = 25 if = { limit = { has_relation_nemesis = scope:recipient } add = 75 } } hidden_effect = { scope:recipient = { save_scope_as = skull_to_boil } trigger_event = { id = artifact.7000 days = { 3 10 } } } } } } if = { limit = { NOT = { always = scope:execution_devour } scope:actor = { is_adult = no age >= 4 is_ai = no NOT = { has_character_flag = witnessed_execution_flag } } scope:recipient = { is_adult = yes } } scope:actor = { trigger_event = bp1_yearly.9045 } } else_if = { limit = { NOT = { always = scope:execution_devour } scope:actor = { OR = { has_relation_friend = scope:recipient has_relation_lover = scope:recipient } is_ai = no } scope:recipient = { is_adult = yes } } scope:actor = { trigger_event = bp1_yearly.9044 } } # Gallowsbait. scope:actor = { if = { limit = { has_government = landless_adventurer_government scope:recipient = { is_landless_adventurer = no is_ruler = yes } } if = { limit = { scope:recipient.highest_held_title_tier >= tier_empire } laamp_rewards_apply_criminal_xp_effect = { TRACK = marauder XP_MAX = gallowsbait_xp_massive_gain XP_MIN = gallowsbait_xp_massive_gain } } else_if = { limit = { scope:recipient.highest_held_title_tier >= tier_kingdom } laamp_rewards_apply_criminal_xp_effect = { TRACK = marauder XP_MAX = gallowsbait_xp_major_gain XP_MIN = gallowsbait_xp_major_gain } } else_if = { limit = { scope:recipient.highest_held_title_tier >= tier_duchy } laamp_rewards_apply_criminal_xp_effect = { TRACK = marauder XP_MAX = gallowsbait_xp_medium_gain XP_MIN = gallowsbait_xp_medium_gain } } else_if = { limit = { scope:recipient.highest_held_title_tier >= tier_barony } laamp_rewards_apply_criminal_xp_effect = { TRACK = marauder XP_MAX = gallowsbait_xp_minor_gain XP_MIN = gallowsbait_xp_minor_gain } } else = { laamp_rewards_apply_criminal_xp_effect = { TRACK = marauder XP_MAX = 2 XP_MIN = 2 } } } } # FP3 # Struggle Catalysts scope:actor = { if = { # Execute important limit = { scope:recipient = { is_important_or_vip_struggle_character = yes } any_character_struggle = { involvement = involved activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { CATALYST = catalyst_execute_important CHAR = scope:recipient } } } every_character_struggle = { involvement = involved limit = { activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { CATALYST = catalyst_execute_important CHAR = scope:recipient } } activate_struggle_catalyst = { catalyst = catalyst_execute_important character = scope:actor } } } if = { # Execute Supporter/Detractor limit = { fp3_struggle_involves_one_supporter_and_one_detractor = { FIRST = scope:actor SECOND = scope:recipient } } if = { limit = { scope:recipient = { has_trait = fp3_struggle_detractor } any_character_struggle = { involvement = involved activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { CATALYST = catalyst_execute_detractor CHAR = scope:recipient } } } every_character_struggle = { involvement = involved limit = { activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { CATALYST = catalyst_execute_detractor CHAR = scope:recipient } } activate_struggle_catalyst = { catalyst = catalyst_execute_detractor character = scope:actor } log_debug_variable_for_persian_struggle_effect = { VAR = stabil_catalyst_execute_detractor } } } else_if = { limit = { scope:recipient = { has_trait = fp3_struggle_supporter } any_character_struggle = { involvement = involved activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { CATALYST = catalyst_execute_supporter CHAR = scope:recipient } } } every_character_struggle = { involvement = involved limit = { activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { CATALYST = catalyst_execute_supporter CHAR = scope:recipient } } activate_struggle_catalyst = { catalyst = catalyst_execute_supporter character = scope:actor } log_debug_variable_for_persian_struggle_effect = { VAR = unrest_catalyst_execute_supporter } } } } # Free House Member CB target executed during war if = { limit = { exists = scope:recipient.house any_character_war = { using_cb = fp3_free_house_member_cb is_defender = scope:actor primary_attacker.house = scope:recipient.house } } random_character_war = { limit = { using_cb = fp3_free_house_member_cb is_defender = scope:actor primary_attacker.house = scope:recipient.house } primary_attacker = { add_opinion = { target = scope:actor modifier = executed_close_relation_opinion } } } add_prestige = { value = medium_piety_loss multiply = { value = ai_honor add = 1 } } every_vassal = { limit = { OR = { has_vassal_stance = courtly has_vassal_stance = glory_hound ai_honor > 0.48 } } add_opinion = { target = scope:actor modifier = executed_valuable_prisoner_modifier } } } } if = { limit = { scope:actor.faith = { has_doctrine = tenet_extinction_of_dharma } scope:recipient.faith = { religion = scope:actor.faith.religion NOT = { has_doctrine = tenet_extinction_of_dharma } } } if = { limit = { scope:recipient = { is_ruler = yes highest_held_title_tier = tier_county } } scope:actor = { add_piety = minor_piety_value } } else_if = { limit = { scope:recipient = { highest_held_title_tier = tier_duchy } } scope:actor = { add_piety = medium_piety_value } } else_if = { limit = { scope:recipient = { highest_held_title_tier = tier_kingdom } } scope:actor = { add_piety = major_piety_value } } else_if = { limit = { scope:recipient = { highest_held_title_tier = tier_empire } } scope:actor = { add_piety = massive_piety_value } } else_if = { limit = { scope:recipient = { highest_held_title_tier = tier_hegemony } } scope:actor = { add_piety = monumental_piety_value } } else = { scope:actor = { add_piety = miniscule_piety_value } } } if = { limit = { scope:actor = { faith = { has_doctrine = tenet_cranial_trophies } } scope:recipient = { is_adult = yes is_faith_dominant_gender = yes } } tgp_cranial_trophies_beheading_effect = { KILLER = scope:actor DEAD = scope:recipient } } # Kill the target if = { limit = { scope:recipient = { is_ai = no } scope:actor = { is_ai = yes } } scope:recipient = { trigger_event = char_interaction.0170 } # Give players a chance to see what's about to happen show_as_tooltip = { execute_prisoner_effect = { VICTIM = scope:recipient EXECUTIONER = scope:actor } } } else = { scope:recipient = { trigger_event = char_interaction.0171 } execute_prisoner_effect = { VICTIM = scope:recipient EXECUTIONER = scope:actor } } if = { limit = { always = scope:execution_devour } scope:actor = { custom_tooltip = devour_as_execution_tooltip if = { limit = { faith = { has_doctrine_parameter = cannibalism_legal } NOT = { has_trait = cannibal } } add_trait = cannibal } stress_impact = { base = medium_stress_impact_loss compassionate = miniscule_stress_impact_gain forgiving = miniscule_stress_impact_gain } random = { chance = 20 show_as_tooltip = { add_trait = ill } hidden_effect = { trigger_event = { id = health.1001 days = { 3 10 } } } } } } if = { limit = { always = scope:execution_provisions } scope:actor = { domicile ?= { change_provisions = human_provision_value } } } if = { limit = { always = scope:execution_burned scope:actor.faith = { has_doctrine = doctrine_pluralism_fundamentalist NOT = { has_doctrine = tenet_extinction_of_dharma } } } scope:actor = { add_piety = miniscule_piety_value } } scope:actor = { hidden_effect = { send_interface_message = { type = event_prison_neutral title = msg_execute_prisoner right_icon = scope:recipient custom_tooltip = msg_execute_prisoner_desc } } } } } options_heading = execution_options_heading send_option = { is_shown = { scope:actor = { OR = { mpo_keep_prisoners_heads_trigger = yes faith = scope:recipient.faith faith = { has_doctrine = tenet_cranial_trophies } culture_has_asian_heritage_pillar_trigger = yes } NOT = { faith = { has_doctrine_parameter = human_sacrifice_active } } } } flag = execution_beheaded localization = "EXECUTION_BEHEADED" } #Cannibal option. Should be treated as a "normal" execution, but that you eat the body afterwards (in secret if faith does not allow it). send_option = { is_shown = { scope:actor = { OR = { scope:actor.faith = { has_doctrine_parameter = cannibalism_legal } has_trait = cannibal any_secret = { type = secret_cannibal } } } } flag = execution_devour localization = "EXECUTION_DEVOUR" } send_option = { is_shown = { scope:actor = { NOR = { AND = { faith = scope:recipient.faith faith = { has_doctrine_parameter = human_sacrifice_active } } mpo_keep_prisoners_heads_trigger = yes culture_has_asian_heritage_pillar_trigger = yes } } } flag = execution_burned localization = "EXECUTION_BURNED" } send_option = { is_shown = { scope:actor.faith = { has_doctrine_parameter = human_sacrifice_active } } flag = execution_sacrifice localization = "EXECUTION_SACRIFICE" } send_option = { is_shown = { scope:actor = { employs_court_position = executioner_court_position any_court_position_holder = { type = executioner_court_position is_physically_able = yes } exists = capital_county } } is_valid = { scope:actor = { NOT = { capital_county = { has_county_modifier = held_public_execution_modifier } } } } flag = execution_public localization = "EXECUTION_PUBLIC" } send_option = { is_shown = { scope:actor = { employs_court_position = kennelperson_camp_officer any_court_position_holder = { type = kennelperson_camp_officer is_physically_able = yes } } } flag = execution_kennel localization = "EXECUTION_KENNEL" } send_option = { is_shown = { scope:actor = { has_government = landless_adventurer_government has_perk = fear_tax_perk } } flag = execution_provisions localization = "EXECUTION_PROVISIONS" } send_options_exclusive = yes auto_accept = yes } debug_imprison_simple_interaction = { use_diplomatic_range = no category = interaction_debug_main ignores_pending_interaction_block = yes icon = prison interface_priority = 1000 common_interaction = yes is_shown = { debug_only = yes scope:recipient = { is_imprisoned = no } scope:recipient != scope:actor } on_accept = { scope:actor = { imprison = { target = scope:recipient type = house_arrest } } } auto_accept = yes } torture_interaction = { interface_priority = 30 common_interaction = no icon = torture_interaction category = interaction_category_prison desc = torture_interaction_desc #cooldown = { years = 1 } cooldown_against_recipient = { years = 5 } is_shown = { scope:recipient = { is_imprisoned_by = scope:actor } scope:recipient = { is_adult = yes } scope:actor = { is_adult = yes } } is_valid_showing_failures_only = { #scope:recipient = { # NOT = { # health <= 1.5 #Because torture would definitely kill them # } #} scope:actor = { trigger_if = { limit = { domicile ?= { is_domicile_type = camp } } custom_tooltip = { text = laamp_torture_requires_tools_tt domicile = { has_domicile_parameter = camp_unlocks_torture_interaction } } } } scope:recipient = { custom_description = { text = "currently_being_tortured" NOT = { has_character_flag = is_being_tortured } } } cannot_release_former_regent_whilst_old_regent_holds_power_trigger = { PRISONER = scope:recipient REGENT = scope:recipient.var:imprisoned_by_diarch } tgp_blocked_action_against_tenno_trigger = { ACTOR = scope:actor TARGET = scope:recipient } custom_tooltip = { text = is_currently_being_purged_tt scope:recipient = { NOT = { has_character_flag = is_currently_being_purged } } } } is_highlighted = { OR = { scope:actor = { has_trait = sadistic } scope:actor = { has_relation_rival = scope:recipient } scope:actor = { has_relation_nemesis = scope:recipient } } } on_accept = { scope:recipient = { add_character_flag = { flag = is_being_tortured months = 6 # Players in MP can keep the event window open... } } scope:actor = { save_scope_as = bg_override_char } ###EFFECT TOOLTIP### torture_interaction_actor_effect = yes show_as_tooltip = { scope:recipient = { add_character_modifier = { modifier = recently_tortured years = 5 } } } if = { limit = { scope:actor = { domicile ?= { has_domicile_parameter = estate_torture_grants_influence } } } scope:actor = { custom_tooltip = estate_torture_grants_influence_desc } } ###EVENTS### hidden_effect = { #Torture method for descs random_list = { 3 = { save_scope_value_as = { name = torture_method value = flag:rack } } 3 = { save_scope_value_as = { name = torture_method value = flag:whip } } 1 = { save_scope_value_as = { name = torture_method value = flag:rats } } 8 = { trigger = { scope:actor = { has_trait = lifestyle_poet } } save_scope_value_as = { name = torture_method value = flag:poetry } } } #They have a secret I want to know about if = { limit = { scope:recipient = { OR = { any_secret = { torture_secret_trigger = { PARTICIPANT = scope:recipient } } any_known_secret = { secret_owner = { save_temporary_scope_as = torture_secret_owner } torture_secret_trigger = { PARTICIPANT = scope:torture_secret_owner } } } } } scope:recipient = { trigger_event = { id = prison.1001 days = 1 } } } else = { scope:actor = { trigger_event = { id = prison.1010 days = 1 } } } } # Dark Insights Perk: if = { limit = { scope:actor = { has_perk = dark_insights_perk } } scope:actor = { dark_insights_skill_gain_roll_effect = yes } } # House Relation scope:recipient.house ?= { change_house_relation_effect = { HOUSE = scope:actor.house VALUE = house_relation_damage_medium_value REASON = torture CHAR = scope:actor TARGET_CHAR = scope:recipient TITLE = scope:dummy_gender } } } auto_accept = yes # AI ai_targets = { ai_recipients = prisoners } ai_frequency_by_tier = { barony = 0 county = 36 duchy = 24 kingdom = 24 empire = 12 hegemony = 12 } ai_potential = { always = yes } ai_will_do = { base = -25 modifier = { has_trait = sadistic add = 30 } ai_value_modifier = { ai_compassion = tiny_chance_impact_negative_ai_value #Adds +50 for highly uncompassionate characters, -50 for highly compassionate characters } opinion_modifier = { opinion_target = scope:recipient multiplier = -0.25 } #Scope:target has caused internal strife in the realm character_hates_scope_due_to_strife_modifier = { TARGET = scope:recipient } modifier = { # Family Feud scope:actor = { house_has_feud_relation_with_trigger = { TARGET = scope:recipient } } add = 30 } modifier = { scope:actor = { has_opinion_modifier = { modifier = tried_to_escape_from_prison_opinion target = scope:recipient } } add = 25 } } } castrate_interaction = { interface_priority = 30 icon = eunuch category = interaction_category_prison desc = castrate_interaction_desc is_shown = { scope:recipient = { is_imprisoned_by = scope:actor is_eunuch_trigger = no is_male = yes } scope:actor = { is_adult = yes OR = { culture = { has_cultural_parameter = can_castrate_prisoners } top_liege.primary_title = { has_variable = emulating_byz_punishment_var } } # If they're our partner emperor, we should use the maiming interaction instead. liege_should_systematically_maim_co_ruler_trigger = no } } is_valid_showing_failures_only = { scope:recipient = { custom_description = { text = "currently_being_tortured" NOT = { has_character_flag = is_being_tortured } } } cannot_release_former_regent_whilst_old_regent_holds_power_trigger = { PRISONER = scope:recipient REGENT = scope:recipient.var:imprisoned_by_diarch } custom_tooltip = { text = is_currently_being_purged_tt scope:recipient = { NOT = { has_character_flag = is_currently_being_purged } } } } is_highlighted = { OR = { scope:actor = { has_trait = sadistic } scope:actor = { has_relation_rival = scope:recipient } scope:recipient = { any_claim = { holder = scope:actor } } } } on_accept = { scope:recipient = { add_character_flag = { flag = is_being_tortured months = 6 # Players in MP can keep the event window open... } } blind_castrate_and_disfigure_effect = yes #Stress & dread show_as_tooltip = { scope:recipient = { if = { limit = { age < 12 } ep3_child_castration_effect = yes } else = { ep3_youth_castration_effect = yes } release_from_prison = yes } } torture_blind_castrate_disfigure_opinion_effect = { VERB = castrated } scope:actor = { save_scope_as = bg_override_char trigger_event = { id = prison.1025 days = 1 } } # If we're a clan this interaction affects unity add_clan_unity_interaction_effect = { CHARACTER = scope:actor TARGET = scope:recipient VALUE = major_unity_loss DESC = clan_unity_abelarding.desc REVERSE_NON_HOUSE_TARGET = no } # House Relation scope:recipient.house ?= { change_house_relation_effect = { HOUSE = scope:actor.house VALUE = house_relation_damage_medium_value REASON = torture CHAR = scope:actor TARGET_CHAR = scope:recipient TITLE = scope:dummy_gender } } } auto_accept = yes ai_targets = { ai_recipients = prisoners } ai_potential = { always = yes } ai_will_do = { base = -20 modifier = { has_trait = sadistic add = 20 } ai_value_modifier = { ai_compassion = tiny_chance_impact_negative_ai_value #Adds +50 for highly uncompassionate characters, -50 for highly compassionate characters } opinion_modifier = { opinion_target = scope:recipient multiplier = -0.25 } #Scope:target has caused internal strife in the realm character_hates_scope_due_to_strife_modifier = { TARGET = scope:recipient } modifier = { # Family Feud scope:actor = { house_has_feud_relation_with_trigger = { TARGET = scope:recipient } } add = 30 } modifier = { scope:actor = { has_opinion_modifier = { modifier = tried_to_escape_from_prison_opinion target = scope:recipient } } add = 25 } #Cruel Latins are really into this modifier = { top_liege.primary_title = { has_variable = emulating_byz_punishment_var } add = 30 } } ai_frequency_by_tier = { barony = 0 county = 144 duchy = 48 kingdom = 36 empire = 12 hegemony = 12 } } blind_interaction = { interface_priority = 30 icon = blind category = interaction_category_prison desc = blind_interaction_desc is_shown = { scope:recipient = { is_imprisoned_by = scope:actor NOT = { has_trait = blind } } scope:actor = { is_adult = yes OR = { culture = { has_cultural_parameter = can_blind_prisoners } top_liege.primary_title = { has_variable = emulating_byz_punishment_var } } # If they're our partner emperor, we should use the maiming interaction instead. liege_should_systematically_maim_co_ruler_trigger = no } } is_valid_showing_failures_only = { scope:recipient = { custom_description = { text = "currently_being_tortured" NOT = { has_character_flag = is_being_tortured } } } cannot_release_former_regent_whilst_old_regent_holds_power_trigger = { PRISONER = scope:recipient REGENT = scope:recipient.var:imprisoned_by_diarch } custom_tooltip = { text = is_currently_being_purged_tt scope:recipient = { NOT = { has_character_flag = is_currently_being_purged } } } } is_highlighted = { OR = { scope:actor = { has_trait = sadistic } scope:actor = { has_relation_rival = scope:recipient } scope:recipient = { any_claim = { holder = scope:actor } } scope:actor = { culture = { has_cultural_parameter = merciful_blinding } OR = { has_execute_reason = scope:recipient has_banish_reason = scope:recipient } } } } on_accept = { scope:recipient = { add_character_flag = { flag = is_being_tortured months = 6 # Players in MP can keep the event window open... } } blind_castrate_and_disfigure_effect = yes #Stress & dread show_as_tooltip = { scope:recipient = { add_trait = blind release_from_prison = yes } } # Merciful Blindings scope:actor = { if = { limit = { culture = { has_cultural_parameter = merciful_blinding } OR = { has_execute_reason = scope:recipient has_banish_reason = scope:recipient } } add_piety = medium_piety_gain } } torture_blind_castrate_disfigure_opinion_effect = { VERB = blinded } scope:actor = { save_scope_as = bg_override_char trigger_event = { id = prison.1020 days = 1 } } # If we're a clan this interaction affects unity if = { limit = { scope:actor.culture = { has_cultural_parameter = merciful_blinding } } # If actor's culture has Merciful Blindings, they lose less unity add_clan_unity_interaction_effect = { CHARACTER = scope:actor TARGET = scope:recipient VALUE = minor_unity_loss DESC = clan_unity_blinding.desc REVERSE_NON_HOUSE_TARGET = no } } else = { add_clan_unity_interaction_effect = { CHARACTER = scope:actor TARGET = scope:recipient VALUE = medium_unity_loss DESC = clan_unity_blinding.desc REVERSE_NON_HOUSE_TARGET = no } } # House Relation scope:recipient.house ?= { change_house_relation_effect = { HOUSE = scope:actor.house VALUE = house_relation_damage_medium_value REASON = torture CHAR = scope:actor TARGET_CHAR = scope:recipient TITLE = scope:dummy_gender } } } auto_accept = yes ai_targets = { ai_recipients = prisoners } ai_potential = { always = yes } ai_will_do = { base = -20 modifier = { has_trait = sadistic add = 20 } ai_value_modifier = { ai_compassion = tiny_chance_impact_negative_ai_value #Adds +50 for highly uncompassionate characters, -50 for highly compassionate characters } opinion_modifier = { opinion_target = scope:recipient multiplier = -0.25 } #Scope:target has caused internal strife in the realm character_hates_scope_due_to_strife_modifier = { TARGET = scope:recipient } modifier = { # Family Feud scope:actor = { house_has_feud_relation_with_trigger = { TARGET = scope:recipient } } add = 30 } modifier = { scope:actor = { has_opinion_modifier = { modifier = tried_to_escape_from_prison_opinion target = scope:recipient } } add = 25 } #Cruel Latins are really into this modifier = { top_liege.primary_title = { has_variable = emulating_byz_punishment_var } add = 30 } } ai_frequency_by_tier = { barony = 0 county = 144 duchy = 48 kingdom = 36 empire = 12 hegemony = 12 } } prison_break_contract_interaction = { interface_priority = 30 common_interaction = yes icon = prison category = interaction_category_prison desc = prison_break_contract_interaction_desc cooldown_against_recipient = { years = 1 } is_shown = { scope:actor = { any_character_active_contract = { task_contract_type = laamp_prison_break_contract OR = { var:task_contract_target = scope:recipient var:task_contract_object = scope:recipient var:task_contract_employer = scope:recipient } } } } redirect = { scope:actor = { random_character_active_contract = { task_contract_type = laamp_prison_break_contract limit = { OR = { var:task_contract_target = scope:recipient var:task_contract_object = scope:recipient var:task_contract_employer = scope:recipient } } var:task_contract_object = { save_scope_as = secondary_recipient } var:task_contract_target = { save_scope_as = recipient } var:task_contract_employer = { save_scope_as = secondary_actor } } } } is_highlighted = { always = yes } on_accept = { scope:actor = { start_scheme = { type = laamp_prison_break_scheme target_character = scope:recipient } random_scheme = { type = laamp_prison_break_scheme limit = { scheme_target_character = scope:recipient } save_scope_as = scheme } #save scopes for scheme start event scope:secondary_recipient = { save_scope_as = task_contract_object } scope:recipient = { save_scope_as = task_contract_target } scope:secondary_actor = { save_scope_as = task_contract_employer } trigger_event = laamp_extra_contract_schemes.0011 } } auto_accept = yes } systematically_maim_character_interaction = { interface_priority = 30 icon = torture_interaction category = interaction_category_diarch common_interaction = no desc = systematically_maim_character_interaction_desc is_shown = { scope:actor = { liege_should_systematically_maim_co_ruler_trigger = yes } } is_valid_showing_failures_only = { scope:actor = { is_adult = yes } scope:recipient = { custom_description = { text = "currently_being_tortured" NOT = { has_character_flag = is_being_tortured } } } scope:recipient = { is_imprisoned_by = scope:actor } # There's literally nothing left to remove. scope:recipient = { NAND = { OR = { is_eunuch_trigger = yes is_female = yes } has_trait = blind has_trait = disfigured has_trait = maimed has_trait = one_legged } } } send_option = { flag = maim_castrate is_valid = { scope:recipient = { NOR = { is_eunuch_trigger = yes is_female = yes } } } localization = maim_castrate_name current_description = maim_castrate } send_option = { flag = maim_blind is_valid = { scope:recipient = { NOT = { has_trait = blind } } } localization = maim_blind_name current_description = maim_blind } send_option = { flag = maim_face is_valid = { scope:recipient = { NOT = { has_trait = disfigured } } } localization = maim_face_name current_description = maim_face } send_option = { flag = maim_leg is_valid = { scope:recipient = { NOT = { has_trait = one_legged } } } localization = maim_leg_name current_description = maim_leg } send_option = { flag = maim_arm is_valid = { scope:recipient = { NOT = { has_trait = maimed } } } localization = maim_arm_name current_description = maim_arm } on_accept = { scope:recipient = { add_character_flag = { flag = is_being_tortured months = 6 # Players in MP can keep the event window open... } } # Stress & dread blind_castrate_and_disfigure_effect = yes # Our diarchy will be destroyed. save_scope_value_as = { name = destroy_diarchy value = yes } show_as_tooltip = { scope:actor = { maiming_destroy_diarchy_effect = yes } } # Let the enchoppening begin. ## Castrate. if = { limit = { scope:maim_castrate = yes } show_as_tooltip = { scope:recipient = { if = { limit = { age < 12 } ep3_child_castration_effect = yes } else = { ep3_youth_castration_effect = yes } release_from_prison = yes } } torture_blind_castrate_disfigure_opinion_effect = { VERB = castrated } scope:actor = { clear_designated_heir = yes trigger_event = { id = prison.1025 days = 1 } } add_clan_unity_interaction_effect = { CHARACTER = scope:actor TARGET = scope:recipient VALUE = major_unity_loss DESC = clan_unity_abelarding.desc REVERSE_NON_HOUSE_TARGET = no } } ## Blind. if = { limit = { scope:maim_blind = yes } show_as_tooltip = { scope:recipient = { add_trait = blind release_from_prison = yes } } torture_blind_castrate_disfigure_opinion_effect = { VERB = blinded } scope:actor = { clear_designated_heir = yes # Merciful Blindings if = { limit = { culture = { has_cultural_parameter = merciful_blinding } OR = { has_execute_reason = scope:recipient has_banish_reason = scope:recipient } } add_piety = medium_piety_gain } trigger_event = { id = prison.1020 days = 1 } } # If actor's culture has Merciful Blindings, they lose less unity. if = { limit = { scope:actor.culture = { has_cultural_parameter = merciful_blinding } } add_clan_unity_interaction_effect = { CHARACTER = scope:actor TARGET = scope:recipient VALUE = minor_unity_loss DESC = clan_unity_blinding.desc REVERSE_NON_HOUSE_TARGET = no } } else = { add_clan_unity_interaction_effect = { CHARACTER = scope:actor TARGET = scope:recipient VALUE = medium_unity_loss DESC = clan_unity_blinding.desc REVERSE_NON_HOUSE_TARGET = no } } } ## Disfigure. if = { limit = { scope:maim_face = yes } show_as_tooltip = { scope:recipient = { add_trait = disfigured release_from_prison = yes } } torture_blind_castrate_disfigure_opinion_effect = { VERB = disfigured } scope:actor = { clear_designated_heir = yes trigger_event = { id = prison.1030 days = 1 } } add_clan_unity_interaction_effect = { CHARACTER = scope:actor TARGET = scope:recipient VALUE = major_unity_loss DESC = clan_unity_maimed.desc REVERSE_NON_HOUSE_TARGET = no } } ## Take off an arm. if = { limit = { scope:maim_arm = yes } show_as_tooltip = { scope:recipient = { apply_maimed_trait_and_modifier_effect = yes release_from_prison = yes } } torture_blind_castrate_disfigure_opinion_effect = { VERB = maimed } scope:actor = { clear_designated_heir = yes save_scope_value_as = { name = maim_type value = flag:arm } trigger_event = { id = prison.1041 days = 1 } } add_clan_unity_interaction_effect = { CHARACTER = scope:actor TARGET = scope:recipient VALUE = major_unity_loss DESC = clan_unity_maimed.desc REVERSE_NON_HOUSE_TARGET = no } } ## Take off a leg. if = { limit = { scope:maim_leg = yes } show_as_tooltip = { scope:recipient = { add_trait = one_legged release_from_prison = yes } } torture_blind_castrate_disfigure_opinion_effect = { VERB = maimed } scope:actor = { clear_designated_heir = yes save_scope_value_as = { name = maim_type value = flag:leg } trigger_event = { id = prison.1041 days = 1 } } add_clan_unity_interaction_effect = { CHARACTER = scope:actor TARGET = scope:recipient VALUE = major_unity_loss DESC = clan_unity_maimed.desc REVERSE_NON_HOUSE_TARGET = no } } } auto_accept = yes ai_targets = { ai_recipients = prisoners } ai_potential = { has_diarchy_active_parameter = diarchy_is_co_rulership liege_can_maim_co_ruler_without_killing_them_trigger = yes } ai_will_do = { base = -50 modifier = { has_trait = sadistic add = 50 } modifier = { has_trait = callous add = 40 } ai_value_modifier = { ai_compassion = tiny_chance_impact_negative_ai_value #Adds +50 for highly uncompassionate characters, -50 for highly compassionate characters } opinion_modifier = { opinion_target = scope:recipient multiplier = -1 } #Scope:target has caused internal strife in the realm character_hates_scope_due_to_strife_modifier = { TARGET = scope:recipient } modifier = { # Family Feud scope:actor = { house_has_feud_relation_with_trigger = { TARGET = scope:recipient } } add = 30 } modifier = { scope:actor = { has_opinion_modifier = { modifier = tried_to_escape_from_prison_opinion target = scope:recipient } } add = 25 } } ai_frequency_by_tier = { barony = 0 county = 0 duchy = 0 kingdom = 60 empire = 60 hegemony = 60 } }