N3OW/common/character_interactions/09_mpo_interactions.txt
2026-02-26 22:06:19 +00:00

11274 lines
236 KiB
Text

offer_confederation_interaction = {
category = interaction_category_diplomacy
icon = offer_confederation_interaction
desc = offer_confederation_interaction_desc
ai_targets = {
ai_recipients = neighboring_rulers_including_tributary_borders
}
ai_frequency_by_tier = {
barony = 0
county = 8
duchy = 8
kingdom = 0
empire = 0
hegemony = 0
}
popup_on_receive = yes
pause_on_receive = yes
common_interaction = yes
cooldown_against_recipient = { years = 3 }
is_shown = {
scope:actor = {
OR = {
government_has_flag = government_is_tribal
government_has_flag = government_is_nomadic
}
is_playable_character = yes
OR = {
is_independent_ruler = yes
confederation ?= { is_house_based = no }
}
}
scope:recipient = {
is_playable_character = yes
is_independent_ruler = yes
OR = {
government_has_flag = government_is_tribal
government_has_flag = government_is_nomadic
}
NOT = { this = scope:actor }
}
}
is_valid_showing_failures_only = {
trigger_if = {
limit = {
scope:actor = { is_confederation_member = no }
}
custom_tooltip = {
text = forming_confederation_tt
scope:actor = {
has_character_flag = forming_confederation
}
}
}
scope:actor = {
is_imprisoned = no
}
scope:recipient = {
valid_confederation_member_trigger = { CHARACTER = scope:actor }
is_imprisoned = no
is_at_war = no
}
}
cost = {
prestige = {
value = 0
if = {
limit = { scope:prestige_send_option = yes }
add = scope:actor.minor_prestige_value
desc = PRESTIGE_INTERACTION_ACCEPTANCE_SEND_OPTION
}
}
}
greeting = positive
notification_text = OFFER_CONFEDERATION_INTERACTION_NOTIFICATION
ai_accept = {
base = -50
# MAIN
# Heretic/Infidel modifier.
# Tier difference modifier.
# Dejure modifier.
# Distant/Remote Realm modifier.
# Military power difference modifier.
# MINOR
# Rivalry modifier.
# Same Dynasty modifier.
# Cultural/Cultural Group modifiers.
# Ageism modifier vs kids.
# Ruler Legitimacy modifier.
# Claimant modifier.
# FP3 Piety Level modifier.
# OPINION SCALES
# Dread
# Compare Opinion modifier.
#WHEN UPDATING ANYTHING HERE, PLEASE DO THE SAME (BUT INVERTED) IN LEAVE CONFEDERATION DECISION
# PERKS
modifier = { # Perk boost
desc = offer_vassalization_true_ruler_perk_tt
trigger = {
scope:actor = { has_perk = true_ruler_perk }
}
add = true_ruler_value
}
modifier = { # Education 5 boost
desc = offer_vassalization_education_diplomacy_5_tt
trigger = {
scope:actor = { has_trait_with_flag = offer_vassalisation_25 }
}
add = 25
}
# EVENTS - temporary bonuses gained by events
modifier = {
desc = event_bonus_to_vassal_accept_tt
trigger = {
scope:actor = { has_character_modifier = event_bonus_to_vassal_accept }
}
add = 20
}
# STRUGGLES - bonus gained by successful Sway scheme during the Persian Struggle
modifier = {
desc = fp3_persian_struggle_previously_swayed_tt
trigger = {
scope:recipient = {
has_opinion_modifier = {
modifier = scheme_sway_and_compelled_to_submit_opinion
target = scope:actor
}
}
}
add = 20
}
modifier = {
desc = fp3_rekindler_of_iran_modifier_reason
trigger = {
AND = {
scope:actor = { dynasty ?={ has_dynasty_modifier = fp3_rekindler_of_iran_modifier } }
scope:recipient = { culture = { has_cultural_pillar = heritage_iranian } }
}
}
add = 20
}
modifier = { # Cultural Acceptance
add = offer_vassalage_acceptance_value
desc = cultural_acceptance_interaction_reason
trigger = {
scope:actor = {
NOT = { has_same_culture_as = scope:recipient }
culture = {
cultural_acceptance = { target = scope:recipient.culture value <= 90 }
}
}
}
}
# MAIN
modifier = { #Different faith, no pluralism.
desc = offer_vassalization_interaction_aibehavior_differentfaith_tt
trigger = {
scope:recipient = {
NOR = { #Of two different faiths AND the potential vassal's faith is not pluralistic.
faith = scope:actor.faith
faith = { has_doctrine = doctrine_pluralism_pluralistic }
government_has_flag = government_is_nomadic
government_has_flag = government_is_herder
}
}
}
add = {
value = -30
if = {
limit = {
scope:recipient.faith = {
faith_hostility_level = {
target = scope:actor.faith
value >= faith_hostile_level
}
}
}
add = -30
}
if = {
limit = {
scope:recipient.faith = {
faith_hostility_level = {
target = scope:actor.faith
value >= faith_evil_level
}
}
}
add = -30
}
}
}
modifier = { #Different faith, pluralism.
desc = offer_vassalization_interaction_aibehavior_differentfaith_tt
trigger = {
scope:recipient = {
NOR = {
faith = scope:actor.faith
scope:actor.faith = { has_doctrine = doctrine_pluralism_pluralistic }
government_has_flag = government_is_nomadic
government_has_flag = government_is_herder
}
faith = { has_doctrine = doctrine_pluralism_pluralistic }
}
}
add = {
value = -15
if = {
limit = {
scope:recipient.faith = {
faith_hostility_level = {
target = scope:actor.faith
value >= faith_hostile_level
}
}
}
add = -15
}
if = {
limit = {
scope:recipient.faith = {
faith_hostility_level = {
target = scope:actor.faith
value >= faith_evil_level
}
}
}
add = -15
}
}
}
modifier = { #Different faith, both have pluralism.
desc = offer_vassalization_interaction_aibehavior_differentfaith_tt
trigger = {
scope:recipient = {
NOR = {
faith = scope:actor.faith
government_has_flag = government_is_nomadic
government_has_flag = government_is_herder
}
scope:actor.faith = { has_doctrine = doctrine_pluralism_pluralistic }
faith = { has_doctrine = doctrine_pluralism_pluralistic }
}
}
add = {
value = -10
if = {
limit = {
scope:recipient.faith = {
faith_hostility_level = {
target = scope:actor.faith
value >= faith_hostile_level
}
}
}
add = -10
}
if = {
limit = {
scope:recipient.faith = {
faith_hostility_level = {
target = scope:actor.faith
value >= faith_evil_level
}
}
}
add = -10
}
}
}
modifier = { #We just fought against each other.
desc = offer_vassalization_interaction_aibehavior_recent_war_tt
trigger = {
scope:recipient = {
any_truce_holder = {
this = scope:actor
}
}
# Ensure the truce wasn't purchased and is indeed from a war
scope:actor = {
NOT = {
has_purchased_truce_with_char = { TARGET = scope:recipient }
}
}
}
add = -40
}
modifier = { #I fought an independence war against you.
desc = offer_confederation_independence_war_tt
trigger = {
scope:recipient = {
exists = var:independence_war_former_liege
var:independence_war_former_liege = scope:actor.top_liege
}
}
add = -100
}
modifier = { # Isolationist tradition
desc = isolationist_reason
trigger = {
NOT = {
scope:actor.culture = scope:recipient.culture
}
scope:recipient.culture = {
has_cultural_tradition = tradition_isolationist
}
}
add = -50
}
modifier = { #Bankrupt
desc = bankrupt_reason
trigger = {
scope:actor.gold <= -1
}
add = -30
}
modifier = { #Wide difference in rank
desc = offer_vassalization_interaction_aibehavior_widetitletier_tt
trigger = {
scope:actor = {
tier_difference = {
target = scope:recipient
value > 1
}
}
}
add = 10
}
modifier = { # Allied
desc = offer_vassalization_interaction_aibehavior_allied_tt
trigger = {
scope:recipient = {
is_allied_to = scope:actor
}
}
add = 50
}
modifier = { # Is the Rightful Liege of recipient
desc = offer_vassalization_interaction_aibehavior_rightfulliegetitleholder_tt
trigger = {
scope:actor = { is_rightful_liege_of = scope:recipient }
}
add = 20
}
modifier = { # Encircled
desc = offer_vassalization_interaction_aibehavior_encircled_tt
trigger = {
scope:recipient = {
NOT = {
any_land_neighboring_realm_with_tributaries_owner = {
NOT = {
this = scope:actor
}
}
}
NOT = {
any_realm_county = {
is_coastal_county = yes
}
}
}
}
add = 40
}
modifier = { #No adjacency
desc = offer_vassalization_interaction_aibehavior_unconnectedrealm_tt
trigger = {
scope:recipient = {
NOT = {
any_land_neighboring_realm_with_tributaries_owner = {
OR = {
this = scope:actor
AND = {
exists = scope:actor.confederation
is_member_of_confederation = scope:actor.confederation
}
AND = {
exists = scope:actor.confederation
suzerain ?= {
is_member_of_confederation = scope:actor.confederation
}
}
suzerain ?= {
this = scope:actor
}
}
}
}
}
scope:recipient.capital_province = { squared_distance = { target = scope:actor.capital_province value < 100000 } }
}
add = -25
}
modifier = { #Distant Realm
desc = offer_vassalization_interaction_aibehavior_distantrealm_tt
trigger = {
scope:recipient = {
NOT = {
any_land_neighboring_realm_with_tributaries_owner = {
OR = {
this = scope:actor
AND = {
exists = scope:actor.confederation
is_member_of_confederation = scope:actor.confederation
}
AND = {
exists = scope:actor.confederation
suzerain ?= {
is_member_of_confederation = scope:actor.confederation
}
}
suzerain ?= {
this = scope:actor
}
}
}
}
}
scope:recipient.capital_province = { squared_distance = { target = scope:actor.capital_province value >= 100000 } }
}
add = -100
}
modifier = { #Remote Realm.
desc = offer_vassalization_interaction_aibehavior_remoterealm_tt
trigger = {
scope:recipient = {
NOT = {
any_land_neighboring_realm_with_tributaries_owner = {
OR = {
this = scope:actor
AND = {
exists = scope:actor.confederation
is_member_of_confederation = scope:actor.confederation
}
AND = {
exists = scope:actor.confederation
suzerain ?= {
is_member_of_confederation = scope:actor.confederation
}
}
suzerain ?= {
this = scope:actor
}
}
}
}
}
scope:recipient.capital_province = { squared_distance = { target = scope:actor.capital_province value >= 200000 } }
}
add = -175
}
#Relative power
modifier = {
desc = offer_vassalization_interaction_aibehavior_power_tt
add = {
value = 1
subtract = {
value = scope:recipient.max_military_strength # Intended for recipient to use max, to avoid having vassalizations become too easy for weakened realms
divide = { value = scope:actor.top_liege.current_military_strength min = 1 }
}
multiply = 5
ceiling = yes
min = -100
}
}
#Powerful vassal opinion of you
modifier = {
desc = offer_confederation_offerer_vassal_opinion_tt
trigger = {
scope:actor.top_liege = {
number_of_powerful_vassals >= 1
}
}
add = {
value = 0
scope:actor.top_liege = {
every_powerful_vassal = {
if = {
limit = {
save_temporary_opinion_value_as = {
name = vassal_opinion
target = scope:actor.top_liege
}
}
add = scope:vassal_opinion
}
}
if = {
limit = {
number_of_powerful_vassals > 0
}
divide = number_of_powerful_vassals
}
else = {
divide = 5
}
}
divide = 10
}
}
# Legitimacy
modifier = {
desc = "LOW_LEGITIMACY_REASON"
scope:actor = {
has_legitimacy_flag = very_reduced_tributarization_acceptance
}
add = -20
}
modifier = {
desc = "LOW_LEGITIMACY_REASON"
scope:actor = {
has_legitimacy_flag = reduced_tributarization_acceptance
}
add = -10
}
modifier = {
desc = "HIGH_LEGITIMACY_REASON"
scope:actor = {
has_legitimacy_flag = increased_tributarization_acceptance
}
add = 10
}
modifier = {
desc = "HIGH_LEGITIMACY_REASON"
scope:actor = {
has_legitimacy_flag = very_increased_tributarization_acceptance
}
add = 20
}
# MINOR
modifier = { #Friend modifier.
desc = offer_vassalization_interaction_aibehavior_friend_tt
trigger = {
scope:recipient = {
has_relation_friend = scope:actor
NOT = { has_relation_best_friend = scope:actor }
}
}
add = 25
}
modifier = { #Best Friend modifier.
desc = offer_vassalization_interaction_aibehavior_best_friend_tt
trigger = {
scope:recipient = {
has_relation_best_friend = scope:actor
}
}
add = 50
}
modifier = { #Lover modifier.
desc = interaction_lover
trigger = {
scope:recipient = {
has_relation_lover = scope:actor
NOT = { has_relation_soulmate = scope:actor }
}
}
add = 25
}
modifier = { #Soulmate modifier.
desc = interaction_soulmate
trigger = {
scope:recipient = {
has_relation_soulmate = scope:actor
}
}
add = 50
}
modifier = { #Rivalry modifier.
desc = offer_vassalization_interaction_aibehavior_rival_tt
trigger = {
scope:recipient = {
has_relation_rival = scope:actor
NOT = { has_relation_nemesis = scope:actor }
}
}
add = -200
}
modifier = { #Nemesis modifier.
desc = offer_vassalization_interaction_aibehavior_nemesis_tt
trigger = {
scope:recipient = {
has_relation_nemesis = scope:actor
}
}
add = -1000
}
modifier = { #Rivalry modifier.
desc = offer_vassalization_interaction_aibehavior_rival_confederation_tt
trigger = {
scope:actor.confederation ?= {
any_confederation_member = {
NOT = { this = scope:actor }
has_relation_rival = scope:recipient
NOT = { has_relation_nemesis = scope:recipient }
}
}
}
add = -100
}
modifier = { #Nemesis modifier.
desc = offer_vassalization_interaction_aibehavior_nemesis_confederation_tt
trigger = {
scope:actor.confederation ?= {
any_confederation_member = {
NOT = { this = scope:actor }
has_relation_nemesis = scope:recipient
}
}
}
add = -500
}
modifier = { #Same Dynasty modifier.
desc = offer_vassalization_interaction_aibehavior_dynasty_tt
trigger = {
exists = scope:actor.dynasty
exists = scope:recipient.dynasty
scope:recipient = {
dynasty = scope:actor.dynasty
}
}
add = 25
}
modifier = { #Same House modifier.
desc = offer_vassalization_interaction_aibehavior_house_tt
trigger = {
exists = scope:actor.house
exists = scope:recipient.house
scope:recipient = {
house = scope:actor.house
}
}
add = 50
}
modifier = { # Same language
add = 20
desc = speaks_same_language_interaction_reason
trigger = {
scope:actor = {
knows_language_of_culture = scope:recipient.culture
}
}
}
modifier = { # Iberian Struggle, less likely for outsiders to vassalize inside
add = -35
desc = iberian_struggle_reason_reason
trigger = {
scope:actor = {
NOT = {
any_character_struggle = { is_struggle_type = iberian_struggle }
}
}
scope:recipient = {
any_character_struggle = { is_struggle_type = iberian_struggle }
}
}
}
modifier = { #Ageism modifier vs kids.
desc = offer_vassalization_interaction_aibehavior_child_tt
trigger = {
scope:actor = {
age < 12
}
scope:recipient = {
age > 16
}
}
add = -5
}
modifier = { #Illegitimacy modifier.
desc = confederation_offerer_illegitimate_tt
trigger = {
scope:actor.top_liege = {
OR = {
AND = {
has_trait = bastard
scope:recipient = {
faith = { NOT = { has_doctrine = doctrine_bastardry_none } }
}
}
has_trait = denounced
has_trait = disinherited
}
}
}
add = -20
}
modifier = { #Claimant modifier.
desc = confederation_interaction_aibehavior_claimant_tt
trigger = {
scope:actor.top_liege.primary_title = {
scope:recipient = {
has_claim_on = prev
}
}
}
add = -20
}
modifier = { # Ambitious
desc = TAKE_THE_VOWS_AMBITIOUS
trigger = {
scope:recipient = {
has_trait = ambitious
}
}
add = -25
}
modifier = { # Paranoid
desc = INTERACTION_PARANOID
trigger = {
scope:recipient = {
has_trait = paranoid
}
}
add = -25
}
modifier = { # Arrogant
desc = INTERACTION_ARROGANT
trigger = {
scope:recipient = {
has_trait = arrogant
}
}
add = -25
}
modifier = { # Fickle
desc = INTERACTION_FICKLE
trigger = {
scope:recipient = {
has_trait = fickle
}
}
add = -15
}
modifier = { # Stubborn
desc = INTERACTION_STUBBORN
trigger = {
scope:recipient = {
has_trait = stubborn
}
}
add = -15
}
modifier = { # Greedy
desc = INTERACTION_GREEDY
trigger = {
scope:recipient = {
has_trait = greedy
}
}
add = -15
}
modifier = { # Trusting
desc = TAKE_THE_VOWS_TRUSTING
trigger = {
scope:recipient = {
has_trait = trusting
}
}
add = 15
}
modifier = { # Content
desc = INTERACTION_CONTENT
trigger = {
scope:recipient = {
has_trait = content
}
}
add = 15
}
modifier = { # Craven
desc = INTERACTION_CRAVEN
trigger = {
scope:recipient = {
has_trait = craven
}
}
add = 25
}
modifier = { # FP3 modifier.
desc = GENERIC_YOUR_PIETY_LEVEL_MODIFIER
trigger = { scope:actor = { any_character_struggle = { has_struggle_phase_parameter = piety_level_affects_vassalage_acceptance } } }
add = {
value = {
value = scope:actor.piety_level
subtract = low_piety_level
}
multiply = 10
}
}
# OPINION INFLUENCE
modifier = {
add = intimidated_external_reason_value
scope:recipient = {
has_dread_level_towards = {
target = scope:actor
level = 1
}
}
desc = INTIMIDATED_REASON
}
modifier = {
add = cowed_external_reason_value
scope:recipient = {
has_dread_level_towards = {
target = scope:actor
level = 2
}
}
desc = COWED_REASON
}
opinion_modifier = { #Compare Opinion modifier.
who = scope:recipient
opinion_target = scope:actor
multiplier = 0.35
}
# DIPLOMATIC COURT GRANDEUR BONUS
modifier = {
trigger = {
scope:actor.top_liege = {
has_royal_court = yes
has_dlc_feature = royal_court
has_court_type = court_diplomatic
court_grandeur_current_level >= 1
}
}
add = {
value = scope:actor.top_liege.court_grandeur_current
if = {
limit = { # Reduce the bonus if you are below your expected level
scope:actor.top_liege = {
court_grandeur_current_level < court_grandeur_minimum_expected_level
}
}
multiply = 0.15
}
else = {
multiply = 0.3
}
}
desc = DIPLOMATIC_COURT_ACCEPTANCE_INCREASE_REASON
}
# LOW LEGITIMACY
modifier = {
desc = "LOW_LEGITIMACY_REASON"
add = -10
scope:actor = {
has_legitimacy_flag = reduced_confederation_acceptance
}
}
modifier = {
desc = "LOW_LEGITIMACY_REASON"
add = -25
scope:actor = {
has_legitimacy_flag = very_reduced_confederation_acceptance
}
}
# HIGH LEGITIMACY
modifier = {
desc = "HIGH_LEGITIMACY_REASON"
add = 15
scope:actor = {
has_legitimacy_flag = increased_confederation_acceptance
}
}
modifier = {
desc = "HIGH_LEGITIMACY_REASON"
add = 40
scope:actor = {
has_legitimacy_flag = very_increased_confederation_acceptance
}
}
# HERD
modifier = {
add = 40
scope:herd_send_option = yes
desc = HERD_INTERACTION_ACCEPTANCE_SEND_OPTION
}
# PRESTIGE
modifier = {
add = 40
scope:prestige_send_option = yes
desc = PRESTIGE_INTERACTION_ACCEPTANCE_SEND_OPTION
}
#CULTURE
modifier = {
add = 50
scope:actor = {
culture = scope:recipient.culture
}
desc = "SAME_CULTURE_REASON"
}
modifier = {
add = -20
NOT = {
scope:actor = {
culture = scope:recipient.culture
}
}
scope:actor = {
NOR = {
culture = {
any_parent_culture_or_above = {
this = scope:recipient.culture
}
}
scope:recipient.culture = {
any_parent_culture_or_above = {
this = scope:actor.culture
}
}
culture = {
has_same_culture_heritage = scope:recipient.culture
}
}
}
desc = "DIFFERENT_CULTURE_REASON"
}
#Conquerors have no interest in this
modifier = {
scope:recipient = {
has_trait = conqueror
}
add = -1000
}
modifier = {
scope:recipient = {
has_trait = greatest_of_khans
}
add = -1000
}
# Are you using a hook?
modifier = {
trigger = {
scope:hook ?= yes
}
add = 100
desc = LEGEND_HOOK_USED
}
#No neighbor scaring them
modifier = {
add = -30
desc = NO_FRIGHTENING_NEIGHBOR_REASON
scope:actor.culture = {
NOT = {
has_cultural_parameter = forming_confederations_is_easier
}
}
scope:recipient.culture = {
NOT = {
has_cultural_parameter = forming_confederations_is_easier
}
}
NOT = {
scope:recipient = {
confederation_neighboring_foe_trigger = { CHARACTER = scope:recipient }
}
}
}
#Neighbor is TERRIFYING them
modifier = {
add = 30
desc = TERRIFYING_NEIGHBOR_REASON
scope:recipient = {
save_temporary_scope_as = confederate
any_land_neighboring_realm_with_tributaries_owner = {
top_suzerain ?= {
is_confederation_member = no
NOR = {
this = scope:actor
this = scope:actor.top_liege
}
confederation_worthy_foe_strength_ratio_value <= 0.25
NOT = { is_allied_to = scope:recipient }
OR = {
highest_held_title_tier >= tier_kingdom
faith = {
faith_hostility_level = {
target = scope:recipient.faith
value >= faith_evil_level
}
}
has_trait = conqueror
has_trait = greatest_of_khans
any_owned_story = {
OR = {
story_type = story_greatest_of_khans
story_type = story_mongol_invasion
}
}
}
}
}
}
}
#You have too many confederates
#For duchy
modifier = {
add = duchy_confederation_vassals_value
desc = TOO_MANY_CONFEDERATION_VASSALS_REASON
scope:actor.confederation ?= {
any_confederation_member = {
count >= 6
highest_held_title_tier >= tier_county
}
}
}
#Another confederation of recipient's culture exists
modifier = {
add = -100
desc = ANOTHER_CULTURE_CONFEDERATION_REASON
NOT = {
scope:actor.culture = {
this = scope:recipient.culture
}
}
any_confederation = {
NOT = {
this = scope:actor.confederation
}
has_variable = confederation_culture
var:confederation_culture = scope:actor.culture
}
}
#Forcing them to join war
modifier = {
add = -100
desc = FORCED_TO_JOIN_WAR_REASON
scope:actor = {
is_at_war_as_defender = yes
any_character_war = {
primary_defender = {
OR = {
this = scope:actor
AND = {
exists = scope:actor.confederation
is_member_of_confederation = scope:actor.confederation
}
}
}
is_defender = scope:actor
NOR = {
any_war_attacker = {
is_allied_to = scope:recipient
}
any_war_attacker = {
this = scope:recipient
}
any_war_defender = {
this = scope:recipient
}
any_war_attacker = {
scope:recipient = {
has_truce = prev
}
}
}
}
}
}
#You will be taking over their war
modifier = {
add = 100
desc = TAKING_OVER_DEFENSIVE_WAR_REASON
scope:recipient = {
is_at_war_as_defender = yes
any_character_war = {
is_war_leader = scope:recipient
is_defender = scope:recipient
NOR = {
any_war_attacker = {
is_allied_to = scope:actor
}
any_war_attacker = {
this = scope:actor
}
any_war_defender = {
this = scope:actor
}
}
defender_war_score < 80
defender_war_score >= 0
}
}
}
modifier = {
add = 200
desc = TAKING_OVER_DEFENSIVE_WAR_REASON
scope:recipient = {
is_at_war_as_defender = yes
any_character_war = {
is_war_leader = scope:recipient
is_defender = scope:recipient
NOR = {
any_war_attacker = {
is_allied_to = scope:actor
}
any_war_attacker = {
this = scope:actor
}
any_war_defender = {
this = scope:actor
}
}
defender_war_score < 0
}
}
}
#Culture is into/not into confederation
modifier = {
add = 10
desc = CONFEDERATION_ETHOS_REASON
scope:recipient.culture = {
OR = {
has_cultural_pillar = ethos_stoic
has_cultural_pillar = ethos_communal
}
}
}
modifier = {
add = 20
desc = CONFEDERATION_ETHOS_REASON
scope:recipient.culture = {
OR = {
has_cultural_pillar = ethos_egalitarian
}
}
}
modifier = {
add = -10
desc = CONFEDERATION_ETHOS_REASON
scope:recipient.culture = {
OR = {
has_cultural_pillar = ethos_bellicose
has_cultural_pillar = ethos_courtly
has_cultural_pillar = ethos_bureaucratic
}
}
}
modifier = { # Herder
add = 50
desc = CONFEDERATION_HERDER_REASON
trigger = {
scope:recipient = {
government_has_flag = government_is_herder
}
}
}
modifier = {
add = -20
desc = NOMADIC_AUTHORITY_REASON
trigger = {
scope:recipient = {
has_realm_law = nomadic_authority_3
}
}
}
modifier = {
add = -50
desc = NOMADIC_AUTHORITY_REASON
trigger = {
scope:recipient = {
has_realm_law = nomadic_authority_4
}
}
}
modifier = {
add = -100
desc = NOMADIC_AUTHORITY_REASON
trigger = {
scope:recipient = {
has_realm_law = nomadic_authority_5
}
}
}
modifier = {
add = -20
desc = TRIBAL_AUTHORITY_REASON
trigger = {
scope:recipient = {
has_realm_law = tribal_authority_2
}
}
}
modifier = {
add = -50
desc = TRIBAL_AUTHORITY_REASON
trigger = {
scope:recipient = {
has_realm_law = tribal_authority_3
}
}
}
modifier = {
desc = "BARANGAY_TRADITION_REASON"
trigger = {
scope:recipient.culture = {
has_cultural_parameter = invite_to_confederation_extra_reasons
}
}
add = 20
}
modifier = { #left your confederation
add = -50
desc = LEFT_YOUR_CONFEDERATION_REASON
exists = scope:actor.confederation
scope:recipient = {
has_variable = left_confederation
var:left_confederation ?= {
this = scope:actor.confederation
}
}
}
}
send_option = {
flag = hook
is_valid = {
scope:actor = {
has_usable_hook = scope:recipient
}
}
localization = GENERIC_SPEND_A_HOOK
}
send_option = { # Herd
is_shown = {
scope:actor = {
government_has_flag = government_is_nomadic
exists = domicile
}
}
is_valid = {
scope:recipient = {
government_has_flag = government_is_nomadic
exists = domicile
}
scope:actor.domicile = { herd >= minor_herd_value }
}
flag = herd_send_option
localization = TRADE_HERD_FOR_BETTER_AI_ACCEPTANCE_CONFEDERATION
}
send_option = { # Prestige
is_shown = {
always = yes
}
is_valid = {
scope:actor = { prestige >= minor_prestige_value }
}
flag = prestige_send_option
localization = TRADE_PRESTIGE_FOR_BETTER_AI_ACCEPTANCE
}
send_options_exclusive = no
on_accept = {
if = {
#checking that the delay hasn't made the character invalid
limit = {
scope:recipient = {
is_playable_character = yes
}
}
scope:actor = {
if = {
limit = { has_character_flag = forming_confederation }
remove_character_flag = forming_confederation
# MPO ACHIEVEMENT Con-Fed-Up
if = {
limit = { is_ai = no }
add_achievement_global_variable_effect = {
VARIABLE = mpo_confedup_achievement_unlocked
VALUE = yes
}
}
}
}
if = {
limit = {
scope:recipient = {
is_at_war_as_defender = yes
any_character_war = {
is_war_leader = scope:recipient
is_defender = scope:recipient
}
}
}
scope:recipient = {
every_character_war = {
limit = {
is_war_leader = scope:recipient
is_defender = scope:recipient
}
add_to_list = recipient_wars
}
}
every_in_list = {
list = recipient_wars
save_scope_as = recipient_war
primary_attacker = {
save_scope_as = attacker
}
add_defender = scope:actor
hidden_effect = {
scope:actor.confederation ?= {
every_confederation_member = {
limit = {
NOR = {
is_attacker_in_war = scope:recipient_war
is_defender_in_war = scope:recipient_war
is_at_war_with = scope:recipient
is_allied_to = scope:attacker
is_imprisoned_by = scope:recipient
is_at_war_with = scope:recipient
}
}
scope:recipient_war = { add_defender = prev }
}
}
}
}
if = {
limit = {
scope:actor.confederation ?= {
any_confederation_member = {
NOR = {
is_attacker_in_war = scope:recipient_war
is_defender_in_war = scope:recipient_war
this = scope:actor
is_at_war_with = scope:recipient
is_allied_to = scope:attacker
is_imprisoned_by = scope:recipient
is_at_war_with = scope:recipient
}
}
}
}
scope:actor = {
custom_tooltip = confederates_joining_recipient_war_tt
}
}
}
scope:actor = {
save_scope_as = confederation_offerer
}
scope:recipient = {
save_scope_as = confederation_accepter
}
#Confederation doesn't exist yet
if = {
limit = {
scope:actor = {
is_confederation_member = no
}
}
scope:actor = {
custom_tooltip = create_confederation_tt
custom_tooltip = confederation_defensive_wars_tt
custom_tooltip = unlock_leave_confederation_interaction_tt
if = {
limit = {
government_has_flag = government_is_nomadic
}
add_character_modifier = {
modifier = mpo_confederation_member_modifier
years = 5
}
capital_county ?= {
change_county_fertility = major_county_fertility_level_gain
}
}
}
scope:recipient = {
offer_confederation_accepter_effect = yes
}
}
#Confederation already exists
else = {
scope:actor.confederation = {
save_scope_as = confederation
}
show_as_tooltip = {
#If actor is top liege and offering vassaldom
scope:recipient = {
offer_confederation_accepter_effect = yes
}
}
}
if = {
limit = {
scope:recipient = {
government_has_flag = government_is_nomadic
}
}
scope:recipient = {
add_character_modifier = {
modifier = mpo_confederation_member_modifier
years = 5
}
capital_county ?= {
change_county_fertility = major_county_fertility_level_gain
}
}
}
if = {
limit = {
scope:recipient = {
is_ai = no
}
}
scope:recipient = {
custom_tooltip = confederation_raiding_attacking_tt
if = {
limit = {
government_has_flag = government_is_nomadic
}
custom_tooltip = confederation_restrictions_warning_tt
}
else = {
custom_tooltip = confederation_restrictions_tribe_warning_tt
}
}
}
scope:recipient = {
if = {
limit = {
government_has_flag = government_is_nomadic
}
custom_tooltip = confederation_migrating_leaving_warning_tt
}
}
scope:actor = {
#Event distributor event
trigger_event = mpo_interactions_events.0001
}
if = {
limit = {
scope:actor = {
is_at_war_as_defender = yes
any_character_war = {
primary_defender = {
OR = {
this = scope:actor
AND = {
exists = scope:actor.confederation
is_member_of_confederation = scope:actor.confederation
}
}
}
is_defender = scope:actor
NOR = {
any_war_attacker = {
is_allied_to = scope:recipient
}
any_war_attacker = {
this = scope:recipient
}
any_war_defender = {
this = scope:recipient
}
any_war_attacker = {
scope:recipient = {
has_truce = prev
}
}
}
}
}
}
scope:actor = {
every_character_war = {
limit = {
primary_defender = {
OR = {
this = scope:actor
AND = {
exists = scope:actor.confederation
is_member_of_confederation = scope:actor.confederation
}
}
}
is_defender = scope:actor
NOR = {
any_war_attacker = {
is_allied_to = scope:recipient
}
any_war_attacker = {
this = scope:recipient
}
any_war_defender = {
this = scope:recipient
}
any_war_attacker = {
scope:recipient = {
has_truce = prev
}
}
}
}
add_defender = scope:recipient
}
#Lose legitimacy unless you're taking on a war too
if = {
limit = {
NOT = {
scope:recipient = {
is_at_war_as_defender = yes
any_character_war = {
is_war_leader = scope:recipient
is_defender = scope:recipient
NOR = {
any_war_attacker = {
is_allied_to = scope:actor
}
any_war_attacker = {
this = scope:actor
}
any_war_attacker = {
scope:actor = {
has_truce = prev
}
}
}
}
}
}
}
add_legitimacy = medium_legitimacy_loss
custom_tooltip = confederation_legitimacy_loss_war_tt
}
}
}
if = {
limit = {
scope:prestige_send_option = yes
}
scope:recipient = {
add_prestige = scope:actor.minor_prestige_value
}
}
if = {
limit = {
scope:herd_send_option = yes
}
scope:actor = {
pay_herd = {
target = scope:recipient
value = domicile.minor_herd_value
}
}
}
}
}
on_decline = {
#Stop spamming players with this
if = {
limit = {
exists = scope:actor.confederation
scope:recipient = {
is_ai = no
}
}
scope:recipient = {
set_variable = {
name = refused_confederation
value = scope:actor.confederation
years = 3
}
}
}
scope:actor = {
#letter response
trigger_event = mpo_interactions_events.0004
}
}
ai_potential = {
age >= 6
OR = {
AND = {
is_independent_ruler = yes
highest_held_title_tier < tier_kingdom
has_character_flag = forming_confederation
}
is_confederation_member = yes
}
OR = {
government_has_flag = government_is_tribal
government_has_flag = government_is_nomadic
}
}
ai_will_do = {
base = 50
modifier = {
add = 25
scope:actor = {
confederation_neighboring_foe_trigger = { CHARACTER = scope:actor }
}
}
modifier = {
add = 25
scope:recipient = {
confederation_neighboring_foe_trigger = { CHARACTER = scope:recipient }
}
}
modifier = {
add = -25
scope:recipient = {
is_at_war = yes
}
}
modifier = {
factor = 0
OR = {
#Will only throw the confederation into a war
scope:recipient = {
is_at_war = yes
NOR = {
any_character_war = { primary_defender = scope:recipient }
culture = scope:actor.culture
scope:actor.confederation ?= {
any_confederation_member = {
count >= 4
highest_held_title_tier >= tier_county
}
}
reverse_opinion = {
target = scope:actor
value >= 30
}
}
}
AND = {
exists = scope:actor.confederation
scope:recipient = {
has_variable = left_confederation
var:left_confederation ?= {
this = scope:actor.confederation
}
}
}
#Recipient hasn't been asked to join this confederation already
scope:recipient = {
has_variable = refused_confederation
exists = scope:actor.confederation
var:refused_confederation = {
this = scope:actor.confederation
}
}
}
}
}
}
promote_divergent_or_hybrid_culture_interaction = {
category = interaction_category_diplomacy
icon = icon_culture
desc = promote_divergent_or_hybrid_culture_interaction_desc
ai_targets = {
ai_recipients = tributaries
ai_recipients = vassals
max = 10
}
ai_frequency_by_tier = {
barony = 0
county = 0
duchy = 12
kingdom = 12
empire = 12
hegemony = 12
}
popup_on_receive = yes
pause_on_receive = yes
common_interaction = yes
is_shown = {
scope:actor.domicile ?= {
domicile_uses_culture_and_faith = yes
domicile_culture = scope:actor.culture
}
scope:actor.culture ?= {
OR = {
is_hybrid_culture = yes
is_divergent_culture = yes
}
}
scope:recipient = {
trigger_if = {
limit = {
domicile ?= { domicile_uses_culture_and_faith = yes }
}
domicile.domicile_culture != scope:actor.culture
}
trigger_else = {
culture != scope:actor.culture
}
OR = {
is_tributary_of_suzerain_or_above = scope:actor
is_vassal_or_below_of = scope:actor
}
}
}
is_valid_showing_failures_only = {
scope:recipient = {
NOR = {
is_imprisoned_by = scope:actor
has_strong_hook = scope:actor
is_at_war_with = scope:actor
}
}
custom_tooltip = {
text = not_a_nomad_or_herder_tt
scope:recipient = {
OR = {
government_has_flag = government_is_nomadic
government_has_flag = government_is_herder
}
}
}
trigger_if = {
limit = {
exists = scope:recipient.domicile
}
custom_tooltip = {
text = not_a_parent_culture_of_domicile_tt
scope:actor.culture = {
any_parent_culture_or_above = {
this = scope:recipient.domicile.domicile_culture
}
}
}
}
trigger_else = {
custom_tooltip = {
text = not_a_parent_culture_tt
scope:actor.culture = {
any_parent_culture_or_above = {
this = scope:recipient.culture
}
}
}
}
}
greeting = positive
notification_text = PROMOTE_DIVERGENT_CULTURE_INTERACTION_NOTIFICATION
ai_accept = {
base = -50
modifier = {
add = 1000
scope:recipient = {
is_obedient_to = scope:actor
}
desc = MIGRATION_INTERACTION_OBEDIENT_ACCEPTANCE
}
opinion_modifier = {
opinion_target = scope:actor
who = scope:recipient
multiplier = 1
desc = AI_OPINION_REASON
}
modifier = {
add = 20
desc = NOMADIC_AUTHORITY_POSITIVE_REASON
trigger = {
scope:actor = {
has_realm_law = nomadic_authority_3
}
}
}
modifier = {
add = 50
desc = NOMADIC_AUTHORITY_POSITIVE_REASON
trigger = {
scope:actor = {
has_realm_law = nomadic_authority_4
}
}
}
modifier = {
add = 100
desc = NOMADIC_AUTHORITY_POSITIVE_REASON
trigger = {
scope:actor = {
has_realm_law = nomadic_authority_5
}
}
}
# HERD
modifier = {
add = 60
scope:herd_send_option = yes
desc = HERD_INTERACTION_ACCEPTANCE_SEND_OPTION
}
# PRESTIGE
modifier = {
add = 60
scope:prestige_send_option = yes
desc = PRESTIGE_INTERACTION_ACCEPTANCE_SEND_OPTION
}
# Are you using a hook?
modifier = {
trigger = {
scope:hook ?= yes
}
add = 1000
desc = LEGEND_HOOK_USED
}
modifier = { # Herder
add = 100
desc = CONFEDERATION_HERDER_REASON
trigger = {
scope:recipient = {
government_has_flag = government_is_herder
}
}
}
}
send_option = {
flag = hook
is_valid = {
scope:actor = {
has_usable_hook = scope:recipient
}
}
localization = GENERIC_SPEND_A_HOOK
}
send_option = { # Herd
is_shown = {
scope:actor = {
government_has_flag = government_is_nomadic
exists = domicile
}
}
is_valid = {
scope:recipient = {
government_has_flag = government_is_nomadic
exists = domicile
}
scope:actor.domicile = { herd >= minor_herd_value }
}
flag = herd_send_option
localization = TRADE_HERD_FOR_BETTER_AI_ACCEPTANCE_CONFEDERATION
}
send_option = { # Prestige
is_shown = {
always = yes
}
is_valid = {
scope:actor = { prestige >= minor_prestige_value }
}
flag = prestige_send_option
localization = TRADE_PRESTIGE_FOR_BETTER_AI_ACCEPTANCE
}
send_options_exclusive = no
on_accept = {
scope:actor = {
send_interface_toast = {
type = event_toast_effect_good
title = promote_culture_accepted_tt
left_icon = scope:recipient
scope:recipient = {
if = {
limit = {
domicile ?= { domicile_uses_culture_and_faith = yes }
}
custom_tooltip = {
text = family_and_lands_convert_domicile_tt
every_held_title = {
limit = {
tier = tier_county
is_landless_type_title = no
culture = scope:recipient.domicile.domicile_culture
}
add_to_list = counties_to_convert
}
# Family at court also convert
every_close_or_extended_family_member = {
limit = {
is_courtier_of = scope:recipient
culture = scope:recipient.domicile.domicile_culture
}
add_to_list = spouses_and_family_to_convert
}
domicile = {
set_domicile_culture = scope:actor.culture
}
}
}
else = {
custom_tooltip = {
text = family_and_lands_convert_tt
every_held_title = {
limit = {
tier = tier_county
is_landless_type_title = no
culture = scope:recipient.culture
}
add_to_list = counties_to_convert
}
# Family at court also convert
every_close_or_extended_family_member = {
limit = {
is_courtier_of = scope:recipient
culture = scope:recipient.culture
}
add_to_list = spouses_and_family_to_convert
}
}
}
if = {
limit = {
culture != scope:actor.culture
}
set_culture = scope:actor.culture
}
hidden_effect = {
every_in_list = {
list = counties_to_convert
set_county_culture = scope:actor.culture
}
every_in_list = {
list = spouses_and_family_to_convert
set_culture = scope:actor.culture
}
}
add_opinion = {
modifier = respect_opinion
opinion = 10
target = scope:actor
}
}
}
if = {
limit = {
scope:prestige_send_option = yes
}
scope:actor = {
add_prestige = scope:actor.minor_prestige_loss
}
scope:recipient = {
add_prestige = scope:actor.minor_prestige_value
}
}
if = {
limit = {
scope:herd_send_option = yes
}
scope:actor = {
pay_herd = {
target = scope:recipient
value = domicile.minor_herd_value
}
}
}
if = {
limit = {
scope:hook = yes
}
use_hook = scope:recipient
}
}
}
on_decline = {
scope:actor = {
}
}
ai_potential = {
government_has_flag = government_is_nomadic
highest_held_title_tier >= tier_duchy
}
ai_will_do = {
base = 100
modifier = {
add = -1
scope:hook ?= yes
}
modifier = {
factor = 0
OR = {
scope:herd_send_option ?= yes
scope:prestige_send_option ?= yes
}
}
}
}
inspire_conversion_interaction = {
category = interaction_category_religion
icon = government_type_nomad
desc = inspire_conversion_interaction_desc
ai_targets = {
ai_recipients = tributaries
ai_recipients = vassals
max = 10
}
ai_frequency_by_tier = {
barony = 0
county = 0
duchy = 12
kingdom = 6
empire = 6
hegemony = 6
}
cooldown_against_recipient = { years = 5 }
popup_on_receive = yes
pause_on_receive = yes
common_interaction = yes
is_shown = {
scope:actor.domicile ?= {
domicile_uses_culture_and_faith = yes
}
scope:recipient = {
OR = {
trigger_if = {
limit = {
domicile ?= { domicile_uses_culture_and_faith = yes }
}
domicile.domicile_faith != scope:actor.domicile.domicile_faith
}
faith != scope:actor.domicile.domicile_faith
faith != scope:actor.faith # Tooltip reasons
}
OR = {
is_tributary_of_suzerain_or_above = scope:actor
is_vassal_or_below_of = scope:actor
}
}
}
is_valid_showing_failures_only = {
scope:recipient = {
NOR = {
is_imprisoned_by = scope:actor
has_strong_hook = scope:actor
is_at_war_with = scope:actor
}
}
custom_description = {
text = "is_head_of_religion"
subject = scope:recipient
NOT = { scope:recipient.faith.religious_head = scope:recipient }
}
custom_description = {
text = "is_protected_via_contract"
subject = scope:recipient
NAND = { # Vassal Contract forbids meddling by liege
exists = scope:recipient.liege
scope:recipient.liege = scope:actor
scope:recipient = {
is_ruler = yes
vassal_contract_has_flag = religiously_protected
}
}
}
custom_tooltip = {
text = you_are_not_of_your_domicile_faith_tt
scope:recipient = {
OR = {
trigger_if = {
limit = {
domicile ?= { domicile_uses_culture_and_faith = yes }
}
domicile.domicile_faith != scope:actor.domicile.domicile_faith
}
faith != scope:actor.domicile.domicile_faith
}
}
}
custom_tooltip = {
text = not_a_nomad_or_herder_tt
scope:recipient = {
OR = {
government_has_flag = government_is_nomadic
government_has_flag = government_is_herder
}
}
}
}
greeting = positive
notification_text = INSPIRE_CONVERSION_INTERACTION_NOTIFICATION
ai_accept = {
base = -50
modifier = {
add = 1000
scope:recipient = {
is_obedient_to = scope:actor
}
desc = MIGRATION_INTERACTION_OBEDIENT_ACCEPTANCE
}
modifier = {
desc = ASK_FOR_CONVERSION_RECIPIENT_IS_ZEALOUS
add = -100
scope:recipient = {
has_trait = zealous
}
}
modifier = {
desc = INSPIRE_UNREFORMED_FAITH
add = -50
scope:actor.faith = { has_doctrine_parameter = unreformed }
}
modifier = {
add = 50
desc = ZEALOUS_PROSELYTIZER_REASON
trigger = {
scope:actor = {
has_perk = zealous_proselytizer_perk
}
}
}
modifier = {
add = 20
desc = NOMADIC_AUTHORITY_POSITIVE_REASON
trigger = {
scope:actor = {
has_realm_law = nomadic_authority_3
}
}
}
modifier = {
add = 50
desc = NOMADIC_AUTHORITY_POSITIVE_REASON
trigger = {
scope:actor = {
has_realm_law = nomadic_authority_4
}
}
}
modifier = {
add = 100
desc = NOMADIC_AUTHORITY_POSITIVE_REASON
trigger = {
scope:actor = {
has_realm_law = nomadic_authority_5
}
}
}
opinion_modifier = {
opinion_target = scope:actor
who = scope:recipient
multiplier = 1
desc = AI_OPINION_REASON
}
# HERD
modifier = {
add = 60
scope:herd_send_option = yes
desc = HERD_INTERACTION_ACCEPTANCE_SEND_OPTION
}
# PIETY
modifier = {
add = 60
scope:piety_send_option = yes
desc = PIETY_INTERACTION_ACCEPTANCE_SEND_OPTION
}
# Are you using a hook?
modifier = {
trigger = {
scope:hook ?= yes
}
add = 1000
desc = LEGEND_HOOK_USED
}
modifier = { # Herder
add = 100
desc = CONFEDERATION_HERDER_REASON
trigger = {
scope:recipient = {
government_has_flag = government_is_herder
}
}
}
}
send_option = {
flag = hook
is_valid = {
scope:actor = {
has_usable_hook = scope:recipient
}
}
localization = GENERIC_SPEND_A_HOOK
}
send_option = { # Herd
is_shown = {
scope:actor = {
government_has_flag = government_is_nomadic
exists = domicile
}
}
is_valid = {
scope:recipient = {
government_has_flag = government_is_nomadic
exists = domicile
}
scope:actor.domicile = { herd >= minor_herd_value }
}
flag = herd_send_option
localization = TRADE_HERD_FOR_BETTER_AI_ACCEPTANCE_CONFEDERATION
}
send_option = { # Piety
is_shown = {
always = yes
}
is_valid = {
scope:actor = { piety >= medium_piety_value }
}
flag = piety_send_option
localization = TRADE_PRESTIGE_FOR_BETTER_AI_ACCEPTANCE_ICON
}
send_options_exclusive = no
on_accept = {
scope:actor = {
send_interface_toast = {
type = event_toast_effect_good
title = inspire_conversion_accepted_tt
left_icon = scope:recipient
scope:recipient = {
if = {
limit = {
domicile ?= { domicile_uses_culture_and_faith = yes }
}
custom_tooltip = {
text = family_and_lands_inspire_domicile_tt
every_held_title = {
limit = {
tier = tier_county
is_landless_type_title = no
culture = scope:recipient.domicile.domicile_culture
faith != scope:actor.domicile.domicile_faith
}
add_to_list = counties_to_convert
}
# Family at court also convert
every_close_or_extended_family_member = {
limit = {
is_courtier_of = scope:recipient
faith != scope:actor.domicile.domicile_faith
}
add_to_list = spouses_and_family_to_convert
}
domicile = {
if = {
limit = {
domicile_faith != scope:actor.domicile.domicile_faith
}
set_domicile_faith = scope:actor.domicile.domicile_faith
}
}
}
}
else = {
custom_tooltip = {
text = family_and_lands_inspire_tt
every_held_title = {
limit = {
tier = tier_county
is_landless_type_title = no
culture = scope:recipient.culture
faith != scope:actor.domicile.domicile_faith
}
add_to_list = counties_to_convert
}
# Family at court also convert
every_close_or_extended_family_member = {
limit = {
is_courtier_of = scope:recipient
faith != scope:actor.domicile.domicile_faith
}
add_to_list = spouses_and_family_to_convert
}
}
}
if = {
limit = {
faith != scope:actor.domicile.domicile_faith
}
set_character_faith = scope:actor.domicile.domicile_faith
}
hidden_effect = {
every_in_list = {
list = counties_to_convert
set_county_faith = scope:actor.domicile.domicile_faith
}
every_in_list = {
list = spouses_and_family_to_convert
set_character_faith = scope:actor.domicile.domicile_faith
}
}
if = { # If you have the Religious Icon perk they become obedient
limit = {
scope:actor = {
government_has_flag = government_is_nomadic
has_perk = religious_icon_perk
}
scope:recipient = {
obedience_target = scope:actor
is_obedient = no
}
}
scope:recipient = {
add_opinion = {
modifier = obedience_opinion
target = scope:actor
}
}
}
else = {
add_opinion = {
modifier = respect_opinion
opinion = 10
target = scope:actor
}
}
}
}
if = {
limit = {
scope:piety_send_option = yes
}
scope:actor = {
add_piety = scope:actor.medium_piety_loss
}
scope:recipient = {
add_piety = scope:actor.medium_piety_value
}
}
if = {
limit = {
scope:herd_send_option = yes
}
scope:actor = {
pay_herd = {
target = scope:recipient
value = domicile.minor_herd_value
}
}
}
}
}
on_decline = {
scope:actor = {
}
}
ai_potential = {
government_has_flag = government_is_nomadic
highest_held_title_tier >= tier_duchy
NOR = {
any_owned_story = {
OR = {
story_type = story_mongol_invasion
story_type = story_greatest_of_khans
}
}
mpo_has_gok_mongol_empire_trigger = yes
}
}
ai_will_do = {
base = 100
modifier = {
add = -1
scope:hook ?= yes
}
modifier = {
add = -1
scope:piety_send_option ?= yes
}
modifier = {
factor = 0
scope:herd_send_option ?= yes
}
}
}
# Used by AI code
migration_interaction = {
interface_priority = 120
common_interaction = yes
use_diplomatic_range = no
category = interaction_debug_main
icon = herd_interaction
hidden = yes
# Keep AI reply at minimum - don't change default values
# ai_min_reply_days = 0
# ai_max_reply_days = 0
can_send_despite_rejection = yes
interface = migration
special_interaction = migration
cost = {
# Free
}
desc = migration_interaction_desc
is_shown = {
scope:actor = {
government_has_flag = government_is_nomadic
trigger_if = {
limit = {
is_ai = yes
}
is_at_war = no
}
highest_held_title_tier >= tier_county
}
}
is_valid_showing_failures_only = {
scope:actor = {
is_imprisoned = no
is_independent_ruler = yes
is_travelling = no
custom_tooltip = {
text = no_primary_wars_tt
NOT = {
any_character_war = {
OR = {
primary_attacker = { this = scope:actor }
primary_defender = { this = scope:actor }
}
}
}
}
custom_tooltip = {
text = must_have_migration_situation_tt
any_character_situation = {
any_participant_group = {
participant_group_type = nomad_rulers_capital
participant_group_has_character = scope:actor
}
}
}
NOR = {
exists = involved_activity
has_truce = scope:recipient
}
}
scope:recipient = {
is_ruler = yes
NOT = { is_allied_to = scope:actor }
}
}
# can_be_picked_title is unused for migration_interaction and controlled by code
# can_be_picked_title = {}
on_accept = {
scope:actor = {
if = {
limit = {
is_ai = yes
}
set_variable = {
name = migration_cooldown
years = migration_cooldown_value
}
}
# We add a variable in case you're migrating into a Tributary, for special event Options
if = {
limit = {
scope:recipient = {
is_tributary = yes
NOT = { is_tributary_of_suzerain_or_above = scope:actor } # They're not your Tributary
}
trigger_if = {
limit = { exists = scope:actor.overlord }
scope:recipient.overlord != scope:actor.overlord # You're not subjects of the same ruler already
}
}
set_variable = {
name = migrating_into_tributary_var
value = scope:recipient.overlord
}
}
if = {
limit = {
is_confederation_member = yes
}
confederation = {
save_scope_as = confederation_left
}
confederation_migration_notification_effect = yes
confederation = {
remove_confederation_member = scope:actor
}
}
# Pay what you need to pay first
if = {
limit = { scope:hook = yes }
use_hook = scope:recipient
}
if = {
limit = { scope:gold_cost = yes }
pay_short_term_gold = {
target = scope:recipient
gold = medium_gold_value
}
}
if = {
limit = { scope:herd_cost = yes }
pay_herd = {
target = scope:recipient
value = domicile.medium_herd_value
}
}
if = {
limit = {
exists = scope:target_title
}
set_variable = {
name = migration_title
value = scope:target_title
}
}
# Save your old lands
save_scope_as = old_holder
capital_county = { save_scope_as = old_capital_county }
every_held_title = {
limit = {
tier = tier_county
exists = duchy
culture = scope:actor.domicile.domicile_culture
}
add_to_list = old_held_titles
}
# Make a new culture appear in the lands you left behind, as you're bringing _your_ people with you
# Delay the creation so that Herders have spawned
trigger_event = {
id = mpo_misc.0001
delayed = yes
}
# Let's migrate!
# If there's a Drought, your people get a morale boost
if = {
limit = {
any_character_situation = {
any_situation_sub_region = {
has_sub_region_phase_parameter = the_great_steppe_migration_morale_boost
any_situation_sub_region_participant_group = {
participant_group_type = nomad_rulers_capital
participant_group_has_character = scope:actor
}
}
}
}
custom_tooltip = {
text = mpo_the_great_steppe_migration_morale_boost_effect_tt
every_courtier_or_guest = {
add_opinion = {
target = prev
modifier = drought_migration_opinion
}
}
}
}
if = {
limit = {
exists = scope:target_title
}
custom_tooltip = mpo_steppe_migration_migrate_to_tt
custom_tooltip = mpo_steppe_migration_lose_land_tt
every_vassal = {
limit = {
OR = {
is_ai = no
NOT = { is_obedient_to = scope:actor }
}
}
hidden_effect = {
break_subject_contract_and_establish_tributary_effect = {
SUZERAIN = scope:actor
TRIBUTARY = this
}
}
custom_tooltip = mpo_steppe_migration_lose_vassal_tt
}
}
# Obedient vassals follow their liege
every_vassal = {
limit = {
exists = scope:target_title
is_obedient_to = scope:actor
is_ai = yes
}
save_scope_as = current_vassal
custom_tooltip = mpo_steppe_migration_keep_vassal_tt
hidden_effect = {
start_travel_plan = {
destination = scope:target_title.title_capital_county.title_province
return_trip = no
travel_with_domicile = yes
}
migration_set_obedient_vassal_effect = yes
}
}
# Player and non obedient vassals get turned into Tributaries instead
every_vassal = {
limit = {
exists = scope:target_title
OR = {
NOT = { is_obedient_to = scope:actor }
is_ai = no
}
}
break_subject_contract_and_establish_tributary_effect = { SUZERAIN = scope:actor TRIBUTARY = prev }
}
# Migration travel is handled by code
}
}
on_decline = {
# We add a variable in case you're migrating into a Tributary, for special event Options
if = {
limit = {
scope:recipient = {
is_tributary = yes
suzerain != scope:actor # They're not your tributary
}
trigger_if = {
limit = { exists = scope:actor.overlord }
scope:recipient.overlord != scope:actor.overlord # You're not subjects of the same ruler already
}
}
scope:actor = {
set_variable = {
name = migrating_into_tributary_war_var
value = scope:recipient.overlord
}
}
}
# Migration wars are handled by code
scope:actor = {
if = {
limit = {
is_confederation_member = yes
}
confederation_migration_notification_effect = yes
confederation = {
remove_confederation_member = scope:actor
}
}
every_vassal = {
limit = {
exists = scope:target_title
is_obedient_to = scope:actor
is_ai = yes
}
save_scope_as = current_vassal
hidden_effect = {
migration_set_obedient_vassal_effect = yes
}
}
}
}
# Use gold
send_option = {
flag = gold_cost
is_valid = {
scope:actor.gold >= scope:actor.medium_gold_value
}
localization = TRADE_GOLD_FOR_BETTER_MIGRATION_AI_ACCEPTANCE
}
# Use Herd
send_option = {
is_shown = {
scope:recipient = {
government_has_flag = government_is_nomadic
}
}
is_valid = {
scope:actor = {
domicile ?= { herd >= medium_herd_value }
}
}
flag = herd_cost
localization = TRADE_HERD_FOR_BETTER_AI_ACCEPTANCE
}
# Use hook
send_option = {
is_valid = {
scope:actor = {
has_usable_hook = scope:recipient
}
}
flag = hook
localization = GENERIC_SPEND_A_HOOK
}
should_use_extra_icon = {
scope:actor = { has_usable_hook = scope:recipient }
}
extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds"
send_options_exclusive = no
ai_accept = {
base = 0
modifier = {
add = {
value = -95
if = { #Non-Nomads should try to keep their lands
limit = {
scope:recipient = {
NOR = {
government_has_flag = government_is_nomadic
government_has_flag = government_is_herder
}
}
}
add = -405
}
}
desc = MIGRATION_INTERACTION_BASE_ACCEPTANCE
}
modifier = { # Easier for AI to migrate peacefully since they can't send Herd/Gold
add = 50
trigger = {
scope:recipient = { is_ai = yes }
scope:actor = { is_ai = yes }
}
desc = MIGRATION_INTERACTION_ACCEPTANCE_AI
}
modifier = { # Herders move away immediately
trigger = {
scope:recipient = { government_has_flag = government_is_herder }
}
add = 150
desc = MIGRATION_INTERACTION_HERDER
}
modifier = { # Dukes don't really want to move
trigger = {
scope:recipient = {
has_realm_law = nomadic_authority_3
}
}
add = -20
desc = MIGRATION_INTERACTION_HIGH_DOMINANCE
}
modifier = { # Kingdoms/Empires don't want to move
trigger = {
scope:recipient = {
OR = {
has_realm_law = nomadic_authority_4
has_realm_law = nomadic_authority_5
}
}
}
add = -100
desc = MIGRATION_INTERACTION_HIGH_DOMINANCE
}
# Are you using a hook?
modifier = {
trigger = {
scope:hook ?= yes
}
add = 100
desc = MIGRATION_HOOK_USED
}
# Are you using Gold?
modifier = {
trigger = {
scope:gold_cost ?= yes
}
add = 25
desc = TRADE_GOLD_FOR_BETTER_AI_ACCEPTANCE_TT
}
# Are you using Herd?
modifier = {
trigger = {
scope:herd_cost ?= yes
}
add = 25
desc = TRADE_HERD_FOR_BETTER_AI_ACCEPTANCE_TT
}
# Is there a Drought?
modifier = {
add = 15
any_character_situation = {
any_situation_sub_region = {
has_sub_region_phase_parameter = the_great_steppe_migration_acceptance_boost
any_situation_sub_region_participant_group = {
participant_group_type = nomad_rulers_capital
participant_group_has_character = scope:actor
}
}
}
desc = MIGRATION_INTERACTION_DROUGHT_ACCEPTANCE
}
# Recipient traits
modifier = {
add = 15
scope:recipient = {
has_trait = craven
}
desc = MIGRATION_INTERACTION_CRAVEN_ACCEPTANCE
}
modifier = {
add = 15
scope:recipient = {
has_trait = content
}
desc = MIGRATION_INTERACTION_CONTENT_ACCEPTANCE
}
# Recipient's opinion
opinion_modifier = {
trigger = {
scope:actor = {
OR = {
has_realm_law = nomadic_authority_1
has_realm_law = nomadic_authority_2
}
}
}
opinion_target = scope:actor
who = scope:recipient
multiplier = 1
desc = MIGRATION_INTERACTION_OPINION_ACCEPTANCE
}
opinion_modifier = {
trigger = {
scope:actor = {
OR = {
has_realm_law = nomadic_authority_3
has_realm_law = nomadic_authority_4
has_realm_law = nomadic_authority_5
}
}
}
opinion_target = scope:actor
who = scope:recipient
multiplier = 0.5
desc = MIGRATION_INTERACTION_OPINION_ACCEPTANCE
}
# Recipient's relation to you
modifier = {
scope:recipient = {
has_relation_friend = scope:actor
}
add = {
value = 25
if = {
limit = {
scope:actor = {
OR = {
has_realm_law = nomadic_authority_1
has_realm_law = nomadic_authority_2
}
}
}
add = 50
}
}
desc = MIGRATION_INTERACTION_FRIEND_ACCEPTANCE
}
modifier = {
scope:recipient = {
has_relation_blood_brother = scope:actor
}
add = {
value = 50
if = {
limit = {
scope:actor = {
OR = {
has_realm_law = nomadic_authority_1
has_realm_law = nomadic_authority_2
}
}
}
add = 50
}
}
desc = MIGRATION_INTERACTION_BLOOD_BROTHERS_ACCEPTANCE
}
# Obedience
modifier = {
scope:recipient = {
is_obedient_to = scope:actor
}
add = {
value = 50
if = {
limit = {
scope:actor = {
OR = {
has_realm_law = nomadic_authority_1
has_realm_law = nomadic_authority_2
}
}
}
add = 50
}
}
desc = MIGRATION_INTERACTION_OBEDIENT_ACCEPTANCE
}
# Relative Prestige
modifier = {
add = 10
prestige_level >= scope:recipient.prestige_level
desc = MIGRATION_INTERACTION_PRESTIGE_ACCEPTANCE
}
# Relative Prowess
modifier = {
add = 10
prowess >= scope:recipient.prowess
desc = MIGRATION_INTERACTION_PROWESS_ACCEPTANCE
}
# Relative Herd
modifier = {
trigger_if = {
exists = scope:recipient.domicile # Herders won't have a domicile
}
add = 25
domicile.herd >= scope:recipient.domicile.herd
desc = MIGRATION_INTERACTION_HERD_ACCEPTANCE
}
# Gurkhan
modifier = {
add = -1000
exists = situation:the_great_steppe
scope:recipient = {
this = situation:the_great_steppe.situation_top_herd
}
desc = MIGRATION_INTERACTION_GURKHAN_ACCEPTANCE
}
modifier = {
add = 50
trigger_if = {
exists = situation:the_great_steppe
}
scope:actor = {
this = situation:the_great_steppe.situation_top_herd
}
desc = MIGRATION_INTERACTION_GURKHAN_ACTOR_ACCEPTANCE
}
# Dread
modifier = {
add = intimidated_reason_value
scope:recipient = {
has_dread_level_towards = {
target = scope:actor
level = 1
}
}
desc = INTIMIDATED_REASON
}
modifier = {
add = cowed_reason_value
scope:recipient = {
has_dread_level_towards = {
target = scope:actor
level = 2
}
}
desc = COWED_REASON
}
# Events
modifier = {
add = 5
scope:actor = { has_character_modifier = mpo_elder_flock_migrate_modifier }
desc = MIGRATION_INTERACTION_ELDER_FLOCK_ACCEPTANCE
}
#Confederations refuse to be intimidated and don't want to leave
modifier = {
add = -300
desc = CONFEDERATION_MEMBER_REASON
scope:recipient = {
is_confederation_member = yes
}
}
# High-tier Ruler
modifier = {
add = -500
exists = scope:recipient.primary_title
scope:recipient.primary_title.tier >= tier_kingdom
desc = MIGRATION_INTERACTION_KING_ACCEPTANCE
}
# Recently settled nomads don't want to accept
modifier = {
add = -1000
desc = JUST_SETTLED_REASON
scope:recipient = {
is_tributary = yes
NOT = { government_has_flag = government_is_herder }
capital_county = {
title_held_years < 3
}
}
}
}
ai_instant_response = yes
# Available scopes and values
#
# scope:actor - migrating ruler
# scope:recipient - ruler who decides if migration is peaceful or hostile
# scope:target - main migration target - can be of any tier
#
# Additional scopes provided from code
#
# scope:domain - County or duchy that migrating ruler aims to get as their new domain.
# Can be the same as scope:target, if county of duchy-level migration
#
# scope:domain_fertility - Total current fertility of scope:domain - what actor is going to receive
# scope:target_fertility - Total current fertility of main migration target
#
# scope:defenders - Script list of all rulers who will be part of migration war if declined.
# It includes all rulers who are going to lose land - holder of main migration target and all rulers
# who has land in scope:domain
#
# scope:defender_power - combined max military power of all members in scope:defenders.
# It's power - i.e. scaled by regiments attack and toughness
#
ai_will_do = {
base = 0
# More likely to migrate to people you don't like
opinion_modifier = {
opinion_target = scope:recipient
multiplier = -0.25
}
# Bold, energetic characters are more likely to migrate
ai_value_modifier = {
ai_boldness = 0.25
ai_energy = 0.25
}
# We substract your Fertility
modifier = {
add = {
value = scope:actor.current_domain_fertility
multiply = -1
}
}
# And we add the target realm's Fertility
modifier = {
add = scope:domain_fertility
}
# Less likely to migrate into players
modifier = {
add = -25
scope:recipient = { is_ai = no }
}
# Can you win this war?
modifier = {
scope:actor.current_military_strength >= scope:defender_power
add = 25
}
modifier = {
scope:actor.current_military_strength <= scope:defender_power
add = -75
}
# You're moving from a bad season to a good one
modifier = {
has_bad_season_nomadic_capital_character_trigger = { CHARACTER = scope:actor }
has_good_season_nomadic_capital_character_trigger = { CHARACTER = scope:recipient }
add = 10
}
# There's a very bad season in your area
modifier = {
scope:actor = {
any_character_situation = {
any_situation_sub_region = {
sub_region_current_phase = situation_steppe_havsarsan_zud_season
situation_sub_region_has_county = scope:actor.capital_county
}
}
}
add = 100
}
# You are landless and your herd is starving
modifier = {
scope:actor = {
is_landed = no
}
add = 50
}
# The recipient is a Herder
modifier = {
scope:recipient = { government_has_flag = government_is_herder }
add = 10
}
# The recipient is a Steppe Admin
modifier = {
scope:recipient = { government_has_flag = government_is_steppe_admin }
add = -25
}
# You have a hook on the recipient
modifier = {
scope:actor = {
has_usable_hook = scope:recipient
}
add = 25
}
# More likely to migrate with Low Dominance
modifier = {
scope:actor = {
OR = {
has_realm_law = nomadic_authority_1
has_realm_law = nomadic_authority_2
}
}
add = 10
}
modifier = {
exists = scope:target
scope:actor = {
scope:target.tier >= tier_kingdom
primary_title.tier < tier_kingdom
OR = {
has_realm_law = nomadic_authority_3
has_realm_law = nomadic_authority_4
has_realm_law = nomadic_authority_5
}
}
add = 100
}
modifier = {
exists = scope:target
scope:actor = {
scope:target.tier >= tier_empire
primary_title.tier < tier_empire
OR = {
has_realm_law = nomadic_authority_4
has_realm_law = nomadic_authority_5
}
}
add = 100
}
modifier = {
scope:actor = {
primary_title.tier >= tier_kingdom
has_realm_law = nomadic_authority_3
}
add = -90
}
modifier = {
scope:actor = {
primary_title.tier >= tier_empire
OR = {
has_realm_law = nomadic_authority_4
has_realm_law = nomadic_authority_5
}
}
add = -90
}
#You're in a confederation... you don't want to go anywhere
modifier = {
scope:actor = {
is_confederation_member = yes
has_character_flag = new_confederate
}
add = -100
}
modifier = {
scope:actor = {
is_confederation_member = yes
NOT = { has_character_flag = new_confederate }
}
add = -30
}
#The recipient is bordering your confederation (so you can rejoin)
modifier = {
scope:actor = {
is_confederation_member = yes
}
scope:recipient = {
highest_held_title_tier <= tier_duchy
any_land_neighboring_realm_with_tributaries_owner = {
OR = {
is_member_of_confederation = scope:actor.confederation
suzerain ?= {
is_member_of_confederation = scope:actor.confederation
}
}
}
}
add = 30
}
# Don't migrate somewhere where there's a disease or Havsaran Zud
modifier = {
factor = 0
scope:domain = {
OR = {
AND = {
tier = tier_county
any_county_situation_sub_region = {
sub_region_current_phase = situation_steppe_havsarsan_zud_season
}
}
AND = {
tier = tier_county
any_county_province = {
any_province_epidemic = {
}
}
}
}
}
}
# Don't migrate into a domain that contains a vassal player
modifier = {
scope:domain = {
any_in_de_facto_hierarchy = {
holder ?= {
is_ai = no
is_independent_ruler = no
}
}
}
factor = 0
}
# Avoid bad wars
modifier = {
factor = 0.01
scope:defender_power >= scope:actor.current_military_strength
}
# Don't be suicidal
modifier = {
factor = 0
scope:defender_power >= scope:actor.twice_current_military_strength
}
modifier = {
factor = 0
scope:recipient.current_military_strength > scope:actor.current_military_strength
}
modifier = {
factor = 0
scope:defender_power >= 10
scope:actor.current_military_strength <= 500
}
# Do not downgrade your title
modifier = {
factor = 0
exists = scope:target
scope:target.tier < scope:actor.primary_title.tier
}
# Tributaries want to stick close to their suzerain
modifier = {
factor = 0
scope:actor = {
is_tributary = yes
}
scope:domain = {
NOR = {
holder ?= {
is_tributary_of_suzerain_or_above = scope:actor.suzerain
}
AND = {
tier = tier_county
any_neighboring_county = {
holder ?= {
is_tributary_of_suzerain_or_above = scope:actor.suzerain
}
}
}
any_in_de_jure_hierarchy = {
tier = tier_county
OR = {
holder ?= {
is_tributary_of_suzerain_or_above = scope:actor.suzerain
}
any_neighboring_county = {
holder ?= {
is_tributary_of_suzerain_or_above = scope:actor.suzerain
}
}
}
}
}
}
}
# Small AI nomads should only migrate to same-culture areas or right next to them, as everything else looks really bad.
modifier = {
factor = 0
scope:actor = {
any_character_situation = {
this = situation:the_great_steppe
}
has_realm_law = nomadic_authority_1
# If the character's culture does not exist outside of their realm, allow lenient migrations (otherwise small cultures get stuck)
culture = {
any_culture_county = {
holder.top_liege != scope:actor
}
}
}
scope:domain = {
NOR = {
AND = {
tier = tier_county
save_temporary_scope_as = county_culture_check
OR = {
culture = scope:actor.culture
culture = {
any_parent_culture_or_above = {
this = scope:actor.culture
}
}
scope:actor.culture = {
any_parent_culture_or_above = {
this = scope:county_culture_check.culture
}
}
any_neighboring_county = {
OR = {
culture = scope:actor.culture
culture = {
any_parent_culture_or_above = {
this = scope:actor.culture
}
}
scope:actor.culture = {
any_parent_culture_or_above = {
this = scope:county_culture_check.culture
}
}
}
}
}
}
any_in_de_jure_hierarchy = {
tier = tier_county
save_temporary_scope_as = county_culture_check
OR = {
culture = scope:actor.culture
culture = {
any_parent_culture_or_above = {
this = scope:actor.culture
}
}
scope:actor.culture = {
any_parent_culture_or_above = {
this = scope:county_culture_check.culture
}
}
any_neighboring_county = {
OR = {
culture = scope:actor.culture
culture = {
any_parent_culture_or_above = {
this = scope:actor.culture
}
}
scope:actor.culture = {
any_parent_culture_or_above = {
this = scope:county_culture_check.culture
}
}
}
}
}
}
}
}
}
# Slightly bigger nomads are also allowed to migrate into non-nomadic lands
modifier = {
factor = 0
scope:actor = {
any_character_situation = {
this = situation:the_great_steppe
}
has_realm_law = nomadic_authority_2
# If the character's culture does not exist outside of their realm, allow lenient migrations (otherwise small cultures get stuck)
culture = {
any_culture_county = {
holder.top_liege != scope:actor
}
}
}
scope:domain = {
NOR = {
AND = {
tier = tier_county
save_temporary_scope_as = county_culture_check
OR = {
culture = scope:actor.culture
culture = {
any_parent_culture_or_above = {
this = scope:actor.culture
}
}
scope:actor.culture = {
any_parent_culture_or_above = {
this = scope:county_culture_check.culture
}
}
any_neighboring_county = {
OR = {
culture = scope:actor.culture
culture = {
any_parent_culture_or_above = {
this = scope:actor.culture
}
}
scope:actor.culture = {
any_parent_culture_or_above = {
this = scope:county_culture_check.culture
}
}
}
}
title_province = {
NOR = {
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
}
}
any_in_de_jure_hierarchy = {
tier = tier_county
save_temporary_scope_as = county_culture_check
OR = {
culture = scope:actor.culture
culture = {
any_parent_culture_or_above = {
this = scope:actor.culture
}
}
scope:actor.culture = {
any_parent_culture_or_above = {
this = scope:county_culture_check.culture
}
}
any_neighboring_county = {
OR = {
culture = scope:actor.culture
culture = {
any_parent_culture_or_above = {
this = scope:actor.culture
}
}
scope:actor.culture = {
any_parent_culture_or_above = {
this = scope:county_culture_check.culture
}
}
}
}
title_province = {
NOR = {
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
}
}
}
}
}
# Big nomads move more freely, and the small ones will follow because they'll spread their culture there!
modifier = {
factor = 0
scope:actor = {
any_character_situation = {
this = situation:the_great_steppe
}
NOR = {
has_realm_law = nomadic_authority_1
has_realm_law = nomadic_authority_2
}
# If the character's culture does not exist outside of their realm, allow lenient migrations (otherwise small cultures get stuck)
culture = {
any_culture_county = {
holder.top_liege != scope:actor
}
}
capital_county = {
any_county_situation_sub_region = {
NOR = {
sub_region_current_phase = situation_steppe_havsarsan_zud_season
sub_region_current_phase = situation_steppe_severe_drought_season
sub_region_current_phase = situation_steppe_cold_zud_season
sub_region_current_phase = situation_steppe_white_zud_season
}
}
}
}
scope:domain = {
NOR = {
AND = {
tier = tier_county
save_temporary_scope_as = county_culture_check
OR = {
culture = scope:actor.culture
culture = {
any_parent_culture_or_above = {
this = scope:actor.culture
}
}
culture = {
has_same_culture_heritage = scope:actor.culture
}
culture = {
any_parent_culture_or_above = {
has_same_culture_heritage = scope:actor.culture
}
}
scope:actor.culture = {
any_parent_culture_or_above = {
this = scope:county_culture_check.culture
}
}
scope:actor.culture = {
any_parent_culture_or_above = {
has_same_culture_heritage = scope:county_culture_check.culture
}
}
any_neighboring_county = {
OR = {
culture = scope:actor.culture
culture = {
any_parent_culture_or_above = {
this = scope:actor.culture
}
}
culture = {
has_same_culture_heritage = scope:actor.culture
}
culture = {
any_parent_culture_or_above = {
has_same_culture_heritage = scope:actor.culture
}
}
scope:actor.culture = {
any_parent_culture_or_above = {
this = scope:county_culture_check.culture
}
}
scope:actor.culture = {
any_parent_culture_or_above = {
has_same_culture_heritage = scope:county_culture_check.culture
}
}
}
}
title_province = {
NOR = {
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
}
}
any_in_de_jure_hierarchy = {
tier = tier_county
save_temporary_scope_as = county_culture_check
OR = {
culture = scope:actor.culture
culture = {
any_parent_culture_or_above = {
this = scope:actor.culture
}
}
culture = {
has_same_culture_heritage = scope:actor.culture
}
culture = {
any_parent_culture_or_above = {
has_same_culture_heritage = scope:actor.culture
}
}
scope:actor.culture = {
any_parent_culture_or_above = {
this = scope:county_culture_check.culture
}
}
scope:actor.culture = {
any_parent_culture_or_above = {
has_same_culture_heritage = scope:county_culture_check.culture
}
}
any_neighboring_county = {
OR = {
culture = scope:actor.culture
culture = {
any_parent_culture_or_above = {
this = scope:actor.culture
}
}
culture = {
has_same_culture_heritage = scope:actor.culture
}
culture = {
any_parent_culture_or_above = {
has_same_culture_heritage = scope:actor.culture
}
}
scope:actor.culture = {
any_parent_culture_or_above = {
this = scope:county_culture_check.culture
}
}
scope:actor.culture = {
any_parent_culture_or_above = {
has_same_culture_heritage = scope:county_culture_check.culture
}
}
}
}
title_province = {
NOR = {
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
}
}
}
}
}
}
}
# PAIZA
mpo_interaction_grant_paiza = {
category = interaction_category_diplomacy
icon = paiza_interaction
common_interaction = no
desc = mpo_interaction_grant_paiza_desc
ai_frequency_by_tier = {
barony = 0
county = 24
duchy = 24
kingdom = 8
empire = 8
hegemony = 8
}
popup_on_receive = yes
pause_on_receive = yes
is_shown = {
scope:actor = {
has_character_flag = established_paiza_system
exists = situation:the_great_steppe
any_character_situation = {
this = situation:the_great_steppe
}
government_has_flag = government_is_nomadic
}
scope:recipient = {
government_has_flag = government_is_nomadic
OR = {
is_vassal_of = scope:actor
is_tributary_of = scope:actor
is_courtier_of = scope:actor
}
}
}
cooldown_against_recipient = { years = 10 }
is_valid_showing_failures_only = {
scope:actor = {
NOT = {
is_at_war_with = scope:recipient
}
is_independent_ruler = yes
custom_tooltip = {
text = mpo_character_interaction_gurkhan
is_gurkhan = yes
}
custom_tooltip = {
text = mpo_character_interaction_established_paiza_system
has_character_flag = established_paiza_system
}
}
scope:recipient = {
custom_tooltip = {
text = mpo_character_interaction_obedient
NOT = { is_obedient_to = scope:actor }
}
NOT = {
any_character_artifact = {
scope:recipient = { can_benefit_from_artifact = prev }
scope:artifact.var:paiza_patron ?= { is_gurkhan = yes }
scope:artifact.var:paiza_patron ?= scope:actor
}
}
}
}
cost = {
prestige = major_prestige_value
gold = 25
}
on_accept = {
make_obedient_recipient_to_actor_effect = yes
scope:recipient = {
mpo_create_paiza_artifact_effect = {
PATRON = scope:actor
GRANTEE = scope:recipient
}
custom_tooltip = mpo_establish_paiza_system_decision.paiza_abuse_authority_unlocked
custom_tooltip = mpo_establish_paiza_system_decision.leverage_khan_authority_unlocked
}
scope:actor = {
switch = {
trigger = scope:recipient.primary_title.tier
tier_empire = {
add_legitimacy_effect = { LEGITIMACY = massive_legitimacy_gain }
}
tier_kingdom = {
add_legitimacy_effect = { LEGITIMACY = major_legitimacy_gain }
}
tier_duchy = {
add_legitimacy_effect = { LEGITIMACY = medium_legitimacy_gain }
}
tier_county = {
add_legitimacy_effect = { LEGITIMACY = miniscule_legitimacy_gain }
}
}
}
}
ai_targets = {
ai_recipients = vassals
ai_recipients = tributaries
}
ai_accept = {
base = -20
opinion_modifier = {
opinion_target = scope:actor
who = scope:recipient
multiplier = 1
}
modifier = {
add = intimidated_external_reason_value
scope:recipient = {
has_dread_level_towards = {
target = scope:actor
level = 1
}
}
desc = INTIMIDATED_REASON
}
modifier = {
add = cowed_external_reason_value
scope:recipient = {
has_dread_level_towards = {
target = scope:actor
level = 2
}
}
desc = COWED_REASON
}
modifier = {
add = 40
scope:recipient = {
ai_honor < 0
ai_greed > 0
}
desc = will_abuse_paiza_reason
}
}
ai_will_do = {
base = 10
modifier = {
factor = 10
scope:recipient = {
is_ai = no
OR = {
is_vassal_of = scope:actor
is_tributary_of = scope:actor
}
}
}
modifier = {
factor = 10
scope:recipient = {
NOT = {
is_obedient_to = root
}
OR = {
is_powerful_vassal = yes
is_kurultai_trigger = yes
}
}
}
}
}
mpo_interaction_ask_for_paiza = {
category = interaction_category_diplomacy
icon = paiza_interaction
common_interaction = no
desc = mpo_interaction_ask_for_paiza_desc
ai_frequency_by_tier = {
barony = 0
county = 0
duchy = 12
kingdom = 12
empire = 0
hegemony = 0
}
popup_on_receive = yes
pause_on_receive = yes
is_shown = {
scope:recipient = {
government_has_flag = government_is_nomadic
has_character_flag = established_paiza_system
}
scope:actor = {
OR = {
government_has_flag = government_is_nomadic
top_liege = scope:recipient
}
NOT = {
is_at_war_with = scope:recipient
}
}
}
cooldown_against_recipient = { years = 10 }
is_valid_showing_failures_only = {
scope:recipient = {
is_independent_ruler = yes
is_gurkhan = yes
}
scope:actor = {
custom_tooltip = {
text = already_received_a_paiza
NOT = {
any_character_artifact = {
scope:actor = { can_benefit_from_artifact = prev }
var:paiza_patron ?= scope:recipient
}
}
}
}
}
send_options_exclusive = no
send_option = {
flag = hook
is_valid = {
scope:actor = {
has_usable_hook = scope:recipient
}
}
localization = GENERIC_SPEND_A_HOOK
}
send_option = { # Herd
is_shown = {
scope:actor = {
government_has_flag = government_is_nomadic
exists = domicile
}
}
is_valid = {
scope:actor = {
government_has_flag = government_is_nomadic
exists = domicile
}
scope:actor.domicile = { herd >= scope:recipient.domicile.massive_herd_value }
}
flag = herd_send_option
localization = TRADE_HERD_FOR_BETTER_AI_ACCEPTANCE_CONFEDERATION
}
on_accept = {
scope:actor = {
make_obedient_recipient_to_actor_effect = yes
send_interface_toast = {
type = event_toast_effect_good
title = mpo_decisions_events.paiza_granted
mpo_create_paiza_artifact_effect = {
PATRON = scope:recipient
GRANTEE = scope:actor
}
left_icon = scope:recipient
right_icon = scope:created_paiza
}
custom_tooltip = mpo_establish_paiza_system_decision.paiza_abuse_authority_unlocked
custom_tooltip = mpo_establish_paiza_system_decision.leverage_khan_authority_unlocked
if = {
limit = {
scope:herd_send_option = yes
}
pay_herd = {
target = scope:recipient
value = scope:recipient.domicile.massive_herd_value
}
}
if = {
limit = {
scope:hook = yes
}
use_hook = scope:recipient
}
}
scope:recipient = {
switch = {
trigger = scope:actor.primary_title.tier
tier_empire = {
add_legitimacy_effect = { LEGITIMACY = massive_legitimacy_gain }
}
tier_kingdom = {
add_legitimacy_effect = { LEGITIMACY = major_legitimacy_gain }
}
tier_duchy = {
add_legitimacy_effect = { LEGITIMACY = medium_legitimacy_gain }
}
tier_county = {
add_legitimacy_effect = { LEGITIMACY = miniscule_legitimacy_gain }
}
}
add_character_flag = {
flag = paiza_recently_granted
years = 2
}
}
}
on_decline = {
scope:recipient = {
add_character_flag = {
flag = paiza_recently_granted
years = 4
}
}
}
ai_accept = {
base = -60
modifier = {
add = intimidated_external_reason_value
scope:recipient = {
has_dread_level_towards = {
target = scope:actor
level = 1
}
}
desc = INTIMIDATED_REASON
}
modifier = {
add = cowed_external_reason_value
scope:recipient = {
has_dread_level_towards = {
target = scope:actor
level = 2
}
}
desc = COWED_REASON
}
modifier = {
add = 40
scope:actor = {
NOT = {
is_obedient_to = root
}
OR = {
is_powerful_vassal = yes
is_kurultai_trigger = yes
}
}
desc = AI_NOT_OBEDIENT_REVERSE_REASON
}
modifier = {
add = -20
scope:actor = {
is_obedient_to = scope:recipient
}
desc = AI_OBEDIENT_REVERSE_REASON
}
modifier = {
scope:recipient = {
has_relation_blood_brother = scope:actor
}
add = 100
desc = MIGRATION_INTERACTION_BLOOD_BROTHERS_ACCEPTANCE
}
modifier = {
trigger = {
scope:hook ?= yes
}
add = 60
desc = LEGEND_HOOK_USED
}
modifier = {
add = 20
trigger = {
scope:herd_send_option ?= yes
}
desc = HERD_INTERACTION_ACCEPTANCE_SEND_OPTION
}
opinion_modifier = {
opinion_target = scope:actor
who = scope:recipient
multiplier = 0.4
}
}
ai_potential = {
is_adult = yes
}
ai_will_do = {
base = 0
modifier = {
add = 100
scope:recipient = {
has_relation_blood_brother = scope:actor
}
}
modifier = {
add = {
value = scope:actor.ai_greed
multiply = 0.1
}
scope:actor = {
ai_greed > 0
}
}
modifier = {
add = {
value = scope:actor.primary_title.tier
subtract = scope:recipient.primary_title.tier
multiply = 10
max = 0
}
}
modifier = {
add = {
value = scope:actor.ai_honor
multiply = 0.1
}
scope:actor = {
ai_honor > 0
}
}
ai_value_modifier = {
ai_boldness = -0.4
ai_honor = 0.1
ai_greed = 0.1
ai_energy = -0.2
}
modifier = {
factor = 0
scope:recipient = {
has_character_flag = paiza_recently_granted
}
}
}
ai_targets = {
ai_recipients = liege
ai_recipients = suzerain
}
}
mpo_interaction_leverage_khan_authority = {
category = interaction_category_hostile
icon = paiza_interaction
common_interaction = no
desc = mpo_interaction_leverage_khan_authority_desc
ai_frequency_by_tier = {
barony = 0
county = 24
duchy = 8
kingdom = 8
empire = 8
hegemony = 8
}
popup_on_receive = yes
pause_on_receive = yes
cooldown = { months = 6 }
cooldown_against_recipient = { years = 10 }
is_shown = {
scope:actor = {
any_character_artifact = {
scope:actor = { can_benefit_from_artifact = prev }
has_variable = paiza_patron
OR = {
scope:recipient.top_liege = var:paiza_patron
scope:recipient = {
is_independent_ruler = yes
primary_title.tier < scope:actor.primary_title.tier
government_has_flag = government_is_nomadic
}
scope:recipient = {
liege = {
OR = {
government_has_flag = government_is_nomadic
scope:recipient.top_liege = prev.var:paiza_patron
}
}
}
}
}
NOT = {
has_character_flag = established_paiza_system
}
}
scope:recipient = {
is_ai = yes
is_gurkhan = no
age >= 12
NOT = {
has_character_flag = established_paiza_system
}
}
}
is_valid_showing_failures_only = {
scope:actor = {
custom_tooltip = {
text = mpo_abuse_authority_paiza_decision.no_more_paiza_abuse
NOT = { has_character_flag = no_more_paiza_abuse }
}
custom_tooltip = {
text = mpo_abuse_authority_paiza_decision.paiza_patron_not_topdog
any_character_artifact = {
scope:actor = { can_benefit_from_artifact = prev }
exists = var:paiza_patron
var:paiza_patron ?= {
is_gurkhan = yes
}
}
}
NOT = {
is_at_war_with = scope:recipient
}
}
}
ai_accept = {
base = -60
modifier = {
add = 10
has_trait = craven
desc = BLACKMAIL_INTERACTION_CRAVEN_ACCEPTANCE
}
modifier = {
add = -20
has_trait = arrogant
desc = BLACKMAIL_INTERACTION_ARROGANT_ACCEPTANCE
}
modifier = {
add = -20
has_trait = brave
desc = BLACKMAIL_INTERACTION_BRAVE_ACCEPTANCE
}
modifier = {
add = -20
has_trait = paranoid
desc = BLACKMAIL_INTERACTION_PARANOID_ACCEPTANCE
}
modifier = {
add = {
value = scope:recipient.intrigue
multiply = -2
}
desc = INDEBT_GUEST_INTRIGUE_RECIPIENT
}
modifier = {
add = {
value = scope:actor.intrigue
}
desc = INDEBT_GUEST_INTRIGUE_ACTOR
}
modifier = {
add = {
value = scope:actor.dread
divide = 2
}
scope:actor.dread >= 2
desc = offer_vassalization_interaction_aibehavior_dreaded_tt
}
opinion_modifier = {
opinion_target = situation:the_great_steppe.situation_top_herd
who = scope:recipient
multiplier = 0.4
}
opinion_modifier = {
opinion_target = scope:actor
who = scope:recipient
multiplier = 0.2
}
}
ai_will_do = {
base = -40
modifier = {
add = 40
domicile ?= { herd <= twenty_percent_herd_value }
}
modifier = {
add = 10
domicile ?= { herd <= sixty_percent_herd_value }
}
modifier = {
add = 10
domicile ?= { herd <= eighty_percent_herd_value }
}
modifier = {
add = 10
has_trait = greedy
}
modifier = {
add = 10
has_trait = wrathful
}
modifier = {
add = 10
has_trait = ambitious
}
modifier = {
add = -10
var:paiza_patron ?= {
domicile ?= { has_domicile_parameter = nomad_yurt_paiza_abuse_less_likely_lvl_1 }
}
}
modifier = {
add = -20
var:paiza_patron ?= {
domicile ?= { has_domicile_parameter = nomad_yurt_paiza_abuse_less_likely_lvl_2 }
}
}
modifier = {
add = -35
var:paiza_patron ?= {
domicile ?= { has_domicile_parameter = nomad_yurt_paiza_abuse_less_likely_lvl_3 }
}
}
}
ai_targets = {
ai_recipients = peer_vassals
}
on_accept = {
scope:actor = {
send_interface_toast = {
left_icon = scope:recipient
right_icon = situation:the_great_steppe.situation_top_herd
title = mpo_interaction_leverage_khan_authority
make_obedient_recipient_to_actor_effect = yes
scope:recipient = {
pay_short_term_gold = {
target = scope:actor
gold = {
value = current_gold_value
divide = 2
}
}
if = {
limit = {
government_has_flag = government_is_nomadic
scope:recipient = {
government_has_flag = government_is_nomadic
}
}
pay_herd = {
target = scope:actor
value = {
value = domicile.herd
multiply = 0.5
}
}
}
}
if = {
limit = {
scope:recipient = {
OR = {
is_landed = yes
}
}
}
add_prestige = medium_prestige_value
}
else = {
add_prestige = minor_prestige_value
}
}
if = {
limit = {
government_has_flag = government_is_nomadic
scope:recipient = {
government_has_flag = government_is_nomadic
}
}
pay_herd = {
target = scope:actor
value = {
value = domicile.herd
multiply = 0.5
}
}
}
}
scope:actor = {
random_character_artifact = {
limit = {
scope:actor = { can_benefit_from_artifact = prev }
has_variable = paiza_patron
}
var:paiza_patron = {
scope:actor = {
mpo_paiza_abuse_counter_effect = {
PAIZA_PATRON = prev
PAIZA_ABUSER = scope:actor
}
}
}
}
}
}
}
# Interrogate
# Used in the Ill-Advised event chain - nomad_events.0001 - 0099
interrogate_interaction = {
category = interaction_category_hostile
icon = icon_scheme_challenge_status
common_interaction = no
auto_accept = yes
desc = interrogate_interaction_desc
is_shown = {
scope:actor = { has_variable = can_interrogate_var }
scope:recipient = {
is_target_in_variable_list = {
name = valid_to_interrogate_var
target = scope:actor
}
}
# And Achmach is still around
scope:actor = {
any_courtier_or_guest = {
has_variable = achmach_loyalty
}
}
}
cooldown_against_recipient = { years = 10 }
on_accept = {
scope:actor = {
custom_tooltip = interrogate_interaction_tt
trigger_event = nomad_events.0006
}
scope:recipient = {
custom_tooltip = interrogate_interaction_recipient_tt
}
}
ai_will_do = {
base = 100
}
}
# Steal Herd
steal_herd_interaction = {
icon = icon_scheme_steal_herd
interface_priority = 90
common_interaction = yes
category = interaction_category_hostile
send_name = START_SCHEME
scheme = steal_herd
ignores_pending_interaction_block = yes
is_shown = {
NOT = { scope:recipient = scope:actor }
scope:actor = {
is_landed = yes
is_adult = yes
is_imprisoned = no
government_has_flag = government_is_nomadic
in_diplomatic_range = scope:recipient
trigger_if = {
limit = {
is_ai = yes
}
NOR = {
is_tributary_of_suzerain_or_above = scope:recipient
is_vassal_or_below_of = scope:recipient
scope:recipient = {
is_ai = no
any_targeting_scheme = {
scheme_type = steal_herd
}
}
}
}
}
scope:recipient = {
is_landed = yes
is_adult = yes
government_has_flag = government_is_nomadic
highest_held_title_tier >= tier_county
}
}
is_valid_showing_failures_only = {
scope:actor = {
can_start_scheme = {
type = steal_herd
target_character = scope:recipient
}
}
scope:recipient = { NOT = { has_strong_hook = scope:actor } }
trigger_if = {
limit = { scope:actor = { has_variable = no_scheming_allowed_var } }
custom_tooltip = {
text = no_scheming_allowed_var_tt
scope:actor.var:no_scheming_allowed_var != scope:recipient
}
}
}
desc = {
triggered_desc = {
trigger = {
scope:actor = {
can_start_scheme = {
type = steal_herd
target_character = scope:recipient
}
}
}
desc = scheme_interaction_tt_steal_herd_approved
}
}
on_accept = {
scope:actor = {
stress_impact = {
compassionate = minor_stress_impact_gain
honest = minor_stress_impact_gain
craven = minor_stress_impact_gain
content = minor_stress_impact_gain
}
send_interface_toast = {
type = event_toast_effect_neutral
title = steal_herd_interaction_notification
left_icon = scope:actor
right_icon = scope:recipient
begin_scheme_basic_effect = {
SCHEME_TYPE = steal_herd
TARGET_TYPE = target_character
TARGET_SCOPE = scope:recipient
}
if = {
limit = {
domicile ?= { herd >= ninety_percent_herd_value }
}
custom_tooltip = steal_herd_interaction_tt.warning
}
scope:new_scheme ?= {
if = {
limit = {
scope:steal_herd_low ?= yes
}
set_variable = steal_herd_low
}
else_if = {
limit = {
scope:steal_herd_normal ?= yes
}
set_variable = steal_herd_normal
}
else_if = {
limit = {
scope:steal_herd_high ?= yes
}
set_variable = steal_herd_high
}
}
}
}
}
ai_potential = {
prestige >= medium_prestige_value # In case they fail
trigger_if = {
limit = {
NOT = {
domicile ?= {
has_domicile_building_or_higher = steal_herd_yurt_01
}
}
}
ai_honor <= 50
}
NOR = {
scheme_generic_ai_blocker_trigger = yes
primary_title = {
is_mercenary_company = yes
}
}
}
auto_accept = yes
ai_will_do = {
base = -30
modifier = {
add = 20
domicile ?= { herd <= twenty_percent_herd_value }
}
modifier = {
add = 20
domicile ?= { herd <= sixty_percent_herd_value }
}
modifier = {
add = {
value = intrigue
multiply = 3
}
}
modifier = {
add = {
value = ai_greed
multiply = -1
}
}
modifier = {
add = {
value = ai_honor
multiply = -0.25
}
}
modifier = {
scope:actor = {
has_trait = schemer
}
add = 60
}
modifier = {
scope:actor = {
has_relation_rival = scope:recipient
}
add = 60
}
modifier = {
scope:actor = {
has_relation_nemesis = scope:recipient
}
add = 150
}
modifier = {
scope:actor = {
opinion = {
target = scope:recipient
value >= low_positive_opinion
}
ai_greed <= high_positive_ai_value
}
factor = 0
}
modifier = {
scope:recipient = {
OR = {
has_relation_friend = scope:actor
has_relation_lover = scope:actor
is_obedient_to = scope:actor
}
}
factor = 0
}
start_hostile_scheme_ai_base_modifiers = yes # At the end so Cowed can block it completely
}
ai_targets = {
ai_recipients = scripted_relations
ai_recipients = neighboring_rulers
ai_recipients = peer_vassals
}
# Options
options_heading = schemes.t.herd_amount
send_options_exclusive = yes
## Steal a little herd
send_option = {
flag = steal_herd_low
current_description = steal_herd_interaction.tt.low
}
## Steal a moderate amount of herd
send_option = {
flag = steal_herd_normal
current_description = steal_herd_interaction.tt.normal
}
## Steal a lot of herd
send_option = {
flag = steal_herd_high
current_description = steal_herd_interaction.tt.high
}
ai_frequency_by_tier = {
barony = 0
county = 72
duchy = 36
kingdom = 36
empire = 36
hegemony = 36
}
}
mpo_ask_for_herd_interaction = {
category = interaction_category_hostile
icon = demand_herd
desc = mpo_ask_for_herd_interaction_desc
interface_priority = 80
common_interaction = yes
ai_frequency_by_tier = {
barony = 0
county = 92
duchy = 12
kingdom = 8
empire = 8
hegemony = 8
}
popup_on_receive = yes
pause_on_receive = yes
is_shown = {
scope:actor = {
government_has_flag = government_is_nomadic
exists = domicile
}
scope:recipient = {
government_has_flag = government_is_nomadic
exists = domicile
is_ai = yes
}
NOT = {
scope:actor = {
has_variable = had_mpo_temujin_flavor_0020
var:had_mpo_temujin_flavor_0020 ?= scope:recipient
}
}
}
is_valid_showing_failures_only = {
scope:actor = {
NOT = {
is_imprisoned = yes
}
}
scope:recipient = {
NOR = {
is_imprisoned = yes
is_at_war = yes
is_a_faction_member = yes
custom_description = {
text = ask_for_herd_not_enough_herd
domicile.herd < scope:recipient.domicile.ask_for_herd_base_value
government_has_flag = government_is_nomadic
}
}
}
}
ai_potential = {
primary_title.tier >= tier_duchy
}
send_option = {
is_valid = {
scope:actor = {
has_usable_hook = scope:recipient
}
}
flag = hook
localization = GENERIC_SPEND_A_HOOK
}
send_option = {
is_valid = {
scope:recipient.domicile ?= {
herd > ask_for_herd_double_value
}
scope:recipient = {
NOT = {
government_has_flag = government_is_herder
}
}
}
flag = more_herd
localization = ASK_FOR_HERD_MORE_HERD
}
send_options_exclusive = no
ai_accept = {
base = -100
modifier = {
trigger = {
scope:more_herd ?= yes
}
add = -100
desc = ASK_FOR_HERD_MORE_HERD_REASON
}
modifier = {
trigger = {
scope:hook ?= yes
}
add = 1000
desc = MIGRATION_HOOK_USED
}
modifier = {
add = {
value = ai_boldness
multiply = -1
divide = 4
}
NOT = { ai_boldness = 0 }
desc = ARTIFACT_BOLDNESS_REASON
}
opinion_modifier = {
who = scope:recipient
opinion_target = scope:actor
desc = AI_OPINION_REASON
}
bp2_hostage_dread_modifier = yes
}
ai_will_do = {
base = 0
modifier = {
add = 20
scope:actor.domicile.herd < scope:actor.domicile.ask_for_herd_double_value
}
}
cooldown_against_recipient = { years = 6 }
ai_targets = {
ai_recipients = vassals
ai_recipients = neighboring_rulers
ai_recipients = peer_vassals
}
on_accept = {
scope:actor = {
send_interface_toast = {
type = event_toast_effect_good
title = ask_for_herd_toast
left_icon = scope:recipient
scope:recipient = {
# How much Herd are you getting?
if = {
limit = {
scope:more_herd ?= yes
}
if = {
limit = {
scope:actor = { has_variable = nomad_events_0210_herd_var }
}
pay_herd = {
target = scope:actor
value = {
value = scope:recipient.domicile.ask_for_herd_double_value
multiply = 2
}
}
}
else = {
pay_herd = {
target = scope:actor
value = scope:recipient.domicile.ask_for_herd_double_value
}
}
}
else = {
if = {
limit = {
scope:actor = { has_variable = nomad_events_0210_herd_var }
}
pay_herd = {
target = scope:actor
value = {
value = scope:recipient.domicile.ask_for_herd_base_value
multiply = 2
}
}
}
else = {
pay_herd = {
target = scope:actor
value = scope:recipient.domicile.ask_for_herd_base_value
}
}
}
# Extra Herd during the Abundant Grazing season
if = {
limit = {
any_character_situation = {
any_situation_sub_region = {
has_sub_region_phase_parameter = the_great_steppe_demand_herd_higher_rate
any_situation_sub_region_participant_group = {
participant_group_type = nomad_rulers_capital
participant_group_has_character = scope:actor
}
}
}
}
custom_tooltip = {
text = ask_for_herd_abundant_grazing_tt
pay_herd = {
target = scope:actor
value = scope:recipient.domicile.ask_for_herd_half_value
}
}
}
# Now opinion maluses
if = {
limit = {
scope:more_herd ?= yes
}
if = {
limit = {
scope:recipient = {
has_dread_level_towards = { target = scope:actor level = 2 }
}
}
custom_tooltip = ask_for_herd_dread_effect_tt
add_opinion = {
target = scope:actor
modifier = ask_for_herd_opinion
opinion = -20
}
}
else_if = {
limit = {
scope:recipient = {
has_dread_level_towards = { target = scope:actor level = 1 }
}
}
custom_tooltip = ask_for_herd_dread_effect_tt
add_opinion = {
target = scope:actor
modifier = ask_for_herd_opinion
opinion = -40
}
}
else = {
add_opinion = {
target = scope:actor
modifier = ask_for_herd_opinion
opinion = -60
}
}
}
else = {
if = {
limit = { #herders cannot give you more herd
scope:recipient = {
government_has_flag = government_is_herder
}
}
scope:actor = {
domicile ?= { change_herd = major_herd_gain }
add_legitimacy = minor_legitimacy_loss
}
scope:recipient.primary_title = {
custom_tooltip = ask_for_herd_herder_recipient_tt
add_county_modifier = {
modifier = ask_for_herd_county_depleted_modifier
years = 12
}
}
}
else = {
if = {
limit = {
scope:recipient = {
has_dread_level_towards = { target = scope:actor level = 2 }
}
}
custom_tooltip = ask_for_herd_dread_effect_tt
add_opinion = {
target = scope:actor
modifier = ask_for_herd_opinion
opinion = -10
}
}
else_if = {
limit = {
scope:recipient = {
has_dread_level_towards = { target = scope:actor level = 1 }
}
}
custom_tooltip = ask_for_herd_dread_effect_tt
add_opinion = {
target = scope:actor
modifier = ask_for_herd_opinion
opinion = -20
}
}
else = {
add_opinion = {
target = scope:actor
modifier = ask_for_herd_opinion
opinion = -40
}
}
}
}
}
}
}
}
}
### Demand Obedience
mpo_demand_obedience_interaction = {
category = interaction_category_vassal
icon = demand_obedience
desc = mpo_demand_obedience_interaction_desc
interface_priority = 80
common_interaction = yes
ai_frequency_by_tier = {
barony = 0
county = 24
duchy = 4
kingdom = 4
empire = 4
hegemony = 4
}
popup_on_receive = yes
pause_on_receive = yes
is_shown = {
scope:actor = {
government_allows = obedience
}
scope:recipient = {
is_ai = yes
obedience_target ?= scope:actor
is_obedient = no
}
}
is_valid_showing_failures_only = {
scope:actor = {
age >= 16
is_physically_able = yes
NOT = {
is_at_war_with = scope:recipient
}
}
scope:actor = { dread >= medium_dread_value }
}
cost = { prestige = minor_prestige_value }
ai_potential = {
government_allows = obedience
primary_title.tier >= tier_duchy
}
send_option = {
is_valid = {
scope:actor = {
has_usable_hook = scope:recipient
}
}
flag = hook
localization = GENERIC_SPEND_A_HOOK
}
send_options_exclusive = no
ai_accept = {
base = -50
modifier = {
trigger = {
scope:hook ?= yes
}
add = 100
desc = MIGRATION_HOOK_USED
}
modifier = {
add = 10
scope:actor = {
OR = {
has_realm_law = nomadic_authority_2
has_realm_law = meritocratic_bureaucracy_1
}
}
desc = DEMAND_OBEDIENCE_INTERACTION_DOMINANCE_ACCEPTANCE
}
modifier = {
add = 20
scope:actor = {
OR = {
has_realm_law = nomadic_authority_3
has_realm_law = meritocratic_bureaucracy_2
}
}
desc = DEMAND_OBEDIENCE_INTERACTION_DOMINANCE_ACCEPTANCE
}
modifier = {
add = 50
scope:actor = {
OR = {
has_realm_law = nomadic_authority_4
has_realm_law = meritocratic_bureaucracy_3
}
}
desc = DEMAND_OBEDIENCE_INTERACTION_DOMINANCE_ACCEPTANCE
}
modifier = {
add = 100
scope:actor = { has_realm_law = nomadic_authority_5 }
desc = DEMAND_OBEDIENCE_INTERACTION_DOMINANCE_ACCEPTANCE
}
modifier = {
add = -20
scope:actor = { legitimacy_level = 1 }
desc = DEMAND_OBEDIENCE_INTERACTION_LEGITIMACY_ACCEPTANCE
}
modifier = {
add = 10
scope:actor = { legitimacy_level = 3 }
desc = DEMAND_OBEDIENCE_INTERACTION_LEGITIMACY_ACCEPTANCE
}
modifier = {
add = 25
scope:actor = { legitimacy_level = 4 }
desc = DEMAND_OBEDIENCE_INTERACTION_LEGITIMACY_ACCEPTANCE
}
modifier = {
add = 50
scope:actor = { legitimacy_level = 5 }
desc = DEMAND_OBEDIENCE_INTERACTION_LEGITIMACY_ACCEPTANCE
}
modifier = {
add = {
value = ai_boldness
multiply = -1
divide = 4
}
NOT = { ai_boldness = 0 }
desc = ARTIFACT_BOLDNESS_REASON
}
modifier = {
add = -20
scope:recipient = {
has_trait = brave
}
desc = BLACKMAIL_INTERACTION_BRAVE_ACCEPTANCE
}
modifier = {
add = -50
scope:recipient = {
has_trait = arrogant
}
desc = BLACKMAIL_INTERACTION_ARROGANT_ACCEPTANCE
}
modifier = {
add = -50
scope:recipient = {
has_trait = disloyal
}
desc = DEMAND_OBEDIENCE_INTERACTION_DISLOYAL_ACCEPTANCE
}
modifier = {
add = 10
scope:recipient = {
has_trait = craven
}
desc = BLACKMAIL_INTERACTION_CRAVEN_ACCEPTANCE
}
modifier = {
add = 10
scope:recipient = {
has_trait = content
}
desc = DEMAND_OBEDIENCE_INTERACTION_CONTENT_ACCEPTANCE
}
modifier = {
add = 25
any_character_situation = {
any_situation_sub_region = {
has_sub_region_phase_parameter = the_great_steppe_easier_obedience
any_situation_sub_region_participant_group = {
participant_group_type = nomad_rulers_capital
participant_group_has_character = scope:actor
}
}
}
desc = DEMAND_OBEDIENCE_INTERACTION_ZUD_ACCEPTANCE
}
bp2_hostage_dread_modifier = yes
}
ai_will_do = {
base = 0
modifier = {
scope:actor = { dread >= major_dread_value }
add = 25
}
modifier = {
scope:actor = {
any_councillor = {
is_kurultai_trigger = yes
NOT = { is_obedient_to = prev }
}
}
add = 25
}
}
cooldown_against_recipient = { years = 10 }
ai_targets = {
ai_recipients = vassals
ai_recipients = courtiers
ai_recipients = tributaries
chance = 0.25
}
ai_targets = { # They will try to get a Stable Succession
ai_recipients = councillors
}
on_accept = {
scope:actor = {
send_interface_toast = {
type = event_toast_effect_good
title = mpo_demand_obedience_interaction_toast
left_icon = scope:recipient
scope:recipient = {
add_opinion = {
target = scope:actor
modifier = obedience_opinion
}
}
# Belligerent Vassal Opinion
if = {
limit = {
any_vassal = { has_vassal_stance = belligerent }
}
every_vassal = {
limit = { has_vassal_stance = belligerent }
custom = every_belligerent_vassal
add_opinion = {
modifier = impressed_opinion
target = scope:actor
opinion = 15
}
}
}
}
}
}
}
##################
# Refill MaA
##################
refill_maa_nomad_interaction = {
icon = icon_soldier_survivor
category = interaction_debug_main
interface_priority = 20
common_interaction = yes
desc = refill_maa_nomad_interaction_desc
cooldown = { months = 6 }
hidden = yes
is_shown = {
has_mpo_dlc_trigger = yes
scope:actor = {
is_nomad = yes
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 = REFILL_MAA_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 = herd
localization = reinforce_soldiers_option_herd
is_valid = {
scope:actor.domicile.herd >= 5
}
}
send_option = {
flag = gold
localization = reinforce_soldiers_option_gold
is_valid = {
scope:actor.gold >= 5
}
}
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:herd = {
if = {
limit = { domicile.herd > replenishable_troops_payed_herd_tt_value }
custom_tooltip = refill_maa_herd_full_tt
}
else = { custom_tooltip = refill_maa_herd_tt }
custom_tooltip = refill_maa_herd_cost_tt
refill_maa_with_herd_effect = yes
}
}
if = {
limit = {
is_ai = yes
NOR = {
scope:gold = yes
scope:herd = yes
}
}
refill_maa_with_herd_effect = yes
}
custom_tooltip = martial_skill_discount_tt
}
}
ai_frequency_by_tier = {
barony = 0
county = 3
duchy = 1
kingdom = 1
empire = 1
hegemony = 1
}
ai_targets = {
ai_recipients = self
}
ai_potential = {
is_nomad = yes
government_allows = conditional_maa_refill
any_maa_regiment = { maa_current_troops_count < maa_max_troops_count }
}
ai_will_do = {
base = 100
}
}
### Commander Trait interaction for guardians
# actor = guardian
# recipient = ward/hostage
# This has to be update every time a new Commander trait is added to the game, otherwise you won't be able to pass it down
influence_child_commander_interaction = {
category = interaction_category_friendly
common_interaction = yes
interface_priority = 60
icon = child
ai_maybe = yes
ai_min_reply_days = 4
ai_max_reply_days = 9
can_send_despite_rejection = yes
popup_on_receive = yes
pause_on_receive = yes
pre_answer_maybe_key = ANSWER_MIGHT_SUCCEED
pre_answer_no_key = ANSWER_CANT_SUCCEED
pre_answer_yes_key = ANSWER_WILL_SUCCEED
pre_answer_maybe_breakdown_key = ANSWER_SUM_CHANCE
desc = influence_child_commander_interaction_desc
is_shown = { #any ai ward/hostage
has_mpo_dlc_trigger = yes
scope:recipient = {
is_ai = yes
is_adult = no
OR = {
scope:actor = { has_relation_ward = scope:recipient }
is_hostage_of = scope:actor
}
}
}
is_valid_showing_failures_only = {
scope:recipient = { #be old enough to fight and don't have any commander traits yet
age >= 10
number_of_commander_traits <= 1
#checking all trait individually through the set scope in order to catch if all of your traits are either the same or opposite
trigger_if = {
limit = {
scope:actor = {
number_of_commander_traits > 0
}
}
custom_description = {
text = influence_child_commander_interaction_all_same_traits
switch = {
trigger = yes
scope:logistician = {
scope:recipient = { NOT = { has_trait = logistician } }
}
scope:military_engineer = {
scope:recipient = { NOT = { has_trait = military_engineer } }
}
scope:aggressive_attacker = {
scope:recipient = { NOT = { has_trait = aggressive_attacker } }
}
scope:unyielding_defender = {
scope:recipient = { NOT = { has_trait = unyielding_defender } }
}
scope:forder = {
scope:recipient = { NOT = { has_trait = forder } }
}
scope:flexible_leader = {
scope:recipient = { NOT = { has_trait = flexible_leader } }
}
scope:desert_warrior = {
scope:recipient = { NOT = { has_trait = desert_warrior } }
}
scope:jungle_stalker = {
scope:recipient = { NOT = { has_trait = jungle_stalker } }
}
scope:reaver = {
scope:recipient = { NOT = { has_trait = reaver } }
}
scope:reckless = {
scope:recipient = { NOT = { has_trait = reckless } }
}
scope:holy_warrior = {
scope:recipient = { NOT = { has_trait = holy_warrior } }
}
scope:open_terrain_expert = {
scope:recipient = { NOT = { has_trait = open_terrain_expert } }
}
scope:rough_terrain_expert = {
scope:recipient = { NOT = { has_trait = rough_terrain_expert } }
}
scope:forest_fighter = {
scope:recipient = { NOT = { has_trait = forest_fighter } }
}
scope:cautious_leader = {
scope:recipient = { NOT = { has_trait = cautious_leader } }
}
scope:organizer = {
scope:recipient = { NOT = { has_trait = organizer } }
}
scope:winter_soldier = {
scope:recipient = { NOT = { has_trait = winter_soldier } }
}
}
}
}
is_physically_able = yes
}
scope:actor = {
is_adult = yes
number_of_commander_traits >= 1
is_imprisoned = no
is_physically_able = yes
}
}
cooldown_against_recipient = { years = 3 }
can_send = {
}
#each option is shown if the actor has the corresponding trait and valid if recipient don't have it yet or don't have an opposite trait
send_option = {
is_shown = {
scope:actor = { has_trait = logistician }
}
is_valid = {
scope:recipient = {
NOR = {
has_trait = logistician
trait:logistician = {
any_opposite_trait = {
scope:recipient = { has_trait = prev }
}
}
}
}
}
flag = logistician
localization = trait_logistician
}
send_option = {
is_shown = {
scope:actor = { has_trait = military_engineer }
}
is_valid = {
scope:recipient = {
NOR = {
has_trait = military_engineer
trait:military_engineer = {
any_opposite_trait = {
scope:recipient = { has_trait = prev }
}
}
}
}
}
flag = military_engineer
localization = trait_military_engineer
}
send_option = {
is_shown = {
scope:actor = { has_trait = aggressive_attacker }
}
is_valid = {
scope:recipient = {
NOR = {
has_trait = aggressive_attacker
trait:aggressive_attacker = {
any_opposite_trait = {
scope:recipient = { has_trait = prev }
}
}
}
}
}
flag = aggressive_attacker
localization = trait_aggressive_attacker
}
send_option = {
is_shown = {
scope:actor = { has_trait = unyielding_defender }
}
is_valid = {
scope:recipient = {
NOR = {
has_trait = unyielding_defender
trait:unyielding_defender = {
any_opposite_trait = {
scope:recipient = { has_trait = prev }
}
}
}
}
}
flag = unyielding_defender
localization = trait_unyielding_defender
}
send_option = {
is_shown = {
scope:actor = { has_trait = forder }
}
is_valid = {
scope:recipient = {
NOR = {
has_trait = forder
trait:forder = {
any_opposite_trait = {
scope:recipient = { has_trait = prev }
}
}
}
}
}
flag = forder
localization = trait_forder
}
send_option = {
is_shown = {
scope:actor = { has_trait = flexible_leader }
}
is_valid = {
scope:recipient = {
NOR = {
has_trait = flexible_leader
trait:flexible_leader = {
any_opposite_trait = {
scope:recipient = { has_trait = prev }
}
}
}
}
}
flag = flexible_leader
localization = trait_flexible_leader
}
send_option = {
is_shown = {
scope:actor = { has_trait = desert_warrior }
}
is_valid = {
scope:recipient = {
NOR = {
has_trait = desert_warrior
trait:desert_warrior = {
any_opposite_trait = {
scope:recipient = { has_trait = prev }
}
}
}
}
}
flag = desert_warrior
localization = trait_desert_warrior
}
send_option = {
is_shown = {
scope:actor = { has_trait = jungle_stalker }
}
is_valid = {
scope:recipient = {
NOR = {
has_trait = jungle_stalker
trait:jungle_stalker = {
any_opposite_trait = {
scope:recipient = { has_trait = prev }
}
}
}
}
}
flag = jungle_stalker
localization = trait_jungle_stalker
}
send_option = {
is_shown = {
scope:actor = { has_trait = reaver }
}
is_valid = {
scope:recipient = {
NOR = {
has_trait = reaver
trait:reaver = {
any_opposite_trait = {
scope:recipient = { has_trait = prev }
}
}
}
}
}
flag = reaver
localization = trait_reaver
}
send_option = {
is_shown = {
scope:actor = { has_trait = reckless }
}
is_valid = {
scope:recipient = {
NOR = {
has_trait = reckless
trait:reckless = {
any_opposite_trait = {
scope:recipient = { has_trait = prev }
}
}
}
}
}
flag = reckless
localization = trait_reckless
}
send_option = {
is_shown = {
scope:actor = { has_trait = holy_warrior }
}
is_valid = {
scope:recipient = {
NOR = {
has_trait = holy_warrior
trait:holy_warrior = {
any_opposite_trait = {
scope:recipient = { has_trait = prev }
}
}
}
}
}
flag = holy_warrior
localization = trait_holy_warrior
}
send_option = {
is_shown = {
scope:actor = { has_trait = open_terrain_expert }
}
is_valid = {
scope:recipient = {
NOR = {
has_trait = open_terrain_expert
trait:open_terrain_expert = {
any_opposite_trait = {
scope:recipient = { has_trait = prev }
}
}
}
}
}
flag = open_terrain_expert
localization = trait_open_terrain_expert
}
send_option = {
is_shown = {
scope:actor = { has_trait = rough_terrain_expert }
}
is_valid = {
scope:recipient = {
NOR = {
has_trait = rough_terrain_expert
trait:rough_terrain_expert = {
any_opposite_trait = {
scope:recipient = { has_trait = prev }
}
}
}
}
}
flag = rough_terrain_expert
localization = trait_rough_terrain_expert
}
send_option = {
is_shown = {
scope:actor = { has_trait = forest_fighter }
}
is_valid = {
scope:recipient = {
NOR = {
has_trait = forest_fighter
trait:forest_fighter = {
any_opposite_trait = {
scope:recipient = { has_trait = prev }
}
}
}
}
}
flag = forest_fighter
localization = trait_forest_fighter
}
send_option = {
is_shown = {
scope:actor = { has_trait = cautious_leader }
}
is_valid = {
scope:recipient = {
NOR = {
has_trait = cautious_leader
trait:cautious_leader = {
any_opposite_trait = {
scope:recipient = { has_trait = prev }
}
}
}
}
}
flag = cautious_leader
localization = trait_cautious_leader
}
send_option = {
is_shown = {
scope:actor = { has_trait = organizer }
}
is_valid = {
scope:recipient = {
NOR = {
has_trait = organizer
trait:organizer = {
any_opposite_trait = {
scope:recipient = { has_trait = prev }
}
}
}
}
}
flag = organizer
localization = trait_organizer
}
send_option = {
is_shown = {
scope:actor = { has_trait = winter_soldier }
}
is_valid = {
scope:recipient = {
NOR = {
has_trait = winter_soldier
trait:winter_soldier = {
any_opposite_trait = {
scope:recipient = { has_trait = prev }
}
}
}
}
}
flag = winter_soldier
localization = trait_winter_soldier
}
send_options_exclusive = yes
on_send = {
switch = {#save which trait was chosen as scope:target_trait
trigger = yes
scope:logistician = {
trait:logistician = { save_scope_as = target_trait }
}
scope:military_engineer = {
trait:military_engineer = { save_scope_as = target_trait }
}
scope:aggressive_attacker = {
trait:aggressive_attacker = { save_scope_as = target_trait }
}
scope:unyielding_defender = {
trait:unyielding_defender = { save_scope_as = target_trait }
}
scope:forder = {
trait:forder = { save_scope_as = target_trait }
}
scope:flexible_leader = {
trait:flexible_leader = { save_scope_as = target_trait }
}
scope:desert_warrior = {
trait:desert_warrior = { save_scope_as = target_trait }
}
scope:jungle_stalker = {
trait:jungle_stalker = { save_scope_as = target_trait }
}
scope:reaver = {
trait:reaver = { save_scope_as = target_trait }
}
scope:reckless = {
trait:reckless = { save_scope_as = target_trait }
}
scope:holy_warrior = {
trait:holy_warrior = { save_scope_as = target_trait }
}
scope:open_terrain_expert = {
trait:open_terrain_expert = { save_scope_as = target_trait }
}
scope:rough_terrain_expert = {
trait:rough_terrain_expert = { save_scope_as = target_trait }
}
scope:forest_fighter = {
trait:forest_fighter = { save_scope_as = target_trait }
}
scope:cautious_leader = {
trait:cautious_leader = { save_scope_as = target_trait }
}
scope:organizer = {
trait:organizer = { save_scope_as = target_trait }
}
scope:winter_soldier = {
trait:winter_soldier = { save_scope_as = target_trait }
}
fallback = {
scope:actor = {
random_character_trait = {
limit = { has_trait_category = commander }
save_scope_as = target_trait
}
}
}
}
}
on_accept = {
scope:actor = {
# Trait you're trying to make your ward gained is saved as scope:target_trait
trigger_event = mpo_interactions_events.0101
show_as_tooltip = {
add_stress = minor_stress_gain
add_opinion = {
target = scope:recipient
modifier = pleased_opinion
opinion = 20
}
}
}
scope:recipient = {
show_as_tooltip = {
switch = {#save which trait was chosen as scope:target_trait
trigger = yes
scope:logistician = {
trait:logistician = { save_scope_as = target_trait }
}
scope:military_engineer = {
trait:military_engineer = { save_scope_as = target_trait }
}
scope:aggressive_attacker = {
trait:aggressive_attacker = { save_scope_as = target_trait }
}
scope:unyielding_defender = {
trait:unyielding_defender = { save_scope_as = target_trait }
}
scope:forder = {
trait:forder = { save_scope_as = target_trait }
}
scope:flexible_leader = {
trait:flexible_leader = { save_scope_as = target_trait }
}
scope:desert_warrior = {
trait:desert_warrior = { save_scope_as = target_trait }
}
scope:jungle_stalker = {
trait:jungle_stalker = { save_scope_as = target_trait }
}
scope:reaver = {
trait:reaver = { save_scope_as = target_trait }
}
scope:reckless = {
trait:reckless = { save_scope_as = target_trait }
}
scope:holy_warrior = {
trait:holy_warrior = { save_scope_as = target_trait }
}
scope:open_terrain_expert = {
trait:open_terrain_expert = { save_scope_as = target_trait }
}
scope:rough_terrain_expert = {
trait:rough_terrain_expert = { save_scope_as = target_trait }
}
scope:forest_fighter = {
trait:forest_fighter = { save_scope_as = target_trait }
}
scope:cautious_leader = {
trait:cautious_leader = { save_scope_as = target_trait }
}
scope:organizer = {
trait:organizer = { save_scope_as = target_trait }
}
scope:winter_soldier = {
trait:winter_soldier = { save_scope_as = target_trait }
}
}
if = {
limit = { exists = scope:target_trait }
add_trait = scope:target_trait
}
add_opinion = {
target = scope:actor
modifier = admiration_opinion
opinion = 20
}
}
}
}
on_decline = {
scope:actor = {
# Trait you're trying to make your ward gained is saved as scope:target_trait
trigger_event = mpo_interactions_events.0102
show_as_tooltip = {
add_stress = medium_stress_gain
add_opinion = {
target = scope:recipient
modifier = disappointed_opinion
opinion = -20
}
}
}
scope:recipient = {
show_as_tooltip = {
add_opinion = {
target = scope:actor
modifier = confused_opinion
opinion = -20
}
}
}
}
auto_accept = no
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
}
modifier = { # Perk boost
desc = influence_children_groomed_to_rule_perk_tt
trigger = {
scope:actor = { has_perk = groomed_to_rule_perk }
}
add = groomed_to_rule_value
}
modifier = { #more likely if you already have something in common
add = {
value = 5
if = {
limit = {
number_of_personality_traits_in_common = {
target = scope:recipient
value = 2
}
}
multiply = 2
}
else_if = {
limit = {
number_of_personality_traits_in_common = {
target = scope:recipient
value = 3
}
}
multiply = 3
}
}
number_of_personality_traits_in_common = {
target = scope:recipient
value >= 1
}
desc = we_are_alike_tt
}
modifier = { #less likely if you already have opposite traits
add = {
value = -5
if = {
limit = {
scope:recipient = {
number_of_opposing_personality_traits = {
target = scope:actor
value = 2
}
}
}
multiply = 2
}
else_if = {
limit = {
scope:recipient = {
number_of_opposing_personality_traits = {
target = scope:actor
value = 3
}
}
}
multiply = 3
}
}
scope:recipient = {
number_of_opposing_personality_traits = {
target = scope:actor
value >= 1
}
}
desc = we_are_NOT_alike_tt
}
modifier = { #adding your knowledge
add = {
value = scope:actor.martial
multiply = 0.5
}
desc = HAS_MARTIAL_SKILL_REASON
}
modifier = { #adding your fighting skills
add = {
value = scope:actor.prowess
multiply = 0.5
}
desc = HAS_PROWESS_SKILL_REASON
}
modifier = { #more likely with a Wet Nurse employed
exists = scope:actor.court_position:champion_court_position
add = 10
desc = HAS_CHAMPION_REASON
}
modifier = { #more likely if chosen trait is compatible with recipients childhood personality
add = 15
switch = {
trigger = yes
scope:logistician = {
scope:recipient = {
OR = {
has_trait = curious
has_trait = pensive
}
}
}
scope:military_engineer = {
scope:recipient = {
OR = {
has_trait = curious
has_trait = pensive
}
}
}
scope:aggressive_attacker = {
scope:recipient = {
OR = {
has_trait = bossy
has_trait = rowdy
}
}
}
scope:unyielding_defender = {
scope:recipient = {
OR = {
has_trait = bossy
has_trait = rowdy
}
}
}
scope:forder = {
scope:recipient = {
OR = {
has_trait = rowdy
has_trait = curious
}
}
}
scope:flexible_leader = {
scope:recipient = {
OR = {
has_trait = charming
has_trait = curious
}
}
}
scope:desert_warrior = {
scope:recipient = {
has_trait = rowdy
}
}
scope:jungle_stalker = {
scope:recipient = {
has_trait = rowdy
}
}
scope:reaver = {
scope:recipient = {
OR = {
has_trait = bossy
has_trait = rowdy
}
}
}
scope:reckless = {
scope:recipient = {
OR = {
has_trait = bossy
has_trait = rowdy
}
}
}
scope:holy_warrior = {
scope:recipient = {
has_trait = pensive
}
}
scope:open_terrain_expert = {
scope:recipient = {
has_trait = rowdy
}
}
scope:rough_terrain_expert = {
scope:recipient = {
has_trait = rowdy
}
}
scope:forest_fighter = {
scope:recipient = {
has_trait = rowdy
}
}
scope:cautious_leader = {
scope:recipient = {
has_trait = pensive
}
}
scope:organizer = {
scope:recipient = {
OR = {
has_trait = bossy
has_trait = charming
}
}
}
scope:winter_soldier = {
scope:recipient = {
has_trait = rowdy
}
}
}
desc = has_compatible_personality_tt
}
modifier = { #less likely if chosen trait is incompatible with recipients childhood personality
add = -15
switch = {
trigger = yes
scope:logistician = {
scope:recipient = {
NOR = {
has_trait = curious
has_trait = pensive
}
}
}
scope:military_engineer = {
scope:recipient = {
NOR = {
has_trait = curious
has_trait = pensive
}
}
}
scope:aggressive_attacker = {
scope:recipient = {
NOR = {
has_trait = bossy
has_trait = rowdy
}
}
}
scope:unyielding_defender = {
scope:recipient = {
NOR = {
has_trait = bossy
has_trait = rowdy
}
}
}
scope:forder = {
scope:recipient = {
NOR = {
has_trait = rowdy
has_trait = curious
}
}
}
scope:flexible_leader = {
scope:recipient = {
NOR = {
has_trait = charming
has_trait = curious
}
}
}
scope:desert_warrior = {
scope:recipient = {
NOT = { has_trait = rowdy }
}
}
scope:jungle_stalker = {
scope:recipient = {
NOT = { has_trait = rowdy }
}
}
scope:reaver = {
scope:recipient = {
NOR = {
has_trait = bossy
has_trait = rowdy
}
}
}
scope:reckless = {
scope:recipient = {
NOR = {
has_trait = bossy
has_trait = rowdy
}
}
}
scope:holy_warrior = {
scope:recipient = {
NOT = { has_trait = pensive }
}
}
scope:open_terrain_expert = {
scope:recipient = {
NOT = { has_trait = rowdy }
}
}
scope:rough_terrain_expert = {
scope:recipient = {
NOT = { has_trait = rowdy }
}
}
scope:forest_fighter = {
scope:recipient = {
NOT = { has_trait = rowdy }
}
}
scope:cautious_leader = {
scope:recipient = {
NOT = { has_trait = pensive }
}
}
scope:organizer = {
scope:recipient = {
NOR = {
has_trait = bossy
has_trait = charming
}
}
}
scope:winter_soldier = {
scope:recipient = {
NOT = { has_trait = rowdy }
}
}
}
desc = has_incompatible_personality_tt
}
modifier = { #more likely if actor is afraid of you
add = intimidated_halved_reason_value
scope:recipient = {
target_is_liege_or_above = scope:actor
has_dread_level_towards = {
target = scope:actor
level = 1
}
}
desc = INTIMIDATED_REASON
}
modifier = { #more likely if actor is afraid of you
add = cowed_halved_reason_value
scope:recipient = {
target_is_liege_or_above = scope:actor
has_dread_level_towards = {
target = scope:actor
level = 2
}
}
desc = COWED_REASON
}
modifier = { #less likely if recipient already has a commander trait
add = -50
scope:recipient = {
number_of_commander_traits >= 1
}
desc = has_commander_traits_already
}
}
# AI
ai_potential = {
any_relation = {
type = ward
count >= 1
}
}
ai_frequency_by_tier = {
barony = 0
county = 72
duchy = 12
kingdom = 12
empire = 12
hegemony = 12
}
ai_targets = {
ai_recipients = courtiers
}
ai_will_do = {
base = -100
modifier = { # If the recipient is a player, do not bother sending
factor = 0
scope:recipient = {
is_ai = no
}
}
modifier = {
add = ai_honor
}
modifier = {
add = ai_energy
}
modifier = {
add = ai_sociability
}
modifier = {
add = ai_boldness
}
}
}
mpo_make_blood_brother = {
category = interaction_category_diplomacy
icon = blood_brother
desc = make_blood_brother_desc
common_interaction = yes
can_send_despite_rejection = yes
interface_priority = 60
greeting = positive
notification_text = MAKE_BLOOD_BROTHER_NOTIFICATION
popup_on_receive = yes
ai_maybe = yes
cooldown = { months = 1 }
cooldown_against_recipient = { years = 5 }
is_shown = {
# Scope:actor needs to have a suitable CulTrad.
scope:actor = {
mpo_valid_for_blood_brotherhood_trigger = yes
NOT = { var:had_mpo_temujin_flavor_0020 ?= scope:recipient }
}
scope:recipient = {
mpo_valid_for_blood_brotherhood_trigger = yes
NOT = {
this = scope:actor
}
}
}
is_valid_showing_failures_only = {
mpo_can_be_blood_brothers_trigger = { CHARACTER_1 = scope:actor CHARACTER_2 = scope:recipient }
# Both characters must be available
scope:actor = {
is_imprisoned = no
is_incapable = no
}
scope:recipient = {
is_imprisoned = no
is_incapable = no
}
}
#Mutual enemy that you oppose together
send_option = {
flag = common_enemy
is_valid = {
custom_description = {
text = blood_brother_common_enemy_trigger
mpo_blood_brother_common_enemy_trigger = yes
}
}
localization = BLOOD_BROTHER_COMMON_ENEMY
}
#Shared memories
send_option = {
flag = memories_together
is_valid = {
custom_description = {
text = blood_brother_memory_trigger
scope:actor = {
any_memory = {
has_memory_participant = scope:recipient
mpo_blood_brother_reason_memory_trigger = yes
}
}
}
}
localization = BLOOD_BROTHER_MEMORIES
}
#Fought together in a war
send_option = {
flag = war_allies
is_valid = {
custom_description = {
text = blood_brother_former_war_allies_trigger
scope:actor = {
has_variable_list = former_war_allies
any_in_list = {
variable = former_war_allies
this = scope:recipient
}
}
}
}
localization = BLOOD_BROTHER_WAR_ALLIES
}
# Normal
send_option = {
is_shown = {
always = no
}
is_valid = {
always = yes
}
flag = normal
localization = BLOOD_BROTHER_NORMAL
starts_enabled = { always = yes }
}
cost = {
piety = minor_piety_value
}
send_options_exclusive = no
on_accept = {
# Notifications with most effects.
scope:actor = {
# Become blood brothers
#Tooltip effect because it happens later/in the blood brother on action
show_as_tooltip = {
set_relation_blood_brother = scope:recipient
}
custom_tooltip = blood_brother_alliance_actor_alliance_tt
custom_tooltip = blood_brother_actor_gains_hook_tt
if = {
limit = {
scope:recipient = {
mpo_blood_brother_august_trigger = { OTHER_BROTHER = scope:actor }
}
}
if = {
limit = {
scope:actor = {
government_has_flag = government_is_nomadic
}
}
custom_tooltip = blood_brother_august_nomadic_modifier_tt
}
else = {
custom_tooltip = blood_brother_august_modifier_tt
}
}
if = {
limit = {
scope:recipient = {
mpo_blood_brother_warrior_trigger = { OTHER_BROTHER = scope:actor }
}
}
custom_tooltip = blood_brother_warrior_modifier_tt
}
if = {
limit = {
scope:recipient = {
mpo_blood_brother_clever_trigger = yes
}
}
if = {
limit = {
scope:actor = {
government_has_flag = government_is_nomadic
}
}
custom_tooltip = blood_brother_clever_nomadic_modifier_tt
}
else = {
custom_tooltip = blood_brother_clever_modifier_tt
}
}
if = {
limit = {
scope:recipient = {
mpo_blood_brother_loving_trigger = yes
}
}
custom_tooltip = blood_brother_loving_modifier_tt
}
if = {
limit = {
always = scope:common_enemy
}
custom_tooltip = blood_brother_foe_modifier_tt
}
}
scope:recipient = {
# Become blood brothers
#Tooltip effect because it happens later/in the blood brother on action
show_as_tooltip = { set_relation_blood_brother = scope:actor }
custom_tooltip = blood_brother_alliance_recipient_alliance_tt
custom_tooltip = blood_brother_recipient_gains_hook_tt
if = {
limit = {
scope:actor = {
mpo_blood_brother_august_trigger = { OTHER_BROTHER = scope:recipient }
}
}
if = {
limit = {
scope:recipient = {
government_has_flag = government_is_nomadic
}
}
custom_tooltip = blood_brother_august_nomadic_modifier_tt
}
else = {
custom_tooltip = blood_brother_august_modifier_tt
}
}
if = {
limit = {
scope:actor = {
mpo_blood_brother_warrior_trigger = { OTHER_BROTHER = scope:recipient }
}
}
custom_tooltip = blood_brother_warrior_modifier_tt
}
if = {
limit = {
scope:actor = {
mpo_blood_brother_clever_trigger = yes
}
}
if = {
limit = {
scope:recipient = {
government_has_flag = government_is_nomadic
}
}
custom_tooltip = blood_brother_clever_nomadic_modifier_tt
}
else = {
custom_tooltip = blood_brother_clever_modifier_tt
}
}
if = {
limit = {
scope:actor = {
mpo_blood_brother_loving_trigger = yes
}
}
custom_tooltip = blood_brother_loving_modifier_tt
}
if = {
limit = {
always = scope:common_enemy
}
custom_tooltip = blood_brother_foe_modifier_tt
}
}
# If we're a clan this interaction affects unity
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = minor_unity_gain
DESC = clan_unity_oath_of_true_friendship.desc
REVERSE_NON_HOUSE_TARGET = no
}
if = {
limit = {
always = scope:common_enemy
}
scope:actor = {
make_blood_brother_save_common_enemy_effect = yes
}
}
#Fire events for each char, resetting scopes to be appropriate in each
hidden_effect = {
scope:recipient = {
save_scope_as = blood_bro
}
scope:actor = {
set_relation_blood_brother = {
reason = sworn_blood_brother
target = scope:recipient
}
trigger_event = mpo_interactions_events.0006
}
clear_saved_scope = blood_bro
scope:actor = {
save_scope_as = blood_bro
}
scope:recipient = {
trigger_event = mpo_interactions_events.0006
}
}
}
on_decline = {
# Scope:actor gains some stress over the whole ordeal.
scope:actor = {
send_interface_toast = {
type = event_toast_effect_bad
title = make_blood_brother_interaction.decline.actor.tt
left_icon = scope:recipient
add_stress = minor_stress_gain
}
}
# Scope:actor loses opinion of scope:recipient.
scope:recipient = {
send_interface_toast = {
type = event_toast_effect_neutral
title = make_blood_brother_interaction.decline.recipient.tt
left_icon = scope:actor
scope:actor = {
add_opinion = {
target = scope:recipient
modifier = hurt_opinion
opinion = -20
}
}
}
}
# And set up a little hidden drama for later...
hidden_effect = {
scope:recipient = {
if = {
limit = {
# We don't use the standard check for this, since they'll already be friends by definition, so the trigger would always return as false.
# Instead, we just check to make sure they're not *already* potential rivals; this can happen regardless, so really we're just setting them up for drama if the friendship ever falters.
NOT = { has_relation_potential_rival = scope:actor }
}
random = {
chance = 20
set_relation_potential_rival = scope:actor
}
}
}
}
# If we're a clan this interaction affects unity
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = minor_unity_loss
DESC = clan_unity_declined_true_friendship.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
# AI
## Standard Acceptance stuff
ai_accept = {
base = -50
mpo_blood_brother_interactions_ai_accept_modifier = yes
# Common foe send option
# Are you offering confederation leadership?
modifier = {
trigger = {
scope:common_enemy ?= yes
}
add = 75
desc = BLOOD_BROTHER_COMMON_ENEMY_VALUE
}
# Memories send option
modifier = {
trigger = {
scope:memories_together ?= yes
}
add = 50
desc = BLOOD_BROTHER_MEMORIES_VALUE
}
# Former war allies send option
modifier = {
trigger = {
scope:war_allies ?= yes
}
add = 30
desc = BLOOD_BROTHER_WAR_ALLIES_VALUE
}
}
## Performance-enhancement
ai_potential = {
is_imprisoned = no
is_at_war = no
has_blood_brother = no
}
ai_target_quick_trigger = { adult = yes }
ai_targets = {
ai_recipients = liege
ai_recipients = scripted_relations
}
ai_targets = {
ai_recipients = peer_vassals
max = 10
}
ai_targets = {
ai_recipients = neighboring_rulers_including_tributary_borders
max = 15
}
## Frequency
ai_frequency_by_tier = {
barony = 0
county = 96
duchy = 48
kingdom = 12
empire = 12
hegemony = 12
}
ai_will_do = {
base = -50
#Dishonorable characters don't want to be bound like this
modifier = {
scope:recipient = {
ai_honor <= medium_negative_ai_value
}
add = -40
}
modifier = {
scope:recipient = {
ai_sociability <= medium_negative_ai_value
}
add = -20
}
#This will mostly just annoy players, unless AI is worthy and has a good reason
modifier = {
scope:recipient = {
is_ai = no
}
NOT = {
scope:actor = {
is_landed = yes
OR = {
has_relation_friend = scope:recipient
has_relation_soulmate = scope:recipient
is_allied_to = scope:recipient
}
}
}
add = -100
}
modifier = {
add = 25
any_ally = {
count < 1
}
}
modifier = {
add = 75
any_ally = {
count < 2
}
scope:recipient = { # Don't propose alliances to tiny insignificant rulers just because
OR = {
current_military_strength >= scope:actor.eighty_percent_of_current_military_strength
primary_title.tier >= scope:actor.primary_title.tier
AND = {
primary_title.tier >= tier_duchy
scope:actor.primary_title.tier < tier_empire
}
}
}
}
modifier = {
add = 25
scope:actor = {
mpo_blood_brother_common_enemy_trigger = yes
}
}
modifier = {
add = 25
scope:actor = {
scope:actor = {
any_memory = {
has_memory_participant = scope:recipient
mpo_blood_brother_reason_memory_trigger = yes
}
}
}
}
modifier = {
add = 10
scope:actor = {
has_variable_list = former_war_allies
any_in_list = {
variable = former_war_allies
this = scope:recipient
}
}
}
mpo_blood_brother_interactions_ai_accept_modifier = yes
modifier = { # The AI shouldn't propose to their Lieges
factor = 0.5
is_liege_or_above_of = scope:recipient
}
modifier = { # The AI shouldn't propose to their Vassals unless Clan
factor = 0.5
scope:actor = {
NOT = { government_has_flag = government_is_clan }
}
scope:recipient = {
is_vassal_of = scope:actor
}
}
modifier = {
factor = 0
scope:recipient = {
has_character_modifier = broke_blood_brotherhood_modifier
}
}
# Jamukha offers Temujin via Event
modifier = {
trigger = {
scope:actor = { this = character:mpo_mongol_1 }
scope:recipient = { this = character:125501 }
}
factor = 0
}
}
}
################################
# Feudalize Nomadic Holding
################################
feudalize_nomadic_holding_interaction = {
category = interaction_category_uncategorized
hidden = yes
special_interaction = feudalize_holding
desc = feudalize_holding_interaction_desc
target_type = title
target_filter = actor_domain_titles
auto_accept = yes
is_shown = {
scope:actor = {
this = scope:recipient
NOR = {
government_has_flag = government_is_nomadic
government_has_flag = government_is_herder
}
}
}
can_be_picked_title = {
scope:target = {
holder = scope:actor
is_capital_barony = no # we'll use the county in that case
trigger_if = {
limit = { tier <= tier_county }
title_province = {
has_holding_type = nomad_holding
}
}
trigger_else = {
custom_description = {
text = "feudalize_nomadic_holding_interaction_title_not_county_or_below"
always = no
}
}
}
}
has_valid_target_showing_failures_only = {
scope:target = {
trigger_if = {
limit = { tier <= tier_county }
title_province = {
barony_controller = scope:actor
has_ongoing_construction = no
}
}
}
}
cost = {
gold = {
value = 0
if = {
limit = {
has_treasury = no
}
scope:actor = {
if = {
limit = { # Less expensive for tribals
government_has_flag = government_is_tribal
}
add = {
value = 50
desc = BASE
}
}
else = {
add = {
value = feudalize_holding_interaction_cost
desc = BASE
}
if = {
limit = { # More expensive for admin to make barbarians civilized...
government_has_flag = government_is_administrative
}
add = {
value = feudalize_holding_interaction_cost
multiply = 0.25
desc = has_admin_government
}
if = {
limit = { # Admin get a bonus for high bureaucracy levels
OR = {
has_realm_law = imperial_bureaucracy_2
has_realm_law = imperial_bureaucracy_3
}
}
subtract = {
value = feudalize_holding_interaction_cost
multiply = {
value = 0.1
if = {
limit = {
has_realm_law = imperial_bureaucracy_3
}
add = 0.15
}
}
desc = imperial_bureaucracy
}
}
}
}
}
}
}
treasury = {
value = 0
if = {
limit = {
has_treasury = yes
}
scope:actor = {
add = {
value = feudalize_holding_interaction_cost
desc = BASE
}
if = {
limit = { # More expensive for admin to make barbarians civilized...
government_has_flag = government_is_administrative
}
add = {
value = feudalize_holding_interaction_cost
multiply = 0.25
desc = has_admin_government
}
if = {
limit = { # Admin get a bonus for high bureaucracy levels
OR = {
has_realm_law = imperial_bureaucracy_2
has_realm_law = imperial_bureaucracy_3
}
}
subtract = {
value = feudalize_holding_interaction_cost
multiply = {
value = 0.1
if = {
limit = {
has_realm_law = imperial_bureaucracy_3
}
add = 0.15
}
}
desc = imperial_bureaucracy
}
}
}
}
}
}
prestige = {
scope:actor = {
if = {
limit = { # Less expensive for tribals
government_has_flag = government_is_tribal
scope:target.county.culture = scope:actor.culture
}
add = {
value = 50
desc = BASE
}
}
else_if = {
limit = { # Less expensive for tribals
government_has_flag = government_is_tribal
scope:target.county.culture = { has_same_culture_heritage = scope:actor.culture }
}
add = {
value = 100
desc = BASE
}
}
else_if = {
limit = { # Less expensive for tribals
government_has_flag = government_is_tribal
}
add = {
value = 300
desc = BASE
}
}
}
}
}
on_accept = {
scope:actor = {
send_interface_toast = {
type = event_toast_effect_good
title = feudalize_holding_interaction_notification
right_icon = scope:actor
if = {
limit = {
exists = scope:target.title_province
NOT = { government_has_flag = government_is_tribal }
}
scope:target.title_province = {
set_holding_type = castle_holding
}
}
if = {
limit = {
exists = scope:target.title_province
government_has_flag = government_is_tribal
}
scope:target.title_province = {
set_holding_type = tribal_holding
}
}
if = {
limit = {
scope:target.county.culture = scope:actor.culture
}
}
else_if = {
limit = {
OR = {
government_has_flag = government_is_tribal
scope:target.county.culture = { has_same_culture_heritage = scope:actor.culture }
}
}
scope:target.county = {
add_county_modifier = {
modifier = mpo_feudalize_nomadic_land_modifier
years = 5
}
}
}
else = {
scope:target.county = {
add_county_modifier = {
modifier = mpo_feudalize_nomadic_land_modifier
years = 30
}
}
}
}
}
}
ai_will_do = {
base = 1500
}
}
################################
# Feudalize Herder Holding
################################
feudalize_herder_holding_interaction = {
category = interaction_category_uncategorized
hidden = yes
special_interaction = feudalize_holding
desc = feudalize_holding_interaction_desc
target_type = title
target_filter = actor_domain_titles
auto_accept = yes
is_shown = {
scope:actor = {
this = scope:recipient
NOR = {
government_has_flag = government_is_nomadic
government_has_flag = government_is_herder
}
}
}
can_be_picked_title = {
scope:target = {
holder = scope:actor
is_capital_barony = no # we'll use the county in that case
trigger_if = {
limit = { tier <= tier_county }
title_province = {
has_holding_type = herder_holding
}
}
trigger_else = {
custom_description = {
text = "feudalize_herder_holding_interaction_title_not_county_or_below"
always = no
}
}
}
}
has_valid_target_showing_failures_only = {
scope:target = {
trigger_if = {
limit = { tier <= tier_county }
title_province = {
barony_controller = scope:actor
has_ongoing_construction = no
}
}
}
}
cost = {
gold = {
value = 0
if = {
limit = {
has_treasury = no
}
scope:actor = {
if = {
limit = { # Less expensive for tribals
government_has_flag = government_is_tribal
}
add = {
value = 50
desc = BASE
}
}
else = {
add = {
value = feudalize_holding_interaction_cost
desc = BASE
}
if = {
limit = { # More expensive for admin to make barbarians civilized...
government_has_flag = government_is_administrative
}
add = {
value = feudalize_holding_interaction_cost
multiply = 0.25
desc = has_admin_government
}
if = {
limit = { # Admin get a bonus for high bureaucracy levels
OR = {
has_realm_law = imperial_bureaucracy_2
has_realm_law = imperial_bureaucracy_3
}
}
subtract = {
value = feudalize_holding_interaction_cost
multiply = {
value = 0.1
if = {
limit = {
has_realm_law = imperial_bureaucracy_3
}
add = 0.15
}
}
desc = imperial_bureaucracy
}
}
}
}
}
}
}
treasury = {
value = 0
if = {
limit = {
has_treasury = yes
}
scope:actor = {
add = {
value = feudalize_holding_interaction_cost
desc = BASE
}
if = {
limit = { # More expensive for admin to make barbarians civilized...
government_has_flag = government_is_administrative
}
add = {
value = feudalize_holding_interaction_cost
multiply = 0.25
desc = has_admin_government
}
if = {
limit = { # Admin get a bonus for high bureaucracy levels
OR = {
has_realm_law = imperial_bureaucracy_2
has_realm_law = imperial_bureaucracy_3
}
}
subtract = {
value = feudalize_holding_interaction_cost
multiply = {
value = 0.1
if = {
limit = {
has_realm_law = imperial_bureaucracy_3
}
add = 0.15
}
}
desc = imperial_bureaucracy
}
}
}
}
}
}
prestige = {
scope:actor = {
if = {
limit = { # Less expensive for tribals
government_has_flag = government_is_tribal
scope:target.county.culture = scope:actor.culture
}
add = {
value = 50
desc = BASE
}
}
else_if = {
limit = { # Less expensive for tribals
government_has_flag = government_is_tribal
scope:target.county.culture = { has_same_culture_heritage = scope:actor.culture }
}
add = {
value = 100
desc = BASE
}
}
else_if = {
limit = { # Less expensive for tribals
government_has_flag = government_is_tribal
}
add = {
value = 300
desc = BASE
}
}
}
}
}
on_accept = {
scope:actor = {
send_interface_toast = {
type = event_toast_effect_good
title = feudalize_holding_interaction_notification
right_icon = scope:actor
if = {
limit = {
exists = scope:target.title_province
NOT = { government_has_flag = government_is_tribal }
}
scope:target.title_province = {
set_holding_type = castle_holding
}
}
if = {
limit = {
exists = scope:target.title_province
government_has_flag = government_is_tribal
}
scope:target.title_province = {
set_holding_type = tribal_holding
}
}
if = {
limit = {
scope:target.county.culture = scope:actor.culture
}
}
else_if = {
limit = {
OR = {
government_has_flag = government_is_tribal
scope:target.county.culture = { has_same_culture_heritage = scope:actor.culture }
}
}
scope:target.county = {
add_county_modifier = {
modifier = mpo_feudalize_nomadic_land_modifier
years = 5
}
}
}
else = {
scope:target.county = {
add_county_modifier = {
modifier = mpo_feudalize_nomadic_land_modifier
years = 30
}
}
}
}
}
}
ai_will_do = {
base = 1500
}
}
mpo_retrieve_land_from_herder_interaction = {
category = interaction_category_diplomacy
common_interaction = yes
notification_text = REVOKE_TITLE_PROPOSAL
interface_priority = 100
icon = mpo_retrieve_land_from_herder_interaction
desc = mpo_retrieve_land_from_herder_interaction_desc
special_interaction = revoke_title_interaction
interface = revoke_title
target_type = title
target_filter = recipient_domain_titles
ai_maybe = yes
popup_on_receive = yes
pause_on_receive = yes
interface_priority = 60
ai_min_reply_days = 4
ai_max_reply_days = 9
# actor character giving the titles
# recipient character receiving the titles
is_shown = {
scope:recipient = {
government_has_flag = government_is_herder
}
}
is_valid_showing_failures_only = {
scope:actor = {
is_adult = yes
is_imprisoned = no
prestige >= minor_prestige_value
trigger_if = {
limit = { is_landed = yes }
custom_tooltip = {
text = mpo_retrieve_land_from_herder_interaction_neighbour_tt
any_sub_realm_county = {
any_neighboring_county = {
holder = {
this = scope:recipient
}
}
}
}
}
trigger_else = {
OR = { government_has_flag = government_is_landless_adventurer government_has_flag = government_is_landless_minority }
domicile.domicile_location.county.holder ?= scope:recipient
}
}
scope:recipient = {
custom_tooltip = {
text = mpo_retrieve_land_from_herder_independent_tt
OR = {
AND = {
is_independent_ruler = yes
is_tributary = no
}
is_tributary_of_suzerain_or_above = scope:actor
is_vassal_of = scope:actor
}
}
custom_tooltip = {
text = mpo_retrieve_land_migration_tt
capital_county = { is_migration_target = no }
}
}
}
can_be_picked_title = {
scope:target = {
title_revocation_standard_can_pick_title_trigger = yes
}
}
has_valid_target = {
scope:target = {
is_landless_type_title = no
NOT = { is_noble_family_title = yes }
NOT = { is_nomad_title = yes }
}
}
#Use hook -- Has to stay so the UI doesn't break
send_option = {
is_valid = {
scope:actor = {
has_usable_hook = scope:recipient
}
}
flag = hook
localization = SCHEME_HOOK
}
should_use_extra_icon = {
scope:actor = { has_usable_hook = scope:recipient }
}
extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds"
send_options_exclusive = no
on_auto_accept = {
scope:recipient = {
trigger_event = char_interaction.0200
}
}
on_accept = {
scope:recipient = {
if = {
limit = {
is_tributary = yes
NOT = {
is_tributary_of = scope:actor
}
}
suzerain = {
add_opinion = {
target = scope:actor
modifier = upset_opinion
opinion = -25
}
}
}
}
save_scope_value_as = {
name = revoke_title_interaction
value = yes
}
scope:recipient = {
capital_county = {
change_county_control = -25
}
}
scope:actor = {
add_prestige = minor_prestige_loss
trigger_event = char_interaction.0199
}
scope:actor = {
if = {
limit = { has_character_flag = flag_hostile_actions_disabled_delay }
remove_character_flag = flag_hostile_actions_disabled_delay
}
if = {
limit = { OR = { government_has_flag = government_is_landless_adventurer government_has_flag = government_is_landless_minority } }
demand_pastureland_adventurer_interaction_effect = yes
}
else = {
revoke_title_interaction_effect = yes
}
}
}
auto_accept = {
scope:actor = { is_landed = yes }
}
# AI
ai_targets = {
ai_recipients = tributaries
ai_recipients = top_realm_domicile_owners
}
ai_targets = {
ai_recipients = neighboring_rulers
max = 5
}
ai_frequency_by_tier = {
barony = 0
county = 12
duchy = 4
kingdom = 4
empire = 4
hegemony = 4
}
ai_potential = {
domain_size < domain_limit
primary_title.tier >= tier_county
}
ai_accept = {
base = 0
modifier = {
scope:actor = { OR = { government_has_flag = government_is_landless_adventurer government_has_flag = government_is_landless_minority } }
add = -50
desc = YOU_ARE_AN_ADVENTURER_REASON
}
modifier = {
exists = scope:actor.suzerain
add = -25
desc = ADVENTURER_SUZERAIN_REASON
}
modifier = {
scope:actor = { OR = { government_has_flag = government_is_landless_adventurer government_has_flag = government_is_landless_minority } }
add = {
value = scope:actor.military_power
divide = 100
}
desc = ADVENTURER_MILITARY_POWER_REASON
}
}
ai_will_do = {
base = 0
modifier = {
scope:actor = {
government_has_flag = government_is_nomadic
current_domain_fertility <= bad_county_fertility_level
}
add = 100
}
modifier = {
scope:actor = {
NOT = { government_has_flag = government_is_nomadic }
short_term_gold >= massive_gold_value
NOR = {
has_trait = humble
has_trait = content
}
}
add = 25
}
}
}
mpo_vassal_to_tributary_interaction = {
category = interaction_category_vassal
icon = become_tributary_interaction
common_interaction = yes
desc = mpo_vassal_to_tributary_interaction_desc
#ai_frequency = 0
popup_on_receive = yes
pause_on_receive = yes
is_shown = {
scope:actor = {
is_ai = no
is_vassal_of = scope:recipient
government_has_flag = government_is_nomadic
}
}
is_valid_showing_failures_only = {
scope:recipient = {
is_imprisoned = no
}
scope:actor = {
is_imprisoned = no
NOR = {
is_at_war_with = scope:recipient
exists = involved_activity
is_travelling = yes
}
}
}
is_highlighted = {
always = yes
}
# Start with higher taxes
send_option = {
flag = high_obligations
localization = VASSAL_TO_TRIBUTARY_HIGHER_OBLIGATIONS
}
#Use hook
send_option = {
is_valid = {
scope:actor = {
has_usable_hook = scope:recipient
}
}
flag = hook
localization = GENERIC_SPEND_A_HOOK
}
should_use_extra_icon = {
scope:actor = { has_usable_hook = scope:recipient }
}
extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds"
send_options_exclusive = no
on_accept = {
scope:actor = {
show_as_tooltip = {
break_subject_contract_and_establish_tributary_effect = { SUZERAIN = scope:recipient TRIBUTARY = scope:actor }
}
}
scope:actor = {
trigger_event = mpo_interactions_events.0010
}
}
on_decline = {
scope:actor = {
#Letter response, they get a bit pissed
trigger_event = mpo_interactions_events.0011
}
}
ai_accept = {
base = 0
modifier = {
add = -50
desc = BASE_RELUCTANCE
}
# Do they like you?
opinion_modifier = {
who = scope:recipient
opinion_target = scope:actor
multiplier = 1
desc = AI_OPINION_REASON
}
# If you're friends
modifier = {
add = 50
scope:recipient = {
has_relation_friend = scope:actor
}
desc = AI_FRIEND_REASON
}
# If you're lovers
modifier = {
add = 50
scope:recipient = {
has_relation_lover = scope:actor
}
desc = AI_YOUR_LOVER
}
# You're using a hook
modifier = {
add = 100
desc = SCHEME_WEAK_HOOK_USED
scope:hook = yes
}
# You promised higher taxes
modifier = {
add = 25
desc = AI_HIGHER_OBLIGATIONS_REASON
scope:high_obligations = yes
}
# Are they Nomadic
modifier = {
add = 25
desc = game_concept_nomadic_government
scope:recipient = { government_has_flag = government_is_nomadic }
}
}
#ai_will_do = {
# base = 0
#}
#
#ai_targets = {
# ai_recipients = suzerain
#}
}
mpo_gift_herd_interaction = {
icon = herd_interaction
category = interaction_category_friendly
common_interaction = yes
interface_priority = 65
desc = mpo_gift_herd_interaction_desc
greeting = positive
notification_text = SEND_GIFT_HERD_PROPOSAL
answer_accept_key = SEND_GIFT_HERD_ACCEPT
answer_reject_key = SEND_GIFT_HERD_REJECT
ai_targets = {
ai_recipients = scripted_relations
ai_recipients = liege
ai_recipients = suzerain
ai_recipients = head_of_faith
}
ai_targets = {
ai_recipients = neighboring_rulers
ai_recipients = peer_vassals
max = 10
}
ai_targets = {
ai_recipients = vassals
max = 10
}
ai_targets = {
ai_recipients = tributaries
max = 10
}
ai_target_quick_trigger = {
adult = yes
}
ai_frequency_by_tier = {
barony = 0
county = 60
duchy = 60
kingdom = 60
empire = 60
hegemony = 0
}
is_shown = {
NOT = {
scope:recipient = scope:actor
}
scope:actor = { government_has_flag = government_is_nomadic }
scope:recipient = {
government_has_flag = government_is_nomadic
exists = domicile
}
}
is_valid_showing_failures_only = {
scope:actor.domicile.herd >= herd_gift_value
}
on_auto_accept = {
scope:recipient = {
trigger_event = mpo_interactions_events.0020
}
}
on_accept = {
scope:recipient = {
# Verify that they could become friend
if = {
limit = {
NAND = {
has_relation_friend = scope:actor
has_relation_lover = scope:actor
has_relation_soulmate = scope:actor
has_relation_best_friend = scope:actor
}
}
gifting_leads_towards_friendship_effect = yes
}
}
scope:actor = {
# Warning for multiple gifts
if = {
limit = {
is_ai = no
scope:recipient = {
has_opinion_modifier = {
target = scope:actor
modifier = sent_herd_opinion
}
}
}
custom_tooltip = ALREADY_SENT_GIFT_HERD_WARNING
}
send_interface_message = {
type = event_gold_neutral
title = gift_interaction_notification
right_icon = scope:recipient
pay_herd = {
target = scope:recipient
value = domicile.herd_gift_value
}
stress_impact = {
greedy = medium_stress_impact_gain
}
if = {
limit = {
scope:recipient = {
NOT = {
is_heir_of = scope:actor
}
}
}
stress_impact = {
generous = medium_stress_impact_loss
}
}
#FP3 Tenet Communal Possessions Perk - piety gain for gift giving.
if = {
limit = {
scope:actor = {
faith = {
has_doctrine_parameter = piety_from_gifts_active
}
}
}
scope:actor = {
add_piety = minor_piety_gain
}
}
# Let's apply the opinion modifier last, as to apply everything else correctly first
scope:recipient = {
add_opinion = {
target = scope:actor
modifier = sent_herd_opinion
opinion = sent_herd_opinion_value
}
}
}
}
}
ai_accept = {
base = 0
modifier = {
add = 100
desc = HERD_REASON
}
}
ai_potential = {
is_available_at_peace_ai_adult = yes
ai_greed < medium_positive_ai_value
domicile.herd >= {
value = major_herd_value_static
multiply = 3
}
NOT = { has_variable = conqueror }
ai_should_focus_on_building_in_their_capital = no
}
auto_accept = {
custom_description = {
text = auto_accept_interaction_ai
object = scope:recipient
scope:recipient = {
is_ai = yes
}
}
}
ai_min_reply_days = 1
ai_max_reply_days = 1
ai_will_do = {
base = 100
modifier = { # Do not send double-gifts
factor = 0
scope:recipient = {
has_opinion_modifier = {
target = scope:actor
modifier = sent_herd_opinion
}
}
}
modifier = { # Special Blood Brother weight
add = 100
scope:actor = {
has_relation_blood_brother = scope:recipient
domicile.herd >= { # Do not lose all your Herd for this
value = herd_gift_value
multiply = 2
}
}
}
modifier = {
add = 100
scope:recipient = {
is_tributary_of = scope:actor
OR = {
ai_greed <= -50
is_obedient_to = scope:actor
opinion = {
target = scope:actor
value >= 50
}
}
}
}
modifier = { # Basic Filtering
factor = 0
scope:recipient = {
NOR = {
AND = { # Bankrupt lovers, friends and a bankrupt liege should be considered
OR = {
scope:actor = {
any_liege_or_above = {
this = scope:recipient
}
}
has_secret_relation_lover = scope:actor
has_relation_lover = scope:actor
has_relation_soulmate = scope:actor
has_relation_friend = scope:actor
has_relation_best_friend = scope:actor
}
domicile.herd < minor_herd_value_static
}
AND = { # Generous characters will give gifts to their friends/lovers
OR = {
has_secret_relation_lover = scope:actor
has_relation_lover = scope:actor
has_relation_soulmate = scope:actor
has_relation_friend = scope:actor
has_relation_best_friend = scope:actor
}
scope:actor = {
OR = {
ai_greed <= high_negative_ai_value
AND = {
ai_greed < 0
culture = {
has_cultural_parameter = gives_more_gifts
}
}
}
}
}
AND = { # Characters with the Generous Cultural Tradition will give gifts to more people
is_ruler = yes
OR = {
is_allied_to = scope:actor
is_close_or_extended_family_of = scope:actor
}
scope:actor = {
ai_greed < 0
culture = {
has_cultural_parameter = gives_more_gifts
}
}
}
AND = { # Characters with the loyal trait more likely to give gifts to friends/lieges
OR = {
scope:actor.liege ?= this
has_relation_friend = scope:actor
has_relation_best_friend = scope:actor
is_allied_to = scope:actor
is_close_or_extended_family_of = scope:actor
}
scope:actor = {
ai_greed <= 0
has_trait = loyal
}
}
AND = { # Powerful vassals should be considered
is_powerful_vassal_of = scope:actor
opinion = {
target = scope:actor
value < 0
}
NOT ={
has_opinion_modifier = {
target = scope:actor
modifier = sent_herd_opinion
}
}
}
AND = { # Factioneering vassals should be considered
is_vassal_of = scope:actor
is_a_faction_member = yes
NOT ={
has_opinion_modifier = {
target = scope:actor
modifier = sent_herd_opinion
}
}
}
AND = { # Realm Priests should be considered
scope:actor = {
faith = { has_doctrine = doctrine_theocracy_temporal }
exists = cp:councillor_court_chaplain
cp:councillor_court_chaplain = scope:recipient
}
opinion = {
target = scope:actor
value <= 25
}
NOT = {
has_opinion_modifier = {
target = scope:actor
modifier = sent_herd_opinion
}
}
}
}
}
}
modifier = {
factor = 0.1
scope:recipient = {
opinion = {
target = scope:actor
value < 0
}
NAND = {
is_vassal_of = scope:actor
scope:actor = {
ai_rationality > 50
}
}
}
}
modifier = {
factor = 0.1
scope:recipient = {
has_relation_rival = scope:actor
}
}
}
}
mpo_offer_submission_or_ruin = {
category = interaction_category_vassal
icon = invasion
popup_on_receive = yes
pause_on_receive = yes
ai_maybe = yes
desc = mpo_offer_submission_or_ruin_desc
ai_targets = {
ai_recipients = neighboring_rulers
}
ai_frequency_by_tier = {
barony = 0
county = 0
duchy = 0
kingdom = 0
empire = 3
hegemony = 3
}
interface_priority = 300
common_interaction = yes
force_notification = yes
is_shown = {
scope:actor = {
OR = {
mpo_has_gok_mongol_empire_trigger = yes
has_trait = greatest_of_khans
}
mpo_offer_submission_or_ruin_shown_actor_trigger = yes
}
scope:recipient = {
mpo_offer_submission_or_ruin_shown_recipient_trigger = yes
}
}
is_valid_showing_failures_only = {
scope:actor = {
mpo_offer_submission_or_ruin_valid_actor_trigger = yes
}
scope:recipient = {
mpo_offer_submission_or_ruin_valid_recipient_trigger = yes
}
}
is_highlighted = {
always = yes
}
greeting = positive
notification_text = OFFER_SUBMISSION_OR_RUIN_INTERACTION_NOTIFICATION
can_send_despite_rejection = yes
ai_min_reply_days = 3
ai_max_reply_days = 5
ai_accept = {
base = -50
# MAIN
# Heretic/Infidel modifier.
# Tier difference modifier.
# Dejure modifier.
# Distant/Remote Realm modifier.
# Military power difference modifier.
# MINOR
# Rivalry modifier.
# Same Dynasty modifier.
# Cultural/Cultural Group modifiers.
# Ageism modifier vs kids.
# Ruler Legitimacy modifier.
# Claimant modifier.
# FP3 Piety Level modifier.
# OPINION SCALES
# Dread
# Compare Opinion modifier.
#CONFEDERATION
modifier = {
desc = CONFEDERATION_MEMBER_REASON
scope:recipient = {
is_confederation_member = yes
}
add = -500
}
#HERDER
modifier = {
scope:recipient = { government_has_flag = government_is_herder }
add = 10000
desc = HERDER_REASON
}
#TRIBUTARY
modifier = {
desc = KING_SUZERAIN_REASON
scope:recipient = {
is_tributary = yes
NOT = {
is_tributary_of_suzerain_or_above = scope:actor
}
suzerain = {
highest_held_title_tier >= tier_kingdom
}
}
add = -50
}
modifier = {
desc = STRONG_SUZERAIN_REASON
scope:recipient = {
is_tributary = yes
NOT = {
is_tributary_of_suzerain_or_above = scope:actor
}
suzerain = {
sub_realm_size >= 20
}
}
add = -100
}
modifier = {
desc = STRONG_SUZERAIN_REASON
scope:recipient = {
is_tributary = yes
NOT = {
is_tributary_of_suzerain_or_above = scope:actor
}
scope:recipient.suzerain = {
current_military_strength >= scope:actor.current_military_strength
}
}
add = -300
}
modifier = {
desc = ALREADY_TRIBUTARY_REASON
scope:recipient = {
is_tributary_of_suzerain_or_above = scope:actor
}
add = 30
}
# PERKS
modifier = { # Perk boost
desc = offer_vassalization_true_ruler_perk_tt
trigger = {
scope:actor = { has_perk = true_ruler_perk }
}
add = 30
}
modifier = { # Education 5 boost
desc = offer_vassalization_education_diplomacy_5_tt
trigger = {
scope:actor = { has_trait_with_flag = offer_vassalisation_25 }
}
add = 25
}
# EVENTS - temporary bonuses gained by events
modifier = {
desc = event_bonus_to_vassal_accept_tt
trigger = {
scope:actor = { has_character_modifier = event_bonus_to_vassal_accept }
}
add = 20
}
# STRUGGLES - bonus gained by successful Sway scheme during the Persian Struggle
modifier = {
desc = fp3_persian_struggle_previously_swayed_tt
trigger = {
scope:recipient = {
has_opinion_modifier = {
modifier = scheme_sway_and_compelled_to_submit_opinion
target = scope:actor
}
}
}
add = 20
}
modifier = {
desc = fp3_rekindler_of_iran_modifier_reason
trigger = {
AND = {
scope:actor = { dynasty ?={ has_dynasty_modifier = fp3_rekindler_of_iran_modifier } }
scope:recipient = { culture = { has_cultural_pillar = heritage_iranian } }
}
}
add = 20
}
# OBEDIENCE
modifier = {
desc = obedient_interaction_reason
trigger = {
is_obedient_to = scope:actor
}
add = 100
}
modifier = { # Cultural Acceptance
add = offer_vassalage_acceptance_value
desc = cultural_acceptance_interaction_reason
trigger = {
scope:actor = {
NOR = {
has_same_culture_as = scope:recipient
government_has_flag = government_is_nomadic # Nomads do not care about Culture
has_trait = nomadic_philosophy
}
culture = {
cultural_acceptance = { target = scope:recipient.culture value <= 90 }
}
}
}
}
# MAIN
modifier = { #Different faith, no pluralism.
desc = offer_vassalization_interaction_aibehavior_differentfaith_tt
trigger = {
scope:actor = {
NOR = { # Nomads do not care about Faith
government_has_flag = government_is_nomadic
has_trait = nomadic_philosophy
}
}
scope:recipient = {
NOR = { #Of two different faiths AND the potential vassal's faith is not pluralistic.
faith = scope:actor.faith
faith = { has_doctrine = doctrine_pluralism_pluralistic }
}
}
}
add = {
value = -40
if = {
limit = {
scope:recipient.faith = {
faith_hostility_level = {
target = scope:actor.faith
value >= faith_hostile_level
}
}
}
add = -40
}
if = {
limit = {
scope:recipient.faith = {
faith_hostility_level = {
target = scope:actor.faith
value >= faith_evil_level
}
}
}
add = -40
}
}
}
modifier = { #Different faith, pluralism.
desc = offer_vassalization_interaction_aibehavior_differentfaith_tt
trigger = {
scope:actor = {
NOR = { # Nomads do not care about Faith
government_has_flag = government_is_nomadic
has_trait = nomadic_philosophy
}
}
scope:recipient = {
NOT = {
faith = scope:actor.faith
}
NOT = {
scope:actor.faith = { has_doctrine = doctrine_pluralism_pluralistic }
}
faith = { has_doctrine = doctrine_pluralism_pluralistic }
}
}
add = {
value = -20
if = {
limit = {
scope:recipient.faith = {
faith_hostility_level = {
target = scope:actor.faith
value >= faith_hostile_level
}
}
}
add = -20
}
if = {
limit = {
scope:recipient.faith = {
faith_hostility_level = {
target = scope:actor.faith
value >= faith_evil_level
}
}
}
add = -20
}
}
}
modifier = { #Different faith, both have pluralism.
desc = offer_vassalization_interaction_aibehavior_differentfaith_tt
trigger = {
scope:actor = {
NOR = { # Nomads do not care about Faith
government_has_flag = government_is_nomadic
has_trait = nomadic_philosophy
}
}
scope:recipient = {
NOT = {
faith = scope:actor.faith
}
scope:actor.faith = { has_doctrine = doctrine_pluralism_pluralistic }
faith = { has_doctrine = doctrine_pluralism_pluralistic }
}
}
add = {
value = -10
if = {
limit = {
scope:recipient.faith = {
faith_hostility_level = {
target = scope:actor.faith
value >= faith_hostile_level
}
}
}
add = -10
}
if = {
limit = {
scope:recipient.faith = {
faith_hostility_level = {
target = scope:actor.faith
value >= faith_evil_level
}
}
}
add = -10
}
}
}
modifier = { #I am a King!
desc = offer_vassalization_interaction_aibehavior_hightier_tt
trigger = {
scope:recipient = { highest_held_title_tier = tier_kingdom }
}
add = {
value = -50
if = {
limit = {
scope:recipient = {
OR = {
government_has_flag = government_is_republic
government_has_flag = government_is_theocracy
}
}
}
add = -50
}
if = {
limit = {
scope:recipient.sub_realm_size >= 5
}
add = -50
}
if = {
limit = {
scope:recipient.sub_realm_size >= 10
}
add = -100
}
if = {
limit = {
scope:recipient.sub_realm_size >= 20
}
add = -100
}
if = {
limit = {
scope:actor = {
is_ai = yes
}
}
add = -10000
}
}
}
modifier = { #I am an Emperor!!!
desc = offer_vassalization_interaction_aibehavior_hightier_tt
trigger = {
scope:recipient = { highest_held_title_tier >= tier_empire }
}
add = {
value = -200
if = {
limit = {
scope:recipient = {
OR = {
government_has_flag = government_is_republic
government_has_flag = government_is_theocracy
}
}
}
add = -100
}
if = {
limit = {
scope:recipient.sub_realm_size >= 10
}
add = -100
}
if = {
limit = {
scope:recipient.sub_realm_size >= 20
}
add = -200
}
if = {
limit = {
scope:recipient.sub_realm_size >= 40
}
add = -200
}
if = {
limit = {
scope:actor = {
is_ai = yes
}
}
add = -10000
}
}
}
modifier = { #I fought an independence war against you.
desc = offer_vassalization_interaction_aibehavior_independence_war_tt
trigger = {
scope:recipient = {
exists = var:independence_war_former_liege
var:independence_war_former_liege = scope:actor
}
}
add = -300
}
modifier = { # We are both nomadic
desc = interaction_nonnomad_vs_nomad
trigger = {
scope:actor = {
government_has_flag = government_is_nomadic
}
scope:recipient = {
government_has_flag = government_is_nomadic
}
}
add = 25
}
modifier = { # Isolationist tradition
desc = isolationist_reason
trigger = {
NOT = {
scope:actor.culture = scope:recipient.culture
}
scope:recipient.culture = {
has_cultural_tradition = tradition_isolationist
}
}
add = -25
}
modifier = { #Bankrupt
desc = bankrupt_reason
trigger = {
scope:actor.gold <= -1
}
add = -100
}
modifier = { #Wide difference in rank
desc = offer_vassalization_interaction_aibehavior_widetitletier_tt
trigger = {
scope:actor = {
tier_difference = {
target = scope:recipient
value > 2
}
}
}
add = 40
}
modifier = { # Allied
desc = offer_vassalization_interaction_aibehavior_allied_tt
trigger = {
scope:recipient = {
is_allied_to = scope:actor
}
}
add = 25
}
modifier = { # Is the Rightful Liege of recipient
desc = offer_vassalization_interaction_aibehavior_rightfulliegetitleholder_tt
trigger = {
scope:actor = { is_rightful_liege_of = scope:recipient }
}
add = 50
}
modifier = { # Encircled
desc = offer_vassalization_interaction_aibehavior_encircled_tt
trigger = {
scope:recipient = {
NOT = {
any_neighboring_top_liege_realm_owner = {
NOT = {
this = scope:actor
}
}
}
NOT = {
any_realm_county = {
is_coastal_county = yes
}
}
}
}
add = 50
}
modifier = { #Distant Realm — Overseas Connection
desc = offer_vassalization_interaction_aibehavior_distantrealm_tt
trigger = {
scope:actor = {
character_is_realm_neighbor = scope:recipient
NOT = { #Ibiza should want to be a vassal of Mallorca, etc.
character_is_land_realm_neighbor = scope:recipient
scope:actor = { is_rightful_liege_of = scope:recipient }
}
}
}
add = -50
}
modifier = { #Distant Realm — No Connection
desc = offer_vassalization_interaction_aibehavior_distantrealm_tt
trigger = {
scope:actor = {
NOT = {
character_is_realm_neighbor = scope:recipient
}
}
scope:recipient.capital_province = { squared_distance = { target = scope:actor.capital_province value < 200000 } }
}
add = -100
}
modifier = { #Remote Realm.
desc = offer_vassalization_interaction_aibehavior_remoterealm_tt
trigger = {
scope:actor = {
NOT = {
character_is_realm_neighbor = scope:recipient
}
}
scope:recipient.capital_province = { squared_distance = { target = scope:actor.capital_province value >= 200000 } }
}
add = -200
}
modifier = {
desc = offer_vassalization_interaction_aibehavior_power_tt_submission_or_ruin
add = {
value = 1
subtract = {
value = scope:recipient.max_military_strength # Intended for recipient to use max, to avoid having vassalizations become too easy for weakened realms
divide = { value = scope:actor.current_military_strength min = 1 }
}
multiply = 100
ceiling = yes
}
}
modifier = {
desc = offer_vassalization_interaction_aibehavior_vassal_opinion_tt
trigger = {
scope:actor = {
number_of_powerful_vassals >= 1
}
}
add = {
value = 0
scope:actor = {
every_powerful_vassal = {
if = {
limit = {
save_temporary_opinion_value_as = {
name = vassal_opinion
target = scope:actor
}
}
add = scope:vassal_opinion
}
}
if = {
limit = {
number_of_powerful_vassals > 0
}
divide = number_of_powerful_vassals
}
else = {
divide = 10
}
}
divide = 10
}
}
# MINOR
modifier = { #Friend modifier.
desc = offer_vassalization_interaction_aibehavior_friend_tt
trigger = {
scope:recipient = {
has_relation_friend = scope:actor
NOT = { has_relation_best_friend = scope:actor }
}
}
add = 20
}
modifier = { #Best Friend modifier.
desc = offer_vassalization_interaction_aibehavior_best_friend_tt
trigger = {
scope:recipient = {
has_relation_best_friend = scope:actor
}
}
add = 50
}
modifier = { #Lover modifier.
desc = interaction_lover
trigger = {
scope:recipient = {
has_relation_lover = scope:actor
NOT = { has_relation_soulmate = scope:actor }
}
}
add = 20
}
modifier = { #Soulmate modifier.
desc = interaction_soulmate
trigger = {
scope:recipient = {
has_relation_soulmate = scope:actor
}
}
add = 50
}
modifier = { #Rivalry modifier.
desc = offer_vassalization_interaction_aibehavior_rival_tt
trigger = {
scope:recipient = {
has_relation_rival = scope:actor
NOT = { has_relation_nemesis = scope:actor }
}
}
add = -200
}
modifier = { #Nemesis modifier.
desc = offer_vassalization_interaction_aibehavior_nemesis_tt
trigger = {
scope:recipient = {
has_relation_nemesis = scope:actor
}
}
add = -2000
}
modifier = { #Same Dynasty modifier.
desc = offer_vassalization_interaction_aibehavior_dynasty_tt
trigger = {
scope:recipient = {
dynasty = scope:actor.dynasty
}
}
add = 25
}
modifier = { # Same language
add = 5
desc = speaks_same_language_interaction_reason
trigger = {
scope:actor = {
knows_language_of_culture = scope:recipient.culture
}
}
}
modifier = { # Iberian Struggle, less likely for outsiders to vassalize inside
add = -35
desc = iberian_struggle_reason_reason
trigger = {
scope:actor = {
NOT = {
any_character_struggle = { is_struggle_type = iberian_struggle }
}
}
scope:recipient = {
any_character_struggle = { is_struggle_type = iberian_struggle }
}
}
}
modifier = { #Ageism modifier vs kids.
desc = offer_vassalization_interaction_aibehavior_child_tt
trigger = {
scope:actor = {
age < 12
}
scope:recipient = {
age > 16
}
}
add = -5
}
modifier = { #Illegitimacy modifier.
desc = offer_vassalization_interaction_aibehavior_illegitimate_tt
trigger = {
scope:actor = {
OR = {
AND = {
has_trait = bastard
scope:recipient = {
faith = { NOT = { has_doctrine = doctrine_bastardry_none } }
}
}
has_trait = denounced
has_trait = disinherited
}
}
}
add = -10
}
modifier = { #Claimant modifier.
desc = offer_vassalization_interaction_aibehavior_claimant_tt
trigger = {
scope:actor.primary_title = {
scope:recipient = {
has_claim_on = prev
}
}
}
add = -50
}
modifier = { # Ambitious
desc = TAKE_THE_VOWS_AMBITIOUS
trigger = {
scope:recipient = {
has_trait = ambitious
}
}
add = -30
}
modifier = { # Brave
desc = INTERACTION_BRAVE
trigger = {
scope:recipient = {
has_trait = brave
}
}
add = -30
}
modifier = { # wrathful
desc = INTERACTION_WRATHFUL
trigger = {
scope:recipient = {
has_trait = wrathful
}
}
add = -40
}
modifier = { # vengeful
desc = INTERACTION_VENGEFUL
trigger = {
scope:recipient = {
has_trait = vengeful
}
}
add = -20
}
modifier = { # peasant leader
desc = INTERACTION_PEASANT_LEADER
trigger = {
scope:recipient = {
has_trait = peasant_leader
}
}
add = -40
}
modifier = { # populist leader
desc = INTERACTION_POPULIST_LEADER
trigger = {
scope:recipient = {
has_trait = populist_leader
}
}
add = -100
}
modifier = { #martial leader
desc = INTERACTION_MARTIAL_EDUCATION
trigger = {
scope:recipient = {
OR = {
has_education_martial_trigger = yes
has_martial_lifestyle_trait_trigger = yes
}
}
}
add = -10
}
modifier = { # Arrogant
desc = INTERACTION_ARROGANT
trigger = {
scope:recipient = {
has_trait = arrogant
}
}
add = -60
}
modifier = { # Fickle
desc = INTERACTION_FICKLE
trigger = {
scope:recipient = {
has_trait = fickle
}
}
add = -10
}
modifier = { # Stubborn
desc = INTERACTION_STUBBORN
trigger = {
scope:recipient = {
has_trait = stubborn
}
}
add = -180
}
modifier = { # Trusting
desc = TAKE_THE_VOWS_TRUSTING
trigger = {
scope:recipient = {
has_trait = trusting
}
}
add = 20
}
modifier = { # Humble
desc = INTERACTION_HUMBLE
trigger = {
scope:recipient = {
has_trait = humble
}
}
add = 20
}
modifier = { # Content
desc = INTERACTION_CONTENT
trigger = {
scope:recipient = {
has_trait = content
}
}
add = 20
}
modifier = { # Craven
desc = INTERACTION_CRAVEN
trigger = {
scope:recipient = {
has_trait = craven
}
}
add = 100
}
modifier = { # FP3 modifier.
desc = GENERIC_YOUR_PIETY_LEVEL_MODIFIER
trigger = { scope:actor = { any_character_struggle = { has_struggle_phase_parameter = piety_level_affects_vassalage_acceptance } } }
add = {
value = {
value = scope:actor.piety_level
subtract = low_piety_level
}
multiply = 10
}
}
# OPINION INFLUENCE
modifier = {
add = intimidated_reason_value
scope:recipient = {
has_dread_level_towards = {
target = scope:actor
level = 1
}
}
desc = INTIMIDATED_REASON
}
modifier = {
add = cowed_reason_value
scope:recipient = {
has_dread_level_towards = {
target = scope:actor
level = 2
}
}
desc = COWED_REASON
}
opinion_modifier = { #Compare Opinion modifier - Clans care more about opinion
trigger = {
scope:actor = {
government_has_flag = government_is_clan
}
scope:recipient = {
government_has_flag = government_is_clan
}
}
who = scope:recipient
opinion_target = scope:actor
multiplier = 0.7
}
opinion_modifier = { #Compare Opinion modifier.
trigger = {
OR = {
scope:actor = {
NOT = { government_has_flag = government_is_clan }
}
scope:recipient = {
NOT = { government_has_flag = government_is_clan }
}
}
}
who = scope:recipient
opinion_target = scope:actor
multiplier = 0.35
}
# DIPLOMATIC COURT GRANDEUR BONUS
modifier = {
trigger = {
scope:actor = {
has_royal_court = yes
has_dlc_feature = royal_court
has_court_type = court_diplomatic
court_grandeur_current_level >= 1
}
}
add = {
value = scope:actor.court_grandeur_current
if = {
limit = { # Reduce the bonus if you are below your expected level
scope:actor = {
court_grandeur_current_level < court_grandeur_minimum_expected_level
}
}
multiply = 0.15
}
else = {
multiply = 0.3
}
}
desc = DIPLOMATIC_COURT_ACCEPTANCE_INCREASE_REASON
}
# CONTRACT OPTIONS
modifier = {
add = 20
scope:actor = {
faith = {
has_doctrine = doctrine_pluralism_pluralistic
}
}
scope:recipient = {
OR = {
government_has_flag = government_is_feudal
government_has_flag = government_is_clan
}
}
desc = CONTRACT_RELIGIOUS_EXEMPTION_REASON
}
modifier = {
add = 30
scope:low_obligations = yes
desc = CONTRACT_MERCIFUL_KHAN_REASON
}
modifier = {
add = -10
scope:send_siege_weapons = yes
desc = CONTRACT_SEND_SIEGE_WEAPONS_REASON
}
modifier = {
add = -50
scope:recipient = {
NOT = {
government_has_flag = government_is_herder
}
}
scope:send_tribute = yes
desc = CONTRACT_SEND_TRIBUTE_REASON
}
# INSPECTION BONUSES
modifier = {
desc = "INSPECTION_REASON"
add = 5
scope:recipient = {
has_variable_list = lesser_inspection_bonus
is_target_in_variable_list = {
name = lesser_inspection_bonus
target = scope:actor
}
}
}
modifier = {
desc = "INSPECTION_REASON"
add = 10
scope:recipient = {
has_variable_list = inspection_bonus
is_target_in_variable_list = {
name = inspection_bonus
target = scope:actor
}
}
}
modifier = {
desc = "INSPECTION_REASON_REWARD"
add = 10
scope:recipient = {
has_variable_list = inspection_reward
is_target_in_variable_list = {
name = inspection_reward
target = scope:actor
}
}
}
modifier = {
desc = "INSPECTION_REASON_REWARD_FOCUSED"
add = 10
scope:actor = { has_character_modifier = inspection_reward_focused_vassal_acceptance }
}
# LOW LEGITIMACY
modifier = {
desc = "LOW_LEGITIMACY_REASON"
add = -10
scope:actor = {
has_legitimacy_flag = reduced_vassalization_acceptance
}
}
modifier = {
desc = "LOW_LEGITIMACY_REASON"
add = -20
scope:actor = {
has_legitimacy_flag = very_reduced_vassalization_acceptance
}
}
modifier = {
desc = "LOW_LEGITIMACY_REASON"
add = -50
scope:actor = {
has_legitimacy_flag = massively_reduced_vassalization_acceptance
}
}
# HIGH LEGITIMACY
modifier = {
desc = "HIGH_LEGITIMACY_REASON"
add = 25
scope:actor = {
has_legitimacy_flag = increased_vassalization_acceptance
}
}
modifier = {
desc = "HIGH_LEGITIMACY_REASON"
add = 50
scope:actor = {
has_legitimacy_flag = very_increased_vassalization_acceptance
}
}
modifier = {
desc = "HIGH_LEGITIMACY_REASON"
add = 75
scope:actor = {
has_legitimacy_flag = extra_increased_vassalization_acceptance
}
}
# INFLUENCE
modifier = {
add = 25
scope:influence_send_option = yes
desc = INFLUENCE_INTERACTION_ACCEPTANCE_SEND_OPTION
}
#HISTORICALLY ADMIN PEOPLES WANT TO BE ADMIN
modifier = {
add = 30
scope:actor = {
government_has_flag = government_is_administrative
}
scope:recipient = {
culture = {
OR = {
this = culture:greek
any_parent_culture_or_above = {
this = culture:greek
}
this = culture:han
any_parent_culture_or_above = {
this = culture:han
}
}
}
}
desc = "HISTORICAL_ADMIN_REASON"
}
modifier = { # AI-only weights, keep the pope from vassalizing too fast
trigger = {
exists = faith:catholic.religious_head
faith:catholic.religious_head = scope:actor
scope:actor = { is_ai = yes }
}
add = -50
}
modifier = {
trigger = {
scope:actor = {
has_variable = severed_head_vassalization
var:severed_head_vassalization = {
this = scope:recipient
}
}
}
add = 200
desc = COWED_BY_SEVERED_HEAD_MODIFIER
}
modifier = { #You're distracted by another war
desc = IS_AT_WAR_REASON
trigger = {
scope:actor = {
is_at_war = yes
}
}
add = -20
}
modifier = { #You're distracted by multiple wars
desc = HAS_MULTIPLE_WARS_REASON
trigger = {
scope:actor = {
any_character_war = {
count >= 2
exists = this
}
}
}
add = {
value = 0
scope:actor = {
every_character_war = {
add = -15
}
}
}
}
modifier = { #You have waged terrifying wars of devastation...
desc = WAGED_KHANS_TERROR_WARS_REASON
trigger = {
scope:actor = {
has_variable = gok_terror_war_value
}
}
add = scope:actor.var:gok_terror_war_value
}
#Swift initial spread with nomads for mongol invasion
modifier = {
scope:actor = {
is_ai = yes
realm_size < 50
any_owned_story = {
story_type = story_mongol_invasion
}
}
scope:recipient = {
is_ai = yes
government_has_flag = government_is_nomadic
realm_size < 10
highest_held_title_tier < tier_kingdom
}
add = 100
}
modifier = { # Pacing needed for AI genghis
trigger = {
scope:actor = {
is_ai = yes
}
scope:recipient = {
is_ai = yes
ai_boldness >= 0
OR = {
realm_size > 10
is_confederation_member = yes
}
}
#During genghis' initial expanding in Mongolia, nomads are exempt from this malus
NAND = {
scope:recipient = {
government_has_flag = government_is_nomadic
highest_held_title_tier < tier_kingdom
}
scope:actor = {
realm_size < 100
any_owned_story = {
story_type = story_mongol_invasion
}
}
}
}
add = -1000
}
}
# Low starting obligations
send_option = {
is_shown = {
scope:recipient = {
NOT = {
government_has_flag = government_is_herder
}
}
}
flag = low_obligations
localization = lenient_obligations
}
#Normal obligations for normies
send_option = {
is_shown = {
scope:recipient = {
OR = {
highest_held_title_tier < tier_duchy
government_has_flag = government_is_herder
}
}
}
starts_enabled = { always = yes }
flag = normal_obligations
localization = gok_normal_obligations
}
#Demand army
send_option = {
is_shown = {
scope:recipient = {
NOT = {
government_has_flag = government_is_herder
}
highest_held_title_tier >= tier_duchy
}
}
flag = send_army
localization = send_army
starts_enabled = {
scope:recipient = {
mpo_gok_auto_cultural_maa_trigger = yes
highest_held_title_tier >= tier_duchy
}
}
}
#Demand siege weapons
send_option = {
is_shown = {
scope:recipient = {
NOR = {
government_has_flag = government_is_herder
government_has_flag = government_is_tribal
government_has_flag = government_is_nomadic
}
highest_held_title_tier >= tier_duchy
}
}
flag = send_siege_weapons
localization = send_siege_weapons
starts_enabled = {
scope:recipient = {
mpo_gok_auto_cultural_maa_trigger = no
highest_held_title_tier >= tier_duchy
}
}
}
#Demand immediate tribute
send_option = {
is_shown = {
scope:recipient = {
NOT = {
government_has_flag = government_is_herder
}
}
}
flag = send_tribute
localization = send_tribute
}
send_option = { # EP3 Influence
is_shown = {
scope:actor = {
government_has_flag = government_has_influence
}
}
is_valid = {
scope:actor = { influence >= medium_influence_value }
}
flag = influence_send_option
localization = TRADE_INFLUENCE_FOR_BETTER_AI_ACCEPTANCE
}
send_options_exclusive = yes
on_accept = {
scope:actor = {
save_scope_as = gok
}
mpo_gok_offer_submission_effect = yes
scope:recipient = {
add_character_flag = {
flag = accepted_gok_submission
years = 3
}
}
scope:actor = {
#If recipient isn't a big deal, fire a hidden event that just creates a feed notification (to minimize khan clicking)
if = {
limit = {
scope:recipient = {
NOR = {
highest_held_title_tier >= tier_kingdom
sub_realm_size >= 10
}
}
}
trigger_event = mpo_greatest_of_khans.0020
}
else = {
trigger_event = mpo_greatest_of_khans.0021
}
## Remove bonus, it's been used
if = {
limit = { has_character_modifier = event_bonus_to_vassal_accept }
remove_character_modifier = event_bonus_to_vassal_accept
}
if = { # FP3
limit = { any_character_struggle = { has_struggle_phase_parameter = offer_vassalization_removes_disloyalty } }
scope:recipient = { remove_trait = disloyal }
}
}
}
on_decline = {
scope:recipient = {
save_scope_as = gok_victim
if = {
limit = {
is_tributary_of = scope:actor
}
end_tributary = yes
}
}
scope:actor = {
show_as_tooltip = {
mpo_gok_offer_submission_refusal_effect = yes
}
trigger_event = mpo_greatest_of_khans.0022
}
}
ai_potential = {
any_owned_story = {
OR = {
story_type = story_greatest_of_khans
story_type = story_mongol_invasion
}
}
is_independent_ruler = yes
#Not defending or losing an attacking war
NOT = {
any_character_war = {
OR = {
AND = {
any_war_attacker = {
this = root
}
attacker_war_score < 0
}
any_war_defender = {
this = root
}
}
}
}
#Already engaged in three wars
any_character_war = {
count >= 3
exists = this
}
}
ai_will_do = {
base = 100
# AI prefers to receive higher obligations from their vassals when possible.
modifier = {
factor = 2
scope:low_obligations = yes
}
modifier = {
factor = 3
scope:normal_obligations = yes
}
modifier = {
factor = 4
scope:send_army = yes
}
modifier = {
factor = 4
scope:send_siege_weapons = yes
}
modifier = {
factor = 5
scope:send_tribute = yes
}
modifier = {
factor = 3
scope:recipient = {
sub_realm_size < 3
}
}
#really want to get of little realms we encircle
modifier = {
factor = 10
scope:recipient = {
realm_size <= 20
NOT = {
any_neighboring_top_liege_realm_owner = {
NOT = {
this = scope:actor
}
}
}
}
}
#Would rather just destroy someone they hate or distrust
modifier = {
factor = 0
OR = {
has_relation_rival = scope:recipient
opinion = {
target = scope:recipient
value <= -90
}
scope:recipient = {
has_trait = disloyal
}
scope:recipient = {
has_trait = conqueror
}
scope:recipient = {
has_trait = ambitious
}
scope:recipient = {
ai_greed >= medium_positive_ai_value
ai_honor <= medium_negative_ai_value
}
}
}
#Should only attack China when very strong
modifier = {
factor = 0.1
scope:recipient = {
primary_title = title:h_china
current_military_strength > scope:actor.half_current_military_strength
}
}
modifier = {
factor = 0
scope:recipient = {
current_military_strength > 0
scope:actor.current_military_strength > 0
current_military_strength > scope:actor.current_military_strength
}
}
}
}
### Negotiate Obedience
mpo_negotiate_obedience_interaction = {
category = interaction_category_vassal
icon = demand_obedience
desc = mpo_negotiate_obedience_interaction_desc
interface_priority = 80
common_interaction = yes
ai_frequency_by_tier = {
barony = 0
county = 24
duchy = 6
kingdom = 6
empire = 6
hegemony = 6
}
popup_on_receive = yes
pause_on_receive = yes
is_shown = {
scope:actor = {
government_allows = obedience
}
scope:recipient = {
is_ai = yes
obedience_target ?= scope:actor
is_obedient = no
}
}
cost = {
prestige = {
value = medium_prestige_value
if = {
limit = {
scope:actor = {
OR = {
has_realm_law = nomadic_authority_2
has_realm_law = meritocratic_bureaucracy_1
}
}
}
multiply = 1.25
}
else_if = {
limit = {
scope:actor = {
OR = {
has_realm_law = nomadic_authority_3
has_realm_law = meritocratic_bureaucracy_2
}
}
}
multiply = 1.5
}
else_if = {
limit = {
scope:actor = {
OR = {
has_realm_law = nomadic_authority_4
has_realm_law = meritocratic_bureaucracy_3
}
}
}
multiply = 1.75
}
else_if = {
limit = {
scope:actor = { has_realm_law = nomadic_authority_5 }
}
multiply = 2
}
}
}
is_valid_showing_failures_only = {
scope:actor = {
is_imprisoned = no
NOT = {
is_at_war_with = scope:recipient
}
}
trigger_if = {
limit = {
scope:recipient = { is_landed = yes is_independent_ruler = no }
}
scope:recipient = { is_vassal_or_below_of = scope:actor }
}
trigger_else_if = {
limit = {
scope:recipient = { is_independent_ruler = yes }
}
scope:actor = {
custom_tooltip = {
text = mpo_interaction_not_neighbouring_tt
any_land_neighboring_realm_with_tributaries_owner = {
this = scope:recipient
}
}
}
}
trigger_else = {}
}
ai_potential = {
government_allows = obedience
primary_title.tier >= tier_duchy
prestige >= major_prestige_value
}
send_option = {
is_valid = {
scope:actor = {
has_usable_hook = scope:recipient
}
}
flag = hook
localization = GENERIC_SPEND_A_HOOK
}
send_option = {
is_valid = {
scope:actor = {
gold >= medium_gold_value
}
}
flag = gold
localization = OFFER_GOLD_FOR_BETTER_AI_ACCEPTANCE
}
send_option = {
is_valid = {
scope:actor = {
trigger_if = {
limit = { government_has_flag = government_is_nomadic }
domicile ?= {
herd >= medium_herd_value
}
}
trigger_else = {
government_has_flag = government_is_nomadic
}
}
}
flag = herd
localization = OFFER_HERD_FOR_BETTER_AI_ACCEPTANCE
}
send_options_exclusive = no
ai_accept = {
base = -95
modifier = {
trigger = {
scope:hook ?= yes
}
add = 100
desc = MIGRATION_HOOK_USED
}
modifier = {
trigger = {
scope:gold ?= yes
}
add = 100
desc = TRADE_GOLD_FOR_BETTER_AI_ACCEPTANCE_TT
}
modifier = {
trigger = {
scope:herd ?= yes
}
add = 100
desc = TRADE_HERD_FOR_BETTER_AI_ACCEPTANCE_TT
}
modifier = {
add = 5
scope:actor = {
OR = {
has_realm_law = nomadic_authority_2
has_realm_law = meritocratic_bureaucracy_1
}
}
desc = DEMAND_OBEDIENCE_INTERACTION_DOMINANCE_ACCEPTANCE
}
modifier = {
add = 10
scope:actor = {
OR = {
has_realm_law = nomadic_authority_3
has_realm_law = meritocratic_bureaucracy_2
}
}
desc = DEMAND_OBEDIENCE_INTERACTION_DOMINANCE_ACCEPTANCE
}
modifier = {
add = 20
scope:actor = {
OR = {
has_realm_law = nomadic_authority_4
has_realm_law = meritocratic_bureaucracy_3
}
}
desc = DEMAND_OBEDIENCE_INTERACTION_DOMINANCE_ACCEPTANCE
}
modifier = {
add = 100
scope:actor = { has_realm_law = nomadic_authority_5 }
desc = DEMAND_OBEDIENCE_INTERACTION_DOMINANCE_ACCEPTANCE
}
modifier = {
add = -30
scope:actor = { legitimacy_level = 1 }
desc = DEMAND_OBEDIENCE_INTERACTION_LEGITIMACY_ACCEPTANCE
}
modifier = {
add = -20
scope:actor = { legitimacy_level = 2 }
desc = DEMAND_OBEDIENCE_INTERACTION_LEGITIMACY_ACCEPTANCE
}
modifier = {
add = 5
scope:actor = { legitimacy_level = 3 }
desc = DEMAND_OBEDIENCE_INTERACTION_LEGITIMACY_ACCEPTANCE
}
modifier = {
add = 15
scope:actor = { legitimacy_level = 4 }
desc = DEMAND_OBEDIENCE_INTERACTION_LEGITIMACY_ACCEPTANCE
}
modifier = {
add = 30
scope:actor = { legitimacy_level = 5 }
desc = DEMAND_OBEDIENCE_INTERACTION_LEGITIMACY_ACCEPTANCE
}
modifier = {
add = {
value = ai_boldness
multiply = -1
divide = 2
}
NOT = { ai_boldness = 0 }
desc = ARTIFACT_BOLDNESS_REASON
}
modifier = {
add = {
value = ai_greed
multiply = -1
divide = 2
}
ai_greed > 0
desc = ARTIFACT_GREED_REASON
}
modifier = {
add = {
value = ai_honor
divide = 4
}
NOT = { ai_honor = 0 }
desc = ARTIFACT_HONOR_REASON
}
modifier = {
add = -20
scope:recipient = {
has_trait = brave
}
desc = BLACKMAIL_INTERACTION_BRAVE_ACCEPTANCE
}
modifier = {
add = -50
scope:recipient = {
has_trait = arrogant
}
desc = BLACKMAIL_INTERACTION_ARROGANT_ACCEPTANCE
}
modifier = {
add = 25
scope:recipient = {
has_trait = trusting
}
desc = BLACKMAIL_INTERACTION_TRUSTING_ACCEPTANCE
}
modifier = {
add = -50
scope:recipient = {
has_trait = disloyal
}
desc = DEMAND_OBEDIENCE_INTERACTION_DISLOYAL_ACCEPTANCE
}
modifier = {
add = -500
scope:actor = { government_has_flag = government_is_nomadic }
scope:recipient = {
exists = domicile
domicile.herd >= 100
domicile.herd > scope:actor.domicile.herd
}
desc = DEMAND_OBEDIENCE_INTERACTION_HERD_ACCEPTANCE
}
modifier = {
add = -500
scope:recipient = {
current_military_strength >= 100
current_military_strength > scope:actor.current_military_strength
}
desc = DEMAND_OBEDIENCE_INTERACTION_MILITARY_MIGHT_ACCEPTANCE
}
modifier = {
add = 10
scope:recipient = {
has_trait = craven
}
desc = BLACKMAIL_INTERACTION_CRAVEN_ACCEPTANCE
}
modifier = {
add = 10
scope:recipient = {
has_trait = content
}
desc = DEMAND_OBEDIENCE_INTERACTION_CONTENT_ACCEPTANCE
}
modifier = {
add = 25
any_character_situation = {
any_situation_sub_region = {
has_sub_region_phase_parameter = the_great_steppe_easier_obedience
any_situation_sub_region_participant_group = {
participant_group_type = nomad_rulers_capital
participant_group_has_character = scope:actor
}
}
}
desc = DEMAND_OBEDIENCE_INTERACTION_ZUD_ACCEPTANCE
}
bp2_hostage_dread_modifier = yes
}
ai_will_do = {
base = 0
modifier = {
scope:herd ?= yes
add = -1
}
modifier = {
scope:gold ?= yes
add = -1
}
modifier = {
scope:hook ?= yes
add = -1
}
modifier = {
scope:recipient = {
is_kurultai_trigger = yes
}
add = 100
}
}
cooldown_against_recipient = { years = 10 }
ai_targets = { # They will try to get a Stable Succession
ai_recipients = councillors
}
on_accept = {
scope:actor = {
send_interface_toast = {
type = event_toast_effect_good
title = mpo_demand_obedience_interaction_toast
left_icon = scope:recipient
# Pay what you need to pay first
if = {
limit = { scope:hook = yes }
use_hook = scope:recipient
}
if = {
limit = { scope:gold = yes }
pay_short_term_gold = {
target = scope:recipient
gold = medium_gold_value
}
}
if = {
limit = { scope:herd = yes }
if = {
limit = { exists = scope:recipient.domicile }
pay_herd = {
target = scope:recipient
value = domicile.medium_herd_value
}
}
else = { # For a nice tooltip
show_as_tooltip = {
pay_herd = {
target = scope:recipient
value = domicile.medium_herd_value
}
}
hidden_effect = { domicile = { change_herd = medium_herd_loss } }
}
}
scope:recipient = {
add_opinion = {
target = scope:actor
modifier = obedience_opinion
}
}
}
}
}
}
join_confederation_interaction = {
category = interaction_category_diplomacy
icon = offer_confederation_interaction
desc = join_confederation_interaction_desc
#ai_targets = {
# ai_recipients = neighboring_rulers_including_tributary_borders
#}
#ai_frequency = 0
popup_on_receive = yes
pause_on_receive = yes
common_interaction = yes
cooldown_against_recipient = { years = 3 }
is_shown = {
scope:actor = {
is_playable_character = yes
is_independent_ruler = yes
OR = {
government_has_flag = government_is_nomadic
government_has_flag = government_is_tribal
}
highest_held_title_tier <= tier_duchy
is_landed = yes
is_confederation_member = no
}
scope:recipient.confederation ?= { is_house_based = no }
}
is_valid_showing_failures_only = {
scope:actor = {
valid_confederation_member_trigger = { CHARACTER = scope:recipient }
is_imprisoned = no
is_at_war = no
NOR = {
has_trait = conqueror
has_trait = greatest_of_khans
}
}
}
cost = {
prestige = {
value = 0
if = {
limit = { scope:prestige_send_option = yes }
add = scope:actor.minor_prestige_value
desc = PRESTIGE_INTERACTION_ACCEPTANCE_SEND_OPTION
}
}
}
greeting = positive
notification_text = OFFER_CONFEDERATION_INTERACTION_NOTIFICATION
ai_accept = {
base = -50
modifier = { # Cultural Acceptance
add = offer_vassalage_acceptance_value
desc = cultural_acceptance_interaction_reason
trigger = {
scope:actor = {
NOT = { has_same_culture_as = scope:recipient }
culture = {
cultural_acceptance = { target = scope:recipient.culture value <= 90 }
}
}
}
}
modifier = { #Different faith, no pluralism.
desc = offer_vassalization_interaction_aibehavior_differentfaith_tt
trigger = {
scope:recipient = {
NOR = { #Of two different faiths AND the potential vassal's faith is not pluralistic.
faith = scope:actor.faith
faith = { has_doctrine = doctrine_pluralism_pluralistic }
government_has_flag = government_is_nomadic
government_has_flag = government_is_herder
}
}
}
add = {
value = -30
if = {
limit = {
scope:recipient.faith = {
faith_hostility_level = {
target = scope:actor.faith
value >= faith_hostile_level
}
}
}
add = -30
}
if = {
limit = {
scope:recipient.faith = {
faith_hostility_level = {
target = scope:actor.faith
value >= faith_evil_level
}
}
}
add = -30
}
}
}
modifier = { #Different faith, pluralism.
desc = offer_vassalization_interaction_aibehavior_differentfaith_tt
trigger = {
scope:recipient = {
NOR = {
faith = scope:actor.faith
scope:actor.faith = { has_doctrine = doctrine_pluralism_pluralistic }
government_has_flag = government_is_nomadic
government_has_flag = government_is_herder
}
faith = { has_doctrine = doctrine_pluralism_pluralistic }
}
}
add = {
value = -15
if = {
limit = {
scope:recipient.faith = {
faith_hostility_level = {
target = scope:actor.faith
value >= faith_hostile_level
}
}
}
add = -15
}
if = {
limit = {
scope:recipient.faith = {
faith_hostility_level = {
target = scope:actor.faith
value >= faith_evil_level
}
}
}
add = -15
}
}
}
modifier = { #Different faith, both have pluralism.
desc = offer_vassalization_interaction_aibehavior_differentfaith_tt
trigger = {
scope:recipient = {
NOR = {
faith = scope:actor.faith
government_has_flag = government_is_nomadic
government_has_flag = government_is_herder
}
scope:actor.faith = { has_doctrine = doctrine_pluralism_pluralistic }
faith = { has_doctrine = doctrine_pluralism_pluralistic }
}
}
add = {
value = -10
if = {
limit = {
scope:recipient.faith = {
faith_hostility_level = {
target = scope:actor.faith
value >= faith_hostile_level
}
}
}
add = -10
}
if = {
limit = {
scope:recipient.faith = {
faith_hostility_level = {
target = scope:actor.faith
value >= faith_evil_level
}
}
}
add = -10
}
}
}
modifier = { #We just fought against each other.
desc = offer_vassalization_interaction_aibehavior_recent_war_tt
trigger = {
scope:recipient = {
any_truce_holder = {
this = scope:actor
}
}
# Ensure the truce wasn't purchased and is indeed from a war
scope:actor = {
NOT = {
has_purchased_truce_with_char = { TARGET = scope:recipient }
}
}
}
add = -40
}
modifier = { #You fought an independence war against me
desc = offer_confederation_independence_war_reverse_tt
trigger = {
scope:actor = {
exists = var:independence_war_former_liege
var:independence_war_former_liege = scope:recipient.top_liege
}
}
add = -100
}
modifier = { #I fought an independence war against you.
desc = offer_confederation_independence_war_tt
trigger = {
scope:recipient = {
exists = var:independence_war_former_liege
var:independence_war_former_liege = scope:actor.top_liege
}
}
add = -50
}
modifier = { #Bankrupt
desc = bankrupt_reason
trigger = {
scope:actor.gold <= -1
}
add = -30
}
modifier = { #Wide difference in rank
desc = offer_vassalization_interaction_aibehavior_widetitletier_tt
trigger = {
scope:actor = {
tier_difference = {
target = scope:recipient
value > 1
}
}
}
add = 10
}
modifier = { # Allied
desc = offer_vassalization_interaction_aibehavior_allied_tt
trigger = {
scope:recipient = {
is_allied_to = scope:actor
}
}
add = 50
}
modifier = { # Is the Rightful Liege of actor
desc = offer_vassalization_interaction_aibehavior_rightfulvassaltitleholder_tt
trigger = {
scope:recipient = { is_rightful_liege_of = scope:actor }
}
add = -75
}
modifier = { # Is the Rightful Liege of recipient
desc = offer_vassalization_interaction_aibehavior_rightfulliegetitleholder_tt
trigger = {
scope:actor = { is_rightful_liege_of = scope:recipient }
}
add = 20
}
modifier = { #No adjacency
desc = offer_vassalization_interaction_aibehavior_unconnectedrealm_tt
trigger = {
scope:recipient = {
NOT = {
any_land_neighboring_realm_with_tributaries_owner = {
OR = {
this = scope:actor
AND = {
exists = scope:actor.confederation
is_member_of_confederation = scope:actor.confederation
}
AND = {
exists = scope:actor.confederation
suzerain ?= {
is_member_of_confederation = scope:actor.confederation
}
}
suzerain ?= {
this = scope:actor
}
}
}
}
}
scope:recipient.capital_province = { squared_distance = { target = scope:actor.capital_province value < 100000 } }
}
add = -25
}
modifier = { #Distant Realm
desc = offer_vassalization_interaction_aibehavior_distantrealm_tt
trigger = {
scope:recipient = {
NOT = {
any_land_neighboring_realm_with_tributaries_owner = {
OR = {
this = scope:actor
AND = {
exists = scope:actor.confederation
is_member_of_confederation = scope:actor.confederation
}
AND = {
exists = scope:actor.confederation
suzerain ?= {
is_member_of_confederation = scope:actor.confederation
}
}
suzerain ?= {
this = scope:actor
}
}
}
}
}
scope:recipient.capital_province = { squared_distance = { target = scope:actor.capital_province value >= 100000 } }
}
add = -50
}
modifier = { #Remote Realm.
desc = offer_vassalization_interaction_aibehavior_remoterealm_tt
trigger = {
scope:recipient = {
NOT = {
any_land_neighboring_realm_with_tributaries_owner = {
OR = {
this = scope:actor
AND = {
exists = scope:actor.confederation
is_member_of_confederation = scope:actor.confederation
}
AND = {
exists = scope:actor.confederation
suzerain ?= {
is_member_of_confederation = scope:actor.confederation
}
}
suzerain ?= {
this = scope:actor
}
}
}
}
}
scope:recipient.capital_province = { squared_distance = { target = scope:actor.capital_province value >= 200000 } }
}
add = -125
}
#Relative power
modifier = {
desc = offer_vassalization_interaction_aibehavior_power_tt
add = {
value = 1
subtract = {
value = scope:recipient.max_military_strength # Intended for recipient to use max, to avoid having vassalizations become too easy for weakened realms
divide = { value = scope:actor.top_liege.current_military_strength min = 1 }
}
multiply = 5
ceiling = yes
min = -100
}
}
#Powerful vassal opinion of you
modifier = {
desc = offer_confederation_offerer_vassal_opinion_tt
trigger = {
scope:actor.top_liege = {
number_of_powerful_vassals >= 1
}
}
add = {
value = 0
scope:actor.top_liege = {
every_powerful_vassal = {
if = {
limit = {
save_temporary_opinion_value_as = {
name = vassal_opinion
target = scope:actor.top_liege
}
}
add = scope:vassal_opinion
}
}
if = {
limit = {
number_of_powerful_vassals > 0
}
divide = number_of_powerful_vassals
}
else = {
divide = 5
}
}
divide = 10
}
}
modifier = { #Friend modifier.
desc = offer_vassalization_interaction_aibehavior_friend_tt
trigger = {
scope:recipient = {
has_relation_friend = scope:actor
NOT = { has_relation_best_friend = scope:actor }
}
}
add = 25
}
modifier = { #Best Friend modifier.
desc = offer_vassalization_interaction_aibehavior_best_friend_tt
trigger = {
scope:recipient = {
has_relation_best_friend = scope:actor
}
}
add = 50
}
modifier = { #Lover modifier.
desc = interaction_lover
trigger = {
scope:recipient = {
has_relation_lover = scope:actor
NOT = { has_relation_soulmate = scope:actor }
}
}
add = 25
}
modifier = { #Soulmate modifier.
desc = interaction_soulmate
trigger = {
scope:recipient = {
has_relation_soulmate = scope:actor
}
}
add = 50
}
modifier = { #Rivalry modifier.
desc = offer_vassalization_interaction_aibehavior_rival_tt
trigger = {
scope:recipient = {
has_relation_rival = scope:actor
NOT = { has_relation_nemesis = scope:actor }
}
}
add = -200
}
modifier = { #Nemesis modifier.
desc = offer_vassalization_interaction_aibehavior_nemesis_tt
trigger = {
scope:recipient = {
has_relation_nemesis = scope:actor
}
}
add = -1000
}
modifier = { #Rivalry modifier.
desc = offer_vassalization_interaction_aibehavior_rival_confederation_tt
trigger = {
scope:recipient.confederation ?= {
any_confederation_member = {
NOT = { this = scope:recipient }
has_relation_rival = scope:actor
NOT = { has_relation_nemesis = scope:actor }
}
}
}
add = -100
}
modifier = { #Nemesis modifier.
desc = offer_vassalization_interaction_aibehavior_nemesis_confederation_tt
trigger = {
scope:recipient.confederation ?= {
any_confederation_member = {
NOT = { this = scope:recipient }
has_relation_nemesis = scope:actor
}
}
}
add = -500
}
modifier = { #Same Dynasty modifier.
desc = offer_vassalization_interaction_aibehavior_dynasty_tt
trigger = {
exists = scope:actor.dynasty
exists = scope:recipient.dynasty
scope:recipient = {
dynasty = scope:actor.dynasty
}
}
add = 25
}
modifier = { #Same House modifier.
desc = offer_vassalization_interaction_aibehavior_house_tt
trigger = {
exists = scope:actor.house
exists = scope:recipient.house
scope:recipient = {
house = scope:actor.house
}
}
add = 50
}
modifier = { # Same language
add = 20
desc = speaks_same_language_interaction_reason
trigger = {
scope:actor = {
knows_language_of_culture = scope:recipient.culture
}
}
}
modifier = { #Ageism modifier vs kids.
desc = offer_vassalization_interaction_aibehavior_child_tt
trigger = {
scope:actor = {
age < 12
}
scope:recipient = {
age > 16
}
}
add = -5
}
modifier = { #Illegitimacy modifier.
desc = confederation_offerer_illegitimate_tt
trigger = {
scope:actor.top_liege = {
OR = {
AND = {
has_trait = bastard
scope:recipient = {
faith = { NOT = { has_doctrine = doctrine_bastardry_none } }
}
}
has_trait = denounced
has_trait = disinherited
}
}
}
add = -20
}
modifier = { #Claimant modifier.
desc = confederation_interaction_aibehavior_claimant_tt
trigger = {
scope:actor = {
any_held_title = {
scope:recipient = {
has_claim_on = prev
}
}
}
}
add = -50
}
modifier = { # Ambitious
desc = TAKE_THE_VOWS_AMBITIOUS
trigger = {
scope:recipient = {
has_trait = ambitious
}
}
add = -25
}
modifier = { # Paranoid
desc = INTERACTION_PARANOID
trigger = {
scope:recipient = {
has_trait = paranoid
}
}
add = -25
}
modifier = { # Arrogant
desc = INTERACTION_ARROGANT
trigger = {
scope:recipient = {
has_trait = arrogant
}
}
add = -25
}
modifier = { # Greedy
desc = INTERACTION_GREEDY
trigger = {
scope:recipient = {
has_trait = greedy
}
}
add = -15
}
modifier = { # Trusting
desc = TAKE_THE_VOWS_TRUSTING
trigger = {
scope:recipient = {
has_trait = trusting
}
}
add = 15
}
modifier = { # Craven
desc = INTERACTION_CRAVEN
trigger = {
scope:recipient = {
has_trait = craven
}
}
add = 25
}
opinion_modifier = { #Compare Opinion modifier.
who = scope:recipient
opinion_target = scope:actor
multiplier = 0.35
}
modifier = {
add = intimidated_external_reason_value
scope:recipient = {
has_dread_level_towards = {
target = scope:actor
level = 1
}
}
desc = INTIMIDATED_REASON
}
modifier = {
add = cowed_external_reason_value
scope:recipient = {
has_dread_level_towards = {
target = scope:actor
level = 2
}
}
desc = COWED_REASON
}
# DIPLOMATIC COURT GRANDEUR BONUS
modifier = {
trigger = {
scope:actor.top_liege = {
has_royal_court = yes
has_dlc_feature = royal_court
has_court_type = court_diplomatic
court_grandeur_current_level >= 1
}
}
add = {
value = scope:actor.top_liege.court_grandeur_current
if = {
limit = { # Reduce the bonus if you are below your expected level
scope:actor.top_liege = {
court_grandeur_current_level < court_grandeur_minimum_expected_level
}
}
multiply = 0.15
}
else = {
multiply = 0.3
}
}
desc = DIPLOMATIC_COURT_ACCEPTANCE_INCREASE_REASON
}
# LOW LEGITIMACY
modifier = {
desc = "LOW_LEGITIMACY_REASON"
add = -10
scope:actor = {
has_legitimacy_flag = reduced_confederation_acceptance
}
}
modifier = {
desc = "LOW_LEGITIMACY_REASON"
add = -25
scope:actor = {
has_legitimacy_flag = very_reduced_confederation_acceptance
}
}
# HIGH LEGITIMACY
modifier = {
desc = "HIGH_LEGITIMACY_REASON"
add = 15
scope:actor = {
has_legitimacy_flag = increased_confederation_acceptance
}
}
modifier = {
desc = "HIGH_LEGITIMACY_REASON"
add = 40
scope:actor = {
has_legitimacy_flag = very_increased_confederation_acceptance
}
}
modifier = {
add = 50
scope:actor = {
culture = scope:recipient.culture
}
desc = "SAME_CULTURE_REASON"
}
modifier = {
add = -20
NOT = {
scope:actor = {
culture = scope:recipient.culture
}
}
scope:actor = {
NOR = {
culture = {
any_parent_culture_or_above = {
this = scope:recipient.culture
}
}
scope:recipient.culture = {
any_parent_culture_or_above = {
this = scope:actor.culture
}
}
culture = {
has_same_culture_heritage = scope:recipient.culture
}
}
}
desc = "DIFFERENT_CULTURE_REASON"
}
# Are you using a hook?
modifier = {
trigger = {
scope:hook ?= yes
}
add = 100
desc = LEGEND_HOOK_USED
}
# PRESTIGE
modifier = {
add = 40
scope:prestige_send_option = yes
desc = PRESTIGE_INTERACTION_ACCEPTANCE_SEND_OPTION
}
# HERD
modifier = {
add = 40
scope:herd_send_option = yes
desc = HERD_INTERACTION_ACCEPTANCE_SEND_OPTION
}
modifier = {
add = 20
desc = join_confederation_neighboring_foe_tt
scope:recipient = {
confederation_neighboring_foe_trigger = { CHARACTER = scope:recipient }
}
}
#No neighbor scaring them
modifier = {
add = -30
desc = NO_FRIGHTENING_NEIGHBOR_REASON
NOT = {
scope:recipient = {
confederation_neighboring_foe_trigger = { CHARACTER = scope:recipient }
}
}
}
#Neighbor is TERRIFYING them
modifier = {
add = 50
desc = TERRIFYING_NEIGHBOR_REASON
scope:recipient = {
save_temporary_scope_as = confederate
any_land_neighboring_realm_with_tributaries_owner = {
top_suzerain ?= {
NOR = {
this = scope:actor
this = scope:actor.top_liege
}
confederation_worthy_foe_strength_ratio_value <= 0.25
NOT = { is_allied_to = scope:recipient }
OR = {
highest_held_title_tier >= tier_kingdom
faith = {
faith_hostility_level = {
target = scope:recipient.faith
value >= faith_evil_level
}
}
has_trait = conqueror
has_trait = greatest_of_khans
any_owned_story = {
OR = {
story_type = story_greatest_of_khans
story_type = story_mongol_invasion
}
}
}
}
}
}
}
modifier = {
add = 100
desc = JOINING_CONFEDERATION_WAR_REASON
scope:recipient.confederation ?= {
any_confederation_member = {
is_at_war_as_defender = yes
any_character_war = {
is_war_leader = prev
is_defender = prev
NOR = {
any_war_attacker = {
is_allied_to = scope:actor
}
any_war_attacker = {
this = scope:actor
}
any_war_defender = {
this = scope:actor
}
}
defender_war_score < 80
}
}
}
}
modifier = {
add = -100
desc = join_confederation_abandoned_confederation_tt
scope:actor = {
has_variable = left_confederation
var:left_confederation ?= {
this = scope:recipient.confederation
}
}
}
modifier = {
add = -100
desc = join_confederation_abandoned_confederation_tt
scope:actor = {
has_variable = left_confederation
var:left_confederation ?= {
this = scope:recipient.confederation
}
}
}
modifier = {
add = duchy_confederation_vassals_value_recipient
desc = TOO_MANY_CONFEDERATION_VASSALS_REASON
scope:recipient.confederation ?= {
any_confederation_member = {
count >= 6
highest_held_title_tier >= tier_county
}
}
}
modifier = {
add = 50
desc = join_confederation_loyal_tt
scope:actor = {
has_trait = loyal
}
}
modifier = {
add = -50
desc = join_confederation_disloyal_tt
scope:actor = {
has_trait = disloyal
}
}
}
send_option = {
flag = hook
is_valid = {
scope:actor = {
has_usable_hook = scope:recipient
}
}
localization = GENERIC_SPEND_A_HOOK
}
send_option = { # Herd
is_shown = {
scope:actor = {
government_has_flag = government_is_nomadic
exists = domicile
}
}
is_valid = {
scope:recipient = {
government_has_flag = government_is_nomadic
exists = domicile
}
scope:actor.domicile = { herd >= minor_herd_value }
}
flag = herd_send_option
localization = TRADE_HERD_FOR_BETTER_AI_ACCEPTANCE_CONFEDERATION
}
send_option = { # Prestige
is_shown = {
always = yes
}
is_valid = {
scope:actor = { prestige >= minor_prestige_value }
}
flag = prestige_send_option
localization = TRADE_PRESTIGE_FOR_BETTER_AI_ACCEPTANCE
}
send_options_exclusive = no
on_accept = {
if = {
#checking that the delay hasn't made the character invalid
limit = {
scope:recipient = {
is_playable_character = yes
}
}
if = {
limit = {
scope:actor = {
has_character_flag = forming_confederation
}
}
scope:actor = { remove_character_flag = forming_confederation }
}
scope:recipient.confederation ?= {
every_confederation_member = {
limit = { is_at_war_as_defender = yes }
every_character_war = {
limit = {
is_war_leader = prev
is_defender = prev
NOR = {
any_war_attacker = {
is_allied_to = scope:actor
}
any_war_attacker = {
this = scope:actor
}
any_war_defender = {
this = scope:actor
}
}
defender_war_score < 80
}
add_to_list = recipient_wars
}
}
}
every_in_list = {
list = recipient_wars
save_scope_as = recipient_war
primary_attacker = {
save_scope_as = attacker
}
add_defender = scope:actor
}
scope:recipient = {
save_scope_as = confederation_offerer
}
scope:actor = {
save_scope_as = confederation_accepter
}
scope:recipient.confederation = {
save_scope_as = confederation
}
show_as_tooltip = {
#If actor is top liege and offering vassaldom
scope:actor = {
custom_tooltip = join_confederation_recipient_tt
custom_tooltip = confederation_defensive_wars_tt
custom_tooltip = unlock_leave_confederation_interaction_tt
}
}
if = {
limit = {
scope:actor = {
government_has_flag = government_is_nomadic
}
}
scope:actor = {
add_character_modifier = {
modifier = mpo_confederation_member_modifier
years = 5
}
capital_county ?= {
change_county_fertility = major_county_fertility_level_gain
}
}
}
if = {
limit = {
scope:actor = {
is_ai = no
}
}
scope:actor = {
custom_tooltip = confederation_raiding_attacking_tt
if = {
limit = {
government_has_flag = government_is_nomadic
}
custom_tooltip = confederation_restrictions_warning_tt
}
else = {
custom_tooltip = confederation_restrictions_tribe_warning_tt
}
}
}
scope:actor = {
if = {
limit = {
government_has_flag = government_is_nomadic
}
custom_tooltip = confederation_migrating_leaving_warning_tt
}
}
scope:actor = {
#Event distributor event
trigger_event = mpo_interactions_events.0030
}
if = {
limit = {
scope:prestige_send_option = yes
}
scope:recipient = {
add_prestige = scope:actor.minor_prestige_value
}
}
if = {
limit = {
scope:herd_send_option = yes
}
scope:actor = {
pay_herd = {
target = scope:recipient
value = domicile.minor_herd_value
}
}
}
}
}
on_decline = {
scope:actor = {
#So that the right desc is used
save_scope_as = asking_to_join
#letter response
trigger_event = mpo_interactions_events.0004
}
}
#ai_potential = {
# #AI rely on the offer interaction, not this one
# always = no
#}
#
#ai_will_do = {
# base = 0
#}
}