N3OW/common/character_interactions/06_ep3_laamp_interactions.txt
2025-02-19 22:32:34 +00:00

7855 lines
178 KiB
Text

##################
# 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 = { is_independent_ruler = no }
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 = {
government_has_flag = government_is_landless_adventurer
}
scope:recipient = {
is_landed = yes
# Need to own the land/cannot directly buy a governorship (procure estate first)
NOT = { government_has_flag = government_is_administrative }
}
NOT = { 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
NOT = { scope:target = scope:recipient.capital_county }
}
custom_tooltip = {
text = purchase_land_primary_tt
NOT = { 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 = { is_independent_ruler = yes }
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 = {
is_busy_in_events_localised = yes
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
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 = {
NOT = {
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 = neighboring_rulers
ai_recipients = contacts
}
ai_frequency = 120
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
NOT = {
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 = {
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 = { government_has_flag = government_is_landless_adventurer }
scope:recipient = { is_landed = yes }
NOT = { scope:recipient = scope:actor }
NOT = { scope:actor = { has_realm_law = camp_purpose_legitimists } }
}
is_valid_showing_failures_only = {
scope:actor = {
is_independent_ruler = yes
custom_tooltip = {
text = request_laamp_invasion_sponsorship_existing_supporter_tt
NOT = { exists = var:adventurer_invasion_supporter }
}
}
scope:recipient = {
is_independent_ruler = yes
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 = -30
}
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
NOT = { 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 = { is_independent_ruler = no }
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 = {
government_has_flag = government_is_landless_adventurer
}
NOT = { 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
NOT = { 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 = {
is_busy_in_events_localised = yes
NOT = { has_strong_hook = scope:actor }
}
# Adventurers can't be negotiated back into places they're exiled from.
trigger_if = {
limit = {
scope:actor = { is_independent_ruler = no }
}
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
}
ai_frequency = 3 # Must be fairly common as it can happen during war
ai_potential = {
OR = {
is_independent_ruler = yes
highest_held_title_tier >= tier_kingdom
}
OR = {
is_at_war = yes
has_trait = craven
has_trait = generous
}
}
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 = {
is_landless_adventurer = yes
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
is_landless_adventurer = yes
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
is_landless_adventurer = yes
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
is_landless_adventurer = yes
# 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
is_landless_adventurer = yes
# 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:recipient = {
is_busy_in_events_localised = yes
}
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 = 12
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
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 = { government_has_flag = government_is_landless_adventurer }
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
}
existing_feud_against_target_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 = {
tier = 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
ai_has_conqueror_personality = no
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 = 3
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 = { government_has_flag = government_is_landless_adventurer }
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 = {
NOT = { scope:recipient = scope:actor }
scope:actor = { government_has_flag = government_is_landless_adventurer }
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
}
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 = 6
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:actor != scope:recipient
scope:actor = {
trigger_if = { # Avoid calling Adventurers without armies
limit = {
is_ai = yes
}
scope:recipient.current_military_strength >= 100
}
}
scope:recipient = {
is_landless_adventurer = yes
}
}
is_valid_showing_failures_only = {
scope:recipient = {
is_busy_in_events_localised = yes
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
is_landless_adventurer = yes
}
}
}
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 = { is_independent_ruler = no }
}
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
}
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 = 12
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 = {
NOT = { 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 = {
NOT = { 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
NOT = { 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 = {
NOT = { primary_attacker = scope:actor }
primary_attacker.faith = scope:recipient.faith
}
AND = {
NOT = { 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 = {
NOT = { primary_attacker = scope:actor }
primary_attacker = {
has_relation_friend = scope:recipient
}
}
AND = {
NOT = { 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 = {
NOT = { primary_attacker = scope:actor }
primary_attacker = {
has_relation_best_friend = scope:recipient
}
}
AND = {
NOT = { 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 = {
NOT = { primary_attacker = scope:actor }
primary_attacker = {
has_relation_lover = scope:recipient
}
}
AND = {
NOT = { 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 = {
NOT = { primary_attacker = scope:actor }
primary_attacker = {
has_relation_soulmate = scope:recipient
}
}
AND = {
NOT = { 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
}
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 = 1
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 }
NOT = { scope:recipient = scope:actor }
scope:recipient = {
government_has_flag = government_is_landless_adventurer
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 = {
is_busy_in_events_localised = yes
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 = 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 = {
is_independent_ruler = yes
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 = { government_has_flag = government_is_landless_adventurer }
scope:recipient = {
is_landed = yes
has_government = administrative_government
}
NOT = { scope:recipient = scope:actor }
}
is_valid_showing_failures_only = {
scope:actor = {
is_independent_ruler = yes
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 = {
is_busy_in_events_localised = yes
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 = neighboring_rulers
ai_recipients = contacts
}
ai_frequency = 120
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
scope:actor.faith = {
NOT = {
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 = {
government_has_flag = government_is_landless_adventurer
has_realm_law = camp_purpose_legitimists
}
scope:recipient = {
is_landed = yes
is_ai = yes
primary_title.tier >= tier_kingdom
}
NOT = { 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_busy_in_events_localised = yes
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 = 60
ai_targets = {
ai_recipients = neighboring_rulers
ai_recipients = liege
ai_recipients = contacts
}
ai_potential = {
is_at_war = no
NOT = { ai_has_economical_boom_personality = yes }
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 = {
NOT = { scope:recipient = scope:actor }
scope:actor = {
is_landless_adventurer = yes
}
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
NOT = { 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 = {
has_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 = {
limit = {
has_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
}
}
}
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 = {
limit = {
has_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
}
}
}
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 = {
limit = {
has_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
}
}
}
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 = 12
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
is_landless_adventurer = yes
}
scope:recipient = {
NOT = { 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 = {
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 = {
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 = {
story_type = frankokratia_story
NOT = {
any_in_list = {
variable = frankokratia_leaders
this = scope:actor
}
}
}
}
random_owned_story = {
limit = {
story_type = frankokratia_story
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
}
NOT = { 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 = 24
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
is_landless_adventurer = yes
}
scope:recipient = {
NOT = { 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 = 24
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
}
}
}