################################################## # General Triggers fp2_should_use_iberian_graphics_trigger = { culture = { has_building_gfx = iberian_building_gfx } } fp2_character_any_involvement_iberian_struggle_trigger = { has_fp2_dlc_trigger = yes OR = { fp2_character_involved_in_struggle_trigger = yes fp2_character_interloper_in_struggle_trigger = yes } } fp2_character_involved_in_struggle_trigger = { has_fp2_dlc_trigger = yes any_character_struggle = { involvement = involved is_struggle_type = iberian_struggle } } fp2_character_interloper_in_struggle_trigger = { has_fp2_dlc_trigger = yes any_character_struggle = { involvement = interloper is_struggle_type = iberian_struggle } } fp2_character_uninvolved_in_struggle_trigger = { has_fp2_dlc_trigger = yes exists = struggle:iberian_struggle fp2_character_interloper_in_struggle_trigger = no fp2_character_involved_in_struggle_trigger = no } eligible_for_fp2_dynasty_legacies_trigger = { has_fp2_dlc_trigger = yes dynasty = { OR = { dynast = { OR = { any_character_struggle = { involvement = involved is_struggle_type = iberian_struggle } culture = { has_cultural_pillar = heritage_iberian } capital_province ?= { geographical_region = world_europe_west_iberia } } } } } } is_toledo_ownership_valid_trigger = { title:c_toledo.holder = { OR = { this = root liege = root top_liege = root } faith = { portrait_religious_faith_or_foundational_trigger = { FAITH = faith:mozarabic_church } } } } ################################################## # Cultural & Regional Triggers culture_valid_for_ritualised_best_friends_trigger = { culture = { has_cultural_parameter = strong_hooks_and_stress_effects_best_friends } } valid_ritualised_best_friendship_two_way_trigger = { $ACTOR_FRIEND$ = { # Check that they have the appropriate cultural parameter... culture_valid_for_ritualised_best_friends_trigger = yes # ... and that they've still got a best friend... any_relation = { type = best_friend this = $RECIPIENT_FRIEND$ # ... who also still has the cultural parameter. culture_valid_for_ritualised_best_friends_trigger = yes } } } valid_ritualised_best_friendship_one_way_trigger = { $ACTOR_FRIEND$ = { # Check that they have the appropriate cultural parameter... culture_valid_for_ritualised_best_friends_trigger = yes # ... and that they've got a best friend... any_relation = { type = best_friend # ... who also still has the cultural parameter. culture_valid_for_ritualised_best_friends_trigger = yes } } } ################################################## # Illustration Triggers ################################################## # Interaction Triggers has_any_best_friend_synergy_bonus_modifier_trigger = { OR = { has_character_modifier = fp2_single_synergy_diplomacy_modifier has_character_modifier = fp2_single_synergy_martial_modifier has_character_modifier = fp2_single_synergy_stewardship_modifier has_character_modifier = fp2_single_synergy_intrigue_modifier has_character_modifier = fp2_single_synergy_learning_modifier has_character_modifier = fp2_double_synergy_diplomacy_diplomacy_modifier has_character_modifier = fp2_double_synergy_diplomacy_martial_modifier has_character_modifier = fp2_double_synergy_diplomacy_stewardship_modifier has_character_modifier = fp2_double_synergy_diplomacy_intrigue_modifier has_character_modifier = fp2_double_synergy_diplomacy_learning_modifier has_character_modifier = fp2_double_synergy_martial_diplomacy_modifier has_character_modifier = fp2_double_synergy_martial_martial_modifier has_character_modifier = fp2_double_synergy_martial_stewardship_modifier has_character_modifier = fp2_double_synergy_martial_intrigue_modifier has_character_modifier = fp2_double_synergy_martial_learning_modifier has_character_modifier = fp2_double_synergy_stewardship_diplomacy_modifier has_character_modifier = fp2_double_synergy_stewardship_martial_modifier has_character_modifier = fp2_double_synergy_stewardship_stewardship_modifier has_character_modifier = fp2_double_synergy_stewardship_intrigue_modifier has_character_modifier = fp2_double_synergy_stewardship_learning_modifier has_character_modifier = fp2_double_synergy_intrigue_diplomacy_modifier has_character_modifier = fp2_double_synergy_intrigue_martial_modifier has_character_modifier = fp2_double_synergy_intrigue_stewardship_modifier has_character_modifier = fp2_double_synergy_intrigue_intrigue_modifier has_character_modifier = fp2_double_synergy_intrigue_learning_modifier has_character_modifier = fp2_double_synergy_learning_diplomacy_modifier has_character_modifier = fp2_double_synergy_learning_martial_modifier has_character_modifier = fp2_double_synergy_learning_stewardship_modifier has_character_modifier = fp2_double_synergy_learning_intrigue_modifier has_character_modifier = fp2_double_synergy_learning_learning_modifier } } purchase_truce_interaction_recipient_can_de_jure_war_actor_trigger = { scope:recipient = { OR = { has_cb_on = { target = scope:actor cb = de_jure_cb } has_cb_on = { target = scope:actor cb = individual_county_de_jure_cb } has_cb_on = { target = scope:actor cb = individual_duchy_de_jure_cb } } } } fp2_struggle_contract_assistance_war_winning_trigger = { trigger_if = { limit = { scope:recipient = { is_attacker_in_war = prev } } attacker_war_score >= offer_assistance_interaction_already_winning_value } trigger_else = { defender_war_score >= offer_assistance_interaction_already_winning_value } } fp2_struggle_contract_assistance_war_losing_trigger = { trigger_if = { limit = { scope:recipient = { is_attacker_in_war = prev } } defender_war_score >= offer_assistance_interaction_already_losing_value } trigger_else = { attacker_war_score >= offer_assistance_interaction_already_losing_value } } fp2_struggle_contract_assistance_war_outnumbering_trigger = { trigger_if = { limit = { scope:recipient = { is_attacker_in_war = prev } } war_attacker_total_strength_halved_value > war_defender_total_strength_value } trigger_else = { war_defender_total_strength_halved_value > war_attacker_total_strength_value } } fp2_struggle_contract_assistance_war_outnumbered_trigger = { trigger_if = { limit = { scope:recipient = { is_attacker_in_war = prev } } war_defender_total_strength_halved_value > war_attacker_total_strength_value } trigger_else = { war_attacker_total_strength_halved_value > war_defender_total_strength_value } } fp2_struggle_contract_assistance_war_outnumbered_minor_trigger = { trigger_if = { limit = { scope:recipient = { is_attacker_in_war = prev } } war_defender_total_strength_value > war_attacker_total_strength_value } trigger_else = { war_attacker_total_strength_value > war_defender_total_strength_value } } fp2_struggle_contract_assistance_war_insufficient_trigger = { trigger_if = { limit = { scope:recipient = { is_attacker_in_war = prev } } scope:actor.max_military_strength < war_defender_total_strength_tenth_value } trigger_else = { scope:actor.max_military_strength < war_attacker_total_strength_tenth_value } } ################################################## # Religious Triggers ################################################## # Achievement Triggers ################################################## # Decision Triggers ##### Struggle Ending ##### ### Common # Checks a de jure kingdom of Hispania is completely controlled fp2_struggle_ending_hold_de_jure_kingdom_trigger = { title:e_spain ?= { any_in_de_jure_hierarchy = { tier = tier_kingdom any_in_de_jure_hierarchy = { tier = tier_county } holder = root root = { completely_controls = prev } } } } # Checks less than half of Iberia owned fp2_struggle_ending_percent_iberia_trigger = { any_county_in_region = { region = world_europe_west_iberia percent < fp2_struggle_compromise_owned_percent_decimal_value holder.top_liege = root } } # Checks no more than half of Iberia is owned by another fp2_struggle_ending_other_percent_iberia_trigger = { struggle:iberian_struggle = { NOT = { any_involved_ruler = { exists = primary_title # Max figured out that is_independent_ruler causes errors if you are unlanded this != root top_liege = this primary_title = { is_mercenary_company = no } any_county_in_region = { region = world_europe_west_iberia percent > fp2_struggle_compromise_involved_percent_decimal_value holder.top_liege = prev } } } } } # Checks duchy is held by an independent ruler who owns at least half of it fp2_struggle_ending_compromise_independent_duchy_trigger = { tier = tier_duchy # Is created exists = holder OR = { # Is not the heartland of an existing kingdom title_capital_county != de_jure_liege.title_capital_county # Capital duke doesn't control kingdom, edge case AND = { exists = de_jure_liege.holder holder != de_jure_liege.holder } } # Is ruled by an independent duke holder = { top_liege = this save_temporary_scope_as = duchy_holder primary_title = { is_mercenary_company = no OR = { tier = tier_duchy tier = tier_kingdom } } } OR = { this = holder.primary_title holder.primary_title.tier = tier_kingdom } # Duke rules at least half the de jure duchy any_direct_de_jure_vassal_title = { percent >= 0.5 holder.top_liege = scope:duchy_holder } } # Checks duchy should be split from de jure kingdom fp2_struggle_ending_compromise_split_duchy_trigger = { tier = tier_duchy # Has not been tampered with already NOT = { is_in_list = duchy_kingdom } # Is not created NOT = { exists = holder } # Is not heartland of an existing kingdom title_capital_county != de_jure_liege.title_capital_county save_temporary_scope_as = duchy # Less than half is owned by de jure kingdom, if created trigger_if = { limit = { exists = scope:duchy.de_jure_liege.holder } any_direct_de_jure_vassal_title = { percent < 0.5 holder.top_liege = scope:duchy.de_jure_liege.holder.top_liege } } trigger_else = { always = no } } # Checks titular duchy should be made into de jure kingdom fp2_struggle_ending_compromise_titular_trigger = { # Has not been tampered with already NOT = { is_in_list = duchy_kingdom } # Is created exists = holder # Is ruled by an independent duke holder = { top_liege = this primary_title = { is_mercenary_company = no tier = tier_duchy } } # Titular duke holds at least half of any de jure duchy of Hispania title:e_spain = { any_in_de_jure_hierarchy = { tier = tier_duchy any_direct_de_jure_vassal_title = { percent >= 0.5 holder.top_liege = scope:special_duchy.holder } } } } # Should title be created by ststus quo decision? fp2_struggle_ending_compromise_create_title_trigger = { NOR = { this = title:e_spain exists = holder is_in_list = assigned_title # Only if no other same rank rulers in title (e.g. multiple kings under empire) any_direct_de_jure_vassal_title = { exists = holder holder != scope:new_owner_temp } } } # Checks two cultures were Involved in the struggle that ended in Conciliation fp2_struggle_conciliation_special_cultural_rules_trigger = { has_global_variable = fp2_struggle_conciliation_ending any_in_global_list = { variable = fp2_struggle_ending_culture_list this = $C1$.culture } any_in_global_list = { variable = fp2_struggle_ending_culture_list this = $C2$.culture } } # Checks two faiths were Involved in the struggle that ended in Conciliation are_holy_wars_disabled_by_struggle_conciliation_trigger = { has_global_variable = fp2_struggle_conciliation_ending any_in_global_list = { variable = fp2_struggle_ending_faith_list this = scope:attacker.faith } any_in_global_list = { variable = fp2_struggle_ending_faith_list this = scope:defender.faith } } # Checks if characters were both involved in struggle fp2_struggle_conciliation_recipient_actor_involved_trigger = { has_global_variable = fp2_struggle_conciliation_ending AND = { scope:actor.capital_province = { geographical_region = world_europe_west_iberia } scope:recipient.capital_province = { geographical_region = world_europe_west_iberia } # Offer comes from an Involved culture/faith character OR = { any_in_global_list = { variable = fp2_struggle_ending_faith_list this = scope:actor.faith } any_in_global_list = { variable = fp2_struggle_ending_culture_list this = scope:actor.culture } } # Recipient is from an Involved culture/faith OR = { any_in_global_list = { variable = fp2_struggle_ending_faith_list this = scope:recipient.faith } any_in_global_list = { variable = fp2_struggle_ending_culture_list this = scope:recipient.culture } } } } # Checks if character was involved in struggle fp2_struggle_conciliation_scope_uninvolved_trigger = { has_global_variable = fp2_struggle_conciliation_ending OR = { NOR = { any_in_global_list = { variable = fp2_struggle_ending_faith_list this = $SCOPE$.faith } any_in_global_list = { variable = fp2_struggle_ending_culture_list this = $SCOPE$.culture } } NOT = { $SCOPE$.capital_province = { geographical_region = world_europe_west_iberia } } } } fp2_struggle_compromise_transfer_duchy_trigger = { tier = tier_duchy save_temporary_scope_as = transfer_duchy # Duchy is completely controlled by its capital's holder's top_liege exists = title_capital_county.holder.top_liege title_capital_county.holder.top_liege = { completely_controls = scope:transfer_duchy } # De jure liege does not control duchy trigger_if = { limit = { exists = kingdom.holder } kingdom != scope:transfer_duchy.title_capital_county.holder.top_liege.capital_county.kingdom } # Is controlled by a kingdom tier trigger_else = { title_capital_county.holder.top_liege.primary_title.tier >= tier_kingdom } # Duchy is connected de_jure to holders kingdom any_de_jure_county = { any_title_to_title_neighboring_and_across_water_county = { exists = kingdom.holder kingdom.holder = scope:transfer_duchy.title_capital_county.holder.top_liege } } } fp2_struggle_council_toledo_attendee_trigger = { OR = { has_trait = education_learning_3 has_trait = education_learning_4 has_trait = education_learning_5 } } fp2_struggle_council_toledo_decision_trigger = { is_toledo_ownership_valid_trigger = yes is_at_war = no } fp2_struggle_secure_iberian_foothold_iberian_kingdom_trigger = { tier = tier_kingdom de_jure_liege = title:e_spain root = { completely_controls = prev } save_temporary_scope_as = iberian_kingdom_temp } fp2_struggle_secure_iberian_foothold_faith_trigger = { fp2_struggle_secure_iberian_foothold_faith_percent_value >= fp2_struggle_secure_iberian_foothold_faith_target_percent_value } fp2_struggle_secure_iberian_foothold_outsider_kingdom_trigger = { any_de_jure_county = { any_title_to_title_neighboring_and_across_water_county = { NOT = { empire = title:e_spain } kingdom.holder = root } } } fp2_struggle_iberian_reclamation_should_vassalize_trigger = { any_character_struggle = { is_struggle_type = iberian_struggle } any_held_title = { tier < scope:attacker.primary_title.tier } any_realm_county = { count = all duchy = { is_in_list = target_titles } any_county_struggle = { is_struggle_type = iberian_struggle } } } fp2_struggle_any_realm_county_in_hispania_trigger = { any_realm_county = { target_is_de_jure_liege_or_above = title:e_spain } } fp2_iberian_reclamation_vassalize_iberian_trigger = { tier = tier_county holder = { any_character_struggle = { involvement = involved is_struggle_type = iberian_struggle } liege = scope:defender this != scope:defender capital_county = { any_county_struggle = { is_struggle_type = iberian_struggle } } } } fp2_iberian_reclamation_involved_county_trigger = { any_realm_county = { any_county_struggle = { is_struggle_type = iberian_struggle } } } fp2_iberian_reclamation_vassalize_vassal_trigger = { primary_title.tier >= tier_county primary_title.tier < scope:attacker.primary_title.tier any_character_struggle = { is_struggle_type = iberian_struggle } capital_county = { duchy = { is_in_list = target_titles } } any_sub_realm_county = { count = all duchy = { is_in_list = target_titles } any_county_struggle = { is_struggle_type = iberian_struggle } } } fp2_struggle_enforce_truce_war_leader_trigger = { custom_tooltip = { text = fp2_enforce_truce_war_with_not_involved_tt any_character_struggle = { involvement = involved } } custom_tooltip = { text = fp2_enforce_truce_tier_difference_tt tier_difference = { target = scope:actor value <= 0 } } NOR = { this = scope:recipient this = scope:actor } custom_tooltip = { text = fp2_enforce_truce_liege_or_independent_tt OR = { scope:recipient = { top_liege = this } scope:recipient.top_liege = scope:actor.top_liege top_liege = this top_liege = scope:actor.top_liege } } } fp2_bargain_fealty_war_outnumbered_trigger = { war_attacker_total_strength_halved_value > scope:recipient.max_military_strength } fp2_bargain_fealty_war_losing_trigger = { attacker_war_score >= fp2_bargain_fealty_interaction_already_losing_value } # We use a hard trigger so that this can be easily adjusted without overwriting the rest of the fp2_interactions file by modders. struggle_can_access_unlocks_bargain_fealty_interaction_trigger = { # Just uhh, use an OR if you add something else. is_struggle_type = iberian_struggle } ################################################## # Multi-File Event Triggers fp2_lyonese_monk_0002_papal_hof_trigger = { OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion } exists = faith.religious_head faith.religious_head_title = title:k_papal_state } fp2_lyonese_monk_0002_valid_character_configuration_trigger = { OR = { has_trait = scholar has_trait = theologian has_trait = lifestyle_mystic AND = { is_ai = no learning >= very_high_skill_rating has_lifestyle = learning_lifestyle } } } fp2_lyonese_monk_0002_valid_court_trigger = { # Must have the Pope as a HoF. fp2_lyonese_monk_0002_papal_hof_trigger = yes # Filter out anyone not able to be at home when the monk comes a'knockin'. is_physically_able = yes # Must be into bookish discussions. ## Narratively, this is what attracts them to your court. ## Mechanically, this is how players can opt in for the chain so it's not completely random. fp2_lyonese_monk_0002_valid_character_configuration_trigger = yes # Remove non-playables. NOR = { government_has_flag = government_is_theocracy government_has_flag = government_is_republic } # Plus, for various reasons, we don't want Lyon _itself_. NOT = { any_held_title = { this = title:c_lyon } } } fp2_lyonese_monk_0000_valid_for_events_trigger = { fp2_lyonese_monk_0000_out_of_realm_trigger = no fp2_lyonese_monk_0000_out_of_freedom_trigger = no fp2_lyonese_monk_0000_out_of_popes_trigger = no fp2_lyonese_monk_0000_out_of_faith_trigger = no } fp2_lyonese_monk_0000_out_of_realm_trigger = { scope:acolyte = { OR = { is_alive = no is_imprisoned = yes AND = { is_landed_or_landless_administrative = no NOT = { host = scope:acolyte_host # Make an exception if you're in prison, since that should give a different event. scope:acolyte_host = { is_imprisoned = no } } } AND = { is_landed_or_landless_administrative = yes NOT = { any_liege_or_above = { this = scope:acolyte_host } } } } } } fp2_lyonese_monk_0000_out_of_freedom_trigger = { is_imprisoned = yes } fp2_lyonese_monk_0000_out_of_popes_trigger = { NOT = { exists = scope:story.var:base_faith.religious_head } } fp2_lyonese_monk_0000_out_of_faith_trigger = { OR = { scope:acolyte.faith.religious_head != scope:story.var:base_faith.religious_head scope:acolyte_host.faith.religious_head != scope:story.var:base_faith.religious_head } } fp2_does_this_player_care_about_the_fate_of_iberia = { this != root OR = { location = { OR = { # Is in region geographical_region = world_europe_west geographical_region = world_africa_north geographical_region = world_europe_south_italy } } struggle:iberian_struggle = { is_culture_involved_in_struggle = prev.culture } } } fp2_eligible_for_yearly_events_trigger = { has_fp2_dlc_trigger = yes OR = { any_character_struggle = { involvement = involved is_struggle_type = iberian_struggle } culture = { has_cultural_pillar = heritage_iberian } capital_province ?= { geographical_region = world_europe_west_iberia } } } fp2_purchase_truce_interaction_soft_requirements_trigger = { OR = { always = no any_character_struggle = { involvement = involved has_struggle_phase_parameter = unlocks_truce_purchasing_interaction } has_perk = defensive_negotiations_perk culture = { has_cultural_parameter = unlocks_purchase_truce } } }