#FORGIVING INTERACTION abandon_hook_interaction = { interface_priority = 120 common_interaction = yes category = interaction_category_friendly icon = forgiving desc = abandon_hook_interaction_desc is_shown = { OR = { scope:actor = { has_trait = forgiving } #Struggle scope:actor = { any_character_struggle = { involvement = involved has_struggle_phase_parameter = unlocks_abandon_hook_for_all is_secondary_character_involvement_involved_trigger = { CHAR = scope:recipient } } } } } is_valid_showing_failures_only = { scope:recipient = { is_busy_in_events_localised = yes } scope:actor = { has_usable_hook = scope:recipient } custom_description = { scope:actor = { NOT = { has_hook_of_type = { target = scope:recipient type = house_head_hook } } } text = need_non_house_head_hook } custom_description = { scope:actor = { NOT = { has_hook_of_type = { target = scope:recipient type = ritual_best_friend_hook } } } text = need_non_best_friend_hook } } on_accept = { scope:actor = { send_interface_toast = { type = event_toast_effect_neutral title = msg_abandon_hook_interaction_title left_icon = scope:actor right_icon = scope:recipient use_hook = scope:recipient if = { limit = { has_strong_hook = scope:recipient } stress_impact = { forgiving = major_stress_impact_loss } } else = { stress_impact = { forgiving = medium_stress_impact_loss } } scope:recipient = { add_opinion = { target = scope:actor modifier = forgiven_opinion } } } } # If we're a clan this interaction affects unity add_clan_unity_interaction_effect = { CHARACTER = scope:actor TARGET = scope:recipient VALUE = minor_unity_gain DESC = clan_unity_abandon_hook.desc REVERSE_NON_HOUSE_TARGET = no } hidden_effect = { # Struggle Catalysts scope:actor = { if = { limit = { fp3_struggle_involves_one_supporter_and_one_detractor = { FIRST = scope:actor SECOND = scope:recipient } any_character_struggle = { involvement = involved phase_has_catalyst = catalyst_abandon_hook_on_supporter_detractor } } every_character_struggle = { involvement = involved activate_struggle_catalyst = { catalyst = catalyst_abandon_hook_on_supporter_detractor character = scope:actor } log_debug_variable_for_persian_struggle_effect = { VAR = concession_catalyst_abandon_hook_on_supporter_detractor } } } } } } ai_frequency = 60 ai_targets = { ai_recipients = guests ai_recipients = courtiers max = 10 } ai_targets = { ai_recipients = liege } ai_targets = { ai_recipients = vassals max = 10 } ai_target_quick_trigger = { adult = yes } ai_potential = { stress_level >= 1 } ai_will_do = { base = 100 } auto_accept = yes } #ARBITRARY INTERACTION dismiss_strong_hook_interaction = { interface_priority = 120 common_interaction = yes category = interaction_category_hostile icon = arbitrary cost = { prestige = monumental_prestige_value } desc = dismiss_strong_hook_interaction_desc is_shown = { scope:actor = { has_trait = arbitrary } scope:recipient = { is_vassal_of = scope:actor has_strong_hook = scope:actor } } is_valid_showing_failures_only = { scope:actor = { prestige >= monumental_prestige_value } } on_accept = { scope:actor = { send_interface_toast = { type = event_toast_effect_neutral title = msg_dismiss_hook_interaction_title left_icon = scope:actor right_icon = scope:recipient scope:recipient = { remove_hook = { target = scope:actor } add_opinion = { target = scope:actor modifier = lost_strong_hook_opinion } } add_tyranny = 35 } } # If we're a clan this interaction affects unity add_clan_unity_interaction_effect = { CHARACTER = scope:actor TARGET = scope:recipient VALUE = medium_unity_gain DESC = clan_unity_dismiss_strong_hook.desc REVERSE_NON_HOUSE_TARGET = no } } ai_frequency = 60 ai_potential = { dread >= 50 } ai_will_do = { base = 100 } ai_targets = { ai_recipients = guests ai_recipients = courtiers max = 10 } ai_targets = { ai_recipients = liege } ai_targets = { ai_recipients = vassals max = 10 } ai_target_quick_trigger = { adult = yes } auto_accept = yes } dismiss_weak_hook_interaction = { interface_priority = 120 common_interaction = yes category = interaction_category_hostile icon = arbitrary cost = { prestige = major_prestige_value } desc = dismiss_weak_hook_interaction_desc is_shown = { scope:actor = { has_trait = arbitrary } scope:recipient = { is_vassal_of = scope:actor has_usable_hook = scope:actor NOT = { has_strong_hook = scope:actor } } } is_valid_showing_failures_only = { scope:actor = { prestige >= major_prestige_value } } on_accept = { scope:actor = { send_interface_toast = { type = event_toast_effect_neutral title = msg_dismiss_hook_interaction_title left_icon = scope:actor right_icon = scope:recipient scope:recipient = { remove_hook = { target = scope:actor } add_opinion = { target = scope:actor modifier = lost_weak_hook_opinion } progress_towards_rival_effect = { CHARACTER = scope:actor REASON = rival_dismissed_weak_hook OPINION = default_rival_opinion } } add_tyranny = 15 } } # If we're a clan this interaction affects unity add_clan_unity_interaction_effect = { CHARACTER = scope:actor TARGET = scope:recipient VALUE = minor_unity_gain DESC = clan_unity_dismiss_weak_hook.desc REVERSE_NON_HOUSE_TARGET = no } } ai_targets = { ai_recipients = guests ai_recipients = courtiers max = 10 } ai_targets = { ai_recipients = liege } ai_targets = { ai_recipients = vassals max = 10 } ai_target_quick_trigger = { adult = yes } ai_frequency = 60 ai_potential = { dread >= 50 } ai_will_do = { base = 100 } auto_accept = yes } #WRATHFUL DUELING force_duel_criminals_interaction = { interface_priority = 30 common_interaction = yes category = interaction_category_hostile ai_maybe = yes ai_max_reply_days = 0 popup_on_receive = yes pause_on_receive = yes desc = force_duel_criminals_interaction_desc icon = wrathful greeting = negative notification_text = REQUEST_TRIAL_BY_COMBAT_TEXT is_shown = { #First, verify if the actor is Wrathful scope:actor = { has_trait = wrathful } #Then, look to see if this character is a criminal. scope:actor = { OR = { has_imprisonment_reason = scope:recipient has_banish_reason = scope:recipient has_execute_reason = scope:recipient } basic_allowed_to_imprison_character_trigger = { # And if you are allowed to imprison the target. CHARACTER = scope:recipient } } # Can't duel yourself. NOT = { scope:actor = scope:recipient } } is_valid_showing_failures_only = { # Calc some stuff that might invalidate elsewhere before the bout is sorted. rival_single_combat_shown_and_not_invalid_trigger = yes # Scope:recipient must be able to fight personally. scope:recipient = { can_start_single_combat_trigger = yes } # Scope:recipient must not be banned from single combat. scope:recipient = { custom_description = { text = fp1_tbc_recipient_banned_from_combat can_start_single_combat_banned_checks_trigger = no } } # Neither of the characters can be imprisoned. scope:actor = { is_imprisoned = no } scope:recipient = { is_imprisoned = no } } can_send = { scope:actor = { custom_description = { text = "character_interactions_hostile_actions_disabled_delay" NOT = { has_character_flag = flag_hostile_actions_disabled_delay } } } } cooldown_against_recipient = { years = 10 } on_send = { scope:actor = { add_character_flag = { flag = flag_hostile_actions_disabled_delay days = 10 } } } on_accept = { # Set up the bout immediately. #Starting with the strongest punishment in case more than one reason is valid if = { limit = { scope:actor = { has_execute_reason = scope:recipient } } ## First inform. scope:actor = { custom_tooltip = force_duel_criminals_interaction.execute_punishment.tt } ## Finally, begin. configure_start_single_combat_effect = { SC_INITIATOR = scope:actor SC_ATTACKER = scope:actor SC_DEFENDER = scope:recipient FATALITY = no FIXED = no LOCALE = terrain_scope OUTPUT_EVENT = trait_specific_interactions.0155 INVALIDATION_EVENT = fp1_tbc.0102 } } else_if = { limit = { scope:actor = { has_banish_reason = scope:recipient } } ## First inform. scope:actor = { custom_tooltip = force_duel_criminals_interaction.banish_punishment.tt } ## Finally, begin. configure_start_single_combat_effect = { SC_INITIATOR = scope:actor SC_ATTACKER = scope:actor SC_DEFENDER = scope:recipient FATALITY = no FIXED = no LOCALE = terrain_scope OUTPUT_EVENT = trait_specific_interactions.0153 INVALIDATION_EVENT = fp1_tbc.0102 } } else_if = { limit = { scope:actor = { has_imprisonment_reason = scope:recipient } } scope:actor = { custom_tooltip = force_duel_criminals_interaction.imprison_punishment.tt } configure_start_single_combat_effect = { SC_INITIATOR = scope:actor SC_ATTACKER = scope:actor SC_DEFENDER = scope:recipient FATALITY = no FIXED = no LOCALE = terrain_scope OUTPUT_EVENT = trait_specific_interactions.0151 INVALIDATION_EVENT = fp1_tbc.0102 } } } auto_accept = yes # AI ai_potential = { has_trait = wrathful is_imprisoned = no can_start_single_combat_trigger = yes } ai_target_quick_trigger = { adult = yes } ai_targets = { ai_recipients = courtiers ai_recipients = guests max = 10 } ai_targets = { ai_recipients = vassals max = 10 } ai_targets = { ai_recipients = family max = 10 } ai_frequency = 120 ai_will_do = { base = -50 # Factor for personality (excluding realism). modifier = { add = { value = ai_boldness multiply = 1 } } modifier = { add = ai_vengefulness } modifier = { add = { value = ai_energy multiply = -0.25 } } # Don't challenge kinslayer-counting family, unless they're your nemesis. modifier = { scope:actor = { murdering_character_is_kinslaying_in_faith_trigger = { CHARACTER = scope:recipient FAITH = scope:actor.faith } } scope:recipient = { NOT = { has_relation_nemesis = scope:actor } } add = -1000 } # Don't challenge your spouse, unless they're your nemesis. modifier = { scope:recipient = { is_spouse_of = scope:actor NOT = { has_relation_nemesis = scope:actor } } add = -1000 } # Don't challenge people hopelessly out of your league unless you're really, really not seeing things clearly. modifier = { scope:actor = { prowess_diff = { target = scope:recipient value <= -15 } ai_rationality >= high_negative_ai_value } add = -1000 } } } #IRRITABLE DUELING force_duel_anyone_interaction = { #need to have a stress level >= 1 interface_priority = 30 common_interaction = yes category = interaction_category_hostile ai_maybe = yes ai_max_reply_days = 0 popup_on_receive = yes pause_on_receive = yes desc = force_duel_anyone_interaction_desc icon = irritable greeting = negative notification_text = REQUEST_TRIAL_BY_COMBAT_TEXT is_shown = { #Just, verify if the actor is Wrathful scope:actor = { has_trait = irritable } # Can't duel yourself. NOT = { scope:actor = scope:recipient } } is_valid_showing_failures_only = { # Need to be stressed to be able to force a Duel scope:actor = { custom_description = { stress_level >= 1 text = not_enough_stress } } # Calc some stuff that might invalidate elsewhere before the bout is sorted. rival_single_combat_shown_and_not_invalid_trigger = yes # Scope:recipient must be able to fight personally. scope:recipient = { can_start_single_combat_trigger = yes } # Scope:recipient must not be banned from single combat. scope:recipient = { custom_description = { text = fp1_tbc_recipient_banned_from_combat can_start_single_combat_banned_checks_trigger = no } } # Neither of the characters can be imprisoned. scope:actor = { is_imprisoned = no } scope:recipient = { is_imprisoned = no } } can_send = { scope:actor = { custom_description = { text = "character_interactions_hostile_actions_disabled_delay" NOT = { has_character_flag = flag_hostile_actions_disabled_delay } } } } cost = { prestige = medium_prestige_value } cooldown_against_recipient = { years = 10 } on_send = { scope:actor = { add_character_flag = { flag = flag_hostile_actions_disabled_delay days = 10 } } } on_accept = { # Set up the bout immediately. ## First inform. scope:actor = { add_tyranny = 5 add_dread = 5 custom_tooltip = challenge_to_single_combat_interaction.victor_gets.tt custom_tooltip = challenge_to_single_combat_interaction.loser_gets.tt } ## Finally, begin. configure_start_single_combat_effect = { SC_INITIATOR = scope:actor SC_ATTACKER = scope:actor SC_DEFENDER = scope:recipient FATALITY = no FIXED = no LOCALE = terrain_scope OUTPUT_EVENT = perk_interaction.0101 INVALIDATION_EVENT = fp1_tbc.0102 } # 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_released_anger.desc REVERSE_NON_HOUSE_TARGET = no } } auto_accept = yes # AI ai_potential = { has_trait = irritable stress_level >= 1 is_imprisoned = no can_start_single_combat_trigger = yes } ai_target_quick_trigger = { adult = yes } ai_targets = { ai_recipients = prisoners ai_recipients = courtiers ai_recipients = guests max = 1 } ai_targets = { ai_recipients = family max = 10 } ai_targets = { ai_recipients = vassals max = 10 } ai_frequency = 120 ai_will_do = { base = -50 # Factor for personality (excluding realism). modifier = { add = { value = ai_boldness multiply = 1 } } modifier = { add = ai_vengefulness } modifier = { add = { value = ai_energy multiply = -0.25 } } # Don't challenge kinslayer-counting family, unless they're your nemesis. modifier = { scope:actor = { murdering_character_is_kinslaying_in_faith_trigger = { CHARACTER = scope:recipient FAITH = scope:actor.faith } } scope:recipient = { NOT = { has_relation_nemesis = scope:actor } } add = -1000 } # Don't challenge your spouse, unless they're your nemesis. modifier = { scope:recipient = { is_spouse_of = scope:actor NOT = { has_relation_nemesis = scope:actor } } add = -1000 } # Don't challenge people hopelessly out of your league unless you're really, really not seeing things clearly. modifier = { scope:actor = { prowess_diff = { target = scope:recipient value <= -15 } ai_rationality >= high_negative_ai_value } add = -1000 } } }