4136 lines
92 KiB
Text
4136 lines
92 KiB
Text
call_ally_interaction = {
|
|
category = interaction_category_diplomacy
|
|
desc = call_ally_interaction_desc
|
|
interface_priority = 60
|
|
interface = call_ally
|
|
special_interaction = call_ally_interaction
|
|
popup_on_receive = yes
|
|
pause_on_receive = yes
|
|
icon = alliance
|
|
|
|
greeting = positive
|
|
notification_text = CALL_ALLY_NOTIFICATION
|
|
|
|
is_shown = {
|
|
scope:actor = {
|
|
is_at_war = yes
|
|
trigger_if = { # Avoid calling Adventurers without armies or landed rulers who have been devastated
|
|
limit = {
|
|
is_ai = yes
|
|
}
|
|
scope:recipient.current_military_strength >= 100
|
|
}
|
|
trigger_if = {
|
|
limit = {
|
|
liege = scope:recipient # The recipient is actor's liege
|
|
}
|
|
subject_contract_has_flag = vassal_contract_liege_forced_war_override
|
|
}
|
|
trigger_if = {
|
|
limit = {
|
|
scope:recipient = {
|
|
is_tributary_of = scope:actor
|
|
NOT = { is_allied_to = scope:actor }
|
|
}
|
|
}
|
|
piety >= 50
|
|
has_realm_law_flag = can_call_tributaries_for_piety
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
OR = {
|
|
is_allied_to = scope:actor
|
|
AND = {
|
|
this ?= scope:actor.diarch
|
|
scope:actor = {
|
|
any_character_war = { diarch_callable_in_internal_war_trigger = yes }
|
|
}
|
|
}
|
|
scope:actor = {
|
|
is_vassal_of = prev
|
|
subject_contract_has_flag = vassal_contract_liege_forced_war_override
|
|
}
|
|
scope:actor = {
|
|
is_tributary_of = prev
|
|
subject_contract_has_flag = tributary_contract_suzerain_guarantee_override
|
|
}
|
|
AND = {
|
|
is_tributary_of = scope:actor
|
|
scope:actor = {
|
|
piety >= 50
|
|
has_realm_law_flag = can_call_tributaries_for_piety
|
|
}
|
|
}
|
|
}
|
|
}
|
|
scope:actor = { #If you can call them as a House Member then do that
|
|
NOT = {
|
|
is_character_interaction_valid = {
|
|
recipient = scope:recipient
|
|
interaction = call_house_member_to_war_interaction
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
has_valid_target = {
|
|
exists = scope:target
|
|
}
|
|
|
|
has_valid_target_showing_failures_only = {
|
|
scope:target = {
|
|
is_war_leader = scope:actor
|
|
}
|
|
|
|
scope:actor = {
|
|
trigger_if = {
|
|
limit = { # if you're invoking your suzerain's defensive guarantee, it has to be for a defensive war
|
|
NOT = { is_allied_to = scope:recipient }
|
|
suzerain = scope:recipient
|
|
subject_contract_has_flag = tributary_contract_suzerain_guarantee_override
|
|
}
|
|
scope:target = {
|
|
primary_defender = scope:actor
|
|
}
|
|
}
|
|
|
|
trigger_if = {
|
|
limit = {
|
|
scope:target = {
|
|
OR = {
|
|
using_cb = undirected_great_holy_war
|
|
using_cb = directed_great_holy_war
|
|
}
|
|
}
|
|
}
|
|
|
|
trigger_if = {
|
|
limit = {
|
|
this = scope:target.casus_belli.primary_attacker
|
|
}
|
|
#if it's a religious war the recipient has to be of the same faith
|
|
custom_description = {
|
|
text = is_of_wrong_faith_for_holy_war
|
|
subject = scope:actor
|
|
object = scope:recipient
|
|
faith = scope:recipient.faith
|
|
}
|
|
}
|
|
trigger_else = {
|
|
custom_description = {
|
|
text = is_of_attacker_faith_in_holy_war
|
|
subject = scope:actor
|
|
object = scope:recipient
|
|
scope:target = { primary_attacker.faith != scope:recipient.faith }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
joiner_not_already_in_another_war_with_any_target_war_participants_trigger = {
|
|
WARRIOR = scope:actor
|
|
JOINER = scope:recipient
|
|
}
|
|
}
|
|
|
|
|
|
is_valid_showing_failures_only = {
|
|
|
|
scope:recipient = {
|
|
is_ruler = yes
|
|
|
|
# Only rulers of a high enough rank may call a hegemon into wars
|
|
custom_tooltip = {
|
|
text = too_low_rank_to_call_hegemon
|
|
trigger_if = {
|
|
limit = { highest_held_title_tier = tier_hegemony }
|
|
scope:actor = { highest_held_title_tier >= tier_empire }
|
|
}
|
|
}
|
|
}
|
|
|
|
scope:actor = {
|
|
# Only War Leaders can call allies
|
|
custom_description = {
|
|
text = must_be_war_leader
|
|
any_character_war = {
|
|
is_war_leader = scope:actor
|
|
}
|
|
}
|
|
|
|
# Cannot call the same character multiple times
|
|
custom_description = {
|
|
text = cannot_call_same_character_multiple_times
|
|
subject = scope:recipient
|
|
any_character_war = {
|
|
ALL_FALSE = {
|
|
was_called = scope:recipient
|
|
is_participant = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
|
|
# Cannot call a character of the "wrong" religion to a Great Holy War
|
|
trigger_if = {
|
|
limit = {
|
|
faith != scope:recipient.faith
|
|
}
|
|
custom_description = {
|
|
text = is_of_wrong_faith_for_holy_war
|
|
subject = scope:actor
|
|
object = scope:recipient
|
|
any_character_war = {
|
|
NOR = {
|
|
using_cb = undirected_great_holy_war
|
|
using_cb = directed_great_holy_war
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
can_potentially_call_ally_trigger = {
|
|
WARRIOR = scope:actor
|
|
JOINER = scope:recipient
|
|
}
|
|
}
|
|
|
|
can_be_picked = {
|
|
can_join_war_liege_vassal_check_trigger = { WARRIOR = scope:actor JOINER = scope:recipient }
|
|
|
|
scope:target = {
|
|
is_war_leader = scope:actor
|
|
|
|
# not already in target war
|
|
custom_description = {
|
|
text = join_war_interaction_already_in_target_war
|
|
NOR = {
|
|
any_war_attacker = { this = scope:recipient }
|
|
any_war_defender = { this = scope:recipient }
|
|
}
|
|
}
|
|
|
|
# Diarchs can only be called to internal wars.
|
|
custom_tooltip = {
|
|
text = call_ally_interaction.tt.diarchs_called_to_internal_wars
|
|
trigger_if = {
|
|
limit = { scope:recipient ?= scope:actor.diarch }
|
|
primary_defender = scope:actor
|
|
diarch_callable_in_internal_war_trigger = yes
|
|
}
|
|
}
|
|
}
|
|
|
|
# You cannot call a suzerain against their own tributary
|
|
trigger_if = {
|
|
limit = {
|
|
scope:target.casus_belli.primary_defender = scope:actor
|
|
scope:target.casus_belli.primary_attacker = { is_tributary_of_suzerain_or_above = scope:recipient }
|
|
}
|
|
NOT = {
|
|
scope:target.casus_belli.primary_attacker = { is_tributary_of_suzerain_or_above = scope:recipient }
|
|
}
|
|
}
|
|
trigger_else_if = {
|
|
limit = {
|
|
scope:target.casus_belli.primary_attacker = scope:actor
|
|
scope:target.casus_belli.primary_defender = { is_tributary_of_suzerain_or_above = scope:recipient }
|
|
}
|
|
NOT = {
|
|
scope:target.casus_belli.primary_defender = { is_tributary_of_suzerain_or_above = scope:recipient }
|
|
}
|
|
}
|
|
trigger_else = {}
|
|
|
|
# You cannot call a tributary against their suzerain
|
|
trigger_if = {
|
|
limit = {
|
|
scope:target.casus_belli.primary_defender = scope:actor
|
|
scope:recipient = { is_tributary_of_suzerain_or_above = scope:target.casus_belli.primary_attacker }
|
|
}
|
|
NOT = {
|
|
scope:recipient = { is_tributary_of_suzerain_or_above = scope:target.casus_belli.primary_attacker }
|
|
}
|
|
}
|
|
trigger_else_if = {
|
|
limit = {
|
|
scope:target.casus_belli.primary_attacker = scope:actor
|
|
scope:recipient = { is_tributary_of_suzerain_or_above = scope:target.casus_belli.primary_defender }
|
|
}
|
|
NOT = {
|
|
scope:recipient = { is_tributary_of_suzerain_or_above = scope:target.casus_belli.primary_defender }
|
|
}
|
|
}
|
|
trigger_else = {}
|
|
}
|
|
|
|
on_auto_accept = {
|
|
scope:recipient = {
|
|
trigger_event = call_ally.0001
|
|
}
|
|
scope:target = {
|
|
if = {
|
|
limit = {
|
|
is_religious_war = yes
|
|
scope:recipient = {
|
|
any_active_accolade = {
|
|
accolade_parameter = acclaimed_knight_piety_from_battle
|
|
}
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
add_piety = miniscule_piety_gain
|
|
}
|
|
}
|
|
if = {
|
|
limit = {
|
|
is_religious_war = yes
|
|
scope:recipient = {
|
|
any_active_accolade = {
|
|
accolade_parameter = acclaimed_knight_piety_from_battle_high
|
|
}
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
add_piety = minor_piety_gain
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
on_accept = {
|
|
call_ally_interaction_effect = yes
|
|
|
|
save_scope_value_as = {
|
|
name = call_ally_interaction
|
|
value = yes
|
|
}
|
|
|
|
scope:actor = {
|
|
hidden_effect = { #To nudge friendship
|
|
if = {
|
|
limit = {
|
|
NOR = {
|
|
has_relation_friend = scope:recipient
|
|
has_relation_potential_friend = scope:recipient
|
|
}
|
|
}
|
|
set_relation_potential_friend = scope:recipient
|
|
}
|
|
}
|
|
trigger_event = call_ally.0100
|
|
}
|
|
scope:target = {
|
|
if = {
|
|
limit = {
|
|
is_religious_war = yes
|
|
scope:recipient = {
|
|
any_active_accolade = {
|
|
accolade_parameter = acclaimed_knight_piety_from_battle
|
|
}
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
add_piety = minor_piety_gain
|
|
}
|
|
}
|
|
if = {
|
|
limit = {
|
|
is_religious_war = yes
|
|
scope:recipient = {
|
|
any_active_accolade = {
|
|
accolade_parameter = acclaimed_knight_piety_from_battle_high
|
|
}
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
add_piety = medium_piety_gain
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
on_decline = {
|
|
#The war could theoretically end on the day the decline is sent
|
|
if = {
|
|
limit = {
|
|
exists = scope:target
|
|
}
|
|
scope:target = {
|
|
if = {
|
|
limit = {
|
|
is_attacker = scope:actor
|
|
}
|
|
scope:actor = {
|
|
add_opinion = {
|
|
modifier = rejected_call_to_offensive_war
|
|
target = scope:recipient
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
#Why should Mandalas care about bickering tributaries in an offensive war
|
|
if = {
|
|
limit = {
|
|
NOT = { government_has_flag = government_is_mandala }
|
|
}
|
|
add_prestige_experience = major_prestige_loss
|
|
}
|
|
}
|
|
}
|
|
else = {
|
|
scope:actor = {
|
|
add_opinion = {
|
|
modifier = rejected_call_to_defensive_war
|
|
target = scope:recipient
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
if = {
|
|
limit = { government_has_flag = government_is_mandala }
|
|
add_prestige_experience = major_prestige_loss
|
|
add_piety_level = -1
|
|
}
|
|
else = { add_prestige_experience = massive_prestige_loss }
|
|
}
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:actor = {
|
|
has_relation_blood_brother = scope:recipient
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
add_piety_experience = massive_piety_loss
|
|
add_character_modifier = {
|
|
modifier = broke_blood_brotherhood_modifier
|
|
desc = broke_blood_brotherhood_modifier_acceptance_tt
|
|
years = 25
|
|
}
|
|
remove_relation_blood_brother = scope:actor
|
|
}
|
|
scope:actor = {
|
|
set_relation_rival = {
|
|
target = scope:recipient
|
|
reason = rival_blood_brother_refused_call_reason
|
|
}
|
|
}
|
|
}
|
|
# Nomad Vassals and Tributaries stop being Obedient if they have the Liege War Support / Suzerain Defensive Guarantee contract right
|
|
if = {
|
|
limit = {
|
|
scope:recipient = scope:actor.obedience_target
|
|
scope:actor = {
|
|
OR = {
|
|
subject_contract_has_flag = vassal_contract_liege_forced_war_override
|
|
subject_contract_has_flag = tributary_contract_suzerain_guarantee_override
|
|
}
|
|
}
|
|
}
|
|
scope:actor = {
|
|
set_variable = {
|
|
name = not_obedient_declined_call
|
|
value = scope:recipient
|
|
years = 5
|
|
}
|
|
}
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:recipient = scope:actor.suzerain
|
|
is_defender = scope:actor
|
|
scope:actor = {
|
|
subject_contract_has_flag = tributary_contract_suzerain_guarantee_override
|
|
}
|
|
}
|
|
scope:actor = {
|
|
end_tributary = yes
|
|
}
|
|
}
|
|
hidden_effect = {
|
|
if = {
|
|
limit = {
|
|
NOT = { was_called = scope:recipient }
|
|
}
|
|
set_called_to = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
scope:actor = {
|
|
trigger_event = call_ally.0101
|
|
}
|
|
|
|
# If we're a clan this interaction affects unity
|
|
refuse_call_to_arms_add_clan_unity_effect = yes
|
|
|
|
scope:recipient = {
|
|
if = {
|
|
limit = {
|
|
exists = house
|
|
is_house_head = yes
|
|
exists = scope:actor.house
|
|
}
|
|
house = {
|
|
change_house_relation_effect = {
|
|
HOUSE = scope:actor.house
|
|
VALUE = house_relation_damage_medium_value
|
|
REASON = ally_call_ignored
|
|
CHAR = scope:recipient
|
|
TARGET_CHAR = scope:actor
|
|
TITLE = scope:dummy_gender
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
auto_accept = {
|
|
OR = {
|
|
# Always accept a call from a Spouse
|
|
custom_description = {
|
|
text = "recipient_is_spouse"
|
|
subject = scope:actor
|
|
object = scope:recipient
|
|
scope:recipient = {
|
|
is_spouse_of = scope:actor
|
|
is_ai = yes
|
|
}
|
|
}
|
|
# Always accept a call from the Heir
|
|
custom_description = {
|
|
text = "is_recipients_player_heir"
|
|
subject = scope:actor
|
|
object = scope:recipient
|
|
|
|
exists = scope:recipient.player_heir
|
|
scope:recipient = {
|
|
player_heir = scope:actor
|
|
is_close_or_extended_family_of = scope:actor # Only for family
|
|
is_ai = yes
|
|
}
|
|
}
|
|
# Always accept a call from the one you are heir of
|
|
custom_description = {
|
|
text = "is_player_heir"
|
|
subject = scope:recipient
|
|
object = scope:actor
|
|
|
|
exists = scope:actor.player_heir
|
|
scope:actor.player_heir = scope:recipient
|
|
scope:actor = { # Shouldn't be able to force your liege to join just because you've not got any family...
|
|
is_close_or_extended_family_of = scope:recipient
|
|
}
|
|
scope:recipient = {
|
|
is_ai = yes
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ai_accept = {
|
|
base = 20
|
|
|
|
modifier = { # Conquerors do not help anyone but themselves
|
|
add = -1000
|
|
desc = NO_FRIVOLOUS_ACTIVITIES_REASON
|
|
scope:recipient = { has_variable = conqueror }
|
|
}
|
|
|
|
modifier = { # AI's that need to save gold will not help their lesser AI allies, unless it's a player war
|
|
add = -1000
|
|
desc = NO_FRIVOLOUS_ACTIVITIES_REASON
|
|
scope:actor = {
|
|
is_ai = yes
|
|
primary_title.tier < scope:recipient.primary_title.tier
|
|
}
|
|
scope:target.casus_belli = {
|
|
primary_attacker = { is_ai = yes }
|
|
primary_defender = { is_ai = yes }
|
|
}
|
|
scope:recipient = { ai_should_focus_on_building_in_their_capital = yes }
|
|
}
|
|
|
|
modifier = { # Refuse call to conflicts of little benefit
|
|
add = -1000
|
|
desc = WONT_FIGHT_MEANINGLESS_REASON
|
|
trigger_if = {
|
|
limit = { exists = scope:target }
|
|
scope:target = { using_cb = fp2_border_raid }
|
|
scope:recipient = { # Unless they like going on raids
|
|
NOR = {
|
|
has_trait = viking
|
|
has_trait = reaver
|
|
}
|
|
}
|
|
}
|
|
trigger_else = { always = no }
|
|
}
|
|
|
|
modifier = { # Refuse call against Heir
|
|
add = -1000
|
|
exists = scope:recipient.player_heir
|
|
trigger_if = {
|
|
limit = { scope:target.casus_belli.primary_defender = scope:actor }
|
|
scope:target.casus_belli.primary_attacker = scope:recipient.player_heir
|
|
}
|
|
trigger_else = {
|
|
scope:target.casus_belli.primary_defender = scope:recipient.player_heir
|
|
}
|
|
desc = WONT_FIGHT_HEIR_REASON
|
|
}
|
|
|
|
modifier = { # Refuse call against Spouse
|
|
add = -1000
|
|
scope:recipient = {
|
|
trigger_if = {
|
|
limit = { scope:target.casus_belli.primary_defender = scope:actor }
|
|
any_spouse = {
|
|
this = scope:target.casus_belli.primary_attacker
|
|
}
|
|
}
|
|
trigger_else = {
|
|
any_spouse = {
|
|
this = scope:target.casus_belli.primary_defender
|
|
}
|
|
}
|
|
|
|
}
|
|
desc = WONT_FIGHT_SPOUSE_REASON
|
|
}
|
|
|
|
modifier = { # Refuse call against Suzerain if Obedient
|
|
add = -1000
|
|
trigger_if = {
|
|
limit = {
|
|
exists = scope:recipient.suzerain
|
|
trigger_if = {
|
|
limit = { scope:target.casus_belli.primary_defender = scope:actor }
|
|
scope:recipient.suzerain = scope:target.casus_belli.primary_attacker
|
|
}
|
|
trigger_else = {
|
|
scope:recipient.suzerain = scope:target.casus_belli.primary_defender
|
|
}
|
|
scope:recipient = {
|
|
exists = obedience_target
|
|
is_obedient = yes
|
|
}
|
|
}
|
|
}
|
|
trigger_else = { always = no }
|
|
desc = WONT_FIGHT_OBEDIENT_REASON
|
|
}
|
|
|
|
opinion_modifier = { # Opinion Factor
|
|
who = scope:recipient
|
|
opinion_target = scope:actor
|
|
multiplier = 1.0
|
|
desc = AI_OPINION_REASON
|
|
}
|
|
|
|
# Honor factor
|
|
ai_value_modifier = {
|
|
ai_honor = 1
|
|
min = 0
|
|
}
|
|
|
|
modifier = { # Tends to join defensive wars
|
|
add = 50
|
|
scope:target.casus_belli.primary_defender = scope:actor
|
|
desc = DEFENSIVE_WAR_REASON
|
|
}
|
|
|
|
modifier = { # Same language
|
|
add = 5
|
|
desc = speaks_same_language_interaction_reason
|
|
trigger = {
|
|
scope:actor = {
|
|
knows_language_of_culture = scope:recipient.culture
|
|
}
|
|
}
|
|
}
|
|
|
|
modifier = { # Shared Court Language (non-spoken)
|
|
add = 10
|
|
desc = foreign_realm_court_language_non_spoken_interaction_reason
|
|
trigger = {
|
|
scope:actor = {
|
|
has_royal_court = yes
|
|
has_dlc_feature = royal_court
|
|
NOT = { knows_court_language_of = this }
|
|
}
|
|
scope:actor.top_liege != scope:recipient.top_liege
|
|
OR = {
|
|
AND = {
|
|
scope:recipient = {
|
|
has_royal_court = yes
|
|
}
|
|
scope:actor = { # You share Court Language
|
|
has_same_court_language = scope:recipient
|
|
}
|
|
}
|
|
|
|
scope:recipient = { # The recipient doesn't have a royal court, but their liege does
|
|
top_liege != this
|
|
has_royal_court = no
|
|
liege = {
|
|
has_royal_court = yes
|
|
has_same_court_language = scope:actor
|
|
}
|
|
}
|
|
scope:recipient = { # The recipient doesn't have a royal court, but their liege's liege does, while their liege doesn't have a royal court
|
|
top_liege != this
|
|
has_royal_court = no
|
|
exists = liege.liege
|
|
liege = {
|
|
top_liege != this
|
|
has_royal_court = no
|
|
}
|
|
liege.liege = {
|
|
has_royal_court = yes
|
|
has_same_court_language = scope:actor
|
|
}
|
|
}
|
|
scope:recipient = { # The recipient doesn't have a royal court, but their liege's liege's liege does, while their liege doesn't have a royal court
|
|
top_liege != this
|
|
has_royal_court = no
|
|
exists = liege.liege
|
|
exists = liege.liege.liege
|
|
liege = {
|
|
top_liege != this
|
|
has_royal_court = no
|
|
}
|
|
liege.liege = {
|
|
top_liege != this
|
|
has_royal_court = no
|
|
}
|
|
liege.liege.liege = {
|
|
has_royal_court = yes
|
|
has_same_court_language = scope:actor
|
|
}
|
|
}
|
|
scope:recipient = { # The recipient doesn't have a royal court, but their liege's liege's liege's liege does, while their liege doesn't have a royal court
|
|
top_liege != this
|
|
has_royal_court = no
|
|
exists = liege.liege
|
|
exists = liege.liege.liege
|
|
exists = liege.liege.liege.liege
|
|
liege = {
|
|
top_liege != this
|
|
has_royal_court = no
|
|
}
|
|
liege.liege = {
|
|
top_liege != this
|
|
has_royal_court = no
|
|
}
|
|
liege.liege.liege = {
|
|
top_liege != this
|
|
has_royal_court = no
|
|
}
|
|
liege.liege.liege.liege = {
|
|
has_royal_court = yes
|
|
has_same_court_language = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
modifier = { # Shared Court Language (spoken)
|
|
add = 30
|
|
desc = foreign_realm_court_language_spoken_interaction_reason
|
|
trigger = {
|
|
scope:actor = {
|
|
has_royal_court = yes
|
|
has_dlc_feature = royal_court
|
|
knows_court_language_of = this
|
|
}
|
|
scope:actor.top_liege != scope:recipient.top_liege
|
|
OR = {
|
|
AND = {
|
|
scope:recipient = {
|
|
has_royal_court = yes
|
|
}
|
|
scope:actor = { # You share Court Language
|
|
has_same_court_language = scope:recipient
|
|
}
|
|
}
|
|
|
|
scope:recipient = { # The recipient doesn't have a royal court, but their liege does
|
|
top_liege != this
|
|
has_royal_court = no
|
|
liege = {
|
|
has_royal_court = yes
|
|
has_same_court_language = scope:actor
|
|
}
|
|
}
|
|
scope:recipient = { # The recipient doesn't have a royal court, but their liege's liege does, while their liege doesn't have a royal court
|
|
top_liege != this
|
|
has_royal_court = no
|
|
exists = liege.liege
|
|
liege = {
|
|
top_liege != this
|
|
has_royal_court = no
|
|
}
|
|
liege.liege = {
|
|
has_royal_court = yes
|
|
has_same_court_language = scope:actor
|
|
}
|
|
}
|
|
scope:recipient = { # The recipient doesn't have a royal court, but their liege's liege's liege does, while their liege doesn't have a royal court
|
|
top_liege != this
|
|
has_royal_court = no
|
|
exists = liege.liege
|
|
exists = liege.liege.liege
|
|
liege = {
|
|
top_liege != this
|
|
has_royal_court = no
|
|
}
|
|
liege.liege = {
|
|
top_liege != this
|
|
has_royal_court = no
|
|
}
|
|
liege.liege.liege = {
|
|
has_royal_court = yes
|
|
has_same_court_language = scope:actor
|
|
}
|
|
}
|
|
scope:recipient = { # The recipient doesn't have a royal court, but their liege's liege's liege's liege does, while their liege doesn't have a royal court
|
|
top_liege != this
|
|
has_royal_court = no
|
|
exists = liege.liege
|
|
exists = liege.liege.liege
|
|
exists = liege.liege.liege.liege
|
|
liege = {
|
|
top_liege != this
|
|
has_royal_court = no
|
|
}
|
|
liege.liege = {
|
|
top_liege != this
|
|
has_royal_court = no
|
|
}
|
|
liege.liege.liege = {
|
|
top_liege != this
|
|
has_royal_court = no
|
|
}
|
|
liege.liege.liege.liege = {
|
|
has_royal_court = yes
|
|
has_same_court_language = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
modifier = { # Serious diarchs wish to support their liege
|
|
add = 50
|
|
desc = ENTRENCHED_REGENT_WILL_SUPPORT_LIEGE
|
|
trigger_if = {
|
|
limit = { scope:recipient ?= scope:actor.diarch }
|
|
scope:actor = { has_diarchy_parameter = diarchy_type_is_entrenched_regency }
|
|
}
|
|
trigger_else = { always = no }
|
|
}
|
|
|
|
compare_modifier = { # Likes fighting infidels
|
|
trigger = {
|
|
scope:recipient.faith = scope:actor.faith
|
|
OR = {
|
|
AND = {
|
|
scope:target.casus_belli.primary_attacker = {
|
|
this = scope:actor
|
|
faith = {
|
|
faith_hostility_level = {
|
|
target = scope:target.casus_belli.primary_defender.faith
|
|
value >= religious_cb_enabled_hostility_level
|
|
}
|
|
}
|
|
}
|
|
}
|
|
AND = {
|
|
scope:target.casus_belli.primary_defender = {
|
|
this = scope:actor
|
|
faith = {
|
|
faith_hostility_level = {
|
|
target = scope:target.casus_belli.primary_defender.faith
|
|
value >= religious_cb_enabled_hostility_level
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
target = scope:recipient
|
|
value = ai_zeal
|
|
desc = "ZEAL_AGAINST_INFIDELS"
|
|
min = 0
|
|
multiplier = 0.5
|
|
}
|
|
|
|
modifier = { # Reluctant to attack another ally
|
|
add = -50
|
|
scope:target.casus_belli.primary_attacker = scope:actor
|
|
scope:recipient = {
|
|
is_allied_to = scope:target.casus_belli.primary_defender
|
|
}
|
|
desc = ATTACK_ON_ALLY_REASON
|
|
}
|
|
|
|
modifier = { # Reluctant to defend against another ally
|
|
add = -25
|
|
scope:target.casus_belli.primary_defender = scope:actor
|
|
scope:recipient = {
|
|
is_allied_to = scope:target.casus_belli.primary_attacker
|
|
}
|
|
desc = WAR_WITH_ALLY_REASON
|
|
}
|
|
|
|
modifier = { # Reluctant to join wars against religious brethren.
|
|
add = -50
|
|
scope:recipient.faith != scope:actor.faith
|
|
scope:target.casus_belli.primary_attacker = scope:actor
|
|
scope:target.casus_belli.primary_defender.faith = scope:recipient.faith
|
|
scope:target.casus_belli.war = {
|
|
OR = {
|
|
using_cb = minor_religious_war
|
|
using_cb = religious_war
|
|
using_cb = major_religious_war
|
|
using_cb = undirected_great_holy_war
|
|
using_cb = directed_great_holy_war
|
|
}
|
|
}
|
|
desc = WONT_ATTACK_RELIGIOUS_BRETHREN_REASON
|
|
}
|
|
|
|
modifier = { # Reluctant to join against Friends
|
|
add = -50
|
|
trigger_if = {
|
|
limit = {
|
|
scope:target.casus_belli.primary_defender = scope:actor
|
|
}
|
|
has_relation_friend = scope:target.casus_belli.primary_attacker
|
|
}
|
|
trigger_else = {
|
|
has_relation_friend = scope:target.casus_belli.primary_defender
|
|
}
|
|
desc = WONT_FIGHT_FRIEND_REASON
|
|
}
|
|
|
|
modifier = { # Reluctant to join against Best Friends
|
|
add = -100
|
|
trigger_if = {
|
|
limit = {
|
|
scope:target.casus_belli.primary_defender = scope:actor
|
|
}
|
|
has_relation_best_friend = scope:target.casus_belli.primary_attacker
|
|
}
|
|
trigger_else = {
|
|
has_relation_best_friend = scope:target.casus_belli.primary_defender
|
|
}
|
|
desc = WONT_FIGHT_BEST_FRIEND_REASON
|
|
}
|
|
modifier = { # Reluctant to join against Lovers
|
|
add = -100
|
|
trigger_if = {
|
|
limit = {
|
|
scope:target.casus_belli.primary_defender = scope:actor
|
|
}
|
|
has_relation_lover = scope:target.casus_belli.primary_attacker
|
|
}
|
|
trigger_else = {
|
|
has_relation_lover = scope:target.casus_belli.primary_defender
|
|
}
|
|
desc = WONT_FIGHT_LOVER_REASON
|
|
}
|
|
modifier = { # Reluctant to join against Soulmate
|
|
add = -200
|
|
trigger_if = {
|
|
limit = {
|
|
scope:target.casus_belli.primary_defender = scope:actor
|
|
}
|
|
has_relation_soulmate = scope:target.casus_belli.primary_attacker
|
|
}
|
|
trigger_else = {
|
|
has_relation_soulmate = scope:target.casus_belli.primary_defender
|
|
}
|
|
desc = WONT_FIGHT_SOULMATE_REASON
|
|
}
|
|
modifier = { # Reluctant to join tributaries
|
|
add = -200
|
|
scope:actor = {
|
|
is_tributary_of = scope:recipient
|
|
NOT = { subject_contract_has_flag = tributary_contract_suzerain_guarantee_override }
|
|
}
|
|
scope:recipient = {
|
|
NOR = {
|
|
has_relation_lover = scope:actor
|
|
has_relation_friend = scope:actor
|
|
is_allied_to = scope:actor
|
|
}
|
|
}
|
|
desc = WONT_FIGHT_MEANINGLESS_REASON
|
|
}
|
|
modifier = { # Refuse call for hostages' safety
|
|
any_home_court_hostage = {
|
|
warden = {
|
|
OR = {
|
|
is_at_war_with = scope:actor
|
|
any_ally = { is_at_war_with = scope:actor }
|
|
}
|
|
}
|
|
}
|
|
add = {
|
|
value = 0
|
|
every_home_court_hostage = {
|
|
limit = {
|
|
warden = {
|
|
OR = {
|
|
is_at_war_with = scope:actor
|
|
any_ally = { is_at_war_with = scope:actor }
|
|
}
|
|
}
|
|
}
|
|
subtract = call_to_arms_hostage_value
|
|
}
|
|
multiply = 0.25
|
|
}
|
|
desc = HOSTAGE_ENEMY_CALL_TO_ARMS_REASON
|
|
}
|
|
|
|
modifier = {
|
|
scope:recipient.house.house_confederation ?= {
|
|
trigger_if = {
|
|
limit = { scope:actor = { is_defender_in_war = scope:target } }
|
|
this = scope:target.casus_belli.primary_attacker.house.house_confederation
|
|
}
|
|
trigger_else = { this = scope:target.casus_belli.primary_defender.house.house_confederation }
|
|
}
|
|
add = -100
|
|
desc = BLOC_MEMBER_CALL_TO_ARMS_REASON
|
|
}
|
|
|
|
modifier = {
|
|
add = 200
|
|
scope:actor = {
|
|
is_tributary_of = scope:recipient
|
|
subject_contract_has_flag = tributary_contract_suzerain_guarantee_override
|
|
}
|
|
desc = MANDALA_GUARANTEE_REASON
|
|
}
|
|
|
|
fp3_struggle_resist_allied_wars_modifier = yes
|
|
}
|
|
|
|
# Score above 0 means the AI will call this ally. Note that DESIRED_WAR_SIDE_STRENGTH still applies and can prevent calling the ally
|
|
ai_will_do = {
|
|
base = 100
|
|
|
|
modifier = { # If the player is at war, do not bother them with offensive calls
|
|
scope:target.casus_belli.primary_attacker = scope:actor
|
|
scope:recipient = {
|
|
is_ai = no
|
|
any_character_war = {
|
|
primary_defender = scope:recipient
|
|
}
|
|
}
|
|
factor = 0
|
|
}
|
|
|
|
modifier = { # Do not call the player if they are in debt
|
|
scope:recipient = {
|
|
is_ai = no
|
|
gold <= -1
|
|
}
|
|
factor = 0
|
|
}
|
|
|
|
modifier = { # Don't call players in against their heirs (they wouldn't accept the reverse situation... don't be a hypocrite)
|
|
exists = scope:recipient.player_heir
|
|
scope:recipient = {
|
|
is_ai = no
|
|
}
|
|
trigger_if = {
|
|
limit = { scope:target.casus_belli.primary_defender = scope:actor }
|
|
scope:target.casus_belli.primary_attacker = scope:recipient.player_heir
|
|
}
|
|
trigger_else = {
|
|
scope:target.casus_belli.primary_defender = scope:recipient.player_heir
|
|
}
|
|
factor = 0
|
|
}
|
|
|
|
modifier = { # Same with spouses
|
|
scope:recipient = {
|
|
is_ai = no
|
|
}
|
|
trigger_if = {
|
|
limit = { scope:target.casus_belli.primary_defender = scope:actor }
|
|
any_spouse = {
|
|
this = scope:target.casus_belli.primary_attacker
|
|
}
|
|
}
|
|
trigger_else = {
|
|
any_spouse = {
|
|
this = scope:target.casus_belli.primary_defender
|
|
}
|
|
}
|
|
factor = 0
|
|
}
|
|
|
|
modifier = { # Don't call brand-new allies into old wars, at least until some time has elapsed.
|
|
has_variable = delay_calling_recent_ally
|
|
var:delay_calling_recent_ally = scope:recipient
|
|
scope:target = {
|
|
war_days >= 30
|
|
}
|
|
factor = 0
|
|
|
|
}
|
|
|
|
modifier = { # If the recipient is allied to both the attacker and the defender, the attacker shouldn't call
|
|
scope:target.casus_belli.primary_attacker = scope:actor
|
|
scope:target.casus_belli.primary_defender = {
|
|
is_allied_to = scope:recipient
|
|
}
|
|
factor = 0
|
|
}
|
|
|
|
#You're a Mandala Suzerain; you don't get off the hook that easily
|
|
modifier = {
|
|
scope:actor = { subject_contract_has_flag = tributary_contract_suzerain_guarantee_override }
|
|
scope:recipient = scope:actor.suzerain
|
|
add = 500
|
|
}
|
|
}
|
|
}
|
|
|
|
negotiate_alliance_interaction = {
|
|
category = interaction_category_diplomacy
|
|
ai_min_reply_days = 4
|
|
ai_max_reply_days = 9
|
|
icon = alliance
|
|
|
|
send_name = negotiate_alliance_interaction
|
|
|
|
interface_priority = 60
|
|
desc = negotiate_alliance_interaction_desc
|
|
|
|
greeting = positive
|
|
notification_text = NEGOTIATE_ALLIANCE_NOTIFICATION
|
|
|
|
is_shown = {
|
|
scope:recipient = {
|
|
this != scope:actor
|
|
NOT = { is_allied_to = scope:actor }
|
|
is_ruler = yes
|
|
}
|
|
scope:actor = {
|
|
is_ruler = yes
|
|
OR = {
|
|
is_ai = no
|
|
highest_held_title_tier >= 2
|
|
}
|
|
#childhood friendship with hostage event, where they swear to be friends forever
|
|
OR = {
|
|
is_any_family_relation_or_spouse_trigger = { CHARACTER = scope:recipient }
|
|
hostage_oath_of_friendship_trigger = yes
|
|
#Parents/spouse were blood brothers
|
|
has_opinion_modifier = {
|
|
modifier = blood_brother_close_family_opinion
|
|
target = scope:recipient
|
|
}
|
|
house ?= {
|
|
house_head = scope:actor
|
|
any_house_relation = {
|
|
any_relation_house = {
|
|
exists = house_head
|
|
scope:recipient = house_head
|
|
}
|
|
has_house_relation_parameter = unlocks_house_head_negotiate_alliance
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
scope:recipient = {
|
|
is_playable_character = yes
|
|
is_imprisoned = no
|
|
}
|
|
scope:actor = {
|
|
is_playable_character = yes
|
|
is_imprisoned = no
|
|
NOT = {
|
|
is_at_war_with = scope:recipient
|
|
}
|
|
}
|
|
custom_description = {
|
|
text = "has_already_rejected_renegotiation"
|
|
subject = scope:recipient
|
|
NOT = {
|
|
scope:actor = {
|
|
has_opinion_modifier = {
|
|
modifier = refused_alliance_opinion
|
|
target = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
scope:actor = { highest_held_title_tier < tier_hegemony }
|
|
scope:recipient = { highest_held_title_tier < tier_hegemony }
|
|
OR = {
|
|
#Ruler has the defensive negotiations perk
|
|
scope:actor = { has_perk = defensive_negotiations_perk }
|
|
#Ruler is married to other ruler.
|
|
scope:actor = { is_spouse_of = scope:recipient }
|
|
#Ruler is relative of other ruler
|
|
scope:actor = { is_parent_of = scope:recipient }
|
|
scope:actor = { is_grandparent_of = scope:recipient }
|
|
scope:actor = { is_great_grandparent_of = scope:recipient }
|
|
scope:actor = { is_child_of = scope:recipient }
|
|
scope:actor = { is_grandchild_of = scope:recipient }
|
|
scope:actor = { is_great_grandchild_of = scope:recipient }
|
|
scope:actor = { is_uncle_or_aunt_of = scope:recipient }
|
|
scope:actor = { is_nibling_of = scope:recipient }
|
|
scope:actor = { is_sibling_of = scope:recipient }
|
|
#Parents/spouse were blood brothers
|
|
scope:actor = {
|
|
has_opinion_modifier = {
|
|
modifier = blood_brother_close_family_opinion
|
|
target = scope:recipient
|
|
}
|
|
}
|
|
|
|
custom_description = {
|
|
text = rulers_family_is_married_to_other_ruler_trigger
|
|
subject = scope:recipient
|
|
object = scope:actor
|
|
#Ruler's child/parent/sibling/grandchild/grandparent/uncle/aunt/niece/nephew is married to other ruler.
|
|
scope:recipient = {
|
|
any_spouse = {
|
|
OR = {
|
|
is_close_family_of = scope:actor
|
|
is_nibling_of = scope:actor
|
|
is_uncle_or_aunt_of = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
custom_description = {
|
|
text = rulers_family_is_married_to_other_ruler_trigger
|
|
subject = scope:actor
|
|
object = scope:recipient
|
|
#Other ruler's child/parent/sibling/grandchild/grandparent/uncle/aunt/niece/nephew is married to first ruler.
|
|
scope:actor = {
|
|
any_spouse = {
|
|
OR = {
|
|
is_close_family_of = scope:recipient
|
|
is_nibling_of = scope:recipient
|
|
is_uncle_or_aunt_of = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
custom_description = {
|
|
text = rulers_child_parent_sibling_is_married_to_other_rulers_trigger
|
|
subject = scope:recipient
|
|
object = scope:actor
|
|
# Ruler's child/parent/sibling is married to other ruler's child/parent/sibling.
|
|
scope:actor = {
|
|
any_close_family_member = {
|
|
OR = {
|
|
is_parent_of = scope:actor
|
|
is_child_of = scope:actor
|
|
is_sibling_of = scope:actor
|
|
}
|
|
any_spouse = {
|
|
OR = {
|
|
is_parent_of = scope:recipient
|
|
is_child_of = scope:recipient
|
|
is_sibling_of = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
custom_description = {
|
|
text = hostage_oath_of_friendship_trigger
|
|
subject = scope:recipient
|
|
object = scope:actor
|
|
#childhood friendship with hostage event, where they swear to be friends forever
|
|
scope:actor = {
|
|
hostage_oath_of_friendship_trigger = yes
|
|
}
|
|
}
|
|
|
|
custom_tooltip = {
|
|
text = house_relation_alliance_trigger
|
|
scope:actor.house ?= {
|
|
house_head ?= scope:actor
|
|
any_house_relation = {
|
|
any_relation_house = {
|
|
exists = house_head
|
|
scope:recipient = house_head
|
|
}
|
|
has_house_relation_parameter = unlocks_house_head_negotiate_alliance
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
on_auto_accept = {
|
|
scope:recipient = {
|
|
trigger_event = char_interaction.0234
|
|
}
|
|
}
|
|
|
|
#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"
|
|
|
|
# Admin Gov can spend Influence to increase AI acceptance towards other same-realm admin characters
|
|
send_option = {
|
|
is_shown = {
|
|
scope:actor = {
|
|
government_allows = administrative
|
|
}
|
|
scope:recipient = {
|
|
top_liege = scope:actor.top_liege
|
|
government_allows = administrative
|
|
}
|
|
}
|
|
is_valid = {
|
|
scope:actor = {
|
|
influence >= major_influence_value
|
|
}
|
|
custom_tooltip = {
|
|
text = ALREADY_USING_HOOK
|
|
NOT = { scope:hook = yes }
|
|
}
|
|
}
|
|
flag = influence
|
|
localization = SPEND_INFLUENCE
|
|
}
|
|
|
|
send_options_exclusive = no
|
|
|
|
on_accept = {
|
|
scope:actor = {
|
|
trigger_event = char_interaction.0235
|
|
|
|
stress_impact = {
|
|
shy = minor_stress_impact_gain
|
|
}
|
|
|
|
if = {
|
|
limit = {
|
|
scope:hook = yes
|
|
has_usable_hook = scope:recipient
|
|
}
|
|
use_hook = scope:recipient
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:influence = yes
|
|
}
|
|
change_influence = major_influence_loss
|
|
}
|
|
}
|
|
|
|
scope:recipient = {
|
|
custom_tooltip = negotiate_alliance_effect_recipient_tooltip
|
|
}
|
|
|
|
#Set up alliance, depending on relation between rulers.
|
|
hidden_effect = {
|
|
#Prioritize marriage between rulers and/or direct blood relation between rulers first.
|
|
if = {
|
|
limit = {
|
|
scope:actor = {
|
|
OR = {
|
|
is_spouse_of = scope:recipient
|
|
is_child_of = scope:recipient
|
|
is_parent_of = scope:recipient
|
|
is_sibling_of = scope:recipient
|
|
is_grandparent_of = scope:recipient
|
|
is_great_grandparent_of = scope:recipient
|
|
is_grandchild_of = scope:recipient
|
|
is_great_grandchild_of = scope:recipient
|
|
is_uncle_or_aunt_of = scope:recipient
|
|
is_nibling_of = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
scope:actor = {
|
|
create_alliance = {
|
|
target = scope:recipient
|
|
allied_through_owner = scope:actor
|
|
allied_through_target = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
#...Then marriage between close family members and either actor or recipient.
|
|
else_if = {
|
|
limit = {
|
|
scope:recipient = {
|
|
any_spouse = {
|
|
OR = {
|
|
is_close_family_of = scope:actor
|
|
is_nibling_of = scope:actor
|
|
is_uncle_or_aunt_of = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
random_spouse = {
|
|
limit = {
|
|
OR = {
|
|
is_close_family_of = scope:actor
|
|
is_nibling_of = scope:actor
|
|
is_uncle_or_aunt_of = scope:actor
|
|
}
|
|
}
|
|
save_scope_as = recipient_spouse
|
|
}
|
|
}
|
|
scope:actor = {
|
|
create_alliance = {
|
|
target = scope:recipient
|
|
allied_through_owner = scope:recipient_spouse
|
|
allied_through_target = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
scope:actor = {
|
|
any_spouse = {
|
|
OR = {
|
|
is_close_family_of = scope:recipient
|
|
is_nibling_of = scope:recipient
|
|
is_uncle_or_aunt_of = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
scope:actor = {
|
|
random_spouse = {
|
|
limit = {
|
|
OR = {
|
|
is_close_family_of = scope:recipient
|
|
is_nibling_of = scope:recipient
|
|
is_uncle_or_aunt_of = scope:recipient
|
|
}
|
|
}
|
|
save_scope_as = actor_spouse
|
|
}
|
|
}
|
|
scope:actor = {
|
|
create_alliance = {
|
|
target = scope:recipient
|
|
allied_through_owner = scope:actor
|
|
allied_through_target = scope:actor_spouse
|
|
}
|
|
}
|
|
}
|
|
#...And finally marriage between close relatives and close relatives.
|
|
else_if = {
|
|
limit = {
|
|
scope:actor = {
|
|
any_close_family_member = {
|
|
OR = {
|
|
is_child_of = scope:actor
|
|
is_parent_of = scope:actor
|
|
is_sibling_of = scope:actor
|
|
}
|
|
any_spouse = {
|
|
OR = {
|
|
is_child_of = scope:recipient
|
|
is_parent_of = scope:recipient
|
|
is_sibling_of = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
scope:actor = {
|
|
random_close_family_member = {
|
|
limit = {
|
|
OR = {
|
|
is_child_of = scope:actor
|
|
is_parent_of = scope:actor
|
|
is_sibling_of = scope:actor
|
|
}
|
|
any_spouse = {
|
|
OR = {
|
|
is_child_of = scope:recipient
|
|
is_parent_of = scope:recipient
|
|
is_sibling_of = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
save_scope_as = actor_spouse
|
|
random_spouse = {
|
|
limit = {
|
|
OR = {
|
|
is_child_of = scope:recipient
|
|
is_parent_of = scope:recipient
|
|
is_sibling_of = scope:recipient
|
|
}
|
|
}
|
|
save_scope_as = recipient_spouse
|
|
}
|
|
}
|
|
}
|
|
scope:actor = {
|
|
create_alliance = {
|
|
target = scope:recipient
|
|
allied_through_owner = scope:actor_spouse
|
|
allied_through_target = scope:recipient_spouse
|
|
}
|
|
}
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
scope:actor = { has_perk = defensive_negotiations_perk }
|
|
}
|
|
scope:actor = {
|
|
create_alliance = {
|
|
target = scope:recipient
|
|
allied_through_owner = scope:actor
|
|
allied_through_target = scope:recipient
|
|
}
|
|
}
|
|
scope:recipient = { # This opinion modifier controls the interaction, and is removed when breaking the alliance in any way (though on_actions)
|
|
add_opinion = {
|
|
modifier = perk_negotiated_alliance_opinion
|
|
target = scope:actor
|
|
}
|
|
}
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
scope:actor = {
|
|
hostage_oath_of_friendship_trigger = yes
|
|
}
|
|
}
|
|
scope:actor = {
|
|
create_alliance = {
|
|
target = scope:recipient
|
|
allied_through_owner = scope:actor
|
|
allied_through_target = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
add_clan_unity_interaction_effect = {
|
|
CHARACTER = scope:actor
|
|
TARGET = scope:recipient
|
|
VALUE = minor_unity_gain
|
|
DESC = clan_unity_alliance.desc
|
|
REVERSE_NON_HOUSE_TARGET = no
|
|
}
|
|
}
|
|
|
|
on_decline = {
|
|
scope:actor = {
|
|
trigger_event = char_interaction.0236
|
|
}
|
|
scope:actor = {
|
|
add_opinion = {
|
|
modifier = refused_alliance_opinion
|
|
target = scope:recipient
|
|
}
|
|
}
|
|
|
|
add_clan_unity_interaction_effect = {
|
|
CHARACTER = scope:actor
|
|
TARGET = scope:recipient
|
|
VALUE = minor_unity_loss
|
|
DESC = clan_unity_alliance_refusal.desc
|
|
REVERSE_NON_HOUSE_TARGET = no
|
|
}
|
|
}
|
|
|
|
auto_accept = {
|
|
custom_description = {
|
|
text = "spending_hook"
|
|
subject = scope:actor
|
|
object = scope:recipient
|
|
scope:hook = yes
|
|
}
|
|
}
|
|
ai_accept = {
|
|
base = 0
|
|
|
|
# Tier Difference (+/-)
|
|
# Inheritance (+)
|
|
# Opinion (+/-)
|
|
# Dynasty Prestige. (+)
|
|
# Different Faith. (-)
|
|
# Liege is asking (+)
|
|
# Dread (+)
|
|
# Power difference (+/-)
|
|
# Claimants (+/-)
|
|
# Same House (+)
|
|
# Declared war opinion
|
|
# Actor is at war penalty
|
|
|
|
modifier = {
|
|
add = 20
|
|
scope:recipient = {
|
|
is_close_family_of = scope:actor
|
|
}
|
|
desc = CLOSE_FAMILY_REASON
|
|
}
|
|
|
|
modifier = {
|
|
add = 10
|
|
scope:recipient = {
|
|
NOT = { is_close_family_of = scope:actor }
|
|
is_extended_family_of = scope:actor
|
|
}
|
|
desc = EXTENDED_FAMILY_REASON
|
|
}
|
|
|
|
modifier = {
|
|
add = -20
|
|
scope:recipient = {
|
|
NOT = { is_close_or_extended_family_of = scope:actor }
|
|
any_spouse = {
|
|
NOT = { is_close_family_of = scope:actor }
|
|
is_extended_family_of = scope:actor
|
|
}
|
|
}
|
|
desc = DISTANT_FAMILY_CONNECTION_REASON
|
|
}
|
|
|
|
# Tier Differences
|
|
modifier = {
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value >= 1
|
|
}
|
|
}
|
|
add = {
|
|
value = 30
|
|
if = {
|
|
limit = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = 2
|
|
}
|
|
}
|
|
add = 30
|
|
}
|
|
if = {
|
|
limit = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = 3
|
|
}
|
|
}
|
|
add = 60
|
|
}
|
|
if = {
|
|
limit = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = 4
|
|
}
|
|
}
|
|
add = 90
|
|
}
|
|
if = {
|
|
limit = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = 5
|
|
}
|
|
}
|
|
add = 120
|
|
}
|
|
}
|
|
desc = RANK_DIFFERENCE_REASON
|
|
}
|
|
modifier = {
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value <= -1
|
|
}
|
|
}
|
|
add = {
|
|
value = -30
|
|
if = {
|
|
limit = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = -2
|
|
}
|
|
}
|
|
add = -30
|
|
}
|
|
if = {
|
|
limit = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = -3
|
|
}
|
|
}
|
|
add = -60
|
|
}
|
|
if = {
|
|
limit = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = -4
|
|
}
|
|
}
|
|
add = -90
|
|
}
|
|
if = {
|
|
limit = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = -5
|
|
}
|
|
}
|
|
add = -120
|
|
}
|
|
}
|
|
desc = RANK_DIFFERENCE_REASON
|
|
}
|
|
modifier = {
|
|
scope:recipient = {
|
|
has_relation_lover = scope:actor
|
|
}
|
|
add = {
|
|
value = 25
|
|
}
|
|
desc = WE_ARE_LOVERS
|
|
}
|
|
modifier = {
|
|
scope:recipient = {
|
|
has_relation_friend = scope:actor
|
|
}
|
|
add = {
|
|
value = 25
|
|
}
|
|
desc = WE_ARE_FRIENDS
|
|
}
|
|
modifier = {
|
|
scope:recipient = {
|
|
is_heir_of = scope:actor
|
|
}
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value > 0
|
|
}
|
|
}
|
|
add = {
|
|
value = 10
|
|
if = {
|
|
limit = {
|
|
scope:actor = { player_heir = scope:recipient }
|
|
}
|
|
add = 10
|
|
}
|
|
}
|
|
desc = IS_HEIR_REASON
|
|
}
|
|
opinion_modifier = { # More likely to accept if Recipient likes the Actor
|
|
who = scope:recipient
|
|
opinion_target = scope:actor
|
|
multiplier = 0.25
|
|
min = 0
|
|
desc = AI_OPINION_REASON
|
|
}
|
|
opinion_modifier = { # Less likely to accept if Recipient dislikes the Actor
|
|
who = scope:recipient
|
|
opinion_target = scope:actor
|
|
multiplier = 1
|
|
max = 0
|
|
desc = AI_OPINION_REASON
|
|
}
|
|
|
|
modifier = {
|
|
add = 20
|
|
scope:recipient = {
|
|
has_trait = loyal
|
|
}
|
|
desc = INTERACTION_LOYAL
|
|
}
|
|
|
|
modifier = {
|
|
add = 20
|
|
scope:recipient = {
|
|
has_trait = trusting
|
|
}
|
|
desc = INTERACTION_TRUSTING
|
|
}
|
|
|
|
modifier = {
|
|
add = 5
|
|
scope:recipient = {
|
|
has_trait = craven
|
|
}
|
|
desc = INTERACTION_CRAVEN
|
|
}
|
|
|
|
modifier = {
|
|
add = -20
|
|
scope:recipient = {
|
|
has_trait = paranoid
|
|
}
|
|
desc = INTERACTION_PARANOID
|
|
}
|
|
|
|
modifier = {
|
|
add = -20
|
|
scope:recipient = {
|
|
has_trait = arrogant
|
|
}
|
|
desc = INTERACTION_ARROGANT
|
|
}
|
|
|
|
modifier = {
|
|
add = -20
|
|
scope:recipient = {
|
|
has_trait = ambitious
|
|
}
|
|
desc = INTERACTION_AMBITIOUS
|
|
}
|
|
|
|
modifier = {
|
|
add = -40
|
|
scope:recipient = {
|
|
has_trait = disloyal
|
|
}
|
|
desc = INTERACTION_DISLOYAL
|
|
}
|
|
|
|
modifier = {
|
|
add = -10
|
|
scope:recipient = {
|
|
has_trait = fickle
|
|
}
|
|
desc = INTERACTION_FICKLE
|
|
}
|
|
|
|
# Rivalry
|
|
modifier = { # Say no to rivals
|
|
add = -100
|
|
scope:recipient = {
|
|
has_relation_rival = scope:actor
|
|
NOT = { has_relation_nemesis = scope:actor }
|
|
}
|
|
desc = "ACTOR_RIVAL_TO_ME_REASON"
|
|
}
|
|
modifier = { # Say no to nemesis
|
|
add = -300
|
|
scope:recipient = {
|
|
has_relation_nemesis = scope:actor
|
|
}
|
|
desc = "ACTOR_NEMESIS_TO_ME_REASON"
|
|
}
|
|
|
|
# Dynasty Prestige Levels
|
|
modifier = {
|
|
add = -5
|
|
desc = AI_DYNASTY_PRESTIGE_REASON
|
|
scope:actor = { has_dynasty = yes }
|
|
scope:actor.dynasty != scope:recipient.dynasty
|
|
scope:actor.dynasty = { dynasty_prestige_level = 0 }
|
|
}
|
|
modifier = {
|
|
desc = AI_DYNASTY_PRESTIGE_REASON
|
|
scope:actor = { has_dynasty = yes }
|
|
scope:actor.dynasty != scope:recipient.dynasty
|
|
scope:actor.dynasty = { dynasty_prestige_level >= 2 }
|
|
add = {
|
|
value = 10
|
|
if = {
|
|
limit = {
|
|
scope:actor.dynasty = { dynasty_prestige_level >= 3 }
|
|
}
|
|
add = 5
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:actor.dynasty = { dynasty_prestige_level >= 4 }
|
|
}
|
|
add = 5
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:actor.dynasty = { dynasty_prestige_level >= 5 }
|
|
}
|
|
add = 5
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:actor.dynasty = { dynasty_prestige_level >= 6 }
|
|
}
|
|
add = 5
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:actor.dynasty = { dynasty_prestige_level >= 7 }
|
|
}
|
|
add = 5
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:actor.dynasty = { dynasty_prestige_level >= 8 }
|
|
}
|
|
add = 5
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:actor.dynasty = { dynasty_prestige_level >= 9 }
|
|
}
|
|
add = 5
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:actor.dynasty = { dynasty_prestige_level >= 10 }
|
|
}
|
|
add = 5
|
|
}
|
|
}
|
|
}
|
|
modifier = { #Faith compatibility
|
|
scope:recipient.faith = {
|
|
faith_hostility_level = {
|
|
target = scope:actor.faith
|
|
value > faith_fully_accepted_level
|
|
}
|
|
}
|
|
NOT = {
|
|
scope:recipient.ai_zeal <= -50
|
|
}
|
|
add = {
|
|
value = -10
|
|
if = {
|
|
limit = {
|
|
# Exempt certain struggle phases.
|
|
NOT = { is_struggle_parameter_active_interfaith_marriages_available_between_involved_characters_trigger = yes }
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:recipient.faith = {
|
|
faith_hostility_level = {
|
|
target = scope:actor.faith
|
|
value >= faith_astray_level
|
|
}
|
|
}
|
|
}
|
|
subtract = 20
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:recipient.faith = {
|
|
faith_hostility_level = {
|
|
target = scope:actor.faith
|
|
value >= faith_hostile_level
|
|
}
|
|
}
|
|
}
|
|
subtract = 20
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:recipient.faith = {
|
|
faith_hostility_level = {
|
|
target = scope:actor.faith
|
|
value >= faith_evil_level
|
|
}
|
|
}
|
|
}
|
|
subtract = 50
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:recipient.ai_zeal <= -25
|
|
}
|
|
divide = 2
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
scope:recipient.ai_zeal >= 50
|
|
}
|
|
multiply = 2
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:recipient.faith = { has_doctrine = doctrine_pluralism_pluralistic }
|
|
}
|
|
divide = 2
|
|
}
|
|
}
|
|
}
|
|
desc = MARRY_DIFFERENT_FAITH_REASON
|
|
}
|
|
|
|
modifier = { # A Recipient is more likely to agree to an alliance requested by his liege.
|
|
add = 20
|
|
scope:recipient = {
|
|
target_is_liege_or_above = scope:actor
|
|
}
|
|
desc = LIEGE_REASON
|
|
}
|
|
|
|
modifier = {
|
|
add = {
|
|
value = 1
|
|
subtract = {
|
|
value = scope:recipient.max_military_strength # For foreign diplomacy, consider recipients max
|
|
divide = { value = scope:actor.current_military_strength min = 1 }
|
|
}
|
|
multiply = 20
|
|
min = -1000
|
|
max = 100
|
|
}
|
|
desc = AI_MILITARY_BALANCE_REASON
|
|
}
|
|
# Recipient is a Claimant to Actor's titles.
|
|
modifier = {
|
|
scope:recipient = {
|
|
any_claim = {
|
|
holder = scope:actor
|
|
}
|
|
NOR = {
|
|
is_heir_of = scope:actor
|
|
ai_greed <= -25
|
|
}
|
|
}
|
|
add = {
|
|
value = -50
|
|
if = {
|
|
limit = {
|
|
scope:recipient.ai_greed >= 25
|
|
}
|
|
add = ai_greed
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:recipient.house != scope:actor.house
|
|
}
|
|
multiply = 2
|
|
}
|
|
}
|
|
desc = IS_CLAIMANT_TO_ACTORS_TITLES
|
|
}
|
|
#Actor has claims on recipient's titles.
|
|
modifier = {
|
|
scope:actor = {
|
|
any_claim = {
|
|
holder = scope:recipient
|
|
}
|
|
}
|
|
add = 25
|
|
desc = IS_CLAIMANT_TO_RECIPIENT_TITLES
|
|
}
|
|
modifier = {
|
|
scope:recipient = {
|
|
NOT = {
|
|
any_claim = {
|
|
holder = scope:actor
|
|
}
|
|
}
|
|
}
|
|
scope:recipient.house = scope:actor.house
|
|
add = 15
|
|
desc = IS_SAME_HOUSE_REASON
|
|
}
|
|
modifier = {
|
|
scope:recipient = {
|
|
has_opinion_modifier = {
|
|
target = scope:actor
|
|
modifier = declared_war
|
|
}
|
|
}
|
|
add = -100
|
|
desc = DECLARED_WAR_REASON
|
|
}
|
|
|
|
# Don't form new alliances with people already at war.
|
|
modifier = {
|
|
scope:actor = {
|
|
is_at_war = yes
|
|
|
|
# Since vassals and lieges can't call us into wars, this doesn't matter for us if we have that relationship.
|
|
NOR = {
|
|
target_is_liege_or_above = scope:recipient
|
|
target_is_vassal_or_below = scope:recipient
|
|
}
|
|
}
|
|
add = -50
|
|
desc = IS_AT_WAR_REASON
|
|
}
|
|
|
|
#Bonus from Tradition Astute Diplomats
|
|
modifier = {
|
|
scope:actor.culture = { has_cultural_parameter = facilitate_alliance_acceptance }
|
|
add = 50 #should be in a file 00_traditions_values
|
|
desc = TRADITION_ASTUTE_DIPLOMATS_ACCEPTANCE_MODIFIER
|
|
}
|
|
|
|
# The AI doesn't want to form alliances with AI vassals within its capital duchy, so it can revoke them
|
|
modifier = {
|
|
scope:actor = {
|
|
is_ai = yes
|
|
is_vassal_or_below_of = scope:recipient
|
|
any_held_title = {
|
|
title_tier = county
|
|
de_jure_liege = scope:actor.primary_title.title_capital_county.de_jure_liege
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
is_ai = yes
|
|
}
|
|
add = -5000
|
|
}
|
|
|
|
# Feud
|
|
modifier = {
|
|
add = -25
|
|
scope:recipient = {
|
|
house_has_feud_relation_with_trigger = { TARGET = scope:actor }
|
|
}
|
|
desc = MARRY_FAMILY_FEUD_REASON
|
|
}
|
|
|
|
# Existing Alliances
|
|
modifier = {
|
|
add = {
|
|
scope:actor = {
|
|
every_ally = {
|
|
add = -15
|
|
}
|
|
}
|
|
}
|
|
scope:actor = {
|
|
any_ally = {
|
|
count >= 2
|
|
}
|
|
}
|
|
NOT = {
|
|
scope:recipient = {
|
|
government_has_flag = government_is_clan
|
|
is_vassal_or_below_of = scope:actor
|
|
}
|
|
}
|
|
desc = EXISTING_ALLIANCES_REASON
|
|
}
|
|
|
|
# Existing Alliances
|
|
modifier = {
|
|
add = {
|
|
scope:recipient = {
|
|
every_ally = {
|
|
add = -15
|
|
}
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
any_ally = {
|
|
count >= 2
|
|
}
|
|
}
|
|
NOT = {
|
|
scope:recipient = {
|
|
government_has_flag = government_is_clan
|
|
is_vassal_or_below_of = scope:actor
|
|
}
|
|
}
|
|
desc = THEIR_EXISTING_ALLIANCES_REASON
|
|
}
|
|
|
|
modifier = {
|
|
add = intimidated_reason_value
|
|
scope:recipient = {
|
|
target_is_liege_or_above = scope:actor
|
|
has_dread_level_towards = {
|
|
target = scope:actor
|
|
level = 1
|
|
}
|
|
}
|
|
desc = INTIMIDATED_REASON
|
|
}
|
|
modifier = {
|
|
add = cowed_reason_value
|
|
scope:recipient = {
|
|
target_is_liege_or_above = scope:actor
|
|
has_dread_level_towards = {
|
|
target = scope:actor
|
|
level = 2
|
|
}
|
|
}
|
|
desc = COWED_REASON
|
|
}
|
|
|
|
modifier = {
|
|
add = intimidated_external_reason_value
|
|
scope:recipient = {
|
|
NOT = { target_is_liege_or_above = scope:actor }
|
|
has_dread_level_towards = {
|
|
target = scope:actor
|
|
level = 1
|
|
}
|
|
}
|
|
desc = INTIMIDATED_REASON
|
|
}
|
|
modifier = {
|
|
add = cowed_external_reason_value
|
|
scope:recipient = {
|
|
NOT = { target_is_liege_or_above = scope:actor }
|
|
has_dread_level_towards = {
|
|
target = scope:actor
|
|
level = 2
|
|
}
|
|
}
|
|
desc = COWED_REASON
|
|
}
|
|
|
|
# Unity modifiers
|
|
evaluate_action_increasing_house_unity = {
|
|
VALUE = 100
|
|
}
|
|
|
|
fp3_struggle_resist_allied_wars_modifier = yes
|
|
|
|
# LOW LEGITIMACY
|
|
modifier = {
|
|
desc = "LOW_LEGITIMACY_REASON"
|
|
scope:actor = {
|
|
OR = {
|
|
has_legitimacy_flag = reduced_alliance_acceptance
|
|
has_legitimacy_flag = very_reduced_alliance_acceptance
|
|
has_legitimacy_flag = massively_reduced_alliance_acceptance
|
|
}
|
|
}
|
|
add = {
|
|
value = 0
|
|
if = {
|
|
limit = { scope:actor = { has_legitimacy_flag = reduced_alliance_acceptance } }
|
|
add = -25
|
|
}
|
|
if = {
|
|
limit = { scope:actor = { has_legitimacy_flag = very_reduced_alliance_acceptance } }
|
|
add = -50
|
|
}
|
|
if = {
|
|
limit = { scope:actor = { has_legitimacy_flag = massively_reduced_alliance_acceptance } }
|
|
add = -100
|
|
}
|
|
}
|
|
}
|
|
|
|
# HIGH LEGITIMACY
|
|
modifier = {
|
|
desc = "HIGH_LEGITIMACY_REASON"
|
|
scope:actor = {
|
|
OR = {
|
|
has_legitimacy_flag = increased_alliance_acceptance
|
|
has_legitimacy_flag = very_increased_alliance_acceptance
|
|
has_legitimacy_flag = extra_increased_alliance_acceptance
|
|
}
|
|
}
|
|
add = {
|
|
value = 0
|
|
if = {
|
|
limit = { scope:actor = { has_legitimacy_flag = increased_alliance_acceptance } }
|
|
add = 10
|
|
}
|
|
if = {
|
|
limit = { scope:actor = { has_legitimacy_flag = very_increased_alliance_acceptance } }
|
|
add = 25
|
|
}
|
|
if = {
|
|
limit = { scope:actor = { has_legitimacy_flag = extra_increased_alliance_acceptance } }
|
|
add = 50
|
|
}
|
|
}
|
|
}
|
|
|
|
# INFLUENCE
|
|
modifier = {
|
|
desc = INFLUENCE_REASON
|
|
scope:influence = yes
|
|
add = {
|
|
value = 10
|
|
multiply = scope:actor.influence_level
|
|
min = 5
|
|
}
|
|
}
|
|
|
|
# TGP ALLIANCE WITH NF HOUSE HEAD
|
|
modifier = {
|
|
add = 750
|
|
scope:actor = {
|
|
is_house_head = yes
|
|
scope:recipient.house ?= this.house
|
|
any_held_title = { is_noble_family_title = yes }
|
|
}
|
|
desc = JAPANESE_HOUSE_HEAD_ALLIANCE_REASON
|
|
}
|
|
}
|
|
|
|
ai_potential = {
|
|
is_at_war = no
|
|
}
|
|
|
|
ai_targets = {
|
|
ai_recipients = dynasty
|
|
max = 20
|
|
}
|
|
|
|
ai_targets = {
|
|
ai_recipients = family
|
|
max = 10
|
|
}
|
|
|
|
ai_targets = {
|
|
ai_recipients = spouses
|
|
}
|
|
ai_frequency_by_tier = {
|
|
barony = 0
|
|
county = 144
|
|
duchy = 72
|
|
kingdom = 36
|
|
empire = 36
|
|
hegemony = 36
|
|
}
|
|
|
|
ai_will_do = {
|
|
base = 0
|
|
|
|
modifier = {
|
|
add = 100
|
|
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 = { # Clans always want alliances with Vassals
|
|
add = 100
|
|
scope:actor = {
|
|
government_has_flag = government_is_clan
|
|
}
|
|
scope:recipient = {
|
|
is_vassal_of = scope:actor
|
|
}
|
|
}
|
|
|
|
# Unity modifiers
|
|
evaluate_action_increasing_house_unity = {
|
|
VALUE = 100
|
|
}
|
|
|
|
modifier = { # The AI shouldn't propose to their Lieges
|
|
factor = 0
|
|
is_liege_or_above_of = scope:recipient
|
|
}
|
|
|
|
modifier = { # The AI shouldn't propose to their Vassals unless Clan
|
|
factor = 0
|
|
scope:actor = {
|
|
NOT = { government_has_flag = government_is_clan }
|
|
}
|
|
scope:recipient = {
|
|
is_vassal_of = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
perk_alliance_interaction = {
|
|
category = interaction_category_diplomacy
|
|
ai_min_reply_days = 4
|
|
ai_max_reply_days = 9
|
|
icon = alliance
|
|
|
|
|
|
interface_priority = 60
|
|
desc = perk_alliance_interaction_desc
|
|
|
|
greeting = positive
|
|
notification_text = PERK_NEGOTIATE_ALLIANCE_NOTIFICATION
|
|
|
|
is_shown = {
|
|
scope:recipient = {
|
|
NOR = {
|
|
this = scope:actor
|
|
is_allied_to = scope:actor
|
|
target_is_vassal_or_below = scope:actor # Can only sign with external rulers/peer vassals, though the alliance is preserved if they somehow become your vassals
|
|
target_is_liege_or_above = scope:actor
|
|
government_has_flag = government_is_true_herder
|
|
}
|
|
is_ruler = yes
|
|
primary_title.tier > tier_barony
|
|
}
|
|
scope:actor = {
|
|
has_perk = defensive_negotiations_perk
|
|
is_landless_adventurer = no
|
|
NOR = {
|
|
government_has_flag = government_is_true_herder
|
|
# This interaction is harder to push through than Negotiate Alliance, and does the same thing, so don't show both
|
|
is_character_interaction_shown = {
|
|
recipient = scope:recipient
|
|
interaction = negotiate_alliance_interaction
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
scope:actor = {
|
|
is_landless_adventurer = no
|
|
}
|
|
scope:recipient = {
|
|
NOT = { target_is_vassal_or_below = scope:actor } # Can only sign with external rulers/peer vassals, though the alliance is preserved if they somehow become your vassals
|
|
NOT = { target_is_liege_or_above = scope:actor }
|
|
}
|
|
|
|
custom_description = {
|
|
text = "already_has_an_alliance_deal"
|
|
subject = scope:recipient
|
|
scope:actor = {
|
|
NOT = {
|
|
any_ally = {
|
|
has_opinion_modifier = {
|
|
modifier = perk_negotiated_alliance_opinion
|
|
target = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
scope:recipient = {
|
|
is_playable_character = yes
|
|
is_at_war = no
|
|
is_imprisoned = no
|
|
}
|
|
|
|
scope:actor = {
|
|
is_playable_character = yes
|
|
is_at_war = no
|
|
is_imprisoned = no
|
|
}
|
|
|
|
custom_description = {
|
|
text = "has_already_rejected_renegotiation"
|
|
subject = scope:recipient
|
|
scope:actor = {
|
|
NOT = {
|
|
has_opinion_modifier = {
|
|
modifier = refused_alliance_opinion
|
|
target = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
can_send = {
|
|
custom_description = { # Exploit prevention
|
|
text = "has_sent_interaction_already"
|
|
subject = scope:recipient
|
|
scope:actor = {
|
|
NOT = {
|
|
has_pending_interaction_of_type = perk_alliance_interaction
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
on_auto_accept = {
|
|
scope:recipient = {
|
|
trigger_event = char_interaction.0234
|
|
}
|
|
}
|
|
|
|
#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"
|
|
|
|
# Admin Gov can spend Influence to increase AI acceptance towards other same-realm admin characters
|
|
send_option = {
|
|
is_shown = {
|
|
scope:actor = {
|
|
government_allows = administrative
|
|
}
|
|
scope:recipient = {
|
|
top_liege = scope:actor.top_liege
|
|
government_allows = administrative
|
|
}
|
|
}
|
|
is_valid = {
|
|
scope:actor = {
|
|
influence >= major_influence_value
|
|
}
|
|
custom_tooltip = {
|
|
text = ALREADY_USING_HOOK
|
|
NOT = { scope:hook = yes }
|
|
}
|
|
}
|
|
flag = influence
|
|
localization = SPEND_INFLUENCE
|
|
}
|
|
|
|
send_options_exclusive = no
|
|
|
|
on_accept = {
|
|
save_scope_value_as = { #So that we can show the opinion gain in the response event
|
|
name = perk_alliance_interaction
|
|
value = yes
|
|
}
|
|
scope:actor = {
|
|
custom_tooltip = negotiate_alliance_effect_tooltip
|
|
trigger_event = char_interaction.0235
|
|
create_alliance = {
|
|
target = scope:recipient
|
|
allied_through_owner = scope:actor
|
|
allied_through_target = scope:recipient
|
|
}
|
|
|
|
stress_impact = {
|
|
shy = minor_stress_impact_gain
|
|
}
|
|
|
|
if = {
|
|
limit = { scope:hook = yes }
|
|
use_hook = scope:recipient
|
|
}
|
|
|
|
if = {
|
|
limit = {
|
|
scope:influence = yes
|
|
}
|
|
change_influence = major_influence_loss
|
|
}
|
|
}
|
|
scope:recipient = { # This opinion modifier controls the interaction, and is removed when breaking the alliance in any way (though on_actions)
|
|
add_opinion = {
|
|
modifier = perk_negotiated_alliance_opinion
|
|
target = scope:actor
|
|
}
|
|
}
|
|
|
|
add_clan_unity_interaction_effect = {
|
|
CHARACTER = scope:actor
|
|
TARGET = scope:recipient
|
|
VALUE = medium_unity_gain
|
|
DESC = clan_unity_alliance.desc
|
|
REVERSE_NON_HOUSE_TARGET = no
|
|
}
|
|
}
|
|
|
|
on_decline = {
|
|
scope:actor = {
|
|
trigger_event = char_interaction.0236
|
|
}
|
|
scope:actor = {
|
|
add_opinion = {
|
|
modifier = refused_alliance_opinion
|
|
target = scope:recipient
|
|
}
|
|
}
|
|
|
|
add_clan_unity_interaction_effect = {
|
|
CHARACTER = scope:actor
|
|
TARGET = scope:recipient
|
|
VALUE = minor_unity_loss
|
|
DESC = clan_unity_alliance_refusal.desc
|
|
REVERSE_NON_HOUSE_TARGET = no
|
|
}
|
|
}
|
|
|
|
auto_accept = {
|
|
custom_description = {
|
|
text = "spending_hook"
|
|
subject = scope:actor
|
|
object = scope:recipient
|
|
scope:hook = yes
|
|
}
|
|
}
|
|
|
|
ai_accept = { # Similar to Negotiate Alliance, but without modifiers for Liege, being an heir, etc.
|
|
base = -25
|
|
|
|
# Tier Differences
|
|
modifier = {
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value >= 1
|
|
}
|
|
}
|
|
add = {
|
|
value = 30
|
|
if = {
|
|
limit = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = 2
|
|
}
|
|
}
|
|
add = 30
|
|
}
|
|
if = {
|
|
limit = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = 3
|
|
}
|
|
}
|
|
add = 60
|
|
}
|
|
if = {
|
|
limit = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = 4
|
|
}
|
|
}
|
|
add = 90
|
|
}
|
|
if = {
|
|
limit = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = 5
|
|
}
|
|
}
|
|
add = 120
|
|
}
|
|
}
|
|
desc = RANK_DIFFERENCE_REASON
|
|
}
|
|
modifier = {
|
|
scope:recipient = {
|
|
has_relation_lover = scope:actor
|
|
}
|
|
add = {
|
|
value = 25
|
|
}
|
|
desc = WE_ARE_LOVERS
|
|
}
|
|
modifier = {
|
|
scope:recipient = {
|
|
has_relation_friend = scope:actor
|
|
}
|
|
add = {
|
|
value = 25
|
|
}
|
|
desc = WE_ARE_FRIENDS
|
|
}
|
|
modifier = {
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value <= -1
|
|
}
|
|
}
|
|
add = {
|
|
value = -30
|
|
if = {
|
|
limit = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = -2
|
|
}
|
|
}
|
|
add = -30
|
|
}
|
|
if = {
|
|
limit = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = -3
|
|
}
|
|
}
|
|
add = -60
|
|
}
|
|
if = {
|
|
limit = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = -4
|
|
}
|
|
}
|
|
add = -90
|
|
}
|
|
if = {
|
|
limit = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = -5
|
|
}
|
|
}
|
|
add = -120
|
|
}
|
|
}
|
|
desc = RANK_DIFFERENCE_REASON
|
|
}
|
|
opinion_modifier = { # More likely to accept if Recipient likes the Actor
|
|
who = scope:recipient
|
|
opinion_target = scope:actor
|
|
multiplier = 0.25
|
|
min = 0
|
|
desc = AI_OPINION_REASON
|
|
}
|
|
opinion_modifier = { # Less likely to accept if Recipient dislikes the Actor
|
|
who = scope:recipient
|
|
opinion_target = scope:actor
|
|
multiplier = 1
|
|
max = 0
|
|
desc = AI_OPINION_REASON
|
|
}
|
|
|
|
modifier = {
|
|
add = 20
|
|
scope:recipient = {
|
|
has_trait = loyal
|
|
}
|
|
desc = INTERACTION_LOYAL
|
|
}
|
|
|
|
modifier = {
|
|
add = 20
|
|
scope:recipient = {
|
|
has_trait = trusting
|
|
}
|
|
desc = INTERACTION_TRUSTING
|
|
}
|
|
|
|
modifier = {
|
|
add = 5
|
|
scope:recipient = {
|
|
has_trait = craven
|
|
}
|
|
desc = INTERACTION_CRAVEN
|
|
}
|
|
|
|
modifier = {
|
|
add = -20
|
|
scope:recipient = {
|
|
has_trait = paranoid
|
|
}
|
|
desc = INTERACTION_PARANOID
|
|
}
|
|
|
|
modifier = {
|
|
add = -20
|
|
scope:recipient = {
|
|
has_trait = arrogant
|
|
}
|
|
desc = INTERACTION_ARROGANT
|
|
}
|
|
|
|
modifier = {
|
|
add = -20
|
|
scope:recipient = {
|
|
has_trait = ambitious
|
|
}
|
|
desc = INTERACTION_AMBITIOUS
|
|
}
|
|
|
|
modifier = {
|
|
add = -40
|
|
scope:recipient = {
|
|
has_trait = disloyal
|
|
}
|
|
desc = INTERACTION_DISLOYAL
|
|
}
|
|
|
|
modifier = {
|
|
add = -10
|
|
scope:recipient = {
|
|
has_trait = fickle
|
|
}
|
|
desc = INTERACTION_FICKLE
|
|
}
|
|
|
|
# Rivalry
|
|
modifier = { # Say no to rivals
|
|
add = -100
|
|
scope:recipient = {
|
|
has_relation_rival = scope:actor
|
|
NOT = { has_relation_nemesis = scope:actor }
|
|
}
|
|
desc = "ACTOR_RIVAL_TO_ME_REASON"
|
|
}
|
|
modifier = { # Say no to nemesis
|
|
add = -300
|
|
scope:recipient = {
|
|
has_relation_nemesis = scope:actor
|
|
}
|
|
desc = "ACTOR_NEMESIS_TO_ME_REASON"
|
|
}
|
|
|
|
# Dynasty Prestige Levels
|
|
modifier = {
|
|
add = -5
|
|
desc = AI_DYNASTY_PRESTIGE_REASON
|
|
scope:actor = { has_dynasty = yes }
|
|
scope:actor.dynasty != scope:recipient.dynasty
|
|
scope:actor.dynasty = { dynasty_prestige_level = 0 }
|
|
}
|
|
modifier = {
|
|
desc = AI_DYNASTY_PRESTIGE_REASON
|
|
scope:actor = { has_dynasty = yes }
|
|
scope:actor.dynasty != scope:recipient.dynasty
|
|
scope:actor.dynasty = { dynasty_prestige_level >= 2 }
|
|
add = {
|
|
value = 10
|
|
if = {
|
|
limit = {
|
|
scope:actor.dynasty = { dynasty_prestige_level >= 3 }
|
|
}
|
|
add = 5
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:actor.dynasty = { dynasty_prestige_level >= 4 }
|
|
}
|
|
add = 5
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:actor.dynasty = { dynasty_prestige_level >= 5 }
|
|
}
|
|
add = 5
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:actor.dynasty = { dynasty_prestige_level >= 6 }
|
|
}
|
|
add = 5
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:actor.dynasty = { dynasty_prestige_level >= 7 }
|
|
}
|
|
add = 5
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:actor.dynasty = { dynasty_prestige_level >= 8 }
|
|
}
|
|
add = 5
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:actor.dynasty = { dynasty_prestige_level >= 9 }
|
|
}
|
|
add = 5
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:actor.dynasty = { dynasty_prestige_level >= 10 }
|
|
}
|
|
add = 5
|
|
}
|
|
}
|
|
}
|
|
modifier = { #Faith compatibility
|
|
scope:recipient.faith = {
|
|
faith_hostility_level = {
|
|
target = scope:actor.faith
|
|
value > faith_fully_accepted_level
|
|
}
|
|
}
|
|
NOT = {
|
|
scope:recipient.ai_zeal <= -50
|
|
}
|
|
add = {
|
|
value = -10
|
|
if = {
|
|
limit = {
|
|
# Exempt certain struggle phases.
|
|
NOT = { is_struggle_parameter_active_interfaith_marriages_available_between_involved_characters_trigger = yes }
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:recipient.faith = {
|
|
faith_hostility_level = {
|
|
target = scope:actor.faith
|
|
value >= faith_astray_level
|
|
}
|
|
}
|
|
}
|
|
subtract = 20
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:recipient.faith = {
|
|
faith_hostility_level = {
|
|
target = scope:actor.faith
|
|
value >= faith_hostile_level
|
|
}
|
|
}
|
|
}
|
|
subtract = 20
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:recipient.faith = {
|
|
faith_hostility_level = {
|
|
target = scope:actor.faith
|
|
value >= faith_evil_level
|
|
}
|
|
}
|
|
}
|
|
subtract = 50
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:recipient.ai_zeal <= -25
|
|
}
|
|
divide = 2
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
scope:recipient.ai_zeal >= 50
|
|
}
|
|
multiply = 2
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:recipient.faith = { has_doctrine = doctrine_pluralism_pluralistic }
|
|
}
|
|
divide = 2
|
|
}
|
|
}
|
|
}
|
|
desc = MARRY_DIFFERENT_FAITH_REASON
|
|
}
|
|
|
|
modifier = { # A Recipient is more likely to agree to an alliance requested by his liege.
|
|
add = 20
|
|
scope:recipient = {
|
|
target_is_liege_or_above = scope:actor
|
|
}
|
|
desc = LIEGE_REASON
|
|
}
|
|
|
|
modifier = {
|
|
add = {
|
|
value = 1
|
|
subtract = {
|
|
value = scope:recipient.max_military_strength # For foreign diplomacy, consider recipients max
|
|
divide = { value = scope:actor.current_military_strength min = 1 }
|
|
}
|
|
multiply = 20
|
|
min = -1000
|
|
max = 100
|
|
}
|
|
desc = AI_MILITARY_BALANCE_REASON
|
|
}
|
|
# Recipient is a Claimant to Actor's titles.
|
|
modifier = {
|
|
scope:recipient = {
|
|
any_claim = {
|
|
holder = scope:actor
|
|
}
|
|
NOR = {
|
|
is_heir_of = scope:actor
|
|
ai_greed <= -25
|
|
}
|
|
}
|
|
add = {
|
|
value = -50
|
|
if = {
|
|
limit = {
|
|
scope:recipient.ai_greed >= 25
|
|
}
|
|
add = ai_greed
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:recipient.house != scope:actor.house
|
|
}
|
|
multiply = 2
|
|
}
|
|
}
|
|
desc = IS_CLAIMANT_TO_ACTORS_TITLES
|
|
}
|
|
#Actor has claims on recipient's titles.
|
|
modifier = {
|
|
scope:actor = {
|
|
any_claim = {
|
|
holder = scope:recipient
|
|
}
|
|
}
|
|
add = 25
|
|
desc = IS_CLAIMANT_TO_RECIPIENT_TITLES
|
|
}
|
|
modifier = {
|
|
scope:recipient = {
|
|
NOT = {
|
|
any_claim = {
|
|
holder = scope:actor
|
|
}
|
|
}
|
|
}
|
|
scope:recipient.house = scope:actor.house
|
|
add = 15
|
|
desc = IS_SAME_HOUSE_REASON
|
|
}
|
|
modifier = {
|
|
scope:recipient = {
|
|
has_opinion_modifier = {
|
|
target = scope:actor
|
|
modifier = declared_war
|
|
}
|
|
}
|
|
add = -100
|
|
desc = DECLARED_WAR_REASON
|
|
}
|
|
|
|
# Don't form new alliances with people already at war.
|
|
modifier = {
|
|
scope:actor = {
|
|
is_at_war = yes
|
|
|
|
# Since vassals and lieges can't call us into wars, this doesn't matter for us if we have that relationship.
|
|
NOR = {
|
|
target_is_liege_or_above = scope:recipient
|
|
target_is_vassal_or_below = scope:recipient
|
|
}
|
|
}
|
|
add = -50
|
|
desc = IS_AT_WAR_REASON
|
|
}
|
|
|
|
#Bonus from Tradition Astute Diplomats
|
|
modifier = {
|
|
scope:actor.culture = { has_cultural_parameter = facilitate_alliance_acceptance }
|
|
add = 50 #should be in a file 00_traditions_values
|
|
desc = TRADITION_ASTUTE_DIPLOMATS_ACCEPTANCE_MODIFIER
|
|
}
|
|
|
|
# The AI doesn't want to form alliances with AI vassals within its capital duchy, so it can revoke them
|
|
modifier = {
|
|
scope:actor = {
|
|
is_ai = yes
|
|
is_vassal_or_below_of = scope:recipient
|
|
any_held_title = {
|
|
title_tier = county
|
|
de_jure_liege = scope:actor.primary_title.title_capital_county.de_jure_liege
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
is_ai = yes
|
|
}
|
|
add = -5000
|
|
}
|
|
|
|
# Feud
|
|
modifier = {
|
|
add = -25
|
|
scope:recipient = {
|
|
house_has_feud_relation_with_trigger = { TARGET = scope:actor }
|
|
}
|
|
desc = MARRY_FAMILY_FEUD_REASON
|
|
}
|
|
|
|
# Existing Alliances
|
|
modifier = {
|
|
add = {
|
|
scope:actor = {
|
|
every_ally = {
|
|
add = -15
|
|
}
|
|
}
|
|
}
|
|
scope:actor = {
|
|
any_ally = {
|
|
count >= 2
|
|
}
|
|
}
|
|
desc = EXISTING_ALLIANCES_REASON
|
|
}
|
|
|
|
# Existing Alliances
|
|
modifier = {
|
|
add = {
|
|
scope:recipient = {
|
|
every_ally = {
|
|
add = -15
|
|
}
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
any_ally = {
|
|
count >= 2
|
|
}
|
|
}
|
|
desc = THEIR_EXISTING_ALLIANCES_REASON
|
|
}
|
|
|
|
modifier = {
|
|
add = intimidated_reason_value
|
|
scope:recipient = {
|
|
target_is_liege_or_above = scope:actor
|
|
has_dread_level_towards = {
|
|
target = scope:actor
|
|
level = 1
|
|
}
|
|
}
|
|
desc = INTIMIDATED_REASON
|
|
}
|
|
modifier = {
|
|
add = cowed_reason_value
|
|
scope:recipient = {
|
|
target_is_liege_or_above = scope:actor
|
|
has_dread_level_towards = {
|
|
target = scope:actor
|
|
level = 2
|
|
}
|
|
}
|
|
desc = COWED_REASON
|
|
}
|
|
|
|
modifier = {
|
|
add = intimidated_external_reason_value
|
|
scope:recipient = {
|
|
NOT = { target_is_liege_or_above = scope:actor }
|
|
has_dread_level_towards = {
|
|
target = scope:actor
|
|
level = 1
|
|
}
|
|
}
|
|
desc = INTIMIDATED_REASON
|
|
}
|
|
modifier = {
|
|
add = cowed_external_reason_value
|
|
scope:recipient = {
|
|
NOT = { target_is_liege_or_above = scope:actor }
|
|
has_dread_level_towards = {
|
|
target = scope:actor
|
|
level = 2
|
|
}
|
|
}
|
|
desc = COWED_REASON
|
|
}
|
|
|
|
# Unity modifiers
|
|
evaluate_action_increasing_house_unity = {
|
|
VALUE = 10
|
|
}
|
|
|
|
# INFLUENCE
|
|
modifier = {
|
|
desc = INFLUENCE_REASON
|
|
scope:influence = yes
|
|
add = {
|
|
value = 10
|
|
multiply = scope:actor.influence_level
|
|
min = 5
|
|
}
|
|
}
|
|
}
|
|
|
|
ai_potential = {
|
|
is_at_war = no
|
|
any_ally = {
|
|
count < 2
|
|
}
|
|
}
|
|
|
|
ai_targets = {
|
|
ai_recipients = neighboring_rulers
|
|
max = 10
|
|
}
|
|
|
|
ai_targets = {
|
|
ai_recipients = peer_vassals
|
|
max = 5
|
|
}
|
|
ai_frequency_by_tier = {
|
|
barony = 0
|
|
county = 144
|
|
duchy = 72
|
|
kingdom = 72
|
|
empire = 72
|
|
hegemony = 72
|
|
}
|
|
|
|
ai_will_do = {
|
|
base = 100
|
|
|
|
# Unity modifiers
|
|
evaluate_action_increasing_house_unity = {
|
|
VALUE = 100
|
|
}
|
|
|
|
modifier = { # Don't disturb the player with pointless asks
|
|
add = -5000
|
|
scope:recipient = {
|
|
is_ai = no
|
|
}
|
|
NOR = {
|
|
scope:actor.current_military_strength >= scope:recipient.current_military_strength
|
|
scope:actor.primary_title.tier >= scope:recipient.primary_title.tier
|
|
}
|
|
}
|
|
|
|
modifier = {
|
|
add = -5000
|
|
scope:recipient.current_military_strength <= 100
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
join_war_interaction = {
|
|
category = interaction_category_diplomacy
|
|
interface = interfere_in_war
|
|
special_interaction = interfere_in_war_interaction
|
|
popup_on_receive = yes
|
|
desc = join_war_interaction_desc
|
|
icon = alliance
|
|
interface_priority = 29
|
|
|
|
greeting = positive
|
|
notification_text = join_war_interaction_notification
|
|
|
|
is_shown = {
|
|
scope:recipient = {
|
|
is_at_war = yes
|
|
NOR = {
|
|
this = scope:actor
|
|
is_at_war_with = scope:actor
|
|
}
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
|
|
# recipient is not in (any) war against your liege(s) or suzerain(s)
|
|
trigger_if = {
|
|
limit = { exists = scope:actor.liege }
|
|
custom_description = {
|
|
text = join_war_interaction_recipient_warring_with_my_liege
|
|
subject = scope:recipient
|
|
scope:actor = {
|
|
NOT = {
|
|
any_liege_or_above = {
|
|
is_at_war_with = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# special exception for liege trying to put down his vassal's peasant revolt
|
|
trigger_if = {
|
|
limit = {
|
|
scope:actor = {
|
|
target_is_vassal_or_below = scope:recipient
|
|
}
|
|
}
|
|
custom_description = {
|
|
text = join_war_interaction_recipient_not_fighting_peasant_faction
|
|
subject = scope:recipient
|
|
scope:recipient = {
|
|
any_war_enemy = {
|
|
is_leading_faction_type = peasant_faction
|
|
}
|
|
}
|
|
}
|
|
}
|
|
# if the target is neither a vassal-or-below, nor a liege-or-above, the recipient must either be an ally or defending against a qualifying holy war - unless the character is an adventurer in which case other rules apply
|
|
trigger_else_if = {
|
|
limit = {
|
|
scope:actor = {
|
|
NOT = { target_is_liege_or_above = scope:recipient }
|
|
}
|
|
}
|
|
trigger_if = {
|
|
limit = {
|
|
scope:actor = { has_government = landless_adventurer_government }
|
|
}
|
|
# bypass the requirements, unless you were invloved in a war and decided to leave it
|
|
scope:recipient = {
|
|
trigger_if = {
|
|
limit = {
|
|
any_character_war = {
|
|
has_variable_list = left_voluntarily
|
|
}
|
|
}
|
|
custom_tooltip = {
|
|
text = laamp_war_change_sides_interaction.left_voluntarily
|
|
is_target_in_variable_list = {
|
|
name = left_voluntarily
|
|
target = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
trigger_else_if = {
|
|
limit = {
|
|
scope:recipient = {
|
|
any_character_war = {
|
|
OR = {
|
|
#Must be either the same faith as the character being holy warred...
|
|
scope:recipient.faith = scope:actor.faith
|
|
#... Or, same religion, *and* you couldn't holy war them yourself.
|
|
AND = {
|
|
scope:recipient.faith.religion = scope:actor.faith.religion
|
|
scope:actor.faith = {
|
|
faith_hostility_level = {
|
|
target = scope:recipient.faith
|
|
value < religious_cb_enabled_hostility_level
|
|
}
|
|
}
|
|
}
|
|
#... Or, the target is your liege and they are being attacked for your held title.
|
|
AND = {
|
|
scope:recipient = { target_is_liege_or_above = scope:actor }
|
|
casus_belli = {
|
|
any_target_title = {
|
|
holder = {
|
|
OR = {
|
|
this = scope:actor
|
|
is_vassal_or_below_of = scope:actor
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
any_war_defender = { this = scope:recipient }
|
|
}
|
|
}
|
|
}
|
|
# Deliberately blank; we've passed the trigger and making a desc out of this doesn't make sense
|
|
}
|
|
# Special case for Iberians helping each other after FP2 Conciliation ending after FP2 Conciliation ending
|
|
trigger_else_if = {
|
|
limit = {
|
|
fp2_struggle_conciliation_recipient_actor_involved_trigger = yes
|
|
scope:recipient = {
|
|
any_character_war = {
|
|
primary_defender = scope:recipient
|
|
primary_attacker = { save_temporary_scope_as = attacker_temp }
|
|
fp2_struggle_conciliation_scope_uninvolved_trigger = { SCOPE = scope:attacker_temp }
|
|
}
|
|
}
|
|
}
|
|
# Deliberately blank; we've passed the trigger and making a desc out of this doesn't make sense
|
|
}
|
|
|
|
# if the actor and recipient is in the same confederation, they can always come to each others' aid
|
|
trigger_else_if = {
|
|
limit = {
|
|
exists = scope:recipient.confederation
|
|
scope:actor = { is_member_of_confederation = scope:recipient.confederation }
|
|
}
|
|
scope:actor = { is_member_of_confederation = scope:recipient.confederation } # for localization only
|
|
}
|
|
|
|
# suzerains can always join their tributaries' defensive wars
|
|
trigger_else_if = {
|
|
limit = {
|
|
scope:recipient = {
|
|
is_tributary_of_suzerain_or_above = scope:actor
|
|
}
|
|
}
|
|
custom_tooltip = {
|
|
text = join_war_interaction_recipient_tributary_no_defensive_war
|
|
scope:recipient = {
|
|
any_character_war = {
|
|
primary_defender = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
# tributaries can always offer to join their direct suzerains' defensive wars
|
|
trigger_else_if = {
|
|
limit = {
|
|
scope:actor = {
|
|
is_tributary_of = scope:recipient
|
|
}
|
|
}
|
|
custom_tooltip = {
|
|
text = join_war_interaction_recipient_tributary_no_defensive_war
|
|
scope:recipient = {
|
|
any_character_war = {
|
|
primary_defender = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# if we haven't already passed any of the qualified conditions above, then we need to be allies
|
|
trigger_else = {
|
|
custom_description = {
|
|
text = join_war_interaction_recipient_not_ally
|
|
subject = scope:recipient
|
|
scope:recipient = {
|
|
is_allied_to = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# recipient is liege
|
|
trigger_else = {
|
|
custom_description = {
|
|
text = join_war_interaction_recipient_not_liege
|
|
subject = scope:recipient
|
|
scope:actor = {
|
|
target_is_liege_or_above = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
|
|
scope:actor = {
|
|
trigger_if = {
|
|
limit = {
|
|
has_government = landless_adventurer_government
|
|
}
|
|
custom_tooltip = {
|
|
text = reinforce_soldiers_any_regiment_tt
|
|
maa_regiments_count >= 1
|
|
}
|
|
}
|
|
}
|
|
|
|
# Adventurers can't join wars in places they're exiled from.
|
|
custom_tooltip = {
|
|
text = the_wake_1
|
|
NOT = {
|
|
is_laamp_exiled_from_province_trigger = {
|
|
PROVINCE = scope:recipient.capital_province
|
|
LAAMP = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
can_be_picked = {
|
|
scope:target ?= {
|
|
|
|
# recipient is war leader
|
|
is_war_leader = scope:recipient
|
|
|
|
# special exception for tributaries and suzerains to fight for one another
|
|
trigger_if = {
|
|
limit = {
|
|
OR = {
|
|
scope:actor = {
|
|
is_tributary_of_suzerain_or_above = scope:recipient
|
|
}
|
|
scope:recipient = {
|
|
is_tributary_of = scope:actor
|
|
}
|
|
}
|
|
}
|
|
# if this is directed at a tributary, make sure they're the primary defender
|
|
trigger_if = {
|
|
limit = {
|
|
scope:recipient = { is_tributary_of = scope:actor }
|
|
}
|
|
custom_tooltip = {
|
|
text = join_war_interaction_recipient_tributary_not_primary_defender
|
|
primary_defender = scope:recipient
|
|
}
|
|
}
|
|
trigger_else = { always = yes }
|
|
}
|
|
|
|
#allow targets of a Grand Campaign to bypass the requirements
|
|
trigger_else_if = {
|
|
limit = {
|
|
var:grand_campaign_project ?= {
|
|
save_temporary_scope_as = great_project
|
|
any_in_list = {
|
|
variable = grand_campaign_titles
|
|
any_in_de_jure_hierarchy = {
|
|
exists = holder
|
|
holder.top_overlord = {
|
|
OR = {
|
|
this = scope:recipient
|
|
this = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#allow laamp_join_war_contract to bypass the requirements
|
|
trigger_else_if = {
|
|
limit = {
|
|
scope:actor = {
|
|
has_government = landless_adventurer_government
|
|
}
|
|
}
|
|
}
|
|
|
|
# if holy war, recipient is defender of same faith
|
|
# and not too far away
|
|
trigger_else_if = {
|
|
limit = { is_religious_war = yes }
|
|
trigger_if = { #Only if you're not allies
|
|
limit = {
|
|
NOT = { scope:actor = { is_allied_to = scope:recipient } }
|
|
NOR = {
|
|
scope:recipient = { target_is_liege_or_above = scope:actor }
|
|
casus_belli = {
|
|
any_target_title = {
|
|
holder ?= {
|
|
OR = {
|
|
this = scope:actor
|
|
is_vassal_or_below_of = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
# Special case for Iberians helping each other after FP2 Conciliation ending
|
|
AND = {
|
|
fp2_struggle_conciliation_recipient_actor_involved_trigger = no
|
|
NOT = {
|
|
fp2_struggle_conciliation_scope_uninvolved_trigger = { SCOPE = scope:target.primary_attacker }
|
|
}
|
|
}
|
|
}
|
|
custom_description = {
|
|
text = join_war_interaction_recipient_not_def_GHW
|
|
subject = scope:recipient
|
|
scope:recipient.faith.religion = scope:actor.faith.religion
|
|
any_war_defender = { this = scope:recipient }
|
|
}
|
|
}
|
|
casus_belli = {
|
|
any_target_title = { save_temporary_scope_as = war_target }
|
|
}
|
|
custom_description = {
|
|
text = join_war_interaction_recipient_too_distant
|
|
subject = scope:war_target
|
|
object = scope:war_target
|
|
scope:actor = {
|
|
realm_to_title_distance_squared = {
|
|
target = scope:war_target
|
|
value <= squared_distance_almost_massive # Approximately 1.5 HREs in distance away. Any further and does it really make sense for you to join what is essentially a regional power struggle?
|
|
}
|
|
}
|
|
}
|
|
}
|
|
# If not holy war, special exception for liege trying to put down his vassal's peasant revolt.
|
|
trigger_else_if = {
|
|
limit = {
|
|
is_religious_war = no
|
|
scope:actor = { target_is_vassal_or_below = scope:recipient }
|
|
primary_defender = scope:recipient
|
|
primary_attacker = {
|
|
is_leading_faction_type = peasant_faction
|
|
}
|
|
# Special case for Iberians helping each other after FP2 Conciliation ending
|
|
AND = {
|
|
fp2_struggle_conciliation_recipient_actor_involved_trigger = no
|
|
NOT = {
|
|
fp2_struggle_conciliation_scope_uninvolved_trigger = { SCOPE = scope:target.primary_attacker }
|
|
}
|
|
}
|
|
}
|
|
always = yes
|
|
}
|
|
#Confederation members can choose to join each others' offensive wars
|
|
trigger_else_if = {
|
|
limit = {
|
|
scope:actor = { NOT = { is_allied_to = scope:recipient } }
|
|
exists = scope:recipient.confederation
|
|
primary_attacker = scope:recipient
|
|
}
|
|
scope:actor = {
|
|
is_member_of_confederation = scope:recipient.confederation
|
|
}
|
|
}
|
|
# ...otherwise, recipient must be an ally...
|
|
trigger_else_if = {
|
|
limit = {
|
|
is_religious_war = no
|
|
scope:actor = { NOT = { target_is_liege_or_above = scope:recipient } }
|
|
# Special case for Iberians helping each other after FP2 Conciliation ending
|
|
AND = {
|
|
fp2_struggle_conciliation_recipient_actor_involved_trigger = no
|
|
NOT = {
|
|
fp2_struggle_conciliation_scope_uninvolved_trigger = { SCOPE = scope:target.primary_attacker }
|
|
}
|
|
}
|
|
}
|
|
custom_description = {
|
|
text = join_war_interaction_recipient_not_ally
|
|
subject = scope:recipient
|
|
scope:actor = {
|
|
is_allied_to = scope:recipient
|
|
}
|
|
}
|
|
trigger_if = {
|
|
limit = {
|
|
scope:actor = {
|
|
target_is_vassal_or_below = scope:recipient
|
|
NOT = { is_allied_to = scope:recipient }
|
|
}
|
|
}
|
|
# If they are an unallied vassal, inform the player that we could have aided them if this was a peasant revolt.
|
|
custom_description = {
|
|
text = join_war_interaction_recipient_not_fighting_peasant_faction
|
|
subject = scope:recipient
|
|
primary_defender = scope:recipient
|
|
primary_attacker = {
|
|
is_leading_faction_type = peasant_faction
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# ...or our liege.
|
|
trigger_else_if = {
|
|
limit = {
|
|
is_religious_war = no
|
|
scope:actor = { NOT = { is_allied_to = scope:recipient } }
|
|
}
|
|
# recipient is liege
|
|
custom_description = {
|
|
text = join_war_interaction_recipient_not_liege
|
|
subject = scope:recipient
|
|
scope:actor = {
|
|
target_is_liege_or_above = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
# making the default behavior explicit if no other trigger_(else_)ifs are valid
|
|
trigger_else = {
|
|
always = yes
|
|
}
|
|
}
|
|
|
|
joiner_not_already_in_another_war_with_any_target_war_participants_trigger = {
|
|
WARRIOR = scope:recipient
|
|
JOINER = scope:actor
|
|
}
|
|
|
|
can_join_war_liege_vassal_check_trigger = { WARRIOR = scope:recipient JOINER = scope:actor }
|
|
}
|
|
|
|
is_highlighted = {
|
|
scope:actor = {
|
|
any_character_task_contract = {
|
|
has_task_contract_type = laamp_join_war_contract
|
|
task_contract_employer = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
|
|
on_accept = {
|
|
scope:target ?= {
|
|
hidden_effect = {
|
|
set_called_to = scope:actor
|
|
}
|
|
if = {
|
|
limit = { is_attacker = scope:recipient }
|
|
add_attacker = scope:actor
|
|
if = {
|
|
limit = {
|
|
OR = {
|
|
scope:actor = {
|
|
any_home_court_hostage = {
|
|
warden ?= { is_defender_in_war = scope:target }
|
|
}
|
|
}
|
|
scope:target = {
|
|
any_war_defender = {
|
|
any_warden_hostage = { home_court ?= scope:actor }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
custom_tooltip = hostage_execution_warning_tt
|
|
}
|
|
}
|
|
else = {
|
|
add_defender = scope:actor
|
|
if = {
|
|
limit = {
|
|
OR = {
|
|
scope:actor = {
|
|
any_home_court_hostage = {
|
|
warden ?= { is_attacker_in_war = scope:target }
|
|
}
|
|
}
|
|
scope:target = {
|
|
any_war_attacker = {
|
|
any_warden_hostage = { home_court ?= scope:actor }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
custom_tooltip = hostage_execution_warning_tt
|
|
}
|
|
}
|
|
if = {
|
|
limit = {
|
|
is_religious_war = yes
|
|
scope:actor = {
|
|
any_active_accolade = {
|
|
accolade_parameter = acclaimed_knight_piety_from_battle
|
|
}
|
|
}
|
|
}
|
|
scope:actor = {
|
|
add_piety = medium_piety_gain
|
|
}
|
|
}
|
|
if = {
|
|
limit = {
|
|
is_religious_war = yes
|
|
scope:actor = {
|
|
any_active_accolade = {
|
|
accolade_parameter = acclaimed_knight_piety_from_battle_high
|
|
}
|
|
}
|
|
}
|
|
scope:actor = {
|
|
add_piety = major_piety_gain
|
|
}
|
|
}
|
|
}
|
|
scope:actor = {
|
|
stress_impact = {
|
|
craven = medium_stress_impact_gain
|
|
}
|
|
add_to_variable_list = {
|
|
name = joined_as_ally
|
|
target = scope:target
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
show_as_tooltip = {
|
|
if = {
|
|
limit = {
|
|
is_ai = yes
|
|
}
|
|
progress_towards_friend_effect = {
|
|
CHARACTER = scope:actor
|
|
OPINION = 0
|
|
REASON = friend_alliance
|
|
}
|
|
}
|
|
else = {
|
|
hidden_effect = { #To nudge friendship
|
|
if = {
|
|
limit = {
|
|
NOR = {
|
|
has_relation_friend = scope:actor
|
|
has_relation_potential_friend = scope:actor
|
|
}
|
|
}
|
|
set_relation_potential_friend = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# If we're a clan this interaction affects unity - but only when we attemp to aid a house member against a non-house member
|
|
if = {
|
|
limit = {
|
|
exists = scope:target
|
|
scope:target = {
|
|
OR = {
|
|
AND = {
|
|
primary_attacker = scope:recipient
|
|
scope:recipient.house = scope:actor.house
|
|
primary_defender = {
|
|
house != scope:actor.house
|
|
}
|
|
}
|
|
AND = {
|
|
primary_defender = scope:recipient
|
|
scope:recipient.house = scope:actor.house
|
|
primary_attacker = {
|
|
house != scope:actor.house
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
add_clan_unity_interaction_effect = {
|
|
CHARACTER = scope:actor
|
|
TARGET = scope:recipient
|
|
VALUE = medium_unity_gain
|
|
DESC = clan_unity_join_war.desc
|
|
REVERSE_NON_HOUSE_TARGET = no
|
|
}
|
|
}
|
|
}
|
|
|
|
on_decline = {
|
|
scope:actor = {
|
|
trigger_event = char_interaction.0236
|
|
}
|
|
}
|
|
|
|
auto_accept = yes
|
|
|
|
ai_accept = {
|
|
base = 100 # everyone wants help
|
|
}
|
|
}
|
|
|
|
# Referenced in code, do not rename or remove
|
|
join_vassal_war_interaction = {
|
|
category = interaction_category_diplomacy
|
|
interface = interfere_in_war
|
|
special_interaction = interfere_in_war_interaction
|
|
popup_on_receive = yes
|
|
desc = join_vassal_war_interaction_desc
|
|
icon = alliance
|
|
interface_priority = 29
|
|
common_interaction = yes
|
|
|
|
greeting = positive
|
|
notification_text = join_war_interaction_notification
|
|
|
|
is_shown = {
|
|
scope:recipient = {
|
|
OR = {
|
|
AND = {
|
|
is_tributary_of = scope:actor
|
|
subject_contract_has_flag = tributary_contract_suzerain_guarantee_override
|
|
scope:actor = {
|
|
has_realm_law = top_liege_not_redirected_to_border_wars_law
|
|
}
|
|
}
|
|
AND = {
|
|
is_vassal_or_below_of = scope:actor
|
|
any_liege_or_above = {
|
|
has_realm_law = top_liege_not_redirected_to_border_wars_law
|
|
}
|
|
}
|
|
}
|
|
is_at_war = yes
|
|
NOR = {
|
|
this = scope:actor
|
|
is_at_war_with = scope:actor
|
|
}
|
|
any_character_war = {
|
|
primary_attacker = {
|
|
NOT = {
|
|
is_vassal_or_below_of = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
is_valid_showing_failures_only = {
|
|
scope:actor = { is_at_war = no }
|
|
}
|
|
|
|
can_be_picked = {
|
|
scope:target ?= {
|
|
# we don't care about infighting
|
|
custom_tooltip = {
|
|
text = war_aid_liege_not_my_liege_tt
|
|
primary_attacker.top_overlord != scope:actor
|
|
}
|
|
# only defensive wars
|
|
primary_defender = scope:recipient
|
|
# only wars that would take titles in your hierarchy
|
|
trigger_if = {
|
|
limit = {
|
|
scope:recipient = { is_vassal_of = scope:actor }
|
|
}
|
|
custom_tooltip = {
|
|
text = war_aid_liege_relevant_titles_tt
|
|
casus_belli = {
|
|
any_target_title = {
|
|
OR = {
|
|
target_is_de_facto_liege_or_above = scope:actor.primary_title
|
|
is_de_facto_liege_or_above_target = scope:actor.primary_title
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#Unless you're a guaranteed tributary
|
|
trigger_else_if = {
|
|
limit = {
|
|
scope:recipient = { is_tributary_of_suzerain_or_above = scope:actor }
|
|
}
|
|
custom_tooltip = {
|
|
text = suzerain_war_participation_guarantee_tt
|
|
scope:recipient = { subject_contract_has_flag = tributary_contract_suzerain_guarantee_override }
|
|
}
|
|
}
|
|
trigger_else = {
|
|
always = yes
|
|
}
|
|
custom_tooltip = {
|
|
text = war_aid_liege_cooldown_tt
|
|
war_days > border_war_grace_period_days
|
|
}
|
|
}
|
|
}
|
|
|
|
on_accept = {
|
|
scope:target ?= {
|
|
hidden_effect = {
|
|
set_called_to = scope:actor
|
|
}
|
|
add_defender = scope:actor
|
|
if = {
|
|
limit = {
|
|
OR = {
|
|
scope:actor = {
|
|
any_home_court_hostage = {
|
|
warden ?= { is_attacker_in_war = scope:target }
|
|
}
|
|
}
|
|
scope:target = {
|
|
any_war_attacker = {
|
|
any_warden_hostage = { home_court ?= scope:actor }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
custom_tooltip = hostage_execution_warning_tt
|
|
}
|
|
if = {
|
|
limit = {
|
|
is_religious_war = yes
|
|
scope:actor = {
|
|
any_active_accolade = {
|
|
accolade_parameter = acclaimed_knight_piety_from_battle
|
|
}
|
|
}
|
|
}
|
|
scope:actor = {
|
|
add_piety = medium_piety_gain
|
|
}
|
|
}
|
|
if = {
|
|
limit = {
|
|
is_religious_war = yes
|
|
scope:actor = {
|
|
any_active_accolade = {
|
|
accolade_parameter = acclaimed_knight_piety_from_battle_high
|
|
}
|
|
}
|
|
}
|
|
scope:actor = {
|
|
add_piety = major_piety_gain
|
|
}
|
|
}
|
|
scope:actor = {
|
|
stress_impact = {
|
|
craven = medium_stress_impact_gain
|
|
}
|
|
add_to_variable_list = {
|
|
name = joined_as_ally
|
|
target = scope:target
|
|
}
|
|
}
|
|
}
|
|
# If we're a clan this interaction affects unity - but only when we attemp to aid a house member against a non-house member
|
|
if = {
|
|
limit = {
|
|
exists = scope:target
|
|
scope:target = {
|
|
primary_defender = scope:recipient
|
|
scope:recipient.house = scope:actor.house
|
|
primary_attacker = {
|
|
house != scope:actor.house
|
|
}
|
|
}
|
|
}
|
|
add_clan_unity_interaction_effect = {
|
|
CHARACTER = scope:actor
|
|
TARGET = scope:recipient
|
|
VALUE = medium_unity_gain
|
|
DESC = clan_unity_join_war.desc
|
|
REVERSE_NON_HOUSE_TARGET = no
|
|
}
|
|
}
|
|
}
|
|
|
|
on_decline = {
|
|
scope:actor = {
|
|
trigger_event = char_interaction.0236
|
|
}
|
|
}
|
|
|
|
auto_accept = yes
|
|
|
|
ai_targets = {
|
|
ai_recipients = vassals
|
|
ai_recipients = tributaries
|
|
}
|
|
ai_frequency_by_tier = {
|
|
barony = 0
|
|
county = 0
|
|
duchy = 24
|
|
kingdom = 6
|
|
empire = 6
|
|
hegemony = 6
|
|
}
|
|
ai_potential = {
|
|
is_at_war = no
|
|
}
|
|
|
|
ai_accept = {
|
|
base = 100 #no reason to refuse help
|
|
}
|
|
|
|
# this value is also evaluated in the declare war interaction screen to decide whether the liege will join the vassal's war.
|
|
# as such, scope:target may not be defined, and anything war-related will be instead provided in the same way
|
|
# we evaluate the war cost in casus_belli.cost
|
|
ai_will_do = {
|
|
base = 100
|
|
|
|
modifier = { # Less likely if just one title
|
|
scope:actor = {
|
|
is_ai = yes
|
|
is_liege_or_above_of = scope:recipient
|
|
}
|
|
OR = {
|
|
scope:target ?= {
|
|
casus_belli = {
|
|
any_target_title = {
|
|
tier <= tier_duchy
|
|
count = 1
|
|
}
|
|
}
|
|
}
|
|
any_in_list = {
|
|
list = target_titles
|
|
count = 1
|
|
}
|
|
|
|
}
|
|
add = -100
|
|
desc = war_aid_vassal_only_one_title
|
|
}
|
|
modifier = { # Less likely if not kingdoms or above
|
|
scope:actor = {
|
|
is_ai = yes
|
|
is_liege_or_above_of = scope:recipient
|
|
}
|
|
NOR = {
|
|
scope:target ?= {
|
|
casus_belli = {
|
|
any_target_title = {
|
|
tier >= tier_kingdom
|
|
}
|
|
}
|
|
}
|
|
any_in_list = {
|
|
list = target_titles
|
|
tier >= tier_kingdom
|
|
}
|
|
}
|
|
add = -100
|
|
desc = war_aid_vassal_below_kingdom_title
|
|
}
|
|
modifier = { # Do not join if in debt
|
|
scope:actor = {
|
|
OR = {
|
|
gold <= -1
|
|
AND = {
|
|
has_treasury = yes
|
|
treasury <= -1
|
|
}
|
|
}
|
|
is_ai = yes
|
|
is_liege_or_above_of = scope:recipient
|
|
}
|
|
add = -100
|
|
desc = war_aid_liege_is_bankrupt
|
|
}
|
|
modifier = { # Do not join if at war
|
|
scope:actor = {
|
|
is_at_war = yes
|
|
is_ai = yes
|
|
}
|
|
add = -100
|
|
desc = war_aid_liege_is_at_war
|
|
}
|
|
modifier = { # Do not join if recipient is stronger then the enemy
|
|
scope:actor = {
|
|
is_ai = yes
|
|
is_liege_or_above_of = scope:recipient
|
|
}
|
|
OR = {
|
|
scope:attacker ?= {
|
|
current_military_strength < scope:recipient.current_military_strength
|
|
}
|
|
scope:target ?= {
|
|
primary_attacker.current_military_strength < scope:recipient.current_military_strength
|
|
}
|
|
}
|
|
add = -100
|
|
desc = war_aid_vassal_can_fend_the_attacker_alone
|
|
}
|
|
modifier = { # Player decides on it's own
|
|
scope:actor = {
|
|
is_ai = no
|
|
}
|
|
add = -100
|
|
desc = war_aid_liege_is_player
|
|
}
|
|
}
|
|
}
|