################## # Purchase Land # by Joe Parkin ################## purchase_land_interaction = { category = interaction_category_laamp interface_priority = 30 icon = purchase_land_interaction desc = purchase_land_interaction_desc target_type = title target_filter = recipient_de_jure_titles cooldown_against_recipient = { years = 10 } notification_text = { first_valid = { triggered_desc = { trigger = { scope:recipient = { top_liege != this } scope:target = { trigger_if = { limit = { tier = tier_duchy } scope:recipient.highest_held_title_tier = tier_duchy } trigger_else = { scope:recipient.highest_held_title_tier = tier_county } } } desc = PURCHASE_LAND_PROPOSAL_FELLOW_VASSAL } triggered_desc = { trigger = { scope:target = { trigger_if = { limit = { tier = tier_duchy } scope:recipient.highest_held_title_tier >= tier_kingdom } trigger_else = { scope:recipient.highest_held_title_tier >= tier_duchy } } } desc = PURCHASE_LAND_PROPOSAL_LIEGE } desc = PURCHASE_LAND_PROPOSAL } } popup_on_receive = yes pause_on_receive = yes interface_priority = 60 ai_min_reply_days = 4 ai_max_reply_days = 9 send_options_exclusive = no is_shown = { has_ep3_dlc_trigger = yes scope:actor = { OR = { government_has_flag = government_is_landless_adventurer government_has_flag = government_is_landless_minority } } scope:recipient = { is_landed = yes # Need to own the land/cannot directly buy a governorship (procure estate first) NOR = { government_has_flag = government_is_administrative government_has_flag = government_is_japan_administrative government_has_flag = government_is_japan_feudal government_has_flag = government_is_celestial government_has_flag = government_is_meritocratic } } scope:recipient != scope:actor } has_valid_target = { custom_tooltip = { #prevent unwanted trigger tooltip text = blank_line scope:target ?= { is_title_created = yes holder = { is_ai = yes this = scope:recipient } OR = { #flatten the selection tier = tier_duchy tier = tier_county } NOR = { this = scope:recipient.capital_county this = scope:recipient.capital_county.duchy } } } } send_option = { flag = offer_gold localization = purchase_land_interaction_offer_gold current_description = purchase_land_interaction_offer_gold_desc } send_option = { flag = hook is_valid = { scope:actor = { has_usable_hook = scope:recipient } } localization = GENERIC_SPEND_A_HOOK } send_option = { flag = offer_hook is_valid = { NOT = { scope:recipient = { has_usable_hook = scope:actor } } } localization = purchase_land_interaction_offer_hook current_description = purchase_land_interaction_offer_hook_desc } send_option = { flag = vassal_obligation is_shown = { scope:recipient = { government_has_flag = government_is_feudal } } localization = purchase_land_interaction_offer_obligations current_description = purchase_land_interaction_offer_obligations_desc } can_be_picked_title = { custom_tooltip = { text = purchase_land_tier_tt scope:target = { tier >= tier_county tier <= tier_duchy } } custom_tooltip = { text = purchase_land_capital_tt scope:target != scope:recipient.capital_county } custom_tooltip = { text = purchase_land_primary_tt scope:target != scope:recipient.primary_title } custom_tooltip = { text = purchase_land_duchy_tt scope:target = { trigger_if = { limit = { tier = tier_duchy } scope:actor = { prestige_level >= 3 } } } } trigger_if = { limit = { exists = scope:target.holder } scope:target.holder = scope:recipient } } is_valid_showing_failures_only = { scope:actor = { top_liege = this } scope:actor = { prestige_level >= 2 } scope:actor = { NOT = { has_trait = gallowsbait } } scope:actor = { NOT = { has_trait = gallivanter } } scope:recipient = { is_at_war = no } trigger_if = { # Can't purchase Baronies limit = { scope:target ?= { tier = tier_barony } } custom_description = { text = purchase_land_barony_tt always = no } } trigger_if = { # Can't purchase Kingdoms or Empires limit = { scope:target ?= { tier >= tier_kingdom } } custom_description = { text = purchase_land_kingdom_tt always = no } } trigger_if = { # Can't purchase HoF titles limit = { scope:target ?= { is_head_of_faith = yes } } custom_description = { text = purchase_land_religious_tt always = no } } trigger_if = { # Can't purchase nf titles limit = { scope:target ?= { is_noble_family_title = yes } } custom_description = { text = purchase_land_noble_family_tt always = no } } trigger_if = { # Can't purchase laamp titles limit = { scope:target ?= { has_variable = adventurer_creation_reason } } custom_description = { text = purchase_land_landless_adventurer_tt always = no } } trigger_if = { limit = { scope:recipient = { any_held_county = { count < 2 } } } custom_description = { text = purchase_land_minimum_county_tt object = scope:recipient always = no } } scope:recipient = { NOT = { has_strong_hook = scope:actor } } #Has to be used instead of diplo range checks in laamp to landed interactions ep3_laamp_diplo_range_trigger = { TARGET = scope:recipient LAAMP = scope:actor } # Adventurers can't join wars in places they're exiled from. custom_tooltip = { text = the_wake_1 NOT = { is_laamp_exiled_from_province_trigger = { PROVINCE = scope:recipient.capital_province LAAMP = scope:actor } } } } cost = { gold = { if = { limit = { scope:target.tier = tier_county } add = purchase_land_county_cost_value } else = { add = purchase_land_duchy_cost_value scope:target = { every_de_jure_county = { limit = { ep3_purchase_land_valid_county_trigger = yes } add = purchase_land_county_cost_value } } } if = { limit = { scope:offer_gold = yes } multiply = 2 } } } on_accept = { scope:actor = { save_scope_as = adventurer } scope:target = { add_to_list = purchased_titles if = { limit = { tier = tier_duchy } every_de_jure_county = { limit = { ep3_purchase_land_valid_county_trigger = yes } add_to_list = purchased_titles } } } ordered_in_list = { list = purchased_titles order_by = tier save_scope_as = new_primary_title } save_scope_value_as = { name = purchase_land_cost value = { every_in_list = { list = purchased_titles if = { limit = { tier = tier_county } add = purchase_land_county_cost_value } else_if = { limit = { tier = tier_duchy } add = purchase_land_duchy_cost_value } } if = { limit = { scope:actor = { has_variable = ep3_grace_to_the_family_var } } multiply = 0.5 } if = { limit = { scope:offer_gold = yes } multiply = 2 } } } save_scope_value_as = { name = purchase_land_legitimacy_cost value = { value = 0 if = { limit = { scope:target.holder != scope:recipient } every_in_list = { list = purchased_titles if = { limit = { tier = tier_county } add = minor_legitimacy_loss } else = { add = medium_legitimacy_loss } } } } } show_as_tooltip = { purchase_land_interaction_shortened_effect = yes } if = { limit = { always = scope:hook } scope:actor = { use_hook = scope:recipient } } scope:actor = { trigger_event = ep3_laamps.0100 } } on_decline = { scope:actor = { save_scope_as = adventurer trigger_event = ep3_laamps.0102 } } ai_targets = { ai_recipients = domicile_location_top_ruler ai_recipients = contacts } ai_targets = { ai_recipients = domicile_location_neighboring_top_realm_vassals ai_recipients = domicile_location_top_realm_vassals ai_recipients = domicile_location_neighboring_top_rulers max = 20 } ai_frequency_by_tier = { barony = 0 county = 0 duchy = 60 kingdom = 0 empire = 0 hegemony = 0 } ai_accept = { base = 0 # Try to make it 0 for most interactions opinion_modifier = { # Opinion Factor who = scope:recipient opinion_target = scope:actor multiplier = 1 desc = AI_OPINION_REASON } modifier = { # Num of counties/duchy add = { value = 0 scope:target = { if = { limit = { tier = tier_county } add = -30 } else = { add = -60 every_de_jure_county = { limit = { ep3_purchase_land_valid_county_trigger = yes } add = -30 } } } } desc = PURCHASE_LAND_NUM_TITLES_REASON } modifier = { # Too close to capital add = -50 desc = PURCHASE_LAND_DE_JURE_DUCHY_REASON scope:target.duchy = scope:recipient.capital_county.duchy } modifier = { # Province value add = { value = 0 if = { limit = { scope:target.tier = tier_county } add = scope:target.development_level scope:target = { every_county_province = { add = num_buildings } } } else = { scope:target = { every_de_jure_county = { limit = { ep3_purchase_land_valid_county_trigger = yes } add = development_level every_county_province = { add = num_buildings } } } } multiply = -2 } #add = 1 desc = PURCHASE_LAND_VALUE_REASON } modifier = { # Land is foreign add = 10 desc = PURCHASE_LAND_FOREIGN_COUNTY_CULTURE_REASON add = { value = 0 if = { limit = { scope:target.tier = tier_county } add = 10 } else = { scope:target = { every_de_jure_county = { limit = { ep3_purchase_land_valid_county_trigger = yes culture != scope:recipient.culture } add = 10 } } } max = 30 } desc = PURCHASE_LAND_FOREIGN_CULTURE_REASON trigger_if = { limit = { scope:target.tier = tier_county } scope:target.culture != scope:recipient.culture } trigger_else = { scope:target = { any_de_jure_county = { ep3_purchase_land_valid_county_trigger = yes culture != scope:recipient.culture } } } } modifier = { # Different faith add = { value = 0 if = { limit = { scope:target.tier = tier_county } add = 10 } else = { scope:target = { every_de_jure_county = { limit = { ep3_purchase_land_valid_county_trigger = yes faith != scope:recipient.faith } add = 10 } } } max = 30 } desc = PURCHASE_LAND_DIFFERENT_FAITH_REASON trigger_if = { limit = { scope:target.tier = tier_county } scope:target.faith != scope:recipient.faith } trigger_else = { scope:target = { any_de_jure_county = { ep3_purchase_land_valid_county_trigger = yes faith != scope:recipient.faith } } } } modifier = { # My culture's lands add = { value = 0 if = { limit = { scope:target.tier = tier_county } add = -40 } else = { scope:target = { every_de_jure_county = { limit = { ep3_purchase_land_valid_county_trigger = yes culture != scope:recipient.culture } add = -40 } } } if = { limit = { scope:acceptance != 0 } divide = scope:acceptance } multiply = 2 min = -200 } desc = PURCHASE_LAND_MY_CULTURE_REASON scope:actor.culture != scope:recipient.culture trigger_if = { limit = { scope:target.tier = tier_county } scope:target.culture = scope:recipient.culture } trigger_else = { scope:target = { any_de_jure_county = { ep3_purchase_land_valid_county_trigger = yes culture = scope:recipient.culture } } } scope:recipient.culture = { save_temporary_scope_value_as = { name = acceptance value = { value = "cultural_acceptance(scope:actor.culture)" divide = 25 ceiling = yes } } } } modifier = { # My faith's lands add = { value = 0 if = { limit = { scope:target.tier = tier_county } add = -40 } else = { scope:target = { every_de_jure_county = { limit = { ep3_purchase_land_valid_county_trigger = yes faith != scope:recipient.faith } add = -40 } } } if = { limit = { scope:hostility != 0 } multiply = scope:hostility } multiply = 2 min = -200 } desc = PURCHASE_LAND_MY_FAITH_REASON scope:actor.faith != scope:recipient.faith trigger_if = { limit = { scope:target.tier = tier_county } scope:target.faith = scope:recipient.faith } trigger_else = { scope:target = { any_de_jure_county = { ep3_purchase_land_valid_county_trigger = yes faith = scope:recipient.faith } } } scope:recipient.faith = { save_temporary_scope_value_as = { name = hostility value = "faith_hostility_level(scope:actor.faith)" } } } modifier = { # Too close add = { value = 0 add = scope:distance divide = scope:recipient.highest_held_title_tier if = { limit = { scope:distance <= squared_distance_medium } multiply = -0.01 } else = { multiply = 0.0005 } min = -25 max = 50 } desc = PURCHASE_LAND_DISTANCE_REASON trigger_if = { limit = { scope:target.tier = tier_county } scope:target = { save_temporary_scope_as = distance_target } } trigger_else = { scope:target.title_capital_county = { save_temporary_scope_as = distance_target } } scope:recipient.capital_county = { save_temporary_scope_value_as = { name = distance value = "squared_distance(scope:distance_target)" } } } opinion_modifier = { # Opinion Factor of title holder trigger = { NOT = { scope:target.holder ?= scope:recipient } } who = scope:recipient opinion_target = scope:target.holder multiplier = -1 desc = AI_OPINION_REASON } modifier = { add = { value = scope:actor.prestige_level multiply = 20 } scope:actor.prestige_level >= 4 desc = PURCHASE_LAND_PRESTIGE_LEVEL_REASON } modifier = { add = 40 trigger = { scope:actor.culture != scope:recipient.culture OR = { AND = { scope:target.tier = tier_county scope:target.culture = scope:recipient.culture } scope:target = { any_de_jure_county = { ep3_purchase_land_valid_county_trigger = yes culture = scope:recipient.culture } } } } scope:actor.primary_spouse ?= { culture = scope:recipient.culture dynasty ?= { dynasty_prestige_level >= 2 } } desc = PURCHASE_LAND_MARRIED_TO_CULTURE_NOBLE_REASON } modifier = { add = 40 trigger = { scope:actor.faith != scope:recipient.faith } scope:actor.primary_spouse ?= { faith = scope:recipient.faith dynasty ?= { dynasty_prestige_level >= 2 } } desc = PURCHASE_LAND_MARRIED_TO_FAITH_NOBLE_REASON } modifier = { add = 80 scope:actor.primary_spouse ?= { house ?= scope:recipient.house } desc = PURCHASE_LAND_MARRIED_TO_HOUSE_REASON } modifier = { add = 20 trigger = { OR = { AND = { scope:target.tier = tier_county scope:target.culture = scope:recipient.culture } scope:target = { any_de_jure_county = { ep3_purchase_land_valid_county_trigger = yes culture = scope:recipient.culture } } } } scope:actor = { knows_language_of_culture = scope:recipient.culture culture != scope:recipient.culture } desc = PURCHASE_LAND_SPEAKS_LANGUAGE_REASON } modifier = { add = -40 scope:actor = { NOT = { knows_language_of_culture = scope:recipient.culture culture = scope:recipient.culture } } desc = PURCHASE_LAND_DOES_NOT_SPEAK_LANGUAGE_REASON } modifier = { add = { value = 40 multiply = scope:recipient.debt_level } trigger = { scope:recipient = { OR = { debt_level > 0 treasury_debt_level > 0 } } } desc = PURCHASE_LAND_IS_IN_DEBT_REASON } modifier = { add = 60 scope:actor = { has_any_moderate_good_relationship_with_character_trigger = { CHARACTER = scope:recipient } } desc = PURCHASE_LAND_RELATIONSHIP_REASON } modifier = { add = 80 scope:offer_gold = yes desc = PURCHASE_LAND_DOUBLE_GOLD_REASON } modifier = { add = 160 scope:hook = yes desc = YOU_HAVE_HOOK_REASON } modifier = { add = 60 scope:offer_hook = yes desc = PURCHASE_LAND_OFFER_HOOK_REASON } modifier = { add = 80 scope:vassal_obligation = yes desc = PURCHASE_LAND_OBLIGATIONS_REASON } } ai_will_do = { base = -25 ai_value_modifier = { ai_boldness = -0.5 ai_energy = -0.5 ai_greed = 0.5 } modifier = { gold < 1000 factor = 0 } modifier = { gold > 2000 add = 50 } } } ################## # Request Invasion Sponsorship # by Joe Parkin ################## request_laamp_invasion_sponsorship_interaction = { common_interaction = no category = interaction_category_laamp interface_priority = 20 cooldown_against_recipient = { years = 5 } greeting = positive notification_text = REQUEST_LAAMP_INVASION_SPONSORSHIP_PROPOSAL answer_accept_key = REQUEST_LAAMP_INVASION_SPONSORSHIP_ACCEPT answer_reject_key = REQUEST_LAAMP_INVASION_SPONSORSHIP_REJECT icon = request_invasion_sponsorship_interaction desc = request_laamp_invasion_sponsorship_interaction_desc is_shown = { has_ep3_dlc_trigger = yes scope:actor = { OR = { government_has_flag = government_is_landless_adventurer government_has_flag = government_is_landless_minority } } scope:recipient = { is_landed = yes } scope:recipient != scope:actor NOT = { scope:actor = { has_realm_law = camp_purpose_legitimists } } } is_valid_showing_failures_only = { scope:actor = { top_liege = this custom_tooltip = { text = request_laamp_invasion_sponsorship_existing_supporter_tt NOT = { exists = var:adventurer_invasion_supporter } } } scope:recipient = { top_liege = this highest_held_title_tier >= tier_kingdom custom_tooltip = { text = request_laamp_invasion_sponsorship_existing_supportee_tt NOT = { exists = var:adventurer_invasion_supportee } } } #Has to be used instead of diplo range checks in laamp to landed interactions ep3_laamp_diplo_range_trigger = { TARGET = scope:recipient LAAMP = scope:actor } #You need to be at least Illustrious scope:actor = { prestige_level >= 3 } } populate_recipient_list = { every_independent_ruler = { limit = { highest_held_title_tier >= tier_kingdom is_landed = yes in_diplomatic_range = scope:actor in_diplomatic_range = scope:recipient NOR = { is_at_war_with = scope:actor is_at_war_with = scope:recipient is_allied_to = scope:actor is_allied_to = scope:recipient has_truce = scope:actor has_truce = scope:recipient this = scope:actor this = scope:recipient } } add_to_list = characters } } send_options_exclusive = no send_option = { flag = request_soldiers localization = request_laamp_invasion_sponsorship_option_request_soldiers current_description = request_laamp_invasion_sponsorship_option_request_soldiers_desc starts_enabled = { always = yes } } send_option = { flag = join_war localization = request_laamp_invasion_sponsorship_option_join_war current_description = request_laamp_invasion_sponsorship_option_join_war_desc is_valid = { scope:secondary_recipient ?= { NOR = { is_at_war_with = scope:recipient is_allied_to = scope:recipient has_truce = scope:recipient } } } } send_option = { flag = offer_gold localization = request_laamp_invasion_sponsorship_option_offer_gold current_description = request_laamp_invasion_sponsorship_option_offer_gold_desc is_shown = { exists = scope:recipient } is_valid = { scope:actor.gold >= scope:recipient.request_laamp_invasion_sponsorship_gold_cost } } send_option = { flag = hook is_valid = { scope:actor = { has_usable_hook = scope:recipient } } localization = GENERIC_SPEND_A_HOOK } cost = { prestige = { value = massive_prestige_value if = { limit = { scope:join_war = yes } add = major_prestige_value } } gold = { if = { limit = { scope:offer_gold = yes } value = scope:recipient.request_laamp_invasion_sponsorship_gold_cost } } } can_send = { custom_tooltip = { text = request_laamp_invasion_sponsorship_minimum_request_tt OR = { scope:join_war = yes scope:request_soldiers = yes } } } on_accept = { scope:actor = { save_scope_as = adventurer } scope:recipient ?= { if = { limit = { scope:request_soldiers = yes scope:join_war = yes } custom_tooltip = adventurer_invasion_supporter_tt } else_if = { limit = { scope:request_soldiers = yes } custom_tooltip = adventurer_invasion_supporter_soldiers_tt } else_if = { limit = { scope:join_war = yes } custom_tooltip = adventurer_invasion_supporter_join_tt } else = { custom_tooltip = request_laamp_invasion_sponsorship_minimum_request_tt } hidden_effect = { set_variable = { name = adventurer_invasion_supportee value = scope:actor years = 5 } set_variable = { name = adventurer_invasion_target value = scope:secondary_recipient years = 5 } if = { limit = { scope:join_war = yes } set_variable = { name = adventurer_invasion_join_war value = scope:actor years = 5 } } if = { limit = { scope:request_soldiers = yes } set_variable = { name = adventurer_invasion_request_soldiers value = scope:actor years = 5 } } } } scope:actor = { if = { limit = { scope:offer_gold = yes } show_as_tooltip = { pay_short_term_gold = { gold = scope:recipient.request_laamp_invasion_sponsorship_gold_cost target = scope:recipient } } } if = { limit = { scope:hook = yes } use_hook = scope:recipient } custom_tooltip = { text = adventurer_invasion_supporter_victory_tt set_variable = { name = adventurer_invasion_supporter value = scope:recipient years = 5 } set_variable = { name = adventurer_invasion_target value = scope:secondary_recipient years = 5 } } trigger_event = ep3_laamps.0200 } } on_decline = { scope:actor = { trigger_event = ep3_laamps.0201 } } use_diplomatic_range = yes ai_accept = { base = -25 # Relationships: actor -> recipient / We avoid more relationship checks for balance reasons (and because important decisions tend to care little for relationships) modifier = { # Rivalry modifier. desc = offer_vassalization_interaction_aibehavior_rival_tt scope:recipient = { has_relation_rival = scope:actor NOT = { has_relation_nemesis = scope:actor } } add = -10 } modifier = { # Nemesis modifier. desc = offer_vassalization_interaction_aibehavior_nemesis_tt scope:recipient = { has_relation_nemesis = scope:actor } add = -100 } modifier = { # Same Dynasty modifier. desc = offer_vassalization_interaction_aibehavior_dynasty_tt scope:recipient.dynasty = scope:actor.dynasty add = 10 } # Compare Opinion modifier opinion_modifier = { who = scope:recipient opinion_target = scope:actor multiplier = 0.5 } opinion_modifier = { who = scope:recipient opinion_target = scope:secondary_recipient multiplier = -0.5 } # Relative power (taken from PT interaction) modifier = { # A lot less levies than scope:secondary_recipient add = -50 scope:recipient.max_military_strength <= scope:secondary_recipient.purchase_truce_interaction_recipient_far_weaker_value scope:join_war = yes desc = REQUEST_LAAMP_INVASION_SPONSORSHIP_MUCH_WEAKER_REASON } modifier = { # Few less levies than scope:secondary_recipient add = -25 scope:recipient.max_military_strength > scope:secondary_recipient.purchase_truce_interaction_recipient_far_weaker_value scope:recipient.max_military_strength <= scope:secondary_recipient.purchase_truce_interaction_recipient_somewhat_weaker_value scope:join_war = yes desc = REQUEST_LAAMP_INVASION_SPONSORSHIP_SOMEWHAT_WEAKER_REASON } modifier = { # Roughly equal levies with scope:secondary_recipient add = -10 scope:recipient.max_military_strength > scope:secondary_recipient.purchase_truce_interaction_recipient_somewhat_weaker_value scope:recipient.max_military_strength <= scope:secondary_recipient.purchase_truce_interaction_recipient_somewhat_stronger_value scope:join_war = yes desc = REQUEST_LAAMP_INVASION_SPONSORSHIP_ROUGHLY_EQUAL_REASON } # AI who are in debt will take whatever windfalls they can. modifier = { add = { value = scope:recipient.debt_level add = 1 # Our first level is 0, so we add one to always get a positive number. multiply = 10 } scope:offer_gold = yes scope:recipient.debt_level > 0 desc = PT_AI_IS_IN_DEBT } # Pacifist AI don't like raiding modifier = { add = -25 scope:recipient.faith = { has_doctrine_parameter = pacifist_opinion_active } desc = PT_AI_IS_PACIFIST_FAITH } modifier = { add = -25 scope:recipient.culture = { has_cultural_parameter = reduced_cost_for_conversion_to_pacifist_faith } desc = PT_AI_IS_PACIFIST_CULTURE } # Small realm modifier = { add = -50 scope:recipient.realm_size < minor_realm_size desc = REQUEST_LAAMP_INVASION_SPONSORSHIP_SMALL_REALM_REASON } # Own war modifier = { add = -50 scope:recipient = { is_at_war = yes } scope:join_war = yes desc = REQUEST_LAAMP_INVASION_SPONSORSHIP_OWN_WAR_REASON } modifier = { # Distance add = { value = 0 add = scope:distance if = { limit = { scope:distance >= squared_distance_medium } add = scope:distance multiply = -0.00001 } min = -100 } desc = REQUEST_LAAMP_INVASION_SPONSORSHIP_DISTANCE_REASON scope:recipient = { NOT = { any_neighboring_top_liege_realm_owner = { this = scope:secondary_recipient } } } scope:recipient.capital_county = { save_temporary_scope_value_as = { name = distance value = "squared_distance(scope:secondary_recipient.capital_county)" } } } modifier = { add = -30 scope:recipient.faith = scope:secondary_recipient.faith desc = I_AM_ATTACKING_A_CORELIGIONIST } modifier = { add = -10 scope:actor.faith != scope:recipient.faith desc = DIFFERENT_FAITH } modifier = { add = -200 scope:recipient.primary_heir ?= scope:secondary_recipient desc = WONT_FIGHT_HEIR_REASON } modifier = { add = -200 scope:recipient = { is_consort_of = scope:secondary_recipient } desc = WONT_FIGHT_SPOUSE_REASON } modifier = { add = -100 scope:recipient = { has_relation_friend = scope:secondary_recipient NOT = { has_relation_best_friend = scope:secondary_recipient } } desc = WONT_FIGHT_FRIEND_REASON } modifier = { add = -200 scope:recipient = { has_relation_best_friend = scope:secondary_recipient } desc = WONT_FIGHT_BEST_FRIEND_REASON } modifier = { add = -100 scope:recipient = { has_relation_lover = scope:secondary_recipient NOT = { has_relation_soulmate = scope:secondary_recipient } } desc = WONT_FIGHT_LOVER_REASON } modifier = { add = -200 scope:recipient = { has_relation_soulmate = scope:secondary_recipient } desc = WONT_FIGHT_SOULMATE_REASON } modifier = { add = -200 scope:recipient = { is_allied_to = scope:secondary_recipient } desc = WAR_WITH_ALLY_REASON } modifier = { add = 50 scope:hook = yes desc = YOU_HAVE_HOOK_REASON } # Offered proportional gold modifier = { add = -25 scope:request_soldiers = yes desc = REQUEST_LAAMP_INVASION_SPONSORSHIP_REQUEST_SOLDIERS_REASON } modifier = { add = -50 scope:join_war = yes desc = REQUEST_LAAMP_INVASION_SPONSORSHIP_JOIN_WAR_REASON } modifier = { add = 35 scope:offer_gold = yes desc = GOLD_REASON } # AI value mod ai_value_modifier = { ai_greed = 0.5 ai_boldness = 0.25 min = 0 max = 25 } } can_send_despite_rejection = no } ################## # Negotiate Settlement # by Joe Parkin ################## negotiate_settlement_interaction = { common_interaction = yes category = interaction_category_diplomacy icon = negotiate_settlement_interaction desc = negotiate_settlement_interaction_desc target_type = title target_filter = actor_domain_titles cooldown_against_recipient = { years = 5 } notification_text = { first_valid = { triggered_desc = { trigger = { scope:actor = { top_liege != this } scope:target = { trigger_if = { limit = { tier = tier_duchy } scope:actor.highest_held_title_tier = tier_duchy } trigger_else = { scope:actor.highest_held_title_tier = tier_county } } } desc = NEGOTIATE_SETTLEMENT_PROPOSAL_FELLOW_VASSAL } triggered_desc = { trigger = { scope:target = { trigger_if = { limit = { tier = tier_duchy } scope:actor.highest_held_title_tier >= tier_kingdom } trigger_else = { scope:actor.highest_held_title_tier >= tier_duchy } } } desc = NEGOTIATE_SETTLEMENT_PROPOSAL_LIEGE } desc = NEGOTIATE_SETTLEMENT_PROPOSAL } } popup_on_receive = yes pause_on_receive = yes interface_priority = 60 ai_min_reply_days = 4 ai_max_reply_days = 9 is_shown = { has_ep3_dlc_trigger = yes scope:actor = { is_landed = yes } scope:recipient = { OR = { government_has_flag = government_is_landless_adventurer government_has_flag = government_is_landless_minority } } scope:recipient != scope:actor } can_be_picked_title = { custom_tooltip = { text = purchase_land_tier_tt scope:target = { tier >= tier_county tier <= tier_duchy } } custom_tooltip = { text = purchase_land_capital_tt NOR = { scope:target = scope:actor.capital_county scope:target = scope:actor.capital_county.duchy } } custom_tooltip = { text = purchase_land_primary_tt scope:target != scope:actor.primary_title } custom_tooltip = { text = negotiate_settlement_title_cant_receive_reason_higher_tier_without_county scope:target = { tier = tier_duchy any_de_jure_county = { ep3_negotiate_settlement_valid_county_trigger = yes } } } trigger_if = { limit = { scope:actor = { is_ai = yes } scope:recipient = { is_ai = yes } scope:target.tier < tier_duchy } scope:recipient = { OR = { current_military_strength < 1000 # You can do better global_variable_list_size = { name = laamps_tally value >= too_many_laamps_value } } OR = { AND = { has_character_modifier = ep3_lust_for_land_modifier ai_greed >= 25 ai_boldness >= 25 ai_rationality <= -25 } AND = { has_trait = greedy ai_rationality <= -50 } global_variable_list_size = { name = laamps_tally value >= too_many_laamps_value } } } } } has_valid_target_showing_failures_only = { trigger_if = { # Can't purchase HoF titles limit = { scope:target ?= { is_head_of_faith = yes } } custom_description = { text = negotiate_settlement_religious_tt always = no } } trigger_if = { # Can't purchase nf titles limit = { scope:target ?= { is_noble_family_title = yes } } custom_description = { text = negotiate_settlement_noble_family_tt always = no } } trigger_if = { # Can't purchase laamp titles limit = { scope:target ?= { has_variable = adventurer_creation_reason } } custom_description = { text = negotiate_settlement_landless_adventurer_tt always = no } } trigger_if = { limit = { scope:actor = { government_has_flag = government_is_administrative } } scope:target.tier = tier_duchy } trigger_else = { scope:target = { tier >= tier_county tier <= tier_duchy } } } is_valid_showing_failures_only = { scope:recipient = { custom_tooltip = { text = negotiate_settlement_target_tt OR = { any_character_war = { is_attacker = scope:recipient primary_defender = scope:actor save_temporary_scope_as = war_temp } AND = { exists = scope:recipient.capital_province scope:recipient.capital_province.county.holder.top_liege = scope:actor.top_liege } } } } # Can only settle if not at risk of losing land, outside of war of adventurer custom_tooltip = { text = negotiate_settlement_defensive_wars_tt scope:actor = { NOT = { any_character_war = { any_war_defender = { this = scope:actor } NOT = { any_war_attacker = { this = scope:recipient } } } } } } NOT = { scope:actor = { has_relation_nemesis = scope:recipient } } trigger_if = { # Can't purchase Baronies limit = { scope:target ?= { tier = tier_barony } } custom_description = { text = negotiate_settlement_barony_tt always = no } } trigger_if = { # Can't purchase Kingdoms or Empires limit = { scope:target ?= { tier >= tier_kingdom } } custom_description = { text = negotiate_settlement_kingdom_tt always = no } } trigger_if = { limit = { scope:actor = { any_held_county = { count < 2 } } } custom_description = { text = negotiate_settlement_minimum_county_tt always = no } } scope:recipient = { NOT = { has_strong_hook = scope:actor } } # Adventurers can't be negotiated back into places they're exiled from. trigger_if = { limit = { scope:actor = { top_liege != this } } custom_tooltip = { text = the_wake_1 NOT = { is_laamp_exiled_from_province_trigger = { PROVINCE = scope:actor.capital_province LAAMP = scope:recipient } } } } # Story blockers. ## Hereward cannot be exiled by active participants in the Harrying of the North. disable_interaction_for_hereward_trigger = yes ## Hasan cannot be exiled by anyone during his story. disable_interaction_for_hasan_trigger = yes } on_send = { debug_log = "NEGOTIATE_SETTLEMENT" debug_log_scopes = yes } on_accept = { scope:actor = { save_scope_as = adventurer } scope:target = { add_to_list = offered_titles if = { limit = { tier = tier_duchy } every_de_jure_county = { limit = { ep3_negotiate_settlement_valid_county_trigger = yes } add_to_list = offered_titles } } } ordered_in_list = { list = offered_titles save_scope_as = new_primary_title } save_scope_value_as = { name = negotiate_settlement_legitimacy_cost value = { value = 0 every_in_list = { list = offered_titles if = { limit = { tier = tier_county } add = -25 } else = { add = -50 } } multiply = scope:actor.highest_held_title_tier } } show_as_tooltip = { negotiate_settlement_interaction_effect = yes } scope:actor = { trigger_event = ep3_laamps.0300 } } on_decline = { scope:actor = { trigger_event = ep3_laamps.0302 } } ai_targets = { ai_recipients = scripted_relations ai_recipients = spouses max = 5 } ai_targets = { ai_recipients = top_realm_domicile_owners ai_recipients = nearby_domicile_owners max = 5 } ai_targets = { ai_recipients = war_enemies max = 10 } # Must be fairly common as it can happen during war ai_frequency_by_tier = { barony = 0 county = 0 duchy = 3 kingdom = 3 empire = 3 hegemony = 3 } ai_potential = { OR = { top_liege = this highest_held_title_tier >= tier_kingdom } OR = { is_at_war = yes has_trait = craven has_trait = generous } NOT = { government_has_flag = government_is_nomadic } } ai_accept = { base = 0 # Try to make it 0 for most interactions opinion_modifier = { # Opinion Factor who = scope:recipient opinion_target = scope:actor multiplier = 0.5 desc = AI_OPINION_REASON } ai_value_modifier = { ai_boldness = -0.25 ai_energy = -0.25 ai_greed = 0.25 } modifier = { # Claims add = { value = 0 if = { limit = { scope:recipient = { has_claim_on = scope:target } } add = 25 } if = { limit = { scope:target.tier = tier_duchy } scope:target = { every_de_jure_county = { limit = { ep3_negotiate_settlement_valid_county_trigger = yes save_temporary_scope_as = claim_temp scope:recipient = { has_claim_on = scope:claim_temp } } add = 25 } } } } desc = NEGOTIATE_SETTLEMENT_CLAIM_REASON OR = { scope:recipient = { has_claim_on = scope:target } trigger_if = { limit = { scope:target.tier = tier_duchy } scope:target = { any_de_jure_county = { ep3_negotiate_settlement_valid_county_trigger = yes save_temporary_scope_as = county_temp scope:recipient = { has_claim_on = scope:county_temp } } } } trigger_else = { always = no } } } modifier = { add = -300 scope:recipient = { has_realm_law = camp_purpose_legitimists } desc = NEGOTIATE_SETTLEMENT_LEGITIMIST_REASON } modifier = { # Tier lower than war claim add = { value = 0 scope:recipient = { every_character_war = { limit = { primary_attacker = scope:recipient primary_defender = scope:actor casus_belli = { any_target_title = { tier > scope:target.tier } } } casus_belli = { every_target_title = { limit = { tier > scope:target.tier } add = -25 } } } } } desc = NEGOTIATE_SETTLEMENT_LOWER_THAN_WAR_TARGET_REASON scope:recipient = { any_character_war = { primary_attacker = scope:recipient primary_defender = scope:actor casus_belli = { any_target_title = { tier > scope:target.tier } } } } } modifier = { # War Targets add = { value = 0 scope:recipient = { every_character_war = { limit = { primary_attacker = scope:recipient casus_belli = { any_target_title = { OR = { this = scope:target de_jure_liege = scope:target } } } } casus_belli = { every_target_title = { limit = { OR = { this = scope:target de_jure_liege = scope:target } } add = 25 } } } } } desc = NEGOTIATE_SETTLEMENT_WAR_TARGET_REASON scope:recipient = { any_character_war = { primary_attacker = scope:recipient casus_belli = { any_target_title = { OR = { this = scope:target de_jure_liege = scope:target } } } } } } modifier = { # Num of counties/duchy add = { value = 0 scope:target = { if = { limit = { tier = tier_county } add = 25 } else = { add = 50 every_de_jure_county = { limit = { ep3_negotiate_settlement_valid_county_trigger = yes } add = 25 } } } } desc = NEGOTIATE_SETTLEMENT_NUM_TITLES_REASON } modifier = { # Province value add = { value = 0 if = { limit = { scope:target.tier = tier_county } add = scope:target.development_level scope:target = { every_county_province = { add = num_buildings } } } else = { scope:target = { every_de_jure_county = { limit = { ep3_negotiate_settlement_valid_county_trigger = yes } add = development_level every_county_province = { add = num_buildings } } } } } #add = 1 desc = NEGOTIATE_SETTLEMENT_VALUE_REASON } modifier = { # Land is foreign add = -10 desc = NEGOTIATE_SETTLEMENT_FOREIGN_COUNTY_CULTURE_REASON add = { value = 0 if = { limit = { scope:target.tier = tier_county } add = -10 } else = { scope:target = { every_de_jure_county = { limit = { ep3_negotiate_settlement_valid_county_trigger = yes culture != scope:recipient.culture } add = -10 } } } min = -30 } desc = NEGOTIATE_SETTLEMENT_FOREIGN_CULTURE_REASON trigger_if = { limit = { scope:target.tier = tier_county } scope:target.culture != scope:recipient.culture } trigger_else = { scope:target = { any_de_jure_county = { ep3_negotiate_settlement_valid_county_trigger = yes culture != scope:recipient.culture } } } } modifier = { # Different faith add = { value = 0 if = { limit = { scope:target.tier = tier_county } add = -10 } else = { scope:target = { every_de_jure_county = { limit = { ep3_negotiate_settlement_valid_county_trigger = yes faith != scope:recipient.faith } add = -10 } } } min = -30 } desc = NEGOTIATE_SETTLEMENT_DIFFERENT_FAITH_REASON trigger_if = { limit = { scope:target.tier = tier_county } scope:target.faith != scope:recipient.faith } trigger_else = { scope:target = { any_de_jure_county = { ep3_negotiate_settlement_valid_county_trigger = yes faith != scope:recipient.faith } } } } modifier = { # Losing/winning as attacker add = { value = 0 scope:recipient = { ordered_character_war = { limit = { OR = { primary_attacker = scope:actor primary_defender = scope:actor } OR = { primary_attacker = scope:recipient primary_defender = scope:recipient } } order_by = war_days if = { limit = { primary_attacker = scope:actor primary_defender = scope:recipient } add = defender_war_score } else = { add = attacker_war_score } } } divide = 4 } desc = NEGOTIATE_SETTLEMENT_LOSING_WAR_REASON scope:recipient = { any_character_war = { OR = { primary_attacker = scope:actor primary_defender = scope:actor } OR = { primary_attacker = scope:recipient primary_defender = scope:recipient } trigger_if = { limit = { primary_attacker = scope:actor primary_defender = scope:recipient } defender_war_score >= 25 } trigger_else = { attacker_war_score >= 25 } } } } modifier = { # Losing/winning as defender add = { value = 0 scope:recipient = { ordered_character_war = { limit = { OR = { primary_attacker = scope:actor primary_defender = scope:actor } OR = { primary_attacker = scope:recipient primary_defender = scope:recipient } } order_by = war_days if = { limit = { primary_attacker = scope:actor primary_defender = scope:recipient } add = attacker_war_score } else = { add = defender_war_score } } } divide = 4 } desc = NEGOTIATE_SETTLEMENT_LOSING_WAR_REASON scope:recipient = { any_character_war = { OR = { primary_attacker = scope:actor primary_defender = scope:actor } OR = { primary_attacker = scope:recipient primary_defender = scope:recipient } trigger_if = { limit = { primary_attacker = scope:actor primary_defender = scope:recipient } attacker_war_score >= 25 } trigger_else = { defender_war_score >= 25 } } } } modifier = { # Number of troops at peace, add = { add = current_military_strength multiply = -0.02 } desc = laamp_has_soldiers_negotiate_settlement_tt } modifier = { add = -50000 scope:actor = { is_ai = yes } NOT = { scope:target.tier >= tier_duchy } scope:recipient = { NOR = { current_military_strength < 1000 # You can do better global_variable_list_size = { name = laamps_tally value >= too_many_laamps_value } } NOR = { AND = { has_character_modifier = ep3_lust_for_land_modifier ai_greed >= 25 ai_boldness >= 25 ai_rationality <= -25 } AND = { has_trait = greedy ai_rationality <= -50 } global_variable_list_size = { name = laamps_tally value >= too_many_laamps_value } } } } } ai_will_do = { base = -25 modifier = { add = 25 scope:actor.domain_size > scope:actor.domain_limit } opinion_modifier = { who = scope:actor opinion_target = scope:recipient multiplier = 0.25 } ai_value_modifier = { ai_boldness = -0.25 ai_energy = -0.25 ai_greed = -0.25 } modifier = { # Tier lower than war claim add = { value = 0 scope:recipient = { every_character_war = { limit = { primary_attacker = scope:recipient primary_defender = scope:actor casus_belli = { any_target_title = { tier > scope:target.tier } } attacker_war_score >= 50 } add = 150 } } } desc = NEGOTIATE_SETTLEMENT_SAVE_TITLE_REASON scope:recipient = { any_character_war = { primary_attacker = scope:recipient primary_defender = scope:actor casus_belli = { any_target_title = { tier > scope:target.tier } } attacker_war_score >= 50 } } } modifier = { scope:recipient = { has_government = landless_adventurer_government has_realm_law = camp_purpose_legitimists any_claim = { OR = { holder ?= { OR = { this = scope:actor target_is_liege_or_above = scope:actor } } target_is_de_jure_liege_or_above = scope:actor.primary_title } } } desc = NEGOTIATE_SETTLEMENT_DE_JURE_LEGITIMIST_REASON add = -150 } modifier = { # Defending against a LAAMP any_character_war = { primary_defender = scope:actor any_war_attacker = { scope:recipient ?= this has_government = landless_adventurer_government NOT = { has_realm_law = camp_purpose_legitimists } # Attacking laamp's troops at least 10% of defender's total troops current_military_strength > war_defender_total_strength_tenth_value } OR = { attacker_war_score >= 25 # Attackers outnumber defenders at least 2:1 war_attacker_total_current_strength_halved_value >= war_defender_total_current_strength_value } } desc = NEGOTIATE_SETTLEMENT_DEFENDING_REASON add = { value = 0 every_character_war = { limit = { primary_defender = scope:actor any_war_attacker = { scope:recipient ?= this has_government = landless_adventurer_government NOT = { has_realm_law = camp_purpose_legitimists } # Attacking laamp's troops at least 10% of defender's total troops current_military_strength > war_defender_total_strength_tenth_value } } add = { value = 25 add = { value = attacker_war_score subtract = 25 min = 0 } if = { limit = { exists = primary_attacker scope:recipient ?= primary_attacker } multiply = 2 } # Difference in strength of attackers and defenders multiply = war_attacker_total_current_strength_divided_by_defender_value } } } } modifier = { # Attacking a LAAMP any_character_war = { primary_attacker = scope:actor any_war_defender = { scope:recipient ?= this has_government = landless_adventurer_government # Defending laamp's troops at least 10% of attacker's total troops current_military_strength > war_attacker_total_strength_tenth_value } OR = { defender_war_score >= 25 # Defenders outnumber attackers at least 2:1 war_defender_total_current_strength_halved_value >= war_attacker_total_current_strength_value } } desc = NEGOTIATE_SETTLEMENT_ATTACKING_REASON add = { value = 0 every_character_war = { limit = { primary_attacker = scope:actor any_war_defender = { scope:recipient ?= this has_government = landless_adventurer_government # Defending laamp's troops at least 10% of attacker's total troops current_military_strength > war_attacker_total_strength_tenth_value } } add = { value = 25 add = { value = defender_war_score subtract = 25 min = 0 } # Difference in strength of defenders and attackers multiply = war_defender_total_current_strength_divided_by_attacker_value } } } } modifier = { # Potential war target of a LAAMP scope:recipient ?= { ep3_adventurer_might_attack_target_trigger = { TARGET = scope:actor } trigger_if = { limit = { NOT = { is_at_war_with = scope:actor } } ep3_laamp_diplo_range_trigger = { TARGET = scope:actor LAAMP = scope:recipient } } } desc = NEGOTIATE_SETTLEMENT_POTENTIAL_WAR_TARGET_REASON add = { value = 25 multiply = recipient_strength_divided_by_actors_value # Scale of threat scope:recipient = { if = { limit = { can_declare_war = { casus_belli = ep3_laamp_adventurer_duchy_invasion defender = scope:actor } } multiply = 1.25 } if = { limit = { can_declare_war = { casus_belli = ep3_laamp_adventurer_kingdom_invasion defender = scope:actor } } multiply = 1.5 } if = { limit = { can_declare_war = { casus_belli = ep3_laamp_adventurer_empire_invasion defender = scope:actor } } multiply = 2 } } scope:actor = { # Worried about ongoing wars if = { limit = { any_character_war = { primary_defender = scope:actor # Only care if attackers are really a threat war_attacker_total_current_strength_value > war_defender_total_current_strength_halved_value } } multiply = 2 } # Already at war if = { limit = { is_at_war_with = scope:recipient } multiply = 0.5 } } } } modifier = { # Potential faction claimant exists = scope:recipient scope:actor = { any_targeting_faction = { special_character ?= scope:recipient faction_power >= faction_power_threshold } } desc = NEGOTIATE_SETTLEMENT_CLAIMANT_REASON add = { value = 0 every_targeting_faction = { limit = { special_character ?= scope:recipient faction_power >= faction_power_threshold } add = 25 } } } modifier = { # Give claims to laamps scope:target ?= { any_claimant = { scope:recipient ?= this } } desc = NEGOTIATE_SETTLEMENT_CLAIM_REASON add = { value = 25 if = { limit = { scope:target.tier = tier_county } subtract = scope:target.development_level } if = { limit = { scope:target.tier > tier_county } subtract = scope:target.title_capital_county.development_level } } } # Essentially the inverse of Purchase Land modifier = { # Land is foreign add = 10 desc = NEGOTIATE_SETTLEMENT_FOREIGN_COUNTY_CULTURE_REASON add = { value = 0 if = { limit = { scope:target.tier = tier_county } add = 10 } else = { scope:target = { every_de_jure_county = { limit = { ep3_negotiate_settlement_valid_county_trigger = yes culture != scope:recipient.culture } add = 10 } } } max = 30 } desc = NEGOTIATE_SETTLEMENT_FOREIGN_CULTURE_REASON trigger_if = { limit = { scope:target.tier = tier_county } scope:target.culture != scope:actor.culture } trigger_else = { scope:target = { any_de_jure_county = { ep3_negotiate_settlement_valid_county_trigger = yes culture != scope:actor.culture } } } } modifier = { # Different faith add = { value = 0 if = { limit = { scope:target.tier = tier_county } add = 10 } else = { scope:target = { every_de_jure_county = { limit = { ep3_negotiate_settlement_valid_county_trigger = yes faith != scope:actor.faith } add = 10 } } } max = 30 } desc = NEGOTIATE_SETTLEMENT_DIFFERENT_FAITH_REASON trigger_if = { limit = { scope:target.tier = tier_county } scope:target.faith != scope:actor.faith } trigger_else = { scope:target = { any_de_jure_county = { ep3_negotiate_settlement_valid_county_trigger = yes faith != scope:actor.faith } } } } modifier = { # My culture's lands add = { value = 0 if = { limit = { scope:target.tier = tier_county } add = -15 } else = { add = -15 scope:target = { every_de_jure_county = { limit = { ep3_negotiate_settlement_valid_county_trigger = yes faith != scope:actor.faith } add = -15 } } } if = { limit = { scope:acceptance != 0 } divide = scope:acceptance } min = -50 } desc = NEGOTIATE_SETTLEMENT_MY_CULTURE_REASON scope:actor.culture != scope:recipient.culture trigger_if = { limit = { scope:target.tier = tier_county } scope:target.culture = scope:actor.culture } trigger_else = { scope:target = { any_de_jure_county = { ep3_negotiate_settlement_valid_county_trigger = yes culture = scope:actor.culture } } } scope:actor.culture = { save_temporary_scope_value_as = { name = acceptance value = { value = "cultural_acceptance(scope:recipient.culture)" divide = 25 ceiling = yes } } } } modifier = { # My faith's lands add = { value = 0 if = { limit = { scope:target.tier = tier_county } add = -15 } else = { add = -15 scope:target = { every_de_jure_county = { limit = { ep3_negotiate_settlement_valid_county_trigger = yes faith != scope:actor.faith } add = -15 } } } if = { limit = { scope:hostility != 0 } multiply = scope:hostility } min = -50 } desc = NEGOTIATE_SETTLEMENT_MY_FAITH_REASON scope:actor.faith != scope:recipient.faith trigger_if = { limit = { scope:target.tier = tier_county } scope:target.faith = scope:actor.faith } trigger_else = { scope:target = { any_de_jure_county = { ep3_negotiate_settlement_valid_county_trigger = yes faith = scope:actor.faith } } } scope:actor.faith = { save_temporary_scope_value_as = { name = hostility value = "faith_hostility_level(scope:recipient.faith)" } } } modifier = { # Too close add = { value = 0 add = scope:distance divide = scope:actor.highest_held_title_tier if = { limit = { scope:distance <= squared_distance_medium } multiply = -0.01 } else = { multiply = 0.0005 } min = -25 max = 50 } desc = NEGOTIATE_LAND_DISTANCE_REASON trigger_if = { limit = { scope:target.tier = tier_county } scope:target = { save_temporary_scope_as = distance_target } } trigger_else = { scope:target.title_capital_county = { save_temporary_scope_as = distance_target } } scope:actor.capital_county = { save_temporary_scope_value_as = { name = distance value = "squared_distance(scope:distance_target)" } } } } } ################## # Trade Oath # by Joe Parkin ################## trade_oath_interaction = { icon = hook_icon category = interaction_category_laamp interface_priority = 10 desc = trade_oath_interaction_desc is_shown = { scope:actor = { domicile ?= { has_domicile_parameter = camp_unlock_trade_oath_interaction } NOT = { has_strong_hook = scope:recipient } } scope:recipient = { is_courtier_of = scope:actor NOR = { has_hook = scope:actor is_close_family_of = scope:actor is_spouse_of = scope:actor } } } is_valid_showing_failures_only = { scope:actor = { is_at_war = no is_imprisoned = no } scope:recipient.location = scope:actor.location } cost = { prestige = 250 } on_accept = { show_as_tooltip = { scope:actor = { add_hook = { type = loyalty_hook target = scope:recipient } } scope:recipient = { add_hook = { type = follower_oath_hook target = scope:actor } } } scope:actor = { trigger_event = ep3_laamps.1011 } } ai_accept = { base = -75 opinion_modifier = { opinion_target = scope:actor } # Traits. ## Loyal modifier = { add = 30 has_trait = loyal } ## Disloyal modifier = { add = -30 has_trait = disloyal } ## Arbitrary modifier = { add = -20 has_trait = arbitrary } ## Just modifier = { add = 20 has_trait = just } ## Fickle modifier = { add = -10 has_trait = fickle } ## Stubborn modifier = { add = 20 has_trait = stubborn } ## Deceitful modifier = { add = -5 has_trait = deceitful } ## Honest modifier = { add = 5 has_trait = honest } } ai_potential = { has_realm_law = camp_purpose_legitimists } # Always do it if you get the chance. ai_will_do = { base = 1000 } ai_targets = { ai_recipients = courtiers } ai_frequency_by_tier = { barony = 0 county = 0 duchy = 12 kingdom = 0 empire = 0 hegemony = 0 } auto_accept = yes } ################## # Pawn Gear # by Joe Parkin ################## pawn_gear_interaction = { icon = artisan_inspiration category = interaction_category_laamp interface_priority = 10 common_interaction = yes desc = pawn_gear_interaction_desc target_type = artifact target_filter = actor_artifacts is_shown = { scope:actor = { domicile ?= { has_domicile_parameter = camp_unlocks_pawn_gear_interaction } this = scope:recipient } } is_valid_showing_failures_only = { scope:actor = { is_at_war = no is_imprisoned = no has_any_artifact = yes trigger_if = { limit = { is_ai = no } custom_description = { text = "any_unequipped_artifact_tt" any_character_artifact = { is_equipped = no } } } } } can_be_picked_artifact = { trigger_if = { limit = { scope:actor = { is_ai = no } } scope:target = { is_equipped = no } } scope:actor = { any_character_artifact = { this = scope:target } } } on_accept = { scope:actor = { send_interface_toast = { type = event_toast_effect_good title = pawn_gear_interaction_notification left_icon = scope:actor add_short_term_gold = artifact_wealth_quality_average_value destroy_artifact = scope:target } } } auto_accept = yes } ################## # Complete the Contract # by Arkadiusz Majewski # Needed for the action_can_complete_task_contract and to be able to end contracts if you cancelled the initial travel planner ################## complete_task_contract_interaction = { category = interaction_category_laamp interface_priority = 120 common_interaction = yes icon = icon_contract_escort use_diplomatic_range = no popup_on_receive = yes pause_on_receive = yes is_shown = { has_ep3_dlc_trigger = yes scope:actor = { any_character_active_contract = { OR = { ep3_transport_contract_trigger = yes has_task_contract_type = laamp_help_increase_control_contract } OR = { task_contract_employer ?= scope:recipient task_contract_destination.province_owner ?= scope:recipient task_contract_target ?= scope:recipient var:task_contract_object ?= scope:recipient } } } } is_valid_showing_failures_only = { } is_highlighted = { always = yes } send_option = { flag = without_domicile } send_option = { flag = with_domicile } on_accept = { scope:actor = { random_character_active_contract = { limit = { OR = { ep3_transport_contract_trigger = yes has_task_contract_type = laamp_help_increase_control_contract } #check for any contract that has the recipient as any relevant character to it (employer, target, target destination owner, escortee) OR = { task_contract_employer ?= scope:recipient task_contract_destination.province_owner ?= scope:recipient task_contract_target ?= scope:recipient var:task_contract_object ?= scope:recipient } } save_scope_as = task_contract } #set all the scopes if = { limit = { exists = scope:task_contract.var:task_contract_employer } scope:task_contract.var:task_contract_employer ?= { save_scope_as = task_contract_employer } } if = { limit = { scope:task_contract = { has_task_contract_type = laamp_help_increase_control_contract } } scope:task_contract.var:task_contract_councillor_liege ?= { save_scope_as = task_contract_councillor_liege } } if = { limit = { exists = scope:task_contract.var:task_contract_destination } scope:task_contract.var:task_contract_destination = { save_scope_as = task_contract_destination } } if = { limit = { exists = scope:task_contract.var:task_contract_target } scope:task_contract.var:task_contract_target ?= { save_scope_as = task_contract_target } } if = { limit = { exists = scope:task_contract.var:task_contract_object } scope:task_contract.var:task_contract_object = { save_scope_as = task_contract_object } } if = { limit = { exists = scope:task_contract.var:escorted_artifact } scope:task_contract.var:escorted_artifact = { save_scope_as = escorted_artifact } } if = { limit = { exists = scope:task_contract.var:escorted_gold } scope:task_contract.var:escorted_gold = { save_scope_as = escorted_gold } } if = { limit = { exists = scope:task_contract.var:escorted_story } scope:task_contract.var:escorted_story = { save_scope_as = escorted_story } } #show a nice tooltip with which contract, who you are taking and where are you going info scope:task_contract = { switch = { trigger = has_task_contract_type laamp_transport_vip = { scope:actor = { custom_tooltip = ep3_contract_event.0001.tt_vip } } laamp_transport_ward = { scope:actor = { custom_tooltip = ep3_contract_event.0001.tt_ward } } laamp_transport_explorer = { scope:actor = { custom_tooltip = ep3_contract_event.0001.tt_explorer } } laamp_transport_artifact = { scope:actor = { custom_tooltip = ep3_contract_event.0001.tt_artifact } } laamp_transport_gold = { scope:actor = { custom_tooltip = ep3_contract_event.0001.tt_gold } } laamp_transport_animal = { scope:actor = { custom_tooltip = ep3_contract_event.0001.tt_animal } } laamp_construction_contract = { scope:actor = { custom_tooltip = ep3_contract_event.0001.tt_construction } } laamp_help_increase_control_contract = { scope:actor = { custom_tooltip = ep3_contract_event.0001.tt_increase_control } } } } #trigger the travel planner switch = { trigger = yes scope:with_domicile = { start_travel_plan = { destination = scope:task_contract_destination travel_with_domicile = yes return_trip = no on_arrival_destinations = all } custom_tooltip = ep3_contract_event.0001.with_domicile.tt } scope:without_domicile = { start_travel_plan = { destination = scope:task_contract_destination on_arrival_destinations = all } } } } } auto_accept = yes } ################## # Make a Request # by Arkadiusz Majewski # As a LAAMP you can ask characters on your contact list for something ################## contact_list_request_interaction = { # make a request, make_a_request category = interaction_category_laamp interface_priority = 110 icon = icon_scheme_befriend desc = contact_list_request_interaction_desc common_interaction = yes popup_on_receive = yes pause_on_receive = yes ai_min_reply_days = 0 ai_max_reply_days = 0 cooldown_against_recipient = { months = 8 } is_shown = { has_ep3_dlc_trigger = yes scope:actor = { OR = { government_has_flag = government_is_landless_adventurer government_has_flag = government_is_landless_minority } } scope:actor != scope:recipient } is_valid_showing_failures_only = { scope:recipient = { is_adult = yes is_imprisoned = no NOR = { is_at_war_with = scope:actor has_relation_rival = scope:actor has_relation_nemesis = scope:actor has_opinion_modifier = { target = scope:actor modifier = released_from_prison } has_opinion_modifier = { target = scope:actor modifier = eviction_ignored_opinion } house_has_feud_relation_with_trigger = { TARGET = scope:actor } } } scope:actor = { NOT = { has_truce = scope:recipient } } scope:recipient = { trigger_if = { limit = { NOR = { is_contact_of = scope:actor is_close_or_extended_family_of = scope:actor is_consort_of = scope:actor AND = { OR = { capital_province ?= scope:actor.domicile.domicile_location any_held_title = { title_tier = county any_county_province = { this = scope:actor.domicile.domicile_location } } } scope:actor = { has_perk = embassies_perk } } } } is_contact_of = scope:actor } } scope:recipient = { custom_tooltip = { text = RULER_DESIGNER_ACHIEVEMENTS_NOT_AVAILABLE OR = { is_landed = yes gold > 20 AND = { is_landed_or_landless_administrative = yes scope:actor.maa_regiments_count < scope:actor.maa_regiments_max_count } AND = { #Recipient can marry the actor can_marry_character_trigger = { CHARACTER = scope:actor } #To account for a person marrying their concubines trigger_if = { limit = { is_concubine = yes } is_concubine_of = scope:actor can_marry_character_trigger = { CHARACTER = scope:actor } } } } } } } is_highlighted = { scope:actor = { is_character_interaction_potentially_accepted = { recipient = scope:recipient interaction = contact_list_request_interaction } } } can_send = { #Has to be used instead of diplo range checks in laamp to landed interactions ep3_laamp_diplo_range_trigger = { TARGET = scope:recipient LAAMP = scope:actor } } #request provisions send_option = { flag = request_provisions is_valid = { scope:recipient = { is_landed = yes } } } #request gold send_option = { flag = request_gold is_valid = { custom_tooltip = { scope:recipient.gold > 20 text = contact_list_request_interaction.request_gold_recipient_not_enough_gold } } } #request men-at-arms regiment send_option = { flag = request_maa is_valid = { scope:recipient = { is_landed_or_landless_administrative = yes } custom_tooltip = { scope:actor.maa_regiments_count < scope:actor.maa_regiments_max_count text = contact_list_request_interaction.request_maa_actor_too_many_regiments } } } #request a knight send_option = { flag = request_knights is_shown = { scope:recipient = { is_ai = yes } } is_valid = { custom_tooltip = { scope:recipient = { any_knight = { is_landed = no count > 1 } } text = contact_list_request_interaction.request_knights_recipient_not_enough_knights } } } #request to arrange a marriage send_option = { flag = request_marriage is_valid = { #There is an available marriage, copied from 00_marriage_interactions is_valid_showing_failures_only custom_description = { text = "basic_can_marry_check_recipient" subject = scope:actor object = scope:recipient scope:recipient = { OR = { AND = { #Recipient can marry the actor can_marry_character_trigger = { CHARACTER = scope:actor } #To account for a person marrying their concubines trigger_if = { limit = { is_concubine = yes } is_concubine_of = scope:actor can_marry_character_trigger = { CHARACTER = scope:actor } } } AND = { is_ruler = yes #(Following are only for rulers) OR = { any_child = { matchmaker = scope:actor OR = { #Any of recipient's children can marry AND = { can_marry_trigger = yes #To account for a person marrying their concubines trigger_if = { limit = { is_concubine = yes } is_concubine_of = scope:actor } } #Any of recipient's children are ready to marry their betrothed AND = { ready_to_marry_betrothed_trigger = yes betrothed.matchmaker = scope:actor } } } any_courtier = { OR = { #Any of recipient's courtiers can marry AND = { can_marry_trigger = yes #To account for a person marrying their concubines trigger_if = { limit = { is_concubine = yes } is_concubine_of = scope:actor } } #Any of recipient's courtiers are ready to marry their betrothed AND = { ready_to_marry_betrothed_trigger = yes betrothed.matchmaker = scope:actor } } } } } } } } } } #request new contract send_option = { flag = request_contract is_shown = { scope:recipient = { is_ai = yes } } is_valid = { custom_tooltip = { text = contact_list_request_interaction.create_contracts.already_has_contract scope:actor = { any_character_task_contract = { count = all task_contract_employer != scope:recipient } is_ai = no } } custom_description = { text = contact_list_request_interaction_create_contracts object = scope:recipient scope:actor = { OR = { can_create_task_contract = { type_name = laamp_raid_contract employer = scope:recipient } can_create_task_contract = { type_name = laamp_join_war_contract employer = scope:recipient } can_create_task_contract = { type_name = laamp_steal_artifact_contract employer = scope:recipient } can_create_task_contract = { type_name = laamp_construction_contract employer = scope:recipient } can_create_task_contract = { type_name = laamp_treasure_hunting_contract employer = scope:recipient } can_create_task_contract = { type_name = laamp_transport_vip employer = scope:recipient } can_create_task_contract = { type_name = laamp_transport_artifact employer = scope:recipient } can_create_task_contract = { type_name = laamp_transport_gold employer = scope:recipient } can_create_task_contract = { type_name = laamp_transport_ward employer = scope:recipient } can_create_task_contract = { type_name = laamp_transport_explorer employer = scope:recipient } can_create_task_contract = { type_name = laamp_transport_animal employer = scope:recipient } can_create_task_contract = { type_name = laamp_join_faction_contract employer = scope:recipient } } } } } } #request feast send_option = { flag = request_feast is_shown = { scope:actor = { has_perk = inspiring_rule_perk } scope:recipient = { is_landed_or_landless_administrative = yes capital_province ?= { squared_distance = { target = scope:actor.capital_province value < define:NTaskContract|ADVENTURER_DISTANCE_RESTRICTION } } } scope:recipient = { is_ai = yes } } is_valid = { scope:recipient = { highest_held_title_tier > tier_barony is_at_war = no is_available_adult = yes } scope:actor = { custom_tooltip = { text = ACTIVITY_SUMMARY_COOLDOWN_HEADER NOT = { has_character_flag = laamp_recently_requested_feast } } } } } #request tournament send_option = { flag = request_tournament is_shown = { has_ep2_dlc_trigger = yes scope:actor = { has_perk = stalwart_leader_perk } scope:recipient = { is_landed = yes NOT = { has_variable = conqueror } capital_province ?= { squared_distance = { target = scope:actor.capital_province value < define:NTaskContract|ADVENTURER_DISTANCE_RESTRICTION } } } scope:recipient = { is_ai = yes } } is_valid = { scope:recipient = { highest_held_title_tier > tier_barony is_at_war = no is_available_adult = yes } scope:actor = { custom_tooltip = { text = contact_list_request_interaction.request_tournament_cooldown NOT = { has_character_flag = laamp_recently_requested_tourney } } } } } should_use_extra_icon = { scope:actor = { has_usable_hook = scope:recipient } } extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" cost = { prestige = { add = 100 # Upgrade for tier. multiply = { value = scope:recipient.highest_held_title_tier # Discount barons. add = -1 } # Upgrade for the more egregious requests. ## Marriage. if = { limit = { scope:request_marriage = yes } multiply = 1.5 } ## Activities. ### Tournament. if = { limit = { scope:request_tournament = yes } multiply = 2 } ### Feast. if = { limit = { scope:request_feast = yes } multiply = 1.25 } min = 100 } } on_accept = { scope:actor = { switch = { trigger = yes scope:request_tournament ?= { scope:recipient = { add_opinion = { modifier = laamp_used_contact_opinion_special target = scope:actor opinion = -50 } custom_tooltip = contact_list_request_interaction.request_tournament } hidden_effect = { scope:recipient = { add_character_flag = { flag = tournament_ai_override } ai_attempt_to_host_activity = activity_tournament } scope:actor = { add_character_flag = { flag = laamp_recently_requested_tourney days = 3650 } } } } scope:request_feast ?= { scope:actor = { custom_tooltip = contact_list_request_interaction.request_feast_honor } scope:recipient = { add_opinion = { modifier = laamp_used_contact_opinion target = scope:actor opinion = -30 } custom_tooltip = contact_list_request_interaction.request_feast } hidden_effect = { scope:recipient = { add_character_flag = { flag = feast_ai_override } ai_attempt_to_host_activity = activity_feast } scope:actor = { add_character_flag = { flag = laamp_recently_requested_feast days = 1875 } } } } scope:request_provisions ?= { save_scope_value_as = { name = provisions_to_add_value value = { if = { limit = { scope:recipient.highest_held_title_tier >= tier_empire } add = monumental_provisions_gain } else_if = { limit = { scope:recipient.highest_held_title_tier >= tier_kingdom } add = massive_provisions_gain } else_if = { limit = { scope:recipient.highest_held_title_tier >= tier_duchy } add = major_provisions_gain } else_if = { limit = { scope:recipient.highest_held_title_tier >= tier_county } add = medium_provisions_gain } else = { add = minor_provisions_gain } } } if = { limit = { scope:actor.domicile.max_provisions < { value = { value = scope:provisions_to_add_value add = scope:actor.domicile.provisions } } } save_scope_value_as = { name = gained_provisions_value value = { value = scope:actor.domicile.max_provisions subtract = scope:actor.domicile.provisions } } save_scope_value_as = { name = provisions_overflow_value value = { value = scope:provisions_to_add_value subtract = scope:gained_provisions_value } } save_scope_value_as = { name = provisions_transformed_to_gold_value value = { value = scope:provisions_overflow_value multiply = 0.05 } } } else = { save_scope_value_as = { name = gained_provisions_value value = scope:provisions_to_add_value } } send_interface_toast = { type = event_toast_effect_good title = contact_list_request_interaction.request_provisions_tt left_icon = scope:actor right_icon = scope:recipient scope:recipient = { add_opinion = { modifier = laamp_used_contact_opinion_special target = scope:actor opinion = -20 } if = { limit = { exists = capital_county } hidden_effect = { capital_county = { add_county_modifier = { modifier = ep3_gave_out_provisions years = 3 } #save it for loc in custom tooltip save_scope_as = capital_county } } custom_tooltip = contact_list_request_interaction.capital_county_modifier } } scope:actor = { custom_tooltip = contact_list_request_interaction.gained_provisions_value hidden_effect = { domicile = { change_provisions = scope:gained_provisions_value } } if = { limit = { exists = scope:provisions_transformed_to_gold_value } custom_tooltip = { text = overflowing_provisions_to_gold.tt add_gold = scope:provisions_transformed_to_gold_value } } } } } scope:request_gold ?= { save_scope_value_as = { name = requested_gold_value value = { value = scope:recipient.gold divide = 4 multiply = { value = scope:recipient.ai_greed divide = -300 add = 1 } if = { limit = { scope:recipient = { has_any_best_good_relationship_with_character_trigger = { CHARACTER = scope:actor } } } multiply = 1.5 } else_if = { limit = { scope:recipient = { has_any_moderate_good_relationship_with_character_trigger = { CHARACTER = scope:actor } } } multiply = 1.25 } max = { scope:recipient.culture = { if = { limit = { has_cultural_era_or_later = culture_era_late_medieval } value = 250 } else_if = { limit = { has_cultural_era_or_later = culture_era_high_medieval } value = 200 } else_if = { limit = { has_cultural_era_or_later = culture_era_early_medieval } value = 150 } else_if = { limit = { has_cultural_era_or_later = culture_era_tribal } value = 100 } else = { value = 50 } } } floor = yes min = 5 } } send_interface_toast = { type = event_toast_effect_good title = contact_list_request_interaction.request_gold_tt left_icon = scope:actor right_icon = scope:recipient scope:actor = { show_as_tooltip = { add_gold = scope:requested_gold_value } } scope:recipient = { pay_short_term_gold = { target = scope:actor gold = scope:requested_gold_value } add_opinion = { modifier = laamp_used_contact_opinion target = scope:actor opinion = -40 } } } } scope:request_maa ?= { custom_tooltip = contact_list_request_interaction.request_maa hidden_effect = { ep3_pick_random_maa_regiment_effect = { OWNER = scope:recipient INCLUDE_BASIC_MAA = no INCLUDE_SIEGE_MAA = no } send_interface_toast = { type = event_toast_effect_good title = contact_list_request_interaction.request_maa_tt left_icon = scope:actor right_icon = scope:recipient ep3_create_random_maa_regiment_effect = { OWNER = scope:actor SIZE = 1 } } } scope:recipient = { add_opinion = { modifier = laamp_used_contact_opinion target = scope:actor opinion = -40 } } } scope:request_knights ?= { scope:actor = { custom_tooltip = contact_list_request_interaction.request_knights trigger_event = ep3_interactions_events.0101 } scope:recipient = { add_opinion = { modifier = laamp_used_contact_opinion target = scope:actor opinion = -30 } } } scope:request_marriage ?= { scope:actor = { custom_tooltip = contact_list_request_interaction.request_marriage custom_tooltip = contact_list_request_interaction.request_marriage.marriagable_women custom_tooltip = contact_list_request_interaction.request_marriage.marriagable_men custom_tooltip = contact_list_request_interaction.request_marriage.warning if = { limit = { is_ai = no } open_interaction_window = { interaction = arrange_marriage_interaction actor = scope:actor recipient = scope:recipient } } add_to_variable_list = { name = contact_list_marriage target = scope:recipient } } scope:recipient = { add_opinion = { modifier = laamp_used_contact_opinion target = scope:actor opinion = -50 } } } scope:request_contract ?= { scope:actor = { custom_tooltip = contact_list_request_interaction.request_contract hidden_effect = { random_list = { #laamp_raid_contract 1 = { trigger = { can_create_task_contract = { type_name = laamp_raid_contract employer = scope:recipient } } modifier = { add = 10 has_realm_law = camp_purpose_mercenaries } create_task_contract = { task_contract_type = laamp_raid_contract location = scope:recipient.capital_province task_contract_employer = scope:recipient task_contract_tier = scope:recipient.task_contract_tier_value save_scope_as = new_contract } save_scope_value_as = { name = create_laamp_raid_contract value = yes } } #laamp_join_war_contract 1 = { trigger = { can_create_task_contract = { type_name = laamp_join_war_contract employer = scope:recipient } } modifier = { add = 10 has_realm_law = camp_purpose_mercenaries } create_task_contract = { task_contract_type = laamp_join_war_contract location = scope:recipient.capital_province task_contract_employer = scope:recipient task_contract_tier = scope:recipient.task_contract_tier_value save_scope_as = new_contract } save_scope_value_as = { name = create_laamp_join_war_contract value = yes } } #laamp_steal_artifact_contract 1 = { trigger = { can_create_task_contract = { type_name = laamp_steal_artifact_contract employer = scope:recipient } } modifier = { add = 10 has_realm_law = camp_purpose_brigands } create_task_contract = { task_contract_type = laamp_steal_artifact_contract location = scope:recipient.capital_province task_contract_employer = scope:recipient task_contract_tier = scope:recipient.task_contract_tier_value save_scope_as = new_contract } save_scope_value_as = { name = create_laamp_steal_artifact_contract value = yes } } #laamp_construction_contract 1 = { trigger = { can_create_task_contract = { type_name = laamp_construction_contract employer = scope:recipient } } modifier = { add = 10 has_realm_law = camp_purpose_scholars } create_task_contract = { task_contract_type = laamp_construction_contract location = scope:recipient.capital_province task_contract_employer = scope:recipient task_contract_tier = scope:recipient.task_contract_tier_value save_scope_as = new_contract } save_scope_value_as = { name = create_laamp_construction_contract value = yes } } #laamp_treasure_hunting_contract 1 = { trigger = { can_create_task_contract = { type_name = laamp_treasure_hunting_contract employer = scope:recipient } } modifier = { add = 10 OR = { has_realm_law = camp_purpose_brigands has_realm_law = camp_purpose_explorers } } create_task_contract = { task_contract_type = laamp_treasure_hunting_contract location = scope:recipient.capital_province task_contract_employer = scope:recipient task_contract_tier = scope:recipient.task_contract_tier_value save_scope_as = new_contract } save_scope_value_as = { name = create_laamp_treasure_hunting_contract value = yes } } #laamp_transport_vip 1 = { trigger = { can_create_task_contract = { type_name = laamp_transport_vip employer = scope:recipient } } modifier = { add = 10 has_realm_law = camp_purpose_explorers } create_task_contract = { task_contract_type = laamp_transport_vip location = scope:recipient.capital_province task_contract_employer = scope:recipient task_contract_tier = scope:recipient.task_contract_tier_value save_scope_as = new_contract } save_scope_value_as = { name = create_laamp_transport_vip value = yes } } #laamp_transport_artifact 1 = { trigger = { can_create_task_contract = { type_name = laamp_transport_artifact employer = scope:recipient } } modifier = { add = 10 OR = { has_realm_law = camp_purpose_brigands has_realm_law = camp_purpose_explorers } } create_task_contract = { task_contract_type = laamp_transport_artifact location = scope:recipient.capital_province task_contract_employer = scope:recipient task_contract_tier = scope:recipient.task_contract_tier_value save_scope_as = new_contract } save_scope_value_as = { name = create_laamp_transport_artifact value = yes } } #laamp_transport_gold 1 = { trigger = { can_create_task_contract = { type_name = laamp_transport_gold employer = scope:recipient } } modifier = { add = 10 OR = { has_realm_law = camp_purpose_brigands has_realm_law = camp_purpose_explorers } } create_task_contract = { task_contract_type = laamp_transport_gold location = scope:recipient.capital_province task_contract_employer = scope:recipient task_contract_tier = scope:recipient.task_contract_tier_value save_scope_as = new_contract } save_scope_value_as = { name = create_laamp_transport_gold value = yes } } #laamp_transport_ward 1 = { trigger = { can_create_task_contract = { type_name = laamp_transport_ward employer = scope:recipient } } modifier = { add = 10 has_realm_law = camp_purpose_explorers } create_task_contract = { task_contract_type = laamp_transport_ward location = scope:recipient.capital_province task_contract_employer = scope:recipient task_contract_tier = scope:recipient.task_contract_tier_value save_scope_as = new_contract } save_scope_value_as = { name = create_laamp_transport_ward value = yes } } #laamp_transport_explorer 1 = { trigger = { can_create_task_contract = { type_name = laamp_transport_explorer employer = scope:recipient } } modifier = { add = 10 has_realm_law = camp_purpose_explorers } create_task_contract = { task_contract_type = laamp_transport_explorer location = scope:recipient.capital_province task_contract_employer = scope:recipient task_contract_tier = scope:recipient.task_contract_tier_value save_scope_as = new_contract } save_scope_value_as = { name = create_laamp_transport_explorer value = yes } } #laamp_transport_animal 1 = { trigger = { can_create_task_contract = { type_name = laamp_transport_animal employer = scope:recipient } } modifier = { add = 10 has_realm_law = camp_purpose_explorers } create_task_contract = { task_contract_type = laamp_transport_animal location = scope:recipient.capital_province task_contract_employer = scope:recipient task_contract_tier = scope:recipient.task_contract_tier_value save_scope_as = new_contract } save_scope_value_as = { name = create_laamp_transport_animal value = yes } } #laamp_join_faction_contract 1 = { trigger = { can_create_task_contract = { type_name = laamp_join_faction_contract employer = scope:recipient } } modifier = { add = 10 has_realm_law = camp_purpose_mercenaries } create_task_contract = { task_contract_type = laamp_join_faction_contract location = scope:recipient.capital_province task_contract_employer = scope:recipient task_contract_tier = scope:recipient.task_contract_tier_value save_scope_as = new_contract } save_scope_value_as = { name = create_laamp_join_faction_contract value = yes } } } scope:new_contract = { open_view_data = { view = task_contract player = scope:actor } } } } scope:recipient = { add_opinion = { modifier = laamp_used_contact_opinion target = scope:actor opinion = -5 } show_as_tooltip = { custom_description_no_bullet = { text = contact_list_request_interaction_possible_outcomes } if = { limit = { scope:create_laamp_raid_contract ?= yes } create_task_contract = { task_contract_type = laamp_raid_contract location = scope:recipient.location task_contract_employer = scope:recipient task_contract_tier = scope:recipient.task_contract_tier_value } } if = { limit = { scope:create_laamp_join_war_contract ?= yes } create_task_contract = { task_contract_type = laamp_join_war_contract location = scope:recipient.location task_contract_employer = scope:recipient task_contract_tier = scope:recipient.task_contract_tier_value } } if = { limit = { scope:create_laamp_construction_contract ?= yes } create_task_contract = { task_contract_type = laamp_construction_contract location = scope:recipient.location task_contract_employer = scope:recipient task_contract_tier = scope:recipient.task_contract_tier_value } } if = { limit = { scope:create_laamp_steal_artifact_contract ?= yes } create_task_contract = { task_contract_type = laamp_steal_artifact_contract location = scope:recipient.location task_contract_employer = scope:recipient task_contract_tier = scope:recipient.task_contract_tier_value } } if = { limit = { scope:create_laamp_treasure_hunting_contract ?= yes } create_task_contract = { task_contract_type = laamp_treasure_hunting_contract location = scope:recipient.location task_contract_employer = scope:recipient task_contract_tier = scope:recipient.task_contract_tier_value } } if = { limit = { scope:create_laamp_transport_vip ?= yes } create_task_contract = { task_contract_type = laamp_transport_vip location = scope:recipient.location task_contract_employer = scope:recipient task_contract_tier = scope:recipient.task_contract_tier_value } } if = { limit = { scope:create_laamp_transport_artifact ?= yes } create_task_contract = { task_contract_type = laamp_transport_artifact location = scope:recipient.location task_contract_employer = scope:recipient task_contract_tier = scope:recipient.task_contract_tier_value } } if = { limit = { scope:create_laamp_transport_gold ?= yes } create_task_contract = { task_contract_type = laamp_transport_gold location = scope:recipient.location task_contract_employer = scope:recipient task_contract_tier = scope:recipient.task_contract_tier_value } } if = { limit = { scope:create_laamp_transport_ward ?= yes } create_task_contract = { task_contract_type = laamp_transport_ward location = scope:recipient.location task_contract_employer = scope:recipient task_contract_tier = scope:recipient.task_contract_tier_value } } if = { limit = { scope:create_laamp_transport_explorer ?= yes } create_task_contract = { task_contract_type = laamp_transport_explorer location = scope:recipient.location task_contract_employer = scope:recipient task_contract_tier = scope:recipient.task_contract_tier_value } } if = { limit = { scope:create_laamp_transport_animal ?= yes } create_task_contract = { task_contract_type = laamp_transport_animal location = scope:recipient.location task_contract_employer = scope:recipient task_contract_tier = scope:recipient.task_contract_tier_value } } if = { limit = { scope:create_laamp_join_faction_contract ?= yes } create_task_contract = { task_contract_type = laamp_join_faction_contract location = scope:recipient.location task_contract_employer = scope:recipient task_contract_tier = scope:recipient.task_contract_tier_value } } } } } } if = { limit = { has_usable_hook = scope:recipient scope:recipient = { is_ai = yes } } use_hook = scope:recipient custom_tooltip = contact_list_request_interaction.tt.hook_auto_used } } scope:recipient = { add_prestige = { value = scope:actor.prestige_level multiply = 100 } } } can_send_despite_rejection = no ai_frequency_by_tier = { barony = 0 county = 0 duchy = 3 kingdom = 0 empire = 0 hegemony = 0 } ai_targets = { ai_recipients = contacts } ai_targets = { ai_recipients = hooked_characters } auto_accept = { scope:actor = { has_usable_hook = scope:recipient } scope:recipient = { is_ai = yes } } ai_potential = { OR = { government_has_flag = government_is_landless_adventurer government_has_flag = government_is_landless_minority } } ai_accept = { base = 0 modifier = { add = -50 scope:recipient = { NOR = { is_contact_of = scope:actor is_close_or_extended_family_of = scope:actor is_consort_of = scope:actor } } desc = contact_list_request_interaction.no_contact } opinion_modifier = { # Opinion Factor who = scope:recipient opinion_target = scope:actor multiplier = 0.5 desc = AI_OPINION_REASON } modifier = { add = -50 scope:recipient = { has_opinion_modifier = { modifier = laamp_used_contact_opinion target = scope:actor } } desc = contact_list_request_interaction.repeated_request } ai_value_modifier = { ai_compassion = -0.5 ai_greed = -0.5 min = -50 max = 50 } modifier = { add = 30 desc = contact_list_request_interaction.request_gold.contract scope:request_contract ?= yes } modifier = { add = -30 desc = contact_list_request_interaction.request_gold.poor_recipient scope:request_gold ?= yes scope:recipient = { gold < major_gold_value } } modifier = { add = 25 desc = contact_list_request_interaction.request_gold.stewardship OR = { scope:request_provisions ?= yes scope:request_gold ?= yes } scope:recipient = { has_trait = education_stewardship } } modifier = { add = 25 desc = contact_list_request_interaction.request_gold.martial OR = { scope:request_maa ?= yes scope:request_knights ?= yes } scope:recipient = { has_trait = education_martial } } modifier = { add = 25 desc = contact_list_request_interaction.request.defensive_negotiations_perk OR = { scope:request_maa ?= yes scope:request_knights ?= yes } scope:actor = { has_perk = defensive_negotiations_perk } } modifier = { add = 25 desc = contact_list_request_interaction.relevant_focus scope:request_marriage ?= yes scope:recipient = { OR = { has_focus = diplomacy_family_focus has_focus = intrigue_temptation_focus has_focus = martial_chivalry_focus } } } modifier = { add = 25 desc = contact_list_request_interaction.relevant_focus OR = { scope:request_maa ?= yes scope:request_knights ?= yes } scope:recipient = { OR = { has_focus = martial_strategy_focus has_focus = martial_chivalry_focus has_focus = martial_authority_focus } } } modifier = { add = 25 desc = contact_list_request_interaction.request_knights.plenty scope:request_knights ?= yes scope:recipient = { number_of_knights > 6 } } modifier = { add = -25 desc = contact_list_request_interaction.request_knights.little scope:request_knights ?= yes scope:recipient = { number_of_knights <= 6 } } modifier = { add = -25 desc = contact_list_request_interaction.powerful scope:request_maa ?= yes scope:actor = { max_military_strength >= 400 max_military_strength < 800 } } modifier = { add = -50 desc = contact_list_request_interaction.very_powerful scope:request_maa ?= yes scope:actor.max_military_strength >= 800 } modifier = { add = -30 desc = contact_list_request_interaction.stronger_than_me scope:request_maa ?= yes scope:actor.max_military_strength > scope:recipient.max_military_strength } modifier = { add = -25 desc = contact_list_request_interaction.traveler scope:request_provisions ?= yes scope:recipient = { has_trait = lifestyle_traveler } } modifier = { add = 25 desc = contact_list_request_interaction.adventurer scope:recipient = { has_trait = adventurer } } modifier = { add = 25 desc = contact_list_request_interaction.adventurer_follower scope:recipient = { has_trait = adventurer_follower } } modifier = { add = 20 desc = contact_list_request_interaction.flexible_truces_perk scope:actor = { has_perk = flexible_truces_perk } } # Your level of prestige. ## Impotent modifier = { add = -10 desc = AI_OPINION_PRESTIGE_LEVEL_DISGRACED scope:actor.prestige_level = 0 } ## Influential ### Would be zero, so it wouldn't appear. ## Persuasive modifier = { add = 5 desc = AI_OPINION_PRESTIGE_LEVEL_DISTINGUISHED scope:actor.prestige_level = 2 scope:actor = { NOT = { has_perk = true_ruler_perk } } } ## Controlling modifier = { add = 10 desc = AI_OPINION_PRESTIGE_LEVEL_ILLUSTRIOUS scope:actor.prestige_level = 3 scope:actor = { NOT = { has_perk = true_ruler_perk } } } ## Authoritative modifier = { add = 20 desc = AI_OPINION_PRESTIGE_LEVEL_EXALTED scope:actor.prestige_level = 4 scope:actor = { NOT = { has_perk = true_ruler_perk } } } ## Imperious modifier = { add = 30 desc = AI_OPINION_PRESTIGE_LEVEL_LEGENDARY scope:actor.prestige_level = 5 scope:actor = { NOT = { has_perk = true_ruler_perk } } } ## Persuasive modifier = { add = 6 desc = AI_OPINION_PRESTIGE_LEVEL_DISTINGUISHED scope:actor.prestige_level = 2 scope:actor = { has_perk = true_ruler_perk } } ## Controlling modifier = { add = 12 desc = AI_OPINION_PRESTIGE_LEVEL_ILLUSTRIOUS scope:actor.prestige_level = 3 scope:actor = { has_perk = true_ruler_perk } } ## Authoritative modifier = { add = 24 desc = AI_OPINION_PRESTIGE_LEVEL_EXALTED scope:actor.prestige_level = 4 scope:actor = { has_perk = true_ruler_perk } } ## Imperious modifier = { add = 36 desc = AI_OPINION_PRESTIGE_LEVEL_LEGENDARY scope:actor.prestige_level = 5 scope:actor = { has_perk = true_ruler_perk } } } ai_will_do = { base = 50 # Set up the AI so that they actually know how to use the send_options. ## Troops, if they don't have gold. modifier = { add = 50 scope:recipient.gold < 50 scope:request_maa = yes } ## Gold is always good. modifier = { add = 50 scope:recipient.gold >= 30 scope:request_gold = yes } ## Feasts are especially attractive for some adventurers. modifier = { add = 50 scope:request_feast = yes OR = { prestige <= 500 has_trait = arrogant has_trait = gluttonous has_trait = gregarious has_trait = drunkard } } ## Provisions are fine, but nothing special for the AI. modifier = { add = 5 scope:request_provisions = yes scope:actor.domicile.provisions < scope:actor.domicile.max_provisions } ## Don't go crazy with tournaments modifier = { factor = 0 scope:request_tournament = yes } modifier = { factor = 0 NOR = { scope:request_provisions = yes scope:request_gold = yes scope:request_maa = yes scope:request_knights = yes scope:request_marriage = yes scope:request_contract = yes scope:request_feast = yes scope:request_tournament = yes } } } } ################## # Seize Realm Scheme # by Joe Parkin ################## seize_realm_interaction = { icon = icon_scheme_seizure category = interaction_category_laamp interface_priority = 10 ignores_pending_interaction_block = yes scheme = seize_realm send_name = START_SCHEME is_shown = { scope:recipient != scope:actor scope:actor = { OR = { government_has_flag = government_is_landless_adventurer government_has_flag = government_is_landless_minority } } scope:recipient = { is_landed = yes highest_held_title_tier >= tier_county } } is_valid_showing_failures_only = { scope:actor = { can_start_scheme = { type = seize_realm target_character = scope:recipient } } NOT = { scope:recipient = { has_strong_hook = scope:actor } } #Has to be used instead of diplo range checks in laamp to landed interactions ep3_laamp_diplo_range_trigger = { TARGET = scope:recipient LAAMP = scope:actor } } desc = { triggered_desc = { trigger = { scope:actor = { can_start_scheme = { type = seize_realm target_character = scope:recipient } } } desc = scheme_interaction_tt_seize_realm_approved } } # Scheme Starter Packages options_heading = schemes.t.agent_packages send_options_exclusive = yes ## Balanced agents. send_option = { flag = agent_focus_balance current_description = seize_realm_interaction.tt.agent_focus_balance } ## Focused on Success Chance. send_option = { flag = agent_focus_success current_description = seize_realm_interaction.tt.agent_focus_success } ## Focused on Speed. send_option = { flag = agent_focus_speed current_description = seize_realm_interaction.tt.agent_focus_speed } ## Focused on Secrecy. send_option = { flag = agent_focus_secrecy current_description = seize_realm_interaction.tt.agent_focus_secrecy } on_accept = { scope:actor = { stress_impact = { compassionate = major_stress_impact_gain honest = medium_stress_impact_gain just = medium_stress_impact_gain } } scope:actor = { send_interface_toast = { title = start_seize_realm_interaction_notification left_icon = scope:actor right_icon = scope:recipient # Success. if = { limit = { scope:agent_focus_success ?= yes } begin_scheme_with_agents_effect = { SCHEME_TYPE = seize_realm TARGET_TYPE = target_character TARGET_SCOPE = scope:recipient # Success. AGENT_1 = agent_muscle AGENT_2 = agent_muscle AGENT_3 = agent_diplomat # Speed. AGENT_4 = agent_infiltrator # Secrecy. AGENT_5 = agent_lookout } } # Speed. else_if = { limit = { scope:agent_focus_speed ?= yes } begin_scheme_with_agents_effect = { SCHEME_TYPE = seize_realm TARGET_TYPE = target_character TARGET_SCOPE = scope:recipient # Speed. AGENT_1 = agent_infiltrator AGENT_2 = agent_footpad AGENT_3 = agent_planner # Success. AGENT_4 = agent_muscle # Secrecy. AGENT_5 = agent_lookout } } # Secrecy. else_if = { limit = { scope:agent_focus_secrecy ?= yes } begin_scheme_with_agents_effect = { SCHEME_TYPE = seize_realm TARGET_TYPE = target_character TARGET_SCOPE = scope:recipient # Secrecy. AGENT_1 = agent_lookout AGENT_2 = agent_decoy AGENT_3 = agent_decoy # Success. AGENT_4 = agent_muscle # Speed. AGENT_5 = agent_infiltrator } } # Balanced. else = { begin_scheme_with_agents_effect = { SCHEME_TYPE = seize_realm TARGET_TYPE = target_character TARGET_SCOPE = scope:recipient # Success. AGENT_1 = agent_muscle AGENT_2 = agent_muscle # Speed. AGENT_3 = agent_infiltrator AGENT_4 = agent_planner # Secrecy. AGENT_5 = agent_lookout } } show_as_tooltip = { stress_impact = { honest = medium_stress_impact_gain just = medium_stress_impact_gain } } } } custom_tooltip = seize_realm_warning } auto_accept = yes } ################## # Reinforce Soldiers # by Joe Parkin ################## reinforce_soldiers_interaction = { icon = owner_in_debt category = interaction_category_laamp interface_priority = 10 common_interaction = yes desc = reinforce_soldiers_interaction_desc cooldown = { months = 6 } is_shown = { has_ep3_dlc_trigger = yes scope:actor = { government_allows = conditional_maa_refill NOT = { government_has_flag = government_is_nomadic } } scope:recipient = scope:actor } is_valid_showing_failures_only = { custom_tooltip = { text = reinforce_soldiers_any_regiment_tt scope:actor.maa_regiments_count >= 1 } custom_tooltip = { text = reinforce_soldiers_unfull_regiment_tt scope:actor = { any_maa_regiment = { maa_regiments_valid_for_cheap_reinforcement_trigger = yes } } } custom_tooltip = { text = SUPPLY_LOSS_AT_SEA scope:actor = { any_laamp_portion_at_sea_trigger = no } } } send_options_exclusive = yes send_option = { flag = skill localization = reinforce_soldiers_option_skill current_description = reinforce_soldiers_option_skill_desc } send_option = { flag = prestige localization = reinforce_soldiers_option_prestige current_description = reinforce_soldiers_option_prestige_desc } send_option = { flag = piety localization = reinforce_soldiers_option_piety current_description = reinforce_soldiers_option_piety_desc is_valid = { custom_tooltip = { text = reinforce_soldiers_option_piety_tt scope:actor.domicile.domicile_location.county ?= { OR = { holder ?= { government_has_flag = government_is_theocracy } any_county_province = { barony = { is_under_holy_order_lease = yes lessee.faith = scope:actor.faith } } } } } } } send_option = { flag = dread localization = reinforce_soldiers_option_dread current_description = reinforce_soldiers_option_dread_desc is_valid = { custom_tooltip = { text = reinforce_soldiers_option_dread_tt OR = { scope:actor.dread >= reinforce_soldiers_dread_cost_value scope:actor = { has_character_modifier = ep3_friend_to_old_soldiers_modifier } } } } } on_accept = { scope:actor = { switch = { trigger = yes scope:prestige = { if = { limit = { is_ai = no } add_prestige = { value = { value = -75 if = { limit = { scope:actor.domicile.domicile_location.county.holder ?= { government_has_flag = government_is_tribal } } add = 25 } multiply = reinforce_soldiers_reinforcable_regiments_value } } } reinforce_soldiers_regiment_effect = yes } scope:piety = { add_piety = { value = { value = minor_piety_loss multiply = reinforce_soldiers_reinforcable_regiments_value } } reinforce_soldiers_regiment_effect = yes } scope:skill = { duel = { skills = { diplomacy prowess } value = high_skill_rating 10 = { compare_modifier = { value = scope:duel_value multiplier = 3.5 min = 2 } desc = reinforce_soldiers_skill_success send_interface_toast = { type = event_toast_effect_good title = reinforce_soldiers_skill_success reinforce_soldiers_regiment_effect = yes } } 10 = { compare_modifier = { value = scope:duel_value multiplier = -3.5 min = 2 } desc = reinforce_soldiers_skill_failure send_interface_toast = { type = event_toast_effect_bad title = reinforce_soldiers_skill_failure if = { limit = { is_ai = no } add_prestige = -100 } } } } } scope:dread = { random_list = { 1 = { modifier = { add = { value = scope:actor.dread multiply = 2 } } desc = reinforce_soldiers_skill_success send_interface_toast = { type = event_toast_effect_good title = reinforce_soldiers_skill_success reinforce_soldiers_regiment_effect = yes } } 100 = { min = 25 modifier = { add = { value = 0 subtract = scope:actor.dread } } desc = reinforce_soldiers_skill_failure send_interface_toast = { type = event_toast_effect_bad title = reinforce_soldiers_skill_failure if = { limit = { is_ai = no } add_prestige = minor_prestige_loss } } } } add_dread = { value = reinforce_soldiers_dread_cost_value multiply = -1 } } } } } ai_frequency_by_tier = { barony = 0 county = 0 duchy = 6 kingdom = 0 empire = 0 hegemony = 0 } ai_targets = { ai_recipients = self } ai_potential = { government_allows = conditional_maa_refill any_maa_regiment = { maa_current_troops_count < maa_max_troops_count } } ai_will_do = { base = 100 modifier = { scope:dread = yes add = 5 } modifier = { scope:prestige = yes add = 3 } modifier = { scope:piety = yes add = 2 } modifier = { scope:skill = yes add = 1 } } } ################## # Hire LAAMP as mercenaries # by Arkadiusz Majewski # As a landed ruler hire a LAAMP to join your war ################## hire_laamp_mercenaries_interaction = { category = interaction_category_diplomacy icon = alliance desc = hire_laamp_mercenaries_interaction_desc greeting = positive notification_text = hire_laamp_mercenaries_interaction_notification popup_on_receive = yes pause_on_receive = yes interface_priority = 60 ai_min_reply_days = 0 ai_max_reply_days = 0 cooldown_against_recipient = { years = 3 } can_send_despite_rejection = yes ai_accept_negotiation = yes send_options_exclusive = no is_shown = { has_ep3_dlc_trigger = yes scope:recipient = { has_government = landless_adventurer_government } scope:actor != scope:recipient scope:actor = { trigger_if = { # Avoid calling Adventurers without armies limit = { is_ai = yes } scope:recipient.current_military_strength >= 100 } } } is_valid_showing_failures_only = { scope:recipient = { is_travelling = no is_at_war = no is_imprisoned = no } scope:actor = { custom_tooltip = { text = MERCENARY_COMPANY_COST_BANKRUPTCY debt_level <= 1 } is_at_war = yes custom_tooltip = { text = I_MUST_BE_THE_WAR_LEADER any_character_war = { is_war_leader = scope:actor } } NOT = { is_at_war_with = scope:recipient } } scope:actor = { NOT = { any_war_ally = { count >= 3 has_government = landless_adventurer_government } } } scope:actor = { OR = { is_ai = no any_character_war = { count = all OR = { AND = { primary_attacker = scope:actor defender_war_score <= 95 } AND = { primary_defender = scope:actor attacker_war_score <= 95 } } } } } # Adventurers can't join wars in places they're exiled from. trigger_if = { limit = { scope:actor = { top_liege != this } } custom_tooltip = { text = the_wake_1 NOT = { is_laamp_exiled_from_province_trigger = { PROVINCE = scope:actor.capital_province LAAMP = scope:recipient } } } } } auto_accept = { custom_description = { text = "spending_hook" subject = scope:actor object = scope:recipient scope:hook = yes scope:actor = { has_strong_hook = scope:recipient } } } on_accept = { scope:actor = { every_character_war = { add_to_list = actor_wars } } every_in_list = { list = actor_wars limit = { primary_defender = scope:actor } add_to_list = join_as_defender remove_from_list = actor_wars } every_in_list = { list = actor_wars limit = { primary_attacker = scope:actor } add_to_list = join_as_attacker remove_from_list = actor_wars } every_in_list = { list = join_as_attacker add_attacker = scope:recipient } every_in_list = { list = join_as_defender add_defender = scope:recipient } #list all wars that scope:recipient can't join every_in_list = { list = actor_wars custom = hire_laamp_mercenaries_interaction.not_primary_side # I swear it was the only way to make the tooltip look nice every_in_list = { list = actor_wars save_temporary_scope_as = war custom_tooltip = hire_laamp_mercenaries_interaction.war } } scope:actor = { pay_short_term_gold = { target = scope:recipient gold = ep3_hire_laamp_mercs_cost_value } add_to_variable_list = { name = hired_mercenaries target = scope:recipient } custom_tooltip = hire_laamp_mercenaries_interaction.contribution_pay if = { limit = { has_title = title:h_china situation:dynastic_cycle ?= { situation_top_has_catalyst = catalyst_hegemon_hired_mercenary } } trigger_situation_catalyst = { catalyst = catalyst_hegemon_hired_mercenary character = scope:actor } } } scope:recipient = { add_character_flag = joined_as_mercenary } add_clan_unity_interaction_effect = { CHARACTER = scope:actor TARGET = scope:recipient VALUE = medium_unity_gain DESC = clan_unity_alliance.desc REVERSE_NON_HOUSE_TARGET = no } debug_log = "Landed ruler hired a LAAMP to join wars" debug_log_scopes = yes #for debug purposes: #if = { # limit = { NOT = { exists = global_var:hire_laamp_as_mercs_accepted } } # set_global_variable = { # name = hire_laamp_as_mercs_accepted # value = 0 # } #} #else = { # change_global_variable = { # name = hire_laamp_as_mercs_accepted # add = 1 # } #} } on_decline = { scope:recipient = { trigger_event = ep3_interactions_events.0111 custom_tooltip = hire_laamp_mercenaries_interaction.negotiation_offer } #for debug purposes: #if = { # limit = { NOT = { exists = global_var:hire_laamp_as_mercs_rejected } } # set_global_variable = { # name = hire_laamp_as_mercs_rejected # value = 0 # } #} #else = { # change_global_variable = { # name = hire_laamp_as_mercs_rejected # add = 1 # } #} add_clan_unity_interaction_effect = { CHARACTER = scope:actor TARGET = scope:recipient VALUE = minor_unity_loss DESC = clan_unity_alliance_refusal.desc REVERSE_NON_HOUSE_TARGET = no } } # 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" ai_frequency_by_tier = { barony = 0 county = 12 duchy = 12 kingdom = 6 empire = 6 hegemony = 6 } ai_targets = { ai_recipients = nearby_domicile_owners } ai_potential = { any_character_war = { is_war_leader = prev } war_chest_gold >= quarter_ai_war_chest_gold_maximum } ai_accept = { base = -20 modifier = { # merc laamp wants to join add = 50 scope:recipient = { has_realm_law = camp_purpose_mercenaries } desc = camp_purpose_mercenaries_reason } modifier = { # don't join many losing wars save_temporary_scope_value_as = { name = attacker_war value = 2 } scope:actor = { any_character_war = { primary_attacker = scope:actor attacker_war_score < 0 save_temporary_scope_value_as = { name = attacker_war value = { value = scope:attacker_war multiply = attacker_war_score } } } } add = scope:attacker_war desc = attacker_losisng_too_much_reason } modifier = { # don't join many losing wars add = scope:defender_war save_temporary_scope_value_as = { name = defender_war value = 2 } scope:actor = { any_character_war = { primary_defender = scope:actor defender_war_score < 0 save_temporary_scope_value_as = { name = defender_war value = { value = scope:defender_war multiply = defender_war_score } } } } desc = defender_losisng_too_much_reason } modifier = { # Refuse call against Heir add = -1000 exists = scope:recipient.player_heir scope:actor = { any_character_war = { OR = { primary_defender = scope:recipient.player_heir primary_attacker = scope:recipient.player_heir } } } desc = WONT_FIGHT_HEIR_REASON } modifier = { # Refuse call against Spouse add = -1000 scope:actor = { any_character_war = { OR = { primary_defender = { is_spouse_of = scope:recipient } primary_attacker = { is_spouse_of = scope:recipient } } } } desc = WONT_FIGHT_SPOUSE_REASON } opinion_modifier = { # Opinion Factor who = scope:recipient opinion_target = scope:actor desc = AI_OPINION_REASON } modifier = { # Tends to join if low on cash add = 50 scope:recipient = { short_term_gold <= minor_gold_value } desc = NEEDS_CASH } modifier = { # Tends to join defensive wars add = 50 scope:actor = { any_character_war = { primary_defender = scope:actor } } desc = DEFENSIVE_WAR_REASON } modifier = { # Same language add = 5 desc = speaks_same_language_interaction_reason scope:actor = { knows_language_of_culture = scope:recipient.culture } } compare_modifier = { # Likes fighting infidels trigger = { scope:recipient.faith = scope:actor.faith scope:actor = { any_character_war = { trigger_if = { limit = { primary_defender = scope:actor } primary_attacker = { faith = { faith_hostility_level = { target = scope:actor.faith value >= religious_cb_enabled_hostility_level } } } } trigger_else_if = { limit = { primary_attacker = scope:actor } primary_defender = { faith = { faith_hostility_level = { target = scope:actor.faith value >= religious_cb_enabled_hostility_level } } } } trigger_else = { always = no } } } } target = scope:recipient value = ai_zeal desc = "ZEAL_AGAINST_INFIDELS" min = 0 multiplier = 0.5 } modifier = { # Reluctant to attack another ally add = -50 scope:actor = { any_character_war = { primary_defender != scope:actor primary_defender = { is_allied_to = scope:recipient } } } desc = ATTACK_ON_ALLY_REASON } modifier = { # Reluctant to defend against another ally add = -25 scope:actor = { any_character_war = { primary_attacker != scope:actor primary_attacker = { is_allied_to = scope:recipient } } } desc = WAR_WITH_ALLY_REASON } modifier = { # Reluctant to join wars against religious brethren. add = -50 scope:recipient.faith != scope:actor.faith scope:actor = { any_character_war = { OR = { using_cb = minor_religious_war using_cb = religious_war using_cb = major_religious_war using_cb = undirected_great_holy_war using_cb = directed_great_holy_war OR = { AND = { primary_attacker != scope:actor primary_attacker.faith = scope:recipient.faith } AND = { primary_defender != scope:actor primary_defender.faith = scope:recipient.faith } } } } } desc = WONT_ATTACK_RELIGIOUS_BRETHREN_REASON } modifier = { # Reluctant to join against Friends add = -50 scope:actor = { any_character_war = { OR = { AND = { primary_attacker != scope:actor primary_attacker = { has_relation_friend = scope:recipient } } AND = { primary_defender != scope:actor primary_defender = { has_relation_friend = scope:recipient } } } } } } modifier = { # Reluctant to join against Best Friends add = -100 scope:actor = { any_character_war = { OR = { AND = { primary_attacker != scope:actor primary_attacker = { has_relation_best_friend = scope:recipient } } AND = { primary_defender != scope:actor primary_defender = { has_relation_best_friend = scope:recipient } } } } } } modifier = { # Reluctant to join against Lovers add = -100 scope:actor = { any_character_war = { OR = { AND = { primary_attacker != scope:actor primary_attacker = { has_relation_lover = scope:recipient } } AND = { primary_defender != scope:actor primary_defender = { has_relation_lover = scope:recipient } } } } } } modifier = { # Reluctant to join against Soul mate add = -200 scope:actor = { any_character_war = { OR = { AND = { primary_attacker != scope:actor primary_attacker = { has_relation_soulmate = scope:recipient } } AND = { primary_defender != scope:actor primary_defender = { has_relation_soulmate = scope:recipient } } } } } } modifier = { # Refuse call for hostages' safety any_home_court_hostage = { warden = { OR = { is_at_war_with = scope:actor any_ally = { is_at_war_with = scope:actor } } } } add = { value = 0 every_home_court_hostage = { limit = { warden = { OR = { is_at_war_with = scope:actor any_ally = { is_at_war_with = scope:actor } } } } subtract = call_to_arms_hostage_value } multiply = 0.25 } desc = HOSTAGE_ENEMY_CALL_TO_ARMS_REASON } fp3_struggle_resist_allied_wars_modifier = yes } ai_will_do = { base = 50 #don't do it if hired army wouldn't have an impact modifier = { scope:actor = { any_character_war = { count = all OR = { AND = { primary_attacker = scope:actor primary_defender.current_military_strength > { value = scope:recipient.current_military_strength add = scope:actor.current_military_strength multiply = 1.5 } } AND = { primary_defender = scope:actor primary_attacker.current_military_strength > { value = scope:recipient.current_military_strength add = scope:actor.current_military_strength multiply = 1.5 } } } } } add = -100 } #don't do it if you are stronger than the enemy modifier = { scope:actor = { any_character_war = { count = all OR = { AND = { primary_attacker = scope:actor primary_defender.current_military_strength < scope:actor.current_military_strength } AND = { primary_defender = scope:actor primary_attacker.current_military_strength < scope:actor.current_military_strength } } } } add = -200 } #more likely to ask if on contact list modifier = { scope:actor = { is_contact_of = scope:recipient } add = 100 } #merc laamp wants to join, so why not asking them more? modifier = { scope:recipient = { has_realm_law = camp_purpose_mercenaries } add = 50 } #more likely to ask if losing modifier = { scope:actor = { any_character_war = { OR = { AND = { primary_attacker = scope:actor defender_war_score > 25 } AND = { primary_defender = scope:actor attacker_war_score > 25 } } } } add = 20 } #don't do it if they betrayed you already in any of your ongoing wars modifier = { scope:actor = { any_character_war = { OR = { is_target_in_variable_list = { name = already_switched_side target = scope:recipient } is_target_in_variable_list = { name = left_voluntarily target = scope:recipient } } } } add = -1000 } #don't do it if you cannot afford it modifier = { scope:actor = { war_chest_gold < ep3_hire_laamp_mercs_cost_value } add = -50 } modifier = { scope:actor = { gold < ep3_hire_laamp_mercs_cost_value } add = -1000 } } } ################## # Refill MaA ################## refill_maa_interaction = { icon = icon_soldier_survivor category = interaction_category_laamp interface_priority = 20 common_interaction = yes desc = refill_maa_interaction_desc cooldown = { months = 6 } is_shown = { has_ep3_dlc_trigger = yes scope:actor = { government_allows = conditional_maa_refill NOT = { government_has_flag = government_is_nomadic } } scope:recipient = scope:actor } is_valid_showing_failures_only = { custom_tooltip = { text = reinforce_soldiers_any_regiment_tt scope:actor.maa_regiments_count >= 1 } custom_tooltip = { text = reinforce_soldiers_unfull_regiment_tt scope:actor = { any_maa_regiment = { maa_regiments_valid_to_refill_trigger = yes } } } custom_tooltip = { text = SUPPLY_LOSS_AT_SEA scope:actor = { any_laamp_portion_at_sea_trigger = no } } custom_tooltip = { text = PROCURE_ESTATE_AT_WAR_TT scope:actor = { NOT = { any_army = { location.county.holder = { OR = { is_at_war_with = scope:actor any_liege_or_above = { is_at_war_with = scope:actor } } } } } } } } send_options_exclusive = yes send_option = { flag = provisions localization = reinforce_soldiers_option_provisions current_description = reinforce_soldiers_option_provisions_desc is_valid = { scope:actor.domicile.provisions >= 5 } } send_option = { flag = gold localization = reinforce_soldiers_option_gold current_description = reinforce_soldiers_option_gold_desc is_valid = { scope:actor.gold >= 5 custom_tooltip = { text = reinforce_soldiers_option_gold_tt NOT = { scope:actor.domicile.domicile_location.county.holder ?= { government_has_flag = government_is_tribal } } } } } on_accept = { scope:actor = { switch = { trigger = yes scope:gold = { if = { limit = { gold > replenishable_troops_payed_gold_tt_value } custom_tooltip = refill_maa_gold_full_tt } else = { custom_tooltip = refill_maa_gold_tt } custom_tooltip = refill_maa_gold_cost_tt refill_maa_with_gold_effect = yes } scope:provisions = { if = { limit = { domicile.provisions > replenishable_troops_payed_provisions_tt_value } custom_tooltip = refill_maa_provisions_full_tt } else = { custom_tooltip = refill_maa_provisions_tt } custom_tooltip = refill_maa_provision_cost_tt refill_maa_with_provisions_effect = yes } } if = { limit = { is_ai = yes NOR = { scope:gold = yes scope:provisions = yes } } refill_maa_with_provisions_effect = yes } } } ai_frequency_by_tier = { barony = 0 county = 0 duchy = 1 kingdom = 0 empire = 0 hegemony = 0 } ai_targets = { ai_recipients = self } ai_potential = { government_allows = conditional_maa_refill any_maa_regiment = { maa_current_troops_count < maa_max_troops_count } } ai_will_do = { base = 100 modifier = { factor = 0 scope:gold = yes gold <= 500 } } } ################## # Evict Adventurer # by Joe Parkin ################## evict_adventurer_interaction = { common_interaction = yes category = interaction_category_diplomacy cooldown_against_recipient = { years = 5 } greeting = positive icon = icon_evict_adventurer desc = evict_adventurer_interaction_desc popup_on_receive = yes pause_on_receive = yes interface_priority = 60 ai_min_reply_days = 4 ai_max_reply_days = 9 is_shown = { has_ep3_dlc_trigger = yes scope:actor = { is_landed = yes } scope:recipient != scope:actor scope:recipient = { OR = { government_has_flag = government_is_landless_adventurer government_has_flag = government_is_landless_minority } is_landed = no } } is_valid_showing_failures_only = { scope:actor = { is_at_war = no NOR = { is_spouse_of = scope:recipient has_relation_friend = scope:recipient has_relation_lover = scope:recipient } } scope:recipient = { # Adventurer must be in the subrealm domicile.domicile_location.county.holder ?= { OR = { this = scope:actor any_liege_or_above = { this ?= scope:actor } } } } # AI should not against hired adventurers trigger_if = { limit = { scope:actor = { is_ai = yes } } scope:actor = { opinion = { target = scope:recipient value < 25 } } NOT = { scope:recipient = { any_character_active_contract = { task_contract_employer = scope:actor } } } } scope:recipient = { NOT = { has_strong_hook = scope:actor } } # Story blockers. ## Hereward cannot be exiled by active participants in the Harrying of the North. disable_interaction_for_hereward_trigger = yes ## Hasan cannot be exiled by anyone during his story. disable_interaction_for_hasan_trigger = yes } on_send = { scope:recipient = { send_interface_toast = { type = diplo_contract_scheme_invalidated_message title = evict_adventurer_interaction.tt.contracts_invalidated.t right_icon = scope:actor custom_tooltip = { text = evict_adventurer_interaction.tt.contracts_invalidated every_character_task_contract = { limit = { task_contract_location.county.holder = { OR = { this = scope:actor any_liege_or_above = { this = scope:actor } } } } invalidate_contract = yes } # We also need to invalidate your active contract, if you've got one, since you need to be travelling. every_character_active_contract = { invalidate_contract = yes } } } } } on_accept = { scope:actor = { save_scope_as = expeller } scope:recipient = { save_scope_as = adventurer add_opinion = { target = scope:actor modifier = demanded_eviction_opinion } custom_tooltip = evict_adventurer_contracts_tt } scope:actor = { custom_description_no_bullet = { text = evict_adventurer_consequences_tt object = scope:recipient subject = scope:actor } custom_tooltip = evict_adventurer_casus_belli_tt show_as_tooltip = { add_opinion = { target = scope:recipient modifier = eviction_ignored_opinion } } } scope:recipient = { set_variable = { name = adventurer_expeller value = scope:actor months = 4 } trigger_event = { id = ep3_interactions_events.0500 days = 1 } trigger_event = { id = ep3_interactions_events.0501 months = 3 } } } on_decline = { scope:recipient = { start_war = { cb = ep3_laamp_apprehend_adventurer_cb target = scope:actor } } } auto_accept = yes ai_frequency_by_tier = { barony = 0 county = 12 duchy = 6 kingdom = 6 empire = 6 hegemony = 6 } ai_targets = { ai_recipients = sub_realm_domicile_owners max = 10 } ai_potential = { is_at_war = no is_imprisoned = no NOT = { has_trait = incapable } } ai_will_do = { base = -25 opinion_modifier = { who = scope:actor opinion_target = scope:recipient multiplier = -0.5 } # Independent rulers or kings and over will happily exile claimants. modifier = { add = 250 OR = { top_liege = this highest_held_title_tier >= tier_kingdom } scope:recipient = { any_claim = { tier >= scope:actor.highest_held_title_tier holder ?= scope:actor } } } modifier = { add = 10 has_opinion_modifier = { modifier = failed_task_contract_opinion target = scope:recipient } } modifier = { add = 30 has_opinion_modifier = { modifier = left_war_early target = scope:recipient } } modifier = { add = 100 has_opinion_modifier = { modifier = switched_sides_in_war target = scope:recipient } } modifier = { add = { if = { limit = { OR = { has_opinion_modifier = { modifier = gallowsbait_scum_opinion target = scope:recipient value >= 100 } has_opinion_modifier = { modifier = succeeded_criminal_contract_against_me_opinion target = scope:recipient value >= 100 } } } add = 200 } else_if = { limit = { OR = { has_opinion_modifier = { modifier = gallowsbait_scum_opinion target = scope:recipient value >= 80 } has_opinion_modifier = { modifier = succeeded_criminal_contract_against_me_opinion target = scope:recipient value >= 80 } } } add = 150 } else_if = { limit = { OR = { has_opinion_modifier = { modifier = gallowsbait_scum_opinion target = scope:recipient value >= 60 } has_opinion_modifier = { modifier = succeeded_criminal_contract_against_me_opinion target = scope:recipient value >= 60 } } } add = 100 } else_if = { limit = { OR = { has_opinion_modifier = { modifier = gallowsbait_scum_opinion target = scope:recipient value >= 40 } has_opinion_modifier = { modifier = succeeded_criminal_contract_against_me_opinion target = scope:recipient value >= 40 } } } add = 75 } else_if = { limit = { OR = { has_opinion_modifier = { modifier = gallowsbait_scum_opinion target = scope:recipient value >= 20 } has_opinion_modifier = { modifier = succeeded_criminal_contract_against_me_opinion target = scope:recipient value >= 20 } } } add = 50 } else_if = { limit = { OR = { has_opinion_modifier = { modifier = gallowsbait_scum_opinion target = scope:recipient value >= 0 } has_opinion_modifier = { modifier = succeeded_criminal_contract_against_me_opinion target = scope:recipient value >= 0 } } } add = 25 } } OR = { has_opinion_modifier = { modifier = gallowsbait_scum_opinion target = scope:recipient } has_opinion_modifier = { modifier = succeeded_criminal_contract_against_me_opinion target = scope:recipient } } } # Factors must got at the bottom. ## Don't evict people we can't beat up. modifier = { factor = 0 scope:actor.current_military_strength < scope:recipient.military_strength_75_percent_value } ## Don't evict anyone currently doing a job for us. modifier = { factor = 0 scope:recipient = { any_character_task_contract = { task_contract_employer = scope:actor } } } ## We _only_ evict if we actually dislike someone. first_valid = { # People close to us are more willing to put up with our bullshit. modifier = { factor = 0 has_any_moderate_good_relationship_with_character_trigger = { CHARACTER = scope:recipient } opinion = { target = scope:recipient value > -30 } } modifier = { factor = 0 opinion = { target = scope:recipient value > 0 } } } } } #Become landless admin from laamp procure_estate_interaction = { category = interaction_category_laamp icon = powerful_family_shield desc = procure_estate_interaction_desc cooldown_against_recipient = { years = 10 } notification_text = { first_valid = { triggered_desc = { trigger = { scope:hook = yes } desc = PROCURE_ESTATE_HOOK } triggered_desc = { trigger = { scope:gold_option = yes } desc = PROCURE_ESTATE_GOLD } triggered_desc = { trigger = { scope:piety_option = yes } desc = PROCURE_ESTATE_PIETY } desc = PROCURE_ESTATE_PRESTIGE } desc = PROCURE_ESTATE_PROPOSAL_OUTRO } popup_on_receive = yes pause_on_receive = yes interface_priority = 100 ai_min_reply_days = 4 ai_max_reply_days = 9 is_shown = { has_ep3_dlc_trigger = yes scope:actor = { OR = { government_has_flag = government_is_landless_adventurer government_has_flag = government_is_landless_minority } } scope:recipient = { is_landed = yes government_allows = noble_families } scope:recipient != scope:actor } is_valid_showing_failures_only = { scope:actor = { top_liege = this prestige_level >= 2 # Only house heads can have Noble Family titles custom_tooltip = { text = NOT_IS_HOUSE_HEAD house.house_head ?= { OR = { this = scope:actor is_ruler = no } } } } trigger_if = { # Only a Duke or higher can treat you right limit = { scope:recipient = { highest_held_title_tier < tier_duchy } } custom_description = { text = procure_estate_low_rank_tt always = no } } trigger_if = { # Not going to give you a title if you're at war limit = { scope:actor = { is_at_war_with = scope:recipient } } custom_description = { text = procure_estate_at_war_tt always = no } } scope:recipient = { NOT = { has_strong_hook = scope:actor } } #Has to be used instead of diplo range checks in laamp to landed interactions ep3_laamp_diplo_range_trigger = { TARGET = scope:recipient LAAMP = scope:actor } scope:recipient = { is_contact_of = scope:actor } # Adventurers can't join wars in places they're exiled from. custom_tooltip = { text = the_wake_1 NOT = { is_laamp_exiled_from_province_trigger = { PROVINCE = scope:recipient.capital_province LAAMP = scope:actor } } } } auto_accept = { custom_description = { text = "spending_hook" subject = scope:actor object = scope:recipient scope:hook = yes } } should_use_extra_icon = { scope:actor = { has_usable_hook = scope:recipient } } extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" send_option = { is_valid = { scope:actor = { has_usable_hook = scope:recipient } } flag = hook localization = SCHEME_HOOK } send_option = { flag = prestige_option localization = laamp_to_ladmin_prestige_option_desc } send_option = { flag = gold_option localization = laamp_to_ladmin_gold_option_desc } send_option = { flag = piety_option localization = laamp_to_ladmin_piety_option_desc } cost = { gold = { add = { value = procure_estate_interaction_cost_base_gold desc = BASE } if = { limit = { scope:gold_option = yes } add = { value = procure_estate_interaction_cost_base_gold desc = laamp_to_ladmin_gold_option_desc } } } prestige = { if = { limit = { NOR = { scope:gold_option = yes scope:piety_option = yes scope:hook = yes } } # Base cost add = { value = procure_estate_interaction_cost_base_prestige desc = BASE } # Gender modifiers if = { limit = { scope:recipient ?= { top_liege = { has_realm_law = male_preference_law } } scope:actor = { is_female = yes } } add = { # Increase the base cost value = { value = procure_estate_interaction_cost_base_prestige multiply = 0.25 } desc = male_preference_law } } if = { limit = { scope:recipient ?= { top_liege = { has_realm_law = female_preference_law } } scope:actor = { is_male = yes } } add = { # Increase the base cost value = { value = procure_estate_interaction_cost_base_prestige multiply = 0.25 } desc = female_preference_law } } #Brigands need to pay more to be legitimized if = { limit = { scope:actor = { has_realm_law = camp_purpose_brigands } } add = { # Increase the base cost value = { value = major_prestige_value } desc = camp_purpose_brigands } } } } piety = { if = { limit = { scope:piety_option = yes } # Base cost add = { value = procure_estate_interaction_cost_base_piety desc = BASE } # Gender modifiers if = { limit = { scope:recipient ?= { top_liege = { has_realm_law = male_preference_law } } scope:actor = { is_female = yes } } add = { # Increase the base cost value = { value = procure_estate_interaction_cost_base_piety multiply = 0.25 } desc = male_preference_law } } if = { limit = { scope:recipient ?= { top_liege = { has_realm_law = female_preference_law } } scope:actor = { is_male = yes } } add = { # Increase the base cost value = { value = procure_estate_interaction_cost_base_piety multiply = 0.25 } desc = female_preference_law } } #Brigands need to pay more to be legitimized if = { limit = { scope:actor = { has_realm_law = camp_purpose_brigands } } add = { # Increase the base cost value = { value = procure_estate_interaction_cost_base_piety } desc = camp_purpose_brigands } } } } } is_highlighted = { always = yes } on_accept = { scope:actor = { save_scope_as = adventurer procure_estate_interaction_effect = yes create_character_memory = { type = procured_estate_memory participants = { benefactor = scope:recipient } } if = { limit = { is_ai = no } add_achievement_global_variable_effect = { VARIABLE = started_from_the_bottom_now_were_ere_procure VALUE = yes } } } scope:actor = { trigger_event = ep3_interactions_events.0610 } } on_decline = { scope:actor = { save_scope_as = adventurer trigger_event = ep3_interactions_events.0611 } } ai_targets = { ai_recipients = contacts } ai_frequency_by_tier = { barony = 0 county = 0 duchy = 60 kingdom = 0 empire = 0 hegemony = 0 } ai_accept = { base = 0 # Try to make it 0 for most interactions opinion_modifier = { # Opinion Factor who = scope:recipient opinion_target = scope:actor multiplier = 0.5 desc = AI_OPINION_REASON } #DIFFERENT FAITH FROM STATE FAITH (if recipient is state faith) modifier = { add = -20 desc = PROCURE_ESTATE_STATE_FAITH_REASON exists = scope:recipient.top_liege.primary_title.state_faith scope:actor.faith = { this != scope:recipient.top_liege.primary_title.state_faith } scope:recipient.faith = { this = scope:recipient.top_liege.primary_title.state_faith } NOT = { scope:piety_option = yes } } #Hey you're actually a local in my capital modifier = { add = 10 desc = PROCURE_ESTATE_SAME_CULTURE_AS_CAPITAL_REASON scope:recipient.capital_county.culture = { this = scope:actor.culture } } #Your dynasty is worthless modifier = { add = -10 scope:actor.dynasty = { dynasty_prestige_level < 2 } desc = PROCURE_ESTATE_DYNASTY_PRESTIGE_LEVEL_REASON } #Your dynasty is pretty great actually modifier = { add = 10 scope:actor.dynasty = { dynasty_prestige_level >= 4 dynasty_prestige_level < 7 } desc = PROCURE_ESTATE_DYNASTY_PRESTIGE_LEVEL_REASON } #Your dynasty is pretty great actually modifier = { add = 20 scope:actor.dynasty = { dynasty_prestige_level >= 7 dynasty_prestige_level < 10 } desc = PROCURE_ESTATE_DYNASTY_PRESTIGE_LEVEL_REASON } #Your dynasty is pretty great actually modifier = { add = 30 scope:actor.dynasty = { dynasty_prestige_level >= 10 } desc = PROCURE_ESTATE_DYNASTY_PRESTIGE_LEVEL_REASON } #We are not related modifier = { add = -15 desc = PROCURE_ESTATE_SHARED_RELATIVES_REASON NOR = { scope:actor.house ?= { any_house_member = { is_close_or_extended_family_of = scope:recipient } } scope:actor = { any_close_or_extended_family_member = { is_close_or_extended_family_of = scope:recipient } } scope:recipient.house ?= { any_house_member = { is_close_or_extended_family_of = scope:actor } } scope:recipient = { any_spouse = { is_close_or_extended_family_of = scope:actor } } scope:actor = { any_spouse = { is_close_or_extended_family_of = scope:recipient } } scope:actor.dynasty = { this = scope:recipient.dynasty } } } #You are criminal scum modifier = { add = -50 desc = PROCURE_ESTATE_BRIGANDS_REASON scope:actor = { has_realm_law = camp_purpose_brigands } } #You are an upright legitimist modifier = { add = 25 desc = PROCURE_ESTATE_LEGITIMISTS_REASON scope:actor = { has_realm_law = camp_purpose_legitimists } } #You have a criminal background modifier = { add = -10 desc = PROCURE_ESTATE_GALLOWSBAIT_REASON scope:actor = { has_trait = gallowsbait } } #You have a criminal background modifier = { add = -5 desc = PROCURE_ESTATE_GALLOWSBAIT_REASON scope:actor = { has_trait = gallowsbait NOR = { has_trait_xp = { trait = gallowsbait track = bandit value < 40 } has_trait_xp = { trait = gallowsbait track = trickster value < 40 } has_trait_xp = { trait = gallowsbait track = thief value < 40 } has_trait_xp = { trait = gallowsbait track = poacher value < 40 } has_trait_xp = { trait = gallowsbait track = marauder value < 40 } } } } modifier = { add = -20 desc = PROCURE_ESTATE_GALLOWSBAIT_REASON scope:actor = { has_trait = gallowsbait OR = { has_trait_xp = { trait = gallowsbait track = bandit value >= 40 } has_trait_xp = { trait = gallowsbait track = trickster value >= 40 } has_trait_xp = { trait = gallowsbait track = thief value >= 40 } has_trait_xp = { trait = gallowsbait track = poacher value >= 40 } has_trait_xp = { trait = gallowsbait track = marauder value >= 40 } } NOR = { has_trait_xp = { trait = gallowsbait track = bandit value < 80 } has_trait_xp = { trait = gallowsbait track = trickster value < 80 } has_trait_xp = { trait = gallowsbait track = thief value < 80 } has_trait_xp = { trait = gallowsbait track = poacher value < 80 } has_trait_xp = { trait = gallowsbait track = marauder value < 80 } } } } modifier = { add = -50 desc = PROCURE_ESTATE_GALLOWSBAIT_REASON scope:actor = { has_trait = gallowsbait OR = { has_trait_xp = { trait = gallowsbait track = bandit value >= 80 } has_trait_xp = { trait = gallowsbait track = trickster value >= 80 } has_trait_xp = { trait = gallowsbait track = thief value >= 80 } has_trait_xp = { trait = gallowsbait track = poacher value >= 80 } has_trait_xp = { trait = gallowsbait track = marauder value >= 80 } } } } #You have an interesting claim within my realm modifier = { add = 5 desc = PROCURE_ESTATE_CLAIMS_REASON scope:actor = { any_claim = { save_temporary_scope_as = laamp_claim_temp scope:recipient.top_liege.primary_title = { is_de_jure_liege_or_above_target = scope:laamp_claim_temp } NOT = { holder ?= scope:recipient } } } } #You are a challenger for the empire and I want you indebted to me modifier = { add = 20 desc = PROCURE_ESTATE_IMPERIAL_CLAIMS_REASON scope:actor = { any_claim = { save_temporary_scope_as = laamp_claim_temp this = scope:recipient.top_liege.primary_title NOT = { holder ?= scope:recipient } scope:recipient = { NOR = { has_any_good_relationship_with_character_trigger = { CHARACTER = scope:recipient.top_liege } opinion = { target = scope:recipient.top_liege value >= -20 } is_allied_to = scope:recipient.top_liege } } } } } #You have a scary claim on one of my titles! modifier = { add = -50 desc = PROCURE_ESTATE_RIVAL_CLAIMANT_REASON scope:actor = { any_claim = { holder ?= scope:recipient } } } #Needs gold modifier = { add = 10 scope:recipient = { gold <= minor_gold_value } NOT = { scope:gold_option = yes } desc = PROCURE_ESTATE_NEEDS_GOLD_REASON } #Needs gold and offering gold modifier = { add = 20 scope:recipient = { gold <= minor_gold_value } scope:gold_option = yes desc = PROCURE_ESTATE_NEEDS_GOLD_REASON } #Needs piety modifier = { add = 20 scope:recipient = { piety_level <= 0 } scope:piety_option = yes desc = PROCURE_ESTATE_NEEDS_PIETY_REASON } #Needs prestige modifier = { add = 20 scope:recipient = { prestige_level <= 0 } scope:prestige_option = yes desc = PROCURE_ESTATE_NEEDS_PRESTIGE_REASON } } ai_will_do = { base = -25 ai_value_modifier = { ai_boldness = -0.5 ai_energy = -0.5 ai_greed = 0.5 ai_rationality = 0.5 } modifier = { gold < 100 factor = 0 } modifier = { gold > 100 OR = { prestige >= massive_prestige_value piety >= massive_piety_value gold >= massive_gold_value } add = 50 } modifier = { has_hook = scope:recipient add = 200 } } } request_laamp_legitimist_support = { interface_priority = 50 common_interaction = yes category = interaction_category_laamp cooldown_against_recipient = { years = 5 } greeting = positive icon = request_invasion_sponsorship_interaction desc = request_laamp_legitimist_support_interaction_desc is_shown = { has_ep3_dlc_trigger = yes scope:actor = { OR = { government_has_flag = government_is_landless_adventurer government_has_flag = government_is_landless_minority } has_realm_law = camp_purpose_legitimists } scope:recipient = { is_landed = yes is_ai = yes primary_title.tier >= tier_kingdom } scope:recipient != scope:actor } is_valid_showing_failures_only = { NOR = { #so legitimist AI can get lucky. It looks ugly but formats the tooltip correctly NOT = { ep3_laamp_diplo_range_trigger = { TARGET = scope:recipient LAAMP = scope:actor } } scope:actor = { is_available_ai_adult = yes } } custom_tooltip = { text = request_laamp_legitimist_have_claim_on_target scope:actor = { NOT = { any_claim = { OR = { holder = { this = scope:recipient } holder.top_liege = { this = scope:recipient } } } } } } custom_tooltip = { text = request_laamp_legitimist_support_already_supporting scope:recipient = { NOT = { has_character_flag = legitimist_supporter } } } scope:recipient = { is_at_war = no is_available_ai_adult = yes } # Adventurers can't join wars in places they're exiled from. custom_tooltip = { text = the_wake_1 NOT = { is_laamp_exiled_from_province_trigger = { PROVINCE = scope:recipient.capital_province LAAMP = scope:actor } } } } send_options_exclusive = no cost = { prestige = { value = massive_prestige_value if = { limit = { scope:actor.dynasty = scope:recipient.dynasty } divide = 2 } if = { limit = { #so legitimist AI can get lucky scope:actor = { is_ai = yes } } divide = 6 } } } on_accept = { scope:actor = { create_task_contract = { task_contract_type = laamp_legitimist_support_contract task_contract_tier = 3 location = scope:recipient.capital_province task_contract_employer = scope:recipient save_temporary_scope_as = legitimist_contract } custom_tooltip = laamp_legitimist_support_contract_success if = { limit = { is_ai = yes } accept_task_contract = scope:legitimist_contract } } } on_decline = { } use_diplomatic_range = yes ai_accept = { base = -60 opinion_modifier = { # Opinion Factor who = scope:recipient opinion_target = scope:actor multiplier = 1 desc = AI_OPINION_REASON } modifier = { add = 40 scope:actor = { any_claim = { tier >= tier_kingdom holder = { save_temporary_scope_as = claim_holder } } prestige_level > scope:claim_holder.prestige_level } desc = AI_REASON_LEGITIMIST_HIGHER_PRESTIGE } modifier = { add = 60 scope:actor = { has_hook = scope:recipient } desc = YOU_HAVE_HOOK_REASON } modifier = { add = 10 scope:actor.dynasty = scope:recipient.dynasty desc = BF_AI_SAME_DYNASTY_REASON } modifier = { add = 20 scope:actor.house = scope:recipient.house desc = IS_SAME_HOUSE_REASON } modifier = { add = 20 scope:recipient = { has_trait = ambitious } desc = RECIPIENT_IS_AMBITIOUS } modifier = { add = 10 scope:recipient = { has_trait = just } desc = RECIPIENT_IS_JUST } modifier = { add = 10 scope:recipient = { has_trait = greedy } desc = RECIPIENT_IS_GREEDY } modifier = { add = 40 #so legitimist AI can get lucky scope:actor = { is_ai = yes } } } can_send_despite_rejection = no ai_frequency_by_tier = { barony = 0 county = 0 duchy = 60 kingdom = 0 empire = 0 hegemony = 0 } ai_targets = { ai_recipients = domicile_location_neighboring_top_rulers ai_recipients = contacts } ai_potential = { is_at_war = no ai_greed <= 25 } ai_will_do = { base = 100 #no downside to ai trying this } } #travel around the map to look for new contracts relocate_camp_to_interaction = { category = interaction_category_laamp interface_priority = 100 common_interaction = yes use_diplomatic_range = no ignores_pending_interaction_block = yes icon = icon_contract_escort desc = relocate_camp_to_interaction_desc is_shown = { scope:recipient != scope:actor scope:actor = { has_government = landless_adventurer_government } scope:recipient = { exists = capital_province } #just to make sure proper scopes will be set up } is_valid_showing_failures_only = { custom_tooltip = { text = relocate_camp_to_interaction.here scope:actor.domicile.domicile_location != scope:recipient.capital_province } scope:actor = { is_travelling = no is_in_army = no is_imprisoned = no } # Adventurers can't join wars in places they're exiled from. custom_tooltip = { text = the_wake_1 NOT = { is_laamp_exiled_from_province_trigger = { PROVINCE = scope:recipient.capital_province LAAMP = scope:actor } } } } on_accept = { scope:recipient.capital_province = { save_scope_as = relocation_destination } scope:actor = { show_as_tooltip = { domicile = { move_domicile = scope:relocation_destination } } start_travel_plan = { destination = scope:relocation_destination on_start_on_action = on_travel_relocation_start on_arrival_on_action = on_travel_relocation_end on_arrival_destinations = last return_trip = no # One way travel_with_domicile = yes } } } auto_accept = yes } # task_contract_train_knight_interaction = { category = interaction_category_laamp interface_priority = 120 common_interaction = yes icon = icon_combat popup_on_receive = yes pause_on_receive = yes is_shown = { has_ep3_dlc_trigger = yes scope:actor = { any_character_active_contract = { task_contract_type = laamp_help_train_commanders_contract OR = { task_contract_employer ?= scope:recipient task_contract_target ?= scope:recipient any_in_list = { variable = knights_to_train is_alive = yes is_knight = yes this = scope:recipient } } } } } is_valid_showing_failures_only = { } redirect = { scope:actor = { random_character_active_contract = { task_contract_type = laamp_help_train_commanders_contract limit = { OR = { task_contract_employer ?= scope:recipient task_contract_target ?= scope:recipient any_in_list = { variable = knights_to_train is_alive = yes is_knight = yes this = scope:recipient } } } save_scope_as = task_contract } } if = { limit = { scope:task_contract ?= { any_in_list = { variable = knights_to_train is_alive = yes is_knight = yes this = scope:recipient } } } scope:recipient = { save_scope_as = secondary_recipient } scope:secondary_recipient.liege = { save_scope_as = recipient } } if = { limit = { scope:task_contract.task_contract_employer ?= scope:recipient scope:task_contract.task_contract_employer.liege ?= scope:task_contract.task_contract_target } } } populate_recipient_list = { scope:actor = { random_character_active_contract = { task_contract_type = laamp_help_train_commanders_contract limit = { OR = { task_contract_employer ?= scope:recipient task_contract_target ?= scope:recipient any_in_list = { variable = knights_to_train is_alive = yes is_knight = yes this = scope:recipient } } } every_in_list = { variable = knights_to_train limit = { is_alive = yes is_knight = yes } add_to_list = characters } } } } is_highlighted = { always = yes } on_accept = { scope:actor = { random_character_active_contract = { task_contract_type = laamp_help_train_commanders_contract limit = { OR = { task_contract_employer ?= scope:recipient task_contract_target ?= scope:recipient any_in_list = { variable = knights_to_train is_alive = yes is_knight = yes this = scope:recipient } } } save_scope_as = task_contract } } scope:secondary_recipient = { save_scope_as = knight custom_tooltip = task_contract_train_knight_interaction.tt } scope:actor = { trigger_event = ep3_contract_event.0091 } } auto_accept = yes ai_accept = { base = 100 } ai_frequency_by_tier = { barony = 0 county = 0 duchy = 12 kingdom = 0 empire = 0 hegemony = 0 } ai_targets = { ai_recipients = neighboring_rulers ai_recipients = liege ai_recipients = contacts } ai_potential = { is_at_war = no } ai_will_do = { base = 100 #no downside to ai trying this } } #landless adventurer are allowed to change allegiances mid-war laamp_war_change_sides_interaction = { category = interaction_category_laamp icon = alliance desc = laamp_war_change_sides_interaction_desc common_interaction = yes popup_on_receive = yes pause_on_receive = yes interface_priority = 120 ai_min_reply_days = 0 ai_max_reply_days = 0 cooldown_against_recipient = { years = 3 } send_options_exclusive = yes is_shown = { scope:actor = { is_at_war = yes has_government = landless_adventurer_government } scope:recipient = { this != scope:actor any_war_ally = { this = scope:actor } any_character_war = { #can't switch/leave wars you lead NOT = { is_war_leader = scope:actor } #can't switch/leave Great Holy Wars NOR = { using_cb = undirected_great_holy_war using_cb = directed_great_holy_war } any_war_participant = { this = scope:recipient } } } } is_valid_showing_failures_only = { scope:recipient = { trigger_if = { limit = { any_character_war = { has_variable_list = already_switched_side } } custom_tooltip = { text = laamp_war_change_sides_interaction.already_switched_side is_target_in_variable_list = { name = already_switched_side target = scope:actor } } } } } populate_recipient_list = { scope:recipient = { every_character_war = { limit = { OR = { primary_attacker = scope:recipient primary_defender = scope:recipient } #can't switch/leave wars you lead NOT = { is_war_leader = scope:actor } #can't switch/leave Great Holy Wars NOR = { using_cb = undirected_great_holy_war using_cb = directed_great_holy_war } any_war_participant = { this = scope:recipient } } if = { limit = { primary_attacker = scope:recipient } primary_defender = { add_to_list = characters } } else = { primary_attacker = { add_to_list = characters } } } } } on_accept = { scope:recipient = { save_scope_as = betrayed_leader } scope:secondary_recipient = { save_scope_as = new_leader } scope:actor = { #ROOT is a 4th crusader and should not be one anymore frankokratia_remove__war_leader_var_effect = yes #ROOT is not a 4th crusader and should be one if = { limit = { any_character_war = { using_cb = crusading_claim_cb any_war_participant = { this = scope:recipient } any_war_participant = { any_owned_story = { type = frankokratia_story NOT = { any_in_list = { variable = frankokratia_leaders this = scope:actor } } } } any_war_defender = { this = scope:actor } } } random_character_war = { limit = { any_war_participant = { any_owned_story = { type = frankokratia_story NOT = { any_in_list = { variable = frankokratia_leaders this = scope:actor } } } } any_war_defender = { this = scope:actor } } random_war_participant = { limit = { any_owned_story = { type = frankokratia_story NOT = { any_in_list = { variable = frankokratia_leaders this = scope:actor } } } } random_owned_story = { type = frankokratia_story limit = { NOT = { any_in_list = { variable = frankokratia_leaders this = scope:actor } } } add_to_variable_list = { name = frankokratia_leaders target = scope:actor } } } } } random_character_war = { limit = { OR = { primary_attacker = scope:recipient primary_defender = scope:recipient } OR = { primary_attacker = scope:secondary_recipient primary_defender = scope:secondary_recipient } } save_scope_as = war } if = { limit = { scope:war = { using_non_ghw_holy_war_cb_trigger = yes } scope:recipient.faith = scope:actor.faith } add_piety_level = -1 } every_character_active_contract = { limit = { var:task_contract_war = scope:war } complete_task_contract = failure_standard } # Clear Offer Assistance. if = { limit = { has_variable = owed_contract_assistance_war scope:recipient = { is_participant_in_war = scope:actor.var:owed_contract_assistance_war } } remove_variable = owed_contract_assistance_war remove_variable = owed_contract_assistance_contribution remove_variable = owed_contract_assistance_gold } } scope:war = { hidden_effect = { remove_participant = scope:actor } if = { limit = { is_defender = scope:secondary_recipient } add_defender = scope:actor } else = { add_attacker = scope:actor } } scope:actor = { every_character_war = { limit = { OR = { primary_attacker = scope:recipient primary_defender = scope:recipient } this != scope:war } remove_participant = scope:actor } } scope:actor = { # We deliberately charge you here to let you go into prestige debt; you shouldn't be blocked from switching sides due to a lack of prestige if you're willing to tank the loss. add_prestige = { value = -250 multiply = { value = scope:recipient.highest_held_title_tier add = -1 } } if = { limit = { scope:recipient.highest_held_title_tier >= tier_kingdom } add_prestige_level = -1 } if = { limit = { NOT = { has_contact = scope:secondary_recipient } } add_contact = scope:secondary_recipient } # Break the alliance if = { limit = { is_allied_to = scope:recipient } break_alliance = scope:recipient } # And don't forget stress! stress_impact = { base = major_stress_impact_gain disloyal = medium_stress_impact_loss ambitious = minor_stress_impact_loss arrogant = minor_stress_impact_loss callous = miniscule_stress_impact_loss arbitrary = miniscule_stress_impact_loss just = minor_stress_impact_gain humble = medium_stress_impact_gain content = medium_stress_impact_gain loyal = major_stress_impact_gain } } scope:recipient = { if = { limit = { can_set_relation_potential_rival_trigger = { CHARACTER = scope:actor } } set_relation_potential_rival = scope:actor } add_opinion = { modifier = switched_sides_in_war target = scope:actor } } scope:secondary_recipient = { add_opinion = { modifier = switched_to_my_side target = scope:actor } if = { limit = { is_ai = yes } pay_short_term_gold = { target = scope:actor gold = major_gold_value } } } scope:recipient = { every_character_war = { limit = { OR = { primary_attacker = scope:recipient primary_defender = scope:recipient } #can't switch/leave wars you lead NOT = { is_war_leader = scope:actor } #can't switch/leave Great Holy Wars NOR = { using_cb = undirected_great_holy_war using_cb = directed_great_holy_war } any_war_participant = { this = scope:recipient } NOR = { primary_attacker = scope:secondary_recipient primary_defender = scope:secondary_recipient } } if = { limit = { primary_attacker = scope:recipient } primary_defender = { add_opinion = { modifier = left_war_early opinion = 40 target = scope:actor } } } else = { primary_attacker = { add_opinion = { modifier = left_war_early opinion = 20 target = scope:actor } } } } } scope:war = { add_to_variable_list = { name = already_switched_side target = scope:actor } } } auto_accept = yes ai_potential = { is_at_war = yes } ai_targets = { ai_recipients = war_allies } ai_frequency_by_tier = { barony = 0 county = 0 duchy = 24 kingdom = 0 empire = 0 hegemony = 0 } ai_will_do = { base = -25 #you have to be dishonorable and greedy to do this ai_value_modifier = { ai_honor = -0.1 ai_greed = 0.1 } ##check if the recipient is the war leader and do it #if they are infamous modifier = { any_character_war = { is_war_leader = scope:recipient } scope:recipient = { prestige_level < 0 } add = 5 } #if they are impious modifier = { any_character_war = { is_war_leader = scope:recipient } scope:recipient = { piety_level < 0 } add = 5 } #if they are a criminal modifier = { any_character_war = { is_war_leader = scope:recipient } has_any_criminal_trait_in_faith_trigger = { CHARACTER = scope:recipient FAITH = scope:actor.faith } add = 5 } #if they wronged you or your family modifier = { any_character_war = { is_war_leader = scope:recipient } scope:actor = { has_any_major_revenge_opinion_against_character_trigger = { CHARACTER = scope:recipient } } add = 5 } #if they have good relation with the other side modifier = { any_character_war = { OR = { AND = { primary_defender = scope:recipient primary_attacker = { has_any_good_relationship_with_character_trigger = { CHARACTER = scope:actor } } } AND = { primary_attacker = scope:recipient primary_defender = { has_any_good_relationship_with_character_trigger = { CHARACTER = scope:actor } } } } } add = 5 } #don't do it # if the other side has bad relation with you modifier = { any_character_war = { OR = { AND = { primary_defender = scope:recipient primary_attacker = { has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:actor } } } AND = { primary_attacker = scope:recipient primary_defender = { has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:actor } } } } } add = -1000 } # you are winning modifier = { any_character_war = { OR = { AND = { primary_defender = scope:recipient defender_war_score >= 0 } AND = { primary_attacker = scope:recipient attacker_war_score >= 0 } } } add = -1000 } opinion_modifier = { # Opinion Factor who = scope:recipient opinion_target = scope:actor multiplier = -0.1 desc = AI_OPINION_REASON } } } #landless adventurer are allowed to leave the war outright laamp_leave_war_interaction = { category = interaction_category_laamp icon = alliance desc = laamp_leave_war_interaction_desc common_interaction = yes popup_on_receive = yes pause_on_receive = yes interface_priority = 120 ai_min_reply_days = 0 ai_max_reply_days = 0 cooldown_against_recipient = { years = 3 } send_options_exclusive = yes is_shown = { scope:actor = { is_at_war = yes has_government = landless_adventurer_government } scope:recipient = { this != scope:actor any_war_ally = { this = scope:actor } any_character_war = { is_participant = scope:recipient #can't leave wars you lead NOT = { is_war_leader = scope:actor } } } } is_valid_showing_failures_only = { scope:actor = { any_character_war = { is_participant = scope:recipient #can't leave wars you lead NOT = { is_war_leader = scope:actor } #can't leave Great Holy Wars NOR = { using_cb = undirected_great_holy_war using_cb = directed_great_holy_war } } } scope:recipient = { trigger_if = { limit = { any_character_war = { has_variable_list = already_switched_side } } custom_tooltip = { text = laamp_war_change_sides_interaction.already_switched_side is_target_in_variable_list = { name = already_switched_side target = scope:actor } } } } } on_accept = { scope:recipient = { save_scope_as = betrayed_leader } scope:secondary_recipient = { save_scope_as = new_leader } scope:actor = { #ROOT is a 4th crusader and should not be one anymore frankokratia_remove__war_leader_var_effect = yes every_character_war = { limit = { OR = { primary_attacker = scope:recipient primary_defender = scope:recipient } #can't switch/leave wars you lead NOT = { is_war_leader = scope:actor } #can't switch/leave Great Holy Wars NOR = { using_cb = undirected_great_holy_war using_cb = directed_great_holy_war } any_war_participant = { this = scope:recipient } } remove_participant = scope:actor if = { limit = { primary_defender = scope:recipient } primary_attacker = { add_opinion = { modifier = left_war_early opinion = 30 target = scope:actor } } } else = { primary_defender = { add_opinion = { modifier = left_war_early opinion = 30 target = scope:actor } } } add_to_variable_list = { name = left_voluntarily target = scope:actor } } if = { limit = { scope:war = { using_non_ghw_holy_war_cb_trigger = yes } } add_piety_level = -1 } save_scope_value_as = { name = task_contract_reward value = flag:failure_standard } save_scope_value_as = { name = task_contract_tier value = scope:task_contract.task_contract_tier } every_character_active_contract = { limit = { var:task_contract_war = scope:war } task_contract_employer = { save_scope_as = task_contract_employer } invalidate_contract = yes } if = { limit = { NOT = { exists = scope:task_contract_employer } } scope:recipient = { save_scope_as = task_contract_employer } } trigger_event = ep3_contract_event.0013 # We deliberately charge you here to let you go into prestige debt; you shouldn't be blocked from switching sides due to a lack of prestige if you're willing to tank the loss. add_prestige = { value = -200 multiply = { value = scope:recipient.highest_held_title_tier add = -1 } } if = { limit = { scope:recipient.highest_held_title_tier >= tier_kingdom } add_prestige_level = -1 } # Break the alliance if = { limit = { is_allied_to = scope:recipient } break_alliance = scope:recipient } # And don't forget stress! stress_impact = { base = major_stress_impact_gain disloyal = medium_stress_impact_loss ambitious = minor_stress_impact_loss arrogant = minor_stress_impact_loss callous = miniscule_stress_impact_loss arbitrary = miniscule_stress_impact_loss just = minor_stress_impact_gain humble = medium_stress_impact_gain content = medium_stress_impact_gain loyal = major_stress_impact_gain } # Clear Offer Assistance. if = { limit = { has_variable = owed_contract_assistance_war scope:recipient = { is_participant_in_war = scope:actor.var:owed_contract_assistance_war } } remove_variable = owed_contract_assistance_war remove_variable = owed_contract_assistance_contribution remove_variable = owed_contract_assistance_gold } } scope:recipient = { if = { limit = { can_set_relation_potential_rival_trigger = { CHARACTER = scope:actor } } set_relation_potential_rival = scope:actor } add_opinion = { modifier = left_war_early target = scope:actor } } } auto_accept = yes ai_potential = { is_at_war = yes } ai_targets = { ai_recipients = war_allies } ai_frequency_by_tier = { barony = 0 county = 0 duchy = 24 kingdom = 0 empire = 0 hegemony = 0 } ai_will_do = { base = -25 #you have to be dishonorable and lazy to do this ai_value_modifier = { ai_honor = -0.1 ai_energy = -0.1 } ##check if the recipient is the war leader and do it #if they are infamous modifier = { any_character_war = { is_war_leader = scope:recipient } scope:recipient = { prestige_level < 0 } add = 5 } #if they are impious modifier = { any_character_war = { is_war_leader = scope:recipient } scope:recipient = { piety_level < 0 } add = 5 } #if they are a criminal modifier = { any_character_war = { is_war_leader = scope:recipient } has_any_criminal_trait_in_faith_trigger = { CHARACTER = scope:recipient FAITH = scope:actor.faith } add = 5 } #if they wronged you or your family modifier = { any_character_war = { is_war_leader = scope:recipient } scope:actor = { has_any_major_revenge_opinion_against_character_trigger = { CHARACTER = scope:recipient } } add = 5 } #if they have good relation with the other side modifier = { any_character_war = { OR = { AND = { primary_defender = scope:recipient primary_attacker = { has_any_good_relationship_with_character_trigger = { CHARACTER = scope:actor } } } AND = { primary_attacker = scope:recipient primary_defender = { has_any_good_relationship_with_character_trigger = { CHARACTER = scope:actor } } } } } add = 5 } #don't do it # if the other side has bad relation with you modifier = { any_character_war = { OR = { AND = { primary_defender = scope:recipient primary_attacker = { has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:actor } } } AND = { primary_attacker = scope:recipient primary_defender = { has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:actor } } } } } add = -1000 } # you are winning modifier = { any_character_war = { OR = { AND = { primary_defender = scope:recipient defender_war_score >= 0 } AND = { primary_attacker = scope:recipient attacker_war_score >= 0 } } } add = -1000 } opinion_modifier = { # Opinion Factor who = scope:recipient opinion_target = scope:actor multiplier = -0.1 desc = AI_OPINION_REASON } } }