2231 lines
51 KiB
Text
2231 lines
51 KiB
Text
# As a Supporter, demand that a Muslim ruler recognize your authority
|
|
# Success makes the Strengthen the Caliphate struggle decision easier to take
|
|
fp3_demand_submission_interaction = {
|
|
icon = demand_submission
|
|
category = interaction_category_religion
|
|
popup_on_receive = yes
|
|
pause_on_receive = yes
|
|
can_send_despite_rejection = yes
|
|
ai_maybe = yes
|
|
desc = fp3_demand_submission_interaction_desc
|
|
|
|
greeting = positive
|
|
notification_text = DEMAND_SUBMISSION_NOTIFICATION
|
|
|
|
is_shown = {
|
|
NOT = { scope:actor = scope:recipient }
|
|
struggle:persian_struggle ?= { has_struggle_phase_parameter = demand_submission_interaction_unlocked }
|
|
scope:actor = { has_title = title:d_sunni }
|
|
scope:recipient = {
|
|
faith.religious_head ?= scope:actor
|
|
has_trait = fp3_struggle_supporter
|
|
any_character_struggle = { this = struggle:persian_struggle }
|
|
}
|
|
}
|
|
|
|
cooldown_against_recipient = { years = 10 }
|
|
|
|
ai_min_reply_days = 2
|
|
ai_max_reply_days = 7
|
|
|
|
ai_accept = {
|
|
base = 0
|
|
# This is more flavorful than "base acceptance"
|
|
modifier = {
|
|
desc = DEMAND_SUBMISSION_I_AM_HEAD_OF_FAITH
|
|
add = 50
|
|
}
|
|
## Piety
|
|
# How pious are you?
|
|
modifier = {
|
|
# (Stolen shamelessly from piety_level_affects_vassalage_acceptance)
|
|
add = {
|
|
value = {
|
|
value = -1
|
|
add = scope:actor.piety_level
|
|
}
|
|
multiply = 10
|
|
}
|
|
desc = I_AM_PIOUS
|
|
# Only matters if they aren't cynical
|
|
NOT = { scope:recipient = { has_trait = cynical } }
|
|
}
|
|
# Are they cynical/zealous?
|
|
modifier = {
|
|
desc = ASK_FOR_CONVERSION_RECIPIENT_IS_CYNICAL
|
|
add = -30
|
|
scope:recipient = {
|
|
has_trait = cynical
|
|
}
|
|
}
|
|
modifier = {
|
|
desc = ASK_FOR_CONVERSION_RECIPIENT_IS_ZEALOUS
|
|
add = 20
|
|
scope:recipient = { has_trait = zealous }
|
|
}
|
|
# Are you giving them extra piety?
|
|
modifier = {
|
|
add = 30
|
|
desc = STRUGGLE_MARRIAGE_ACCEPTANCE_USING_PIETY_AS_CURRENCY
|
|
scope:piety_cost_reduction ?= yes
|
|
}
|
|
## Opinion
|
|
# Do they like you?
|
|
opinion_modifier = {
|
|
who = scope:recipient
|
|
opinion_target = scope:actor
|
|
multiplier = 0.25
|
|
desc = AI_OPINION_REASON
|
|
}
|
|
## Personality
|
|
# Are they ambitious?
|
|
modifier = {
|
|
desc = DEMAND_SUBMISSION_RECIPIENT_IS_AMBITIOUS
|
|
add = -30
|
|
scope:recipient = { has_trait = ambitious }
|
|
}
|
|
# Are they content?
|
|
modifier = {
|
|
desc = DEMAND_SUBMISSION_RECIPIENT_IS_CONTENT
|
|
add = 10
|
|
scope:recipient = { has_trait = content }
|
|
}
|
|
# Are they stubborn?
|
|
modifier = {
|
|
desc = DEMAND_SUBMISSION_RECIPIENT_IS_STUBBORN
|
|
add = -10
|
|
scope:recipient = { has_trait = stubborn }
|
|
}
|
|
# Are they arrogant?
|
|
modifier = {
|
|
desc = DEMAND_SUBMISSION_RECIPIENT_IS_ARROGANT
|
|
add = -10
|
|
scope:recipient = { has_trait = arrogant }
|
|
}
|
|
# Are they humble?
|
|
modifier = {
|
|
desc = DEMAND_SUBMISSION_RECIPIENT_IS_HUMBLE
|
|
add = 10
|
|
scope:recipient = { has_trait = humble }
|
|
}
|
|
# Are they trusting?
|
|
modifier = {
|
|
desc = DEMAND_SUBMISSION_RECIPIENT_IS_TRUSTING
|
|
add = 10
|
|
scope:recipient = { has_trait = trusting }
|
|
}
|
|
# Are they paranoid?
|
|
modifier = {
|
|
desc = DEMAND_SUBMISSION_RECIPIENT_IS_PARANOID
|
|
add = -20
|
|
scope:recipient = { has_trait = paranoid }
|
|
}
|
|
# Are they loyal?
|
|
# Independent rulers should rarely have this trait, but if your predecessor installed a puppet and died, then this makes it easier to demand submission from the puppet
|
|
modifier = {
|
|
desc = DEMAND_SUBMISSION_RECIPIENT_IS_LOYAL
|
|
add = 20
|
|
scope:recipient = { has_trait = loyal }
|
|
}
|
|
## Realm
|
|
# Are you stronger/weaker than them?
|
|
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 = 10
|
|
}
|
|
desc = offer_vassalization_interaction_aibehavior_power_tt
|
|
}
|
|
# Reign duration
|
|
modifier = {
|
|
add = {
|
|
value = scope:actor.primary_title.title_held_years
|
|
subtract = 21
|
|
max = 20
|
|
}
|
|
desc = DEMAND_SUBMISSION_SHORT_REIGN
|
|
}
|
|
## Dread
|
|
modifier = {
|
|
add = intimidated_halved_reason_value
|
|
scope:recipient = {
|
|
has_dread_level_towards = {
|
|
target = scope:actor
|
|
level = 1
|
|
}
|
|
}
|
|
desc = INTIMIDATED_REASON
|
|
}
|
|
modifier = {
|
|
add = cowed_halved_reason_value
|
|
scope:recipient = {
|
|
has_dread_level_towards = {
|
|
target = scope:actor
|
|
level = 2
|
|
}
|
|
}
|
|
desc = COWED_REASON
|
|
}
|
|
}
|
|
|
|
on_accept = {
|
|
scope:actor = {
|
|
if = {
|
|
limit = { scope:piety_cost_reduction ?= yes }
|
|
add_piety = massive_piety_loss
|
|
}
|
|
add_hook = {
|
|
target = scope:recipient
|
|
type = caliphal_submission_hook
|
|
}
|
|
if = {
|
|
limit = { has_variable = last_explicit_defied_caliph }
|
|
remove_variable = last_explicit_defied_caliph
|
|
}
|
|
trigger_event = fp3_misc_decisions.0010 # Letter event informing player of success
|
|
}
|
|
scope:recipient = {
|
|
if = {
|
|
limit = { scope:piety_cost_reduction ?= yes }
|
|
add_piety = massive_piety_gain
|
|
}
|
|
}
|
|
|
|
# If we're a clan this interaction affects unity
|
|
add_clan_unity_interaction_effect = {
|
|
CHARACTER = scope:actor
|
|
TARGET = scope:recipient
|
|
VALUE = medium_unity_gain
|
|
DESC = clan_unity_forment_revolt.desc
|
|
REVERSE_NON_HOUSE_TARGET = no
|
|
}
|
|
}
|
|
|
|
on_decline = {
|
|
scope:recipient = {
|
|
custom_tooltip = DEMAND_SUBMISSION_INSTALL_LOYALIST_WARNING
|
|
add_piety = medium_piety_loss
|
|
remove_trait = fp3_struggle_supporter
|
|
add_trait_force_tooltip = fp3_struggle_detractor
|
|
# This is for the install loyalist CB discount
|
|
set_variable = {
|
|
name = last_explicit_defied_caliph
|
|
value = scope:actor
|
|
years = 30
|
|
}
|
|
}
|
|
scope:actor = {
|
|
trigger_event = fp3_misc_decisions.0011 # Letter event informing player of failure
|
|
}
|
|
|
|
# If we're a clan this interaction affects unity
|
|
add_clan_unity_interaction_effect = {
|
|
CHARACTER = scope:actor
|
|
TARGET = scope:recipient
|
|
VALUE = medium_unity_loss
|
|
DESC = clan_unity_forment_revolt.desc
|
|
REVERSE_NON_HOUSE_TARGET = no
|
|
}
|
|
}
|
|
|
|
# Use piety to increase acceptance
|
|
send_option = {
|
|
flag = piety_cost_reduction
|
|
localization = TRADE_PIETY_FOR_BETTER_AI_ACCEPTANCE
|
|
}
|
|
send_options_exclusive = no
|
|
|
|
ai_potential = {
|
|
is_physically_able = yes
|
|
}
|
|
|
|
ai_targets = {
|
|
ai_recipients = neighboring_rulers
|
|
}
|
|
|
|
ai_frequency = 12
|
|
|
|
# Very similar to ai_accept, but ignores effects that are < 10 in value for brevity's sake
|
|
ai_will_do = {
|
|
# The caliph generally _wants_ to be chucking these out all over the place.
|
|
## Basically, the more rulers submit to their authority, the better.
|
|
### Subs over drubs, as it were.
|
|
base = 100
|
|
# Will demand rulers who were installed via the puppet CB
|
|
modifier = {
|
|
add = 200
|
|
scope:recipient = {
|
|
has_trait = loyal
|
|
scope:actor = { has_hook = prev }
|
|
}
|
|
}
|
|
modifier = {
|
|
add = {
|
|
value = {
|
|
value = -1
|
|
add = scope:actor.piety_level
|
|
}
|
|
multiply = 10
|
|
}
|
|
NOT = { scope:recipient = { has_trait = cynical } }
|
|
}
|
|
modifier = {
|
|
add = -30
|
|
scope:recipient = {
|
|
has_trait = cynical
|
|
}
|
|
}
|
|
modifier = {
|
|
add = 20
|
|
scope:recipient = { has_trait = zealous }
|
|
}
|
|
opinion_modifier = {
|
|
who = scope:recipient
|
|
opinion_target = scope:actor
|
|
multiplier = 0.25
|
|
}
|
|
modifier = {
|
|
add = -30
|
|
scope:recipient = { has_trait = ambitious }
|
|
}
|
|
modifier = {
|
|
add = {
|
|
value = 1
|
|
subtract = {
|
|
value = scope:recipient.max_military_strength
|
|
divide = { value = scope:actor.current_military_strength min = 1 }
|
|
}
|
|
multiply = 10
|
|
}
|
|
}
|
|
# Reign duration
|
|
modifier = {
|
|
add = {
|
|
value = scope:actor.primary_title.title_held_years
|
|
subtract = 21
|
|
max = 20
|
|
}
|
|
}
|
|
## Dread
|
|
modifier = {
|
|
add = intimidated_halved_reason_value
|
|
scope:recipient = {
|
|
has_dread_level_towards = {
|
|
target = scope:actor
|
|
level = 1
|
|
}
|
|
}
|
|
}
|
|
modifier = {
|
|
add = cowed_halved_reason_value
|
|
scope:recipient = {
|
|
has_dread_level_towards = {
|
|
target = scope:actor
|
|
level = 2
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
###################################
|
|
# Request Turkic invasion (can_request_incursion_interaction)
|
|
# By Hugo Cortell
|
|
###################################
|
|
fp3_request_turkic_invasion_interaction = {
|
|
interface_priority = 100
|
|
common_interaction = yes
|
|
category = interaction_category_hostile
|
|
cooldown_against_recipient = { years = 2 }
|
|
|
|
icon = request_mercenary
|
|
desc = fp3_request_turkic_invasion_interaction_desc
|
|
|
|
is_shown = {
|
|
scope:actor = {
|
|
has_trait = fp3_struggle_detractor
|
|
any_character_struggle = { is_struggle_type = persian_struggle }
|
|
}
|
|
scope:recipient = {
|
|
is_playable_character = yes
|
|
OR = {
|
|
any_character_struggle = { is_struggle_type = persian_struggle }
|
|
title:d_sunni.holder ?= this
|
|
}
|
|
is_independent_ruler = yes
|
|
is_ai = yes
|
|
}
|
|
NOT = { scope:actor = scope:recipient }
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
}
|
|
|
|
populate_recipient_list = {
|
|
scope:actor.top_liege = {
|
|
every_independent_ruler = {
|
|
limit = {
|
|
is_ai = yes
|
|
is_landed = yes
|
|
is_physically_able = yes
|
|
has_raised_armies = no
|
|
in_diplomatic_range = scope:actor
|
|
OR = {
|
|
government_has_flag = government_is_clan
|
|
government_has_flag = government_is_tribal
|
|
}
|
|
culture = { has_cultural_pillar = heritage_turkic }
|
|
highest_held_title_tier >= tier_county
|
|
NOR = {
|
|
is_at_war_with = scope:actor
|
|
is_at_war_with = scope:recipient
|
|
is_allied_to = scope:recipient
|
|
has_truce = scope:recipient
|
|
this = scope:actor
|
|
this = scope:recipient
|
|
}
|
|
}
|
|
add_to_list = characters
|
|
}
|
|
}
|
|
}
|
|
|
|
send_options_exclusive = no
|
|
|
|
send_option = {
|
|
flag = war_support
|
|
localization = fp3_request_turkic_invasion_interaction_option_join_war
|
|
current_description = fp3_request_turkic_invasion_interaction_option_join_war_desc
|
|
is_shown = { exists = scope:secondary_recipient }
|
|
is_valid = {
|
|
scope:actor = {
|
|
NOR = {
|
|
is_at_war_with = scope:recipient
|
|
is_allied_to = scope:recipient
|
|
has_truce = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
send_option = {
|
|
flag = financial_support
|
|
localization = fp3_request_turkic_invasion_interaction_option_more_gold
|
|
current_description = fp3_request_turkic_invasion_interaction_option_more_gold_desc
|
|
is_shown = { exists = scope:secondary_recipient }
|
|
is_valid = {
|
|
custom_description = {
|
|
text = fp3_please_dont_give_me_negative_gold
|
|
fp3_request_invasion_troop_value_estimate > 0
|
|
}
|
|
}
|
|
}
|
|
|
|
cost = {
|
|
gold = {
|
|
value = {
|
|
value = scope:secondary_recipient.max_military_strength
|
|
divide = 20
|
|
round = yes
|
|
}
|
|
add = {
|
|
if = {
|
|
limit = { scope:financial_support = yes }
|
|
add = fp3_request_invasion_troop_value_estimate
|
|
}
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:recipient = { has_title = title:d_sunni }
|
|
struggle:persian_struggle = { has_struggle_phase_parameter = cheaper_incursions_vs_caliph }
|
|
}
|
|
divide = 2
|
|
}
|
|
}
|
|
}
|
|
|
|
on_accept = {
|
|
if = {
|
|
limit = { exists = scope:secondary_recipient }
|
|
|
|
scope:recipient = {
|
|
if = {
|
|
limit = {
|
|
any_realm_county = {
|
|
NOT = { this = scope:recipient.capital_county }
|
|
any_neighboring_county = { holder.top_liege = scope:secondary_recipient.top_liege }
|
|
any_county_province = { geographical_region = world_persian_empire }
|
|
NOR = {
|
|
holder = scope:actor
|
|
holder = { is_vassal_or_below_of = scope:actor }
|
|
}
|
|
}
|
|
}
|
|
random_realm_county = {
|
|
limit = {
|
|
NOT = { this = scope:recipient.capital_county }
|
|
any_neighboring_county = { holder.top_liege = scope:secondary_recipient.top_liege }
|
|
any_county_province = { geographical_region = world_persian_empire }
|
|
NOR = {
|
|
holder = scope:actor
|
|
holder = { is_vassal_or_below_of = scope:actor }
|
|
}
|
|
}
|
|
save_scope_as = invasion_target_title
|
|
}
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
any_realm_county = {
|
|
NOT = { this = scope:recipient.capital_county }
|
|
any_neighboring_county = {
|
|
any_county_province = { geographical_region = world_persian_empire }
|
|
NOT = {
|
|
holder.top_liege = prev.holder.top_liege
|
|
}
|
|
}
|
|
NOR = {
|
|
holder = scope:actor
|
|
holder = { is_vassal_or_below_of = scope:actor }
|
|
}
|
|
}
|
|
}
|
|
random_realm_county = {
|
|
limit = {
|
|
NOT = { this = scope:recipient.capital_county }
|
|
any_neighboring_county = {
|
|
any_county_province = { geographical_region = world_persian_empire }
|
|
NOT = {
|
|
holder.top_liege = prev.holder.top_liege
|
|
}
|
|
}
|
|
NOR = {
|
|
holder = scope:actor
|
|
holder = { is_vassal_or_below_of = scope:actor }
|
|
}
|
|
}
|
|
save_scope_as = invasion_target_title
|
|
}
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
any_realm_county = {
|
|
NOT = { this = scope:recipient.capital_county }
|
|
NOR = {
|
|
holder = scope:actor
|
|
holder = { is_vassal_or_below_of = scope:actor }
|
|
}
|
|
}
|
|
}
|
|
random_realm_county = {
|
|
limit = {
|
|
NOT = { this = scope:recipient.capital_county }
|
|
NOR = {
|
|
holder = scope:actor
|
|
holder = { is_vassal_or_below_of = scope:actor }
|
|
}
|
|
}
|
|
save_scope_as = invasion_target_title
|
|
}
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
any_realm_county = {
|
|
NOR = {
|
|
holder = scope:actor
|
|
holder = { is_vassal_or_below_of = scope:actor }
|
|
}
|
|
}
|
|
}
|
|
random_realm_county = {
|
|
limit = {
|
|
NOR = {
|
|
holder = scope:actor
|
|
holder = { is_vassal_or_below_of = scope:actor }
|
|
}
|
|
}
|
|
save_scope_as = invasion_target_title
|
|
}
|
|
}
|
|
else = {
|
|
random_realm_county = { save_scope_as = invasion_target_title }
|
|
}
|
|
|
|
scope:invasion_target_title.duchy = { save_scope_as = text_title }
|
|
|
|
hidden_effect = { # Not worth cluttering the UI with
|
|
add_opinion = {
|
|
modifier = fp3_incited_conflict
|
|
target = scope:actor
|
|
}
|
|
add_opinion = {
|
|
modifier = declared_war
|
|
target = scope:secondary_recipient
|
|
}
|
|
}
|
|
}
|
|
|
|
scope:secondary_recipient = {
|
|
add_gold = {
|
|
value = {
|
|
value = scope:secondary_recipient.max_military_strength
|
|
divide = 20
|
|
round = yes
|
|
}
|
|
add = {
|
|
if = {
|
|
limit = { scope:financial_support = yes }
|
|
add = fp3_request_invasion_troop_value_estimate
|
|
}
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:recipient = { has_title = title:d_sunni }
|
|
struggle:persian_struggle = { has_struggle_phase_parameter = cheaper_incursions_vs_caliph }
|
|
}
|
|
divide = 2
|
|
}
|
|
}
|
|
start_war = {
|
|
casus_belli = fp3_turkic_invasion_cb
|
|
target = scope:recipient
|
|
target_title = scope:invasion_target_title.duchy
|
|
}
|
|
custom_tooltip = fp3_turkic_invasion_cb_result_tt
|
|
if = {
|
|
limit = {
|
|
scope:financial_support = yes
|
|
}
|
|
trigger_event = fp3_misc_decisions.0006
|
|
show_as_tooltip = {
|
|
spawn_army = {
|
|
men_at_arms = {
|
|
type = horse_archers
|
|
stacks = fp3_request_invasion_troop_value_bonus_troops
|
|
}
|
|
men_at_arms = {
|
|
type = light_horsemen
|
|
stacks = fp3_request_invasion_troop_value_bonus_troops
|
|
}
|
|
levies = fp3_request_invasion_troop_value_bonus_levy_troops
|
|
location = capital_province
|
|
uses_supply = yes
|
|
inheritable = no
|
|
name = turkic_tribal_event_troops
|
|
}
|
|
}
|
|
}
|
|
if = {
|
|
limit = { scope:war_support = yes }
|
|
custom_tooltip = fp3_request_turkic_invasion_interaction_option_join_war_outcome_tooltip
|
|
trigger_event = fp3_misc_decisions.0005
|
|
}
|
|
}
|
|
|
|
scope:actor = {
|
|
hidden_effect = {
|
|
send_interface_toast = {
|
|
type = event_toast_effect_good
|
|
title = fp3_request_turkic_invasion_interaction_accept_notification.t
|
|
left_icon = scope:secondary_recipient
|
|
right_icon = scope:recipient
|
|
|
|
show_as_tooltip = {
|
|
custom_tooltip = fp3_request_turkic_invasion_interaction_accept_notification.desc
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
scope:recipient = {
|
|
add_character_flag = {
|
|
flag = incursion_ai_pacing
|
|
years = 5
|
|
}
|
|
hidden_effect = {
|
|
send_interface_toast = {
|
|
type = event_toast_effect_bad
|
|
title = fp3_request_turkic_invasion_interaction_accept_notification.t
|
|
left_icon = scope:secondary_recipient
|
|
right_icon = scope:actor
|
|
|
|
show_as_tooltip = {
|
|
custom_tooltip = fp3_request_turkic_invasion_interaction_accept_target_notification.desc
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
use_diplomatic_range = yes
|
|
|
|
ai_accept = {
|
|
base = 0
|
|
|
|
# Relationships: actor -> recipient / We avoid more relationship checks for balance reasons (and because important decisions tend to care little for relationships)
|
|
modifier = { # Rivalry modifier.
|
|
desc = offer_vassalization_interaction_aibehavior_rival_tt_2
|
|
trigger = {
|
|
scope:secondary_recipient = {
|
|
has_relation_rival = scope:actor
|
|
NOT = { has_relation_nemesis = scope:actor }
|
|
}
|
|
}
|
|
add = -10
|
|
}
|
|
modifier = { # Nemesis modifier.
|
|
desc = offer_vassalization_interaction_aibehavior_nemesis_tt_2
|
|
trigger = {
|
|
scope:secondary_recipient = {
|
|
has_relation_nemesis = scope:actor
|
|
}
|
|
}
|
|
add = -30
|
|
}
|
|
modifier = { # Same Dynasty modifier.
|
|
desc = offer_vassalization_interaction_aibehavior_dynasty_tt_2
|
|
trigger = {
|
|
scope:secondary_recipient = {
|
|
dynasty = scope:actor.dynasty
|
|
}
|
|
}
|
|
add = 10
|
|
}
|
|
|
|
# Compare Opinion modifier
|
|
opinion_modifier = {
|
|
who = scope:secondary_recipient
|
|
opinion_target = scope:actor
|
|
multiplier = 0.25
|
|
}
|
|
|
|
# Pledged to help in invasion
|
|
modifier = {
|
|
add = {
|
|
value = scope:actor.max_military_strength
|
|
divide = 70
|
|
round = yes
|
|
}
|
|
desc = HAS_YOUR_SUPPORT_REASON
|
|
scope:war_support = yes
|
|
}
|
|
|
|
# Relative power (taken from PT interaction)
|
|
modifier = { # A lot less levies than scope:secondary_recipient
|
|
add = -100
|
|
scope:secondary_recipient.max_military_strength <= scope:recipient.purchase_truce_interaction_recipient_far_weaker_value
|
|
desc = fp3_RTI_AI_RECIPIENT_IS_MUCH_WEAKER
|
|
}
|
|
modifier = { # Few less levies than scope:secondary_recipient
|
|
add = -75
|
|
scope:secondary_recipient.max_military_strength > scope:recipient.purchase_truce_interaction_recipient_far_weaker_value
|
|
scope:secondary_recipient.max_military_strength <= scope:recipient.purchase_truce_interaction_recipient_somewhat_weaker_value
|
|
desc = fp3_RTI_AI_RECIPIENT_IS_SOMEWHAT_WEAKER
|
|
}
|
|
modifier = { # Roughly equal levies with scope:secondary_recipient
|
|
add = 10
|
|
scope:secondary_recipient.max_military_strength > scope:recipient.purchase_truce_interaction_recipient_somewhat_weaker_value
|
|
scope:secondary_recipient.max_military_strength <= scope:recipient.purchase_truce_interaction_recipient_somewhat_stronger_value
|
|
desc = fp3_RTI_AI_RECIPIENT_IS_ROUGHLY_EQUAL
|
|
}
|
|
modifier = { # More levies than scope:secondary_recipient
|
|
add = 50
|
|
scope:secondary_recipient.max_military_strength > scope:recipient.purchase_truce_interaction_recipient_somewhat_stronger_value
|
|
scope:secondary_recipient.max_military_strength <= scope:recipient.purchase_truce_interaction_recipient_far_stronger_value
|
|
desc = fp3_RTI_AI_RECIPIENT_IS_SOMEWHAT_STRONGER
|
|
}
|
|
modifier = { # Many more levies than scope:secondary_recipient
|
|
add = 75
|
|
scope:secondary_recipient.max_military_strength > scope:recipient.purchase_truce_interaction_recipient_far_stronger_value
|
|
desc = fp3_RTI_AI_RECIPIENT_IS_MUCH_STRONGER
|
|
}
|
|
|
|
# AI who are in debt will take whatever windfalls they can.
|
|
modifier = {
|
|
add = {
|
|
value = scope:secondary_recipient.debt_level
|
|
add = 1 # Our first level is 0, so we add one to always get a positive number.
|
|
multiply = 10
|
|
}
|
|
debt_level >= 0
|
|
desc = PT_AI_IS_IN_DEBT
|
|
}
|
|
|
|
# Pacifist AI don't like raiding
|
|
modifier = {
|
|
add = -25
|
|
scope:secondary_recipient.faith = { has_doctrine_parameter = pacifist_opinion_active }
|
|
desc = PT_AI_IS_PACIFIST_FAITH_2
|
|
}
|
|
modifier = {
|
|
add = -25
|
|
scope:secondary_recipient.culture = { has_cultural_parameter = reduced_cost_for_conversion_to_pacifist_faith }
|
|
desc = PT_AI_IS_PACIFIST_CULTURE_2
|
|
}
|
|
|
|
# Offered proportional gold
|
|
modifier = {
|
|
add = 85
|
|
scope:financial_support = yes
|
|
desc = GOLD_REASON
|
|
}
|
|
|
|
# AI value mod
|
|
ai_value_modifier = {
|
|
ai_greed = 0.5
|
|
ai_boldness = 0.25
|
|
min = 0
|
|
max = 25
|
|
}
|
|
}
|
|
#auto_accept = {
|
|
# scope:recipient = { is_ai = yes }
|
|
#}
|
|
can_send_despite_rejection = no
|
|
ai_frequency = 24
|
|
ai_targets = {
|
|
ai_recipients = neighboring_rulers
|
|
ai_recipients = liege
|
|
}
|
|
ai_potential = {
|
|
has_trait = fp3_struggle_detractor
|
|
is_at_war = no
|
|
NOT = { ai_has_economical_boom_personality = yes }
|
|
ai_greed <= 25
|
|
highest_held_title_tier > tier_barony
|
|
NOT = { culture = { has_cultural_pillar = heritage_turkic } }
|
|
}
|
|
ai_will_do = {
|
|
base = 0
|
|
|
|
modifier = {
|
|
add = 50
|
|
scope:recipient = {
|
|
has_trait = fp3_struggle_supporter
|
|
scope:recipient.max_military_strength >= scope:actor.max_military_strength
|
|
}
|
|
}
|
|
|
|
modifier = {
|
|
add = 50
|
|
title:d_sunni.holder ?= scope:recipient
|
|
}
|
|
|
|
modifier = {
|
|
add = 100
|
|
scope:recipient = {
|
|
has_relation_rival = scope:actor
|
|
}
|
|
}
|
|
|
|
modifier = {
|
|
factor = 0.1
|
|
scope:actor.liege ?= scope:recipient
|
|
}
|
|
|
|
modifier = {
|
|
factor = 0
|
|
scope:recipient = {
|
|
has_character_flag = incursion_ai_pacing
|
|
}
|
|
}
|
|
|
|
modifier = {
|
|
factor = 0
|
|
scope:recipient = {
|
|
is_at_war = yes
|
|
is_ai = no
|
|
}
|
|
}
|
|
|
|
modifier = {
|
|
factor = 0
|
|
scope:recipient = {
|
|
is_ai = no
|
|
is_liege_or_above_of = scope:actor
|
|
}
|
|
}
|
|
|
|
modifier = {
|
|
factor = 0
|
|
scope:recipient = {
|
|
OR = {
|
|
has_relation_friend = scope:actor
|
|
has_relation_lover = scope:actor
|
|
opinion = {
|
|
target = scope:actor
|
|
value >= 45
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
###################################
|
|
# Challenge House Head
|
|
# By Hugo Cortell
|
|
# Reworked by Joe Parkin
|
|
###################################
|
|
fp3_challenge_house_head_interaction = {
|
|
icon = house_unity_sword
|
|
category = interaction_category_hostile
|
|
common_interaction = no
|
|
ai_min_reply_days = 4
|
|
ai_max_reply_days = 9
|
|
popup_on_receive = yes
|
|
pause_on_receive = yes
|
|
use_diplomatic_range = no
|
|
|
|
interface_priority = 107
|
|
|
|
desc = fp3_challenge_house_head_interaction_desc
|
|
|
|
notification_text = {
|
|
first_valid = {
|
|
triggered_desc = {
|
|
trigger = { scope:diplomacy = yes }
|
|
desc = fp3_challenge_house_head_interaction_notification_diplomacy
|
|
}
|
|
desc = fp3_challenge_house_head_interaction_notification
|
|
}
|
|
}
|
|
|
|
greeting = positive
|
|
|
|
ai_maybe = yes
|
|
|
|
cooldown_against_recipient = { years = 10 }
|
|
|
|
is_shown = {
|
|
has_fp3_dlc_trigger = yes
|
|
scope:actor = {
|
|
NOT = { this = scope:recipient }
|
|
government_has_flag = government_is_clan
|
|
}
|
|
scope:actor.house ?= {
|
|
house_head = scope:recipient
|
|
OR = {
|
|
has_house_unity_parameter = unity_can_challenge_house_head
|
|
scope:actor = {
|
|
any_character_struggle = { has_struggle_phase_parameter = unlocks_challenge_house_head_for_clans }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
scope:actor = {
|
|
is_at_war = no
|
|
is_available_adult = yes
|
|
}
|
|
scope:recipient = {
|
|
is_at_war = no
|
|
is_available_adult = yes
|
|
# Stop challenges from barons and counts against kings
|
|
custom_tooltip = {
|
|
text = fp3_challenge_house_head_interaction_tier_tt
|
|
tier_difference = {
|
|
target = scope:actor
|
|
value <= 1
|
|
}
|
|
}
|
|
# Give some respite after a recent challenge
|
|
custom_tooltip = {
|
|
text = fp3_challenge_house_head_interaction_recent_tt
|
|
NOT = { has_character_flag = fp3_challenge_house_head_recent_flag }
|
|
}
|
|
}
|
|
}
|
|
|
|
auto_accept = {
|
|
trigger_if = {
|
|
limit = {
|
|
scope:recipient = { is_ruler = no }
|
|
}
|
|
scope:recipient = { is_ruler = no }
|
|
}
|
|
trigger_else_if = {
|
|
limit = { scope:hook = yes }
|
|
custom_description = {
|
|
text = "spending_hook"
|
|
subject = scope:actor
|
|
object = scope:recipient
|
|
scope:hook = yes
|
|
}
|
|
}
|
|
trigger_else_if = {
|
|
limit = {
|
|
scope:actor = { is_heir_of = scope:recipient }
|
|
}
|
|
custom_tooltip = {
|
|
text = fp3_challenge_house_head_interaction_heir_bonus_desc
|
|
scope:actor = { is_heir_of = scope:recipient }
|
|
}
|
|
}
|
|
trigger_else = { always = no }
|
|
}
|
|
|
|
can_send = {
|
|
scope:actor = {
|
|
# Do not allow house heads who accepted a challenge to ping pong back and forth
|
|
custom_tooltip = {
|
|
text = fp3_challenge_house_head_interaction_accepted_tt
|
|
NOT = { has_character_flag = accepted_house_head_challenge_flag }
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
# Do not allow multiple challenges at the same time
|
|
custom_tooltip = {
|
|
text = fp3_challenge_house_head_interaction_ongoing_tt
|
|
NOT = { has_character_flag = ongoing_house_head_challenge_flag }
|
|
}
|
|
}
|
|
}
|
|
|
|
on_send = {
|
|
scope:recipient = {
|
|
add_character_flag = { # stop multiple challenges at same time
|
|
flag = ongoing_house_head_challenge_flag
|
|
months = 1
|
|
}
|
|
add_character_flag = { # stop AI constantly challenging players
|
|
flag = ai_cooldown_house_head_challenge_flag
|
|
years = 5
|
|
}
|
|
}
|
|
}
|
|
|
|
on_accept = {
|
|
scope:recipient = { save_scope_as = house_head }
|
|
if = {
|
|
limit = {
|
|
scope:recipient = {
|
|
is_ruler = no
|
|
}
|
|
}
|
|
scope:actor.house = { set_house_head = scope:actor }
|
|
}
|
|
else = {
|
|
scope:actor = {
|
|
save_scope_as = house_challenger
|
|
if = { # Hook consumption
|
|
limit = { scope:hook = yes }
|
|
use_hook = scope:house_head
|
|
}
|
|
if = {
|
|
limit = { scope:diplomacy = yes }
|
|
custom_tooltip = fp3_challenge_house_head_interaction_tooltip_actor.diplomacy
|
|
trigger_event = fp3_misc_decisions.0026
|
|
scope:house_head = { custom_tooltip = fp3_challenge_house_head_interaction_tooltip_recipient.diplomacy }
|
|
house = {
|
|
add_clan_unity_interaction_effect = {
|
|
CHARACTER = scope:house_challenger
|
|
TARGET = scope:house_head
|
|
VALUE = minor_unity_loss
|
|
DESC = clan_unity_challenged_to_duel.desc
|
|
REVERSE_NON_HOUSE_TARGET = yes
|
|
}
|
|
}
|
|
}
|
|
else = {
|
|
if = {
|
|
limit = { scope:lethal = no }
|
|
custom_tooltip = fp3_challenge_house_head_interaction_tooltip_actor.a
|
|
scope:house_head = { custom_tooltip = fp3_challenge_house_head_interaction_tooltip_recipient.b }
|
|
house = {
|
|
add_clan_unity_interaction_effect = {
|
|
CHARACTER = scope:house_challenger
|
|
TARGET = scope:house_head
|
|
VALUE = minor_unity_loss
|
|
DESC = clan_unity_challenged_to_duel.desc
|
|
REVERSE_NON_HOUSE_TARGET = yes
|
|
}
|
|
}
|
|
}
|
|
else = {
|
|
custom_tooltip = fp3_challenge_house_head_interaction_tooltip_actor.a.lethal
|
|
scope:house_head = { custom_tooltip = fp3_challenge_house_head_interaction_tooltip_recipient.b.lethal }
|
|
house = {
|
|
add_clan_unity_interaction_effect = {
|
|
CHARACTER = scope:house_challenger
|
|
TARGET = scope:house_head
|
|
VALUE = major_unity_loss
|
|
DESC = clan_unity_challenged_to_duel.desc
|
|
REVERSE_NON_HOUSE_TARGET = yes
|
|
}
|
|
}
|
|
}
|
|
trigger_event = fp3_misc_decisions.0022
|
|
}
|
|
}
|
|
if = {
|
|
limit = { scope:diplomacy = no }
|
|
if = {
|
|
limit = { scope:lethal = no }
|
|
custom_tooltip = fp3_challenge_house_head_interaction_duel_tooltip_warning
|
|
}
|
|
else = { custom_tooltip = fp3_challenge_house_head_interaction_duel_tooltip_warning_lethal }
|
|
}
|
|
}
|
|
}
|
|
|
|
on_decline = { # Get letter of rejection, to further escalate the situation if the player wills it
|
|
scope:actor = { trigger_event = fp3_misc_decisions.0025 }
|
|
scope:recipient = {
|
|
add_prestige = major_prestige_loss
|
|
remove_character_flag = ongoing_house_head_challenge_flag
|
|
}
|
|
}
|
|
|
|
send_option = {
|
|
flag = diplomacy
|
|
localization = CHALLENGE_HOUSE_HEAD_DIPLOMACY_DUEL
|
|
is_valid = {
|
|
custom_tooltip = {
|
|
text = CHALLENGE_HOUSE_HEAD_LETHAL_DUEL_INVALID_TT
|
|
NOT = { scope:lethal = yes }
|
|
}
|
|
}
|
|
}
|
|
send_option = {
|
|
flag = lethal
|
|
localization = CHALLENGE_HOUSE_HEAD_LETHAL_DUEL
|
|
is_valid = {
|
|
scope:actor = { has_relation_rival = scope:recipient }
|
|
custom_tooltip = {
|
|
text = CHALLENGE_HOUSE_HEAD_LETHAL_DUEL_INVALID_TT
|
|
NOT = { scope:diplomacy = yes }
|
|
}
|
|
}
|
|
}
|
|
send_option = {
|
|
flag = hook
|
|
localization = GENERIC_SPEND_A_HOOK
|
|
is_valid = {
|
|
scope:actor = { has_usable_hook = scope:recipient }
|
|
}
|
|
}
|
|
should_use_extra_icon = { scope:actor = { has_usable_hook = scope:recipient } }
|
|
extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds"
|
|
send_options_exclusive = no
|
|
|
|
# AI
|
|
|
|
ai_accept = {
|
|
base = 25
|
|
modifier = {
|
|
add = -50
|
|
scope:lethal = yes
|
|
desc = AI_AVOID_LETHAL_DUEL
|
|
}
|
|
modifier = {
|
|
add = 15
|
|
scope:recipient = { has_trait = ambitious }
|
|
desc = INTERACTION_AMBITIOUS
|
|
}
|
|
modifier = {
|
|
add = 25
|
|
scope:recipient = { has_trait = brave }
|
|
desc = INTERACTION_BRAVE
|
|
}
|
|
modifier = {
|
|
add = {
|
|
value = -25
|
|
if = {
|
|
limit = { scope:lethal = yes }
|
|
multiply = 2
|
|
}
|
|
}
|
|
scope:recipient = { has_trait = craven }
|
|
desc = INTERACTION_CRAVEN
|
|
}
|
|
modifier = {
|
|
scope:recipient.ai_greed != 0
|
|
add = { # Greedy people won't risk a position of power, even if their prestige suffers
|
|
value = scope:recipient.ai_greed
|
|
multiply = -1
|
|
max = 35
|
|
min = -35
|
|
}
|
|
desc = AI_VALUE_MODIFIER_GREED
|
|
}
|
|
modifier = {
|
|
scope:recipient.ai_honor != 0
|
|
add = {
|
|
value = scope:recipient.ai_honor
|
|
max = 75
|
|
min = -35
|
|
}
|
|
desc = AI_VALUE_MODIFIER_HONOR
|
|
}
|
|
modifier = {
|
|
scope:recipient.ai_energy != 0
|
|
add = {
|
|
value = scope:recipient.ai_energy
|
|
max = 10
|
|
min = -10
|
|
}
|
|
desc = AI_VALUE_MODIFIER_ENERGY
|
|
}
|
|
modifier = {
|
|
NOT = { scope:diplomacy = yes }
|
|
add = {
|
|
value = scope:recipient.prowess
|
|
subtract = scope:actor.prowess
|
|
multiply = 2
|
|
}
|
|
desc = CTSC_RELATIVE_PROWESS
|
|
}
|
|
modifier = {
|
|
scope:lethal = yes
|
|
scope:recipient = {
|
|
OR = {
|
|
is_parent_of = scope:actor
|
|
is_child_of = scope:actor
|
|
}
|
|
NOT = { has_relation_rival = scope:actor }
|
|
}
|
|
desc = AI_AVOID_LETHAL_DUEL_WITH_FAMILY
|
|
}
|
|
opinion_modifier = {
|
|
opinion_target = scope:actor
|
|
multiplier = 0.5
|
|
}
|
|
}
|
|
|
|
ai_frequency = 24
|
|
|
|
ai_target_quick_trigger = {
|
|
adult = yes
|
|
}
|
|
|
|
ai_potential = {
|
|
NOR = {
|
|
has_trait = craven
|
|
has_trait = content
|
|
}
|
|
government_has_flag = government_is_clan
|
|
is_physically_able = yes
|
|
}
|
|
|
|
ai_targets = {
|
|
ai_recipients = dynasty
|
|
ai_recipients = family
|
|
max = 10
|
|
}
|
|
|
|
ai_targets = {
|
|
ai_recipients = liege
|
|
ai_recipients = head_of_faith
|
|
ai_recipients = hooked_characters
|
|
ai_recipients = scripted_relations
|
|
}
|
|
|
|
ai_targets = {
|
|
ai_recipients = peer_vassals
|
|
ai_recipients = vassals
|
|
ai_recipients = neighboring_rulers
|
|
max = 30
|
|
}
|
|
|
|
ai_will_do = {
|
|
base = 5
|
|
# Base requirements for AI
|
|
modifier = {
|
|
add = -1000
|
|
NOR = {
|
|
AND = {
|
|
is_independent_ruler = yes
|
|
highest_held_title_tier >= scope:recipient.highest_held_title_tier
|
|
}
|
|
is_powerful_vassal = yes
|
|
is_close_or_extended_family_of = scope:recipient
|
|
opinion = {
|
|
target = scope:recipient
|
|
value >= 25
|
|
}
|
|
}
|
|
}
|
|
# Stop AI constantly challenging players
|
|
modifier = {
|
|
scope:recipient = { has_character_flag = ai_cooldown_house_head_challenge_flag }
|
|
add = -1000
|
|
}
|
|
# Tiers
|
|
modifier = {
|
|
add = 10
|
|
piety_level >= scope:recipient.piety_level
|
|
}
|
|
modifier = {
|
|
add = 10
|
|
prestige_level >= scope:recipient.prestige_level
|
|
}
|
|
modifier = {
|
|
add = 10
|
|
highest_held_title_tier >= scope:recipient.highest_held_title_tier
|
|
}
|
|
# Traits
|
|
modifier = {
|
|
add = 30
|
|
has_trait = ambitious
|
|
}
|
|
modifier = {
|
|
add = 30
|
|
has_trait = brave
|
|
}
|
|
modifier = {
|
|
add = -30
|
|
has_trait = craven
|
|
}
|
|
# Dread
|
|
modifier = {
|
|
add = -25
|
|
has_dread_level_towards = {
|
|
target = scope:recipient
|
|
level >= 1
|
|
}
|
|
}
|
|
modifier = {
|
|
add = -25
|
|
has_dread_level_towards = {
|
|
target = scope:recipient
|
|
level >= 2
|
|
}
|
|
}
|
|
# Personality
|
|
modifier = {
|
|
ai_boldness > 0
|
|
add = {
|
|
value = ai_boldness
|
|
divide = 2
|
|
min = 1
|
|
}
|
|
}
|
|
modifier = {
|
|
ai_greed >= 50
|
|
add = {
|
|
value = ai_greed
|
|
divide = 2
|
|
}
|
|
}
|
|
modifier = {
|
|
ai_sociability = 100
|
|
add = 10
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
###################################
|
|
# Change struggle allegiance
|
|
###################################
|
|
fp3_change_allegiance = {
|
|
interface_priority = 30
|
|
category = interaction_category_diplomacy
|
|
common_interaction = yes
|
|
desc = {
|
|
first_valid = {
|
|
# Become a supporter.
|
|
triggered_desc = {
|
|
trigger = {
|
|
scope:actor = { has_trait = fp3_struggle_supporter }
|
|
}
|
|
desc = fp3_change_allegiance.desc.actor_is_supporter
|
|
}
|
|
# Become a detractor.
|
|
triggered_desc = {
|
|
trigger = {
|
|
scope:actor = { has_trait = fp3_struggle_detractor }
|
|
}
|
|
desc = fp3_change_allegiance.desc.actor_is_detractor
|
|
}
|
|
desc = fp3_change_allegiance.desc.fallback
|
|
}
|
|
}
|
|
icon = change_allegiance
|
|
|
|
greeting = positive
|
|
|
|
should_use_extra_icon = { scope:actor = { has_usable_hook = scope:recipient } }
|
|
extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds"
|
|
|
|
send_options_exclusive = no
|
|
|
|
ai_maybe = yes
|
|
|
|
is_shown = {
|
|
has_fp3_dlc_trigger = yes
|
|
# There has to be a caliph around to sway on.
|
|
## Arguably narratively not, but mechanically, everything will break if we don't.
|
|
exists = title:d_sunni.holder
|
|
NOT = { scope:recipient = scope:actor }
|
|
scope:actor = {
|
|
any_character_struggle = { is_struggle_type = persian_struggle }
|
|
OR = {
|
|
# Detractors are made from supporters.
|
|
AND = {
|
|
has_trait = fp3_struggle_detractor
|
|
scope:recipient = { has_trait = fp3_struggle_supporter }
|
|
}
|
|
# Supporters are made from detractors.
|
|
AND = {
|
|
has_trait = fp3_struggle_supporter
|
|
scope:recipient = { has_trait = fp3_struggle_detractor }
|
|
}
|
|
# Neutrals can be asked either way, should they exist.
|
|
AND = {
|
|
OR = {
|
|
has_trait = fp3_struggle_detractor
|
|
has_trait = fp3_struggle_supporter
|
|
}
|
|
scope:recipient = {
|
|
NOR = {
|
|
has_trait = fp3_struggle_detractor
|
|
has_trait = fp3_struggle_supporter
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
any_character_struggle = { is_struggle_type = persian_struggle }
|
|
# You cannot ask the Caliph!
|
|
NOT = { this = title:d_sunni.holder }
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
scope:recipient = {
|
|
# We want to disable some stuff for supporters who can't be persuaded away from the caliph.
|
|
trigger_if = {
|
|
limit = { has_trait = fp3_struggle_supporter }
|
|
# Can't be allied to the caliph.
|
|
NOT = { is_allied_to = title:d_sunni.holder }
|
|
# Can't be strong hooked _by_ the caliph.
|
|
NOT = {
|
|
title:d_sunni.holder = { has_strong_hook = prev }
|
|
}
|
|
# Can't have only recently changed to become a supporter.
|
|
custom_tooltip = {
|
|
text = fp3_change_allegiance.tt.recently_voluntarily_became_supporter
|
|
OR = {
|
|
NOT = { has_variable = last_explicit_friday_prayer_caliph }
|
|
NOT = { var:last_explicit_friday_prayer_caliph = title:d_sunni.holder }
|
|
}
|
|
}
|
|
}
|
|
# Likewise, some circumstances can force them to stay as a detractor.
|
|
trigger_if = {
|
|
limit = { has_trait = fp3_struggle_detractor }
|
|
# Can't have only recently changed to become a detractor.
|
|
custom_tooltip = {
|
|
text = fp3_change_allegiance.tt.recently_voluntarily_became_detractor
|
|
OR = {
|
|
NOT = { has_variable = last_explicit_friday_prayer_caliph }
|
|
NOT = { var:last_explicit_friday_prayer_caliph = title:d_sunni.holder }
|
|
}
|
|
}
|
|
# Can't have been forced into becoming a detractor by the caliph overstepping.
|
|
custom_tooltip = {
|
|
text = fp3_change_allegiance.tt.recently_forced_to_detractor
|
|
OR = {
|
|
NOT = { has_variable = last_explicit_defied_caliph }
|
|
NOT = { var:last_explicit_defied_caliph = title:d_sunni.holder }
|
|
}
|
|
}
|
|
}
|
|
# Plus some general stuff.
|
|
is_at_war = no
|
|
# Can't have recently been convinced to change their minds.
|
|
custom_tooltip = {
|
|
text = fp3_change_allegiance.tt.recently_changed_mind
|
|
NOT = { has_character_flag = fp3_change_allegiance_recipient_cooldown }
|
|
}
|
|
custom_tooltip = {
|
|
text = fp3_change_allegiance.tt.recently_refused
|
|
NOT = { has_character_flag = fp3_change_allegiance_refused_cooldown }
|
|
}
|
|
# They must be an orthodox Sunni.
|
|
custom_tooltip = {
|
|
text = fp3_change_allegiance.tt.hof_is_d_sunni
|
|
faith.religious_head ?= title:d_sunni.holder
|
|
}
|
|
}
|
|
scope:actor = { is_available_adult = yes }
|
|
}
|
|
|
|
auto_accept = {
|
|
custom_description = {
|
|
text = "spending_hook"
|
|
subject = scope:actor
|
|
object = scope:recipient
|
|
scope:hook = yes
|
|
}
|
|
}
|
|
|
|
ai_accept = {
|
|
base = 0
|
|
|
|
# Those who already have a stance are more set in their ways.
|
|
## Detractors
|
|
modifier = {
|
|
add = -25
|
|
scope:actor = { has_trait = fp3_struggle_supporter }
|
|
scope:recipient = { has_trait = fp3_struggle_detractor }
|
|
desc = INTERACTION_DETRACTOR
|
|
}
|
|
## Supporters
|
|
modifier = {
|
|
add = -25
|
|
scope:actor = { has_trait = fp3_struggle_detractor }
|
|
scope:recipient = { has_trait = fp3_struggle_supporter }
|
|
desc = INTERACTION_SUPPORTER
|
|
}
|
|
|
|
# Opinions
|
|
## Opinion of you
|
|
opinion_modifier = {
|
|
who = scope:recipient
|
|
opinion_target = scope:actor
|
|
multiplier = {
|
|
value = 1
|
|
# Despawn this if you're not the caliph.
|
|
if = {
|
|
limit = { scope:actor = title:d_sunni.holder }
|
|
multiply = 0
|
|
}
|
|
}
|
|
}
|
|
## Opinion of the caliph
|
|
opinion_modifier = {
|
|
who = scope:recipient
|
|
opinion_target = title:d_sunni.holder
|
|
multiplier = {
|
|
value = 0.5
|
|
# If you're the caliph, you can take the full amount.
|
|
if = {
|
|
limit = { scope:actor = title:d_sunni.holder }
|
|
add = 0.5
|
|
}
|
|
}
|
|
}
|
|
# Traits.
|
|
## Become supporter.
|
|
### ++ Zealous.
|
|
modifier = {
|
|
add = 25
|
|
desc = ASK_FOR_CONVERSION_RECIPIENT_IS_ZEALOUS
|
|
scope:actor = { has_trait = fp3_struggle_supporter }
|
|
scope:recipient = { has_trait = zealous }
|
|
}
|
|
## Become detractor.
|
|
### -- Cynical.
|
|
modifier = {
|
|
add = 25
|
|
desc = ASK_FOR_CONVERSION_RECIPIENT_IS_CYNICAL
|
|
scope:actor = { has_trait = fp3_struggle_detractor }
|
|
scope:recipient = { has_trait = cynical }
|
|
}
|
|
## Neutral.
|
|
### ++ Fickle.
|
|
modifier = {
|
|
add = 25
|
|
desc = ASK_FOR_CONVERSION_RECIPIENT_IS_FICKLE
|
|
scope:recipient = { has_trait = fickle }
|
|
}
|
|
### + Disloyal.
|
|
modifier = {
|
|
add = 15
|
|
desc = HAS_LOYAL_TRAIT
|
|
scope:recipient = { has_trait = disloyal }
|
|
}
|
|
### - Loyal.
|
|
modifier = {
|
|
add = 15
|
|
desc = HAS_DISLOYAL_TRAIT
|
|
scope:recipient = { has_trait = loyal }
|
|
}
|
|
### -- Stubborn.
|
|
modifier = {
|
|
add = 25
|
|
desc = ASK_FOR_CONVERSION_RECIPIENT_IS_STUBBORN
|
|
scope:recipient = { has_trait = stubborn }
|
|
}
|
|
# Diplomacy
|
|
## Scope:actor's for convincing
|
|
modifier = {
|
|
add = {
|
|
value = scope:actor.diplomacy
|
|
multiply = 5
|
|
}
|
|
desc = INTERACTION_DIPLOMACY_ACTOR
|
|
}
|
|
## Scope:recipient's for resisting
|
|
modifier = {
|
|
add = {
|
|
value = scope:recipient.diplomacy
|
|
multiply = -3
|
|
}
|
|
desc = INTERACTION_DIPLOMACY_RECIPIENT
|
|
}
|
|
}
|
|
|
|
cost = {
|
|
prestige = medium_prestige_value
|
|
}
|
|
|
|
# Use hook
|
|
send_option = {
|
|
flag = hook
|
|
is_valid = {
|
|
scope:actor = {
|
|
has_usable_hook = scope:recipient
|
|
}
|
|
}
|
|
localization = GENERIC_SPEND_A_HOOK
|
|
}
|
|
|
|
on_accept = {
|
|
# Use our hook if we have to.
|
|
if = {
|
|
limit = { always = scope:hook }
|
|
scope:actor = {
|
|
use_hook = scope:recipient
|
|
}
|
|
}
|
|
# If we're a clan this interaction affects unity
|
|
add_clan_unity_interaction_effect = {
|
|
CHARACTER = scope:actor
|
|
TARGET = scope:recipient
|
|
VALUE = medium_unity_gain
|
|
DESC = clan_unity_changed_alignment.desc
|
|
REVERSE_NON_HOUSE_TARGET = no
|
|
}
|
|
# Run the actual effects.
|
|
scope:actor = {
|
|
send_interface_toast = {
|
|
type = event_toast_effect_good
|
|
title = recipient_joined_your_side_title
|
|
left_icon = scope:recipient
|
|
|
|
scope:recipient = {
|
|
if = {
|
|
limit = { scope:actor = { has_trait = fp3_struggle_detractor } }
|
|
if = {
|
|
limit = { has_trait = fp3_struggle_supporter }
|
|
remove_trait = fp3_struggle_supporter
|
|
}
|
|
add_trait_force_tooltip = fp3_struggle_detractor
|
|
|
|
# Catalyst
|
|
hidden_effect = {
|
|
if = {
|
|
limit = {
|
|
scope:actor = {
|
|
any_character_struggle = {
|
|
involvement = involved
|
|
phase_has_catalyst = catalyst_turn_supporter_into_detractor
|
|
}
|
|
}
|
|
}
|
|
every_character_struggle = {
|
|
involvement = involved
|
|
activate_struggle_catalyst = {
|
|
catalyst = catalyst_turn_supporter_into_detractor
|
|
character = scope:actor
|
|
}
|
|
log_debug_variable_for_persian_struggle_effect = { VAR = unrest_catalyst_turn_supporter_into_detractor }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else = {
|
|
if = {
|
|
limit = { has_trait = fp3_struggle_detractor }
|
|
remove_trait = fp3_struggle_detractor
|
|
}
|
|
add_trait_force_tooltip = fp3_struggle_supporter
|
|
|
|
# Catalyst
|
|
hidden_effect = {
|
|
if = {
|
|
limit = {
|
|
scope:actor = {
|
|
any_character_struggle = {
|
|
involvement = involved
|
|
phase_has_catalyst = catalyst_turn_detractor_into_supporter
|
|
}
|
|
}
|
|
}
|
|
every_character_struggle = {
|
|
involvement = involved
|
|
activate_struggle_catalyst = {
|
|
catalyst = catalyst_turn_detractor_into_supporter
|
|
character = scope:actor
|
|
}
|
|
log_debug_variable_for_persian_struggle_effect = { VAR = stabil_catalyst_turn_detractor_into_supporter }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
# Aaaaand flag scope:recipient as on cooldown for a while.
|
|
scope:recipient = {
|
|
set_variable = {
|
|
name = fp3_change_allegiance_recipient_cooldown
|
|
years = 20
|
|
}
|
|
}
|
|
}
|
|
|
|
on_decline = {
|
|
add_clan_unity_interaction_effect = {
|
|
CHARACTER = scope:actor
|
|
TARGET = scope:recipient
|
|
VALUE = medium_unity_loss
|
|
DESC = clan_unity_refused_alignment.desc
|
|
REVERSE_NON_HOUSE_TARGET = no
|
|
}
|
|
scope:actor = {
|
|
if = {
|
|
limit = {
|
|
scope:actor = { has_trait = fp3_struggle_detractor }
|
|
}
|
|
send_interface_toast = {
|
|
type = event_toast_effect_bad
|
|
title = recipient_refused_to_join_your_side_title
|
|
left_icon = scope:recipient
|
|
progress_towards_rival_effect = {
|
|
REASON = rival_rejected_switching_to_struggle_detractor
|
|
CHARACTER = scope:recipient
|
|
OPINION = default_rival_opinion
|
|
}
|
|
}
|
|
}
|
|
else = {
|
|
send_interface_toast = {
|
|
type = event_toast_effect_bad
|
|
title = recipient_refused_to_join_your_side_title
|
|
left_icon = scope:recipient
|
|
progress_towards_rival_effect = {
|
|
REASON = rival_rejected_switching_to_struggle_supporter
|
|
CHARACTER = scope:recipient
|
|
OPINION = default_rival_opinion
|
|
}
|
|
}
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
set_variable = {
|
|
name = fp3_change_allegiance_refused_cooldown
|
|
years = 20
|
|
}
|
|
}
|
|
}
|
|
ai_frequency = 120
|
|
|
|
ai_potential = {
|
|
primary_title.tier >= tier_duchy
|
|
OR = {
|
|
has_trait = fp3_struggle_detractor
|
|
has_trait = fp3_struggle_supporter
|
|
}
|
|
}
|
|
|
|
ai_targets = {
|
|
ai_recipients = liege
|
|
ai_recipients = neighboring_rulers
|
|
ai_recipients = peer_vassals
|
|
ai_recipients = vassals
|
|
ai_recipients = top_realm_domicile_owners
|
|
max = 10
|
|
}
|
|
|
|
ai_will_do = {
|
|
base = -50 # Let's limit it to specific character to avoid pure chaos
|
|
|
|
###############
|
|
## BASE
|
|
###############
|
|
|
|
# AI Values
|
|
## Detractors run off of lacking zeal
|
|
modifier = {
|
|
add = {
|
|
value = ai_zeal
|
|
multiply = -2
|
|
}
|
|
has_trait = fp3_struggle_detractor
|
|
ai_zeal <= -1
|
|
}
|
|
## Supporters run off of turbo-charged zeal
|
|
modifier = {
|
|
add = {
|
|
value = ai_zeal
|
|
multiply = 2
|
|
}
|
|
has_trait = fp3_struggle_supporter
|
|
ai_zeal >= 1
|
|
}
|
|
|
|
# The caliph wants to use this all the time.
|
|
modifier = {
|
|
has_title = title:d_sunni
|
|
add = 200
|
|
}
|
|
|
|
###############
|
|
## TRAITS
|
|
###############
|
|
|
|
# schemer
|
|
modifier = {
|
|
add = 15
|
|
has_trait = schemer
|
|
}
|
|
|
|
# theologian
|
|
modifier = {
|
|
add = 25
|
|
has_trait = theologian
|
|
}
|
|
|
|
# intrigue education
|
|
modifier = {
|
|
add = 15
|
|
has_trait = education_intrigue
|
|
}
|
|
|
|
# learning education
|
|
modifier = {
|
|
add = 25
|
|
has_trait = education_learning
|
|
}
|
|
|
|
################
|
|
## RELATIONSHIP
|
|
################
|
|
|
|
# more likely to do it against friend and lover
|
|
modifier = {
|
|
add = 50
|
|
scope:recipient = {
|
|
OR = {
|
|
has_relation_friend = scope:actor
|
|
has_relation_lover = scope:actor
|
|
has_relation_soulmate = scope:actor
|
|
has_relation_best_friend = scope:actor
|
|
}
|
|
}
|
|
}
|
|
|
|
# boost against liege for Ambitious
|
|
modifier = {
|
|
add = 50
|
|
scope:actor = {
|
|
has_trait = ambitious
|
|
is_vassal_of = scope:recipient
|
|
}
|
|
}
|
|
|
|
# never target your rivals
|
|
modifier = {
|
|
add = -1000
|
|
scope:recipient = {
|
|
OR = {
|
|
has_relation_rival = scope:actor
|
|
has_relation_nemesis = scope:actor
|
|
}
|
|
}
|
|
}
|
|
|
|
################
|
|
## STRUGGLE
|
|
################
|
|
|
|
modifier = {
|
|
add = 100
|
|
OR = {
|
|
AND = {
|
|
scope:recipient = { has_trait = fp3_struggle_supporter }
|
|
scope:actor = {
|
|
has_trait = fp3_struggle_detractor
|
|
any_character_struggle = {
|
|
involvement = involved
|
|
phase_has_catalyst = catalyst_turn_supporter_into_detractor
|
|
}
|
|
}
|
|
}
|
|
AND = {
|
|
scope:recipient = { has_trait = fp3_struggle_detractor }
|
|
scope:actor = {
|
|
has_trait = fp3_struggle_supporter
|
|
any_character_struggle = {
|
|
involvement = involved
|
|
phase_has_catalyst = catalyst_turn_detractor_into_supporter
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
###################################
|
|
# Request honorary titles
|
|
###################################
|
|
fp3_request_honorary_titles_interaction = { # todo_cd_polish add different option to pick different titles
|
|
interface_priority = 30
|
|
category = interaction_category_religion
|
|
common_interaction = yes
|
|
desc = fp3_request_honorary_titles_interaction_desc
|
|
icon = honorary_titles
|
|
|
|
greeting = positive
|
|
|
|
auto_accept = yes
|
|
|
|
cooldown = { years = 10 }
|
|
|
|
cost = {
|
|
piety = {
|
|
value = major_piety_value
|
|
if = {
|
|
limit = { # cheaper for the actual liege
|
|
any_vassal = {
|
|
any_held_title = {
|
|
this = title:d_sunni
|
|
}
|
|
}
|
|
}
|
|
subtract = medium_piety_value
|
|
}
|
|
}
|
|
}
|
|
|
|
is_shown = {
|
|
fp3_reward_from_vassalization_ending = yes
|
|
}
|
|
|
|
is_valid = {
|
|
# honorary titles should be unique
|
|
custom_tooltip = {
|
|
text = one_of_the_title_is_available_tt
|
|
scope:actor = {
|
|
house ?= {
|
|
NAND = {
|
|
any_house_member = {
|
|
has_character_modifier = fp3_honorary_title_intrigue_modifier
|
|
}
|
|
any_house_member = {
|
|
has_character_modifier = fp3_honorary_title_scholarship_modifier
|
|
}
|
|
|
|
any_house_member = {
|
|
has_character_modifier = fp3_honorary_title_stewardship_modifier
|
|
}
|
|
any_house_member = {
|
|
has_character_modifier = fp3_honorary_title_diplomacy_modifier
|
|
}
|
|
any_house_member = {
|
|
has_character_modifier = fp3_honorary_title_piety_modifier
|
|
}
|
|
any_house_member = {
|
|
has_character_modifier = fp3_honorary_title_prestige_modifier
|
|
}
|
|
any_house_member = {
|
|
has_character_modifier = fp3_honorary_title_martial_modifier
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
send_option = {
|
|
flag = intrigue_option
|
|
localization = fp3_honorary_title_intrigue_modifier
|
|
is_valid = {
|
|
NOT = {
|
|
scope:actor = {
|
|
house ?= {
|
|
any_house_member = {
|
|
has_character_modifier = fp3_honorary_title_intrigue_modifier
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
send_option = {
|
|
flag = scholarship_option
|
|
localization = fp3_honorary_title_scholarship_modifier
|
|
is_valid = {
|
|
NOT = {
|
|
scope:actor = {
|
|
house ?= {
|
|
any_house_member = {
|
|
has_character_modifier = fp3_honorary_title_scholarship_modifier
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
send_option = {
|
|
flag = stewardship_option
|
|
localization = fp3_honorary_title_stewardship_modifier
|
|
is_valid = {
|
|
NOT = {
|
|
scope:actor = {
|
|
house ?= {
|
|
any_house_member = {
|
|
has_character_modifier = fp3_honorary_title_stewardship_modifier
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
send_option = {
|
|
flag = diplomacy_option
|
|
localization = fp3_honorary_title_diplomacy_modifier
|
|
is_valid = {
|
|
NOT = {
|
|
scope:actor = {
|
|
house ?= {
|
|
any_house_member = {
|
|
has_character_modifier = fp3_honorary_title_diplomacy_modifier
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
send_option = {
|
|
flag = piety_option
|
|
localization = fp3_honorary_title_piety_modifier
|
|
is_valid = {
|
|
NOT = {
|
|
scope:actor = {
|
|
house ?= {
|
|
any_house_member = {
|
|
has_character_modifier = fp3_honorary_title_piety_modifier
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
send_option = {
|
|
flag = prestige_option
|
|
localization = fp3_honorary_title_prestige_modifier
|
|
is_valid = {
|
|
NOT = {
|
|
scope:actor = {
|
|
house ?= {
|
|
any_house_member = {
|
|
has_character_modifier = fp3_honorary_title_prestige_modifier
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
send_option = {
|
|
flag = martial_option
|
|
localization = fp3_honorary_title_martial_modifier
|
|
is_valid = {
|
|
NOT = {
|
|
scope:actor = {
|
|
house ?= {
|
|
any_house_member = {
|
|
has_character_modifier = fp3_honorary_title_martial_modifier
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
on_accept = {
|
|
scope:actor = {
|
|
send_interface_toast = {
|
|
type = event_toast_effect_good
|
|
title = new_honorary_title_acquired_title
|
|
left_icon = scope:recipient
|
|
|
|
switch = {
|
|
trigger = yes
|
|
scope:intrigue_option = {
|
|
add_character_modifier = {
|
|
modifier = fp3_honorary_title_intrigue_modifier
|
|
}
|
|
}
|
|
scope:scholarship_option = {
|
|
add_character_modifier = {
|
|
modifier = fp3_honorary_title_scholarship_modifier
|
|
}
|
|
}
|
|
scope:stewardship_option = {
|
|
add_character_modifier = {
|
|
modifier = fp3_honorary_title_stewardship_modifier
|
|
}
|
|
}
|
|
scope:diplomacy_option = {
|
|
add_character_modifier = {
|
|
modifier = fp3_honorary_title_diplomacy_modifier
|
|
}
|
|
}
|
|
scope:piety_option = {
|
|
add_character_modifier = {
|
|
modifier = fp3_honorary_title_piety_modifier
|
|
}
|
|
}
|
|
scope:prestige_option = {
|
|
add_character_modifier = {
|
|
modifier = fp3_honorary_title_prestige_modifier
|
|
}
|
|
}
|
|
scope:martial_option = {
|
|
add_character_modifier = {
|
|
modifier = fp3_honorary_title_martial_modifier
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ai_frequency = 60
|
|
|
|
ai_potential = {
|
|
any_vassal = {
|
|
any_held_title = {
|
|
this = title:d_sunni
|
|
}
|
|
}
|
|
}
|
|
|
|
ai_targets = {
|
|
# For the AI, we limit it to neighboring_rulers
|
|
ai_recipients = vassals
|
|
}
|
|
|
|
ai_will_do = {
|
|
base = 100
|
|
}
|
|
}
|
|
|
|
|
|
###################################
|
|
# Request house unity interference
|
|
###################################
|
|
fp3_request_house_unity_change_interaction = {
|
|
interface_priority = 30
|
|
category = interaction_category_religion
|
|
common_interaction = yes
|
|
desc = fp3_request_house_unity_change_interaction_desc
|
|
icon = unity_harmonious
|
|
|
|
greeting = positive
|
|
|
|
|
|
auto_accept = yes
|
|
|
|
cooldown = { years = 10 }
|
|
|
|
cost = {
|
|
piety = medium_piety_value
|
|
}
|
|
|
|
is_shown = {
|
|
fp3_reward_from_vassalization_ending = yes
|
|
scope:actor = {
|
|
government_has_flag = government_is_clan
|
|
}
|
|
}
|
|
|
|
is_valid = {
|
|
# only valid for the actual liege
|
|
custom_tooltip = {
|
|
text = you_are_the_liege_of_the_caliph_tt
|
|
scope:actor = {
|
|
is_liege_or_above_of = scope:recipient
|
|
}
|
|
scope:recipient = {
|
|
any_held_title = {
|
|
this = title:d_sunni
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
send_option = {
|
|
flag = unity_gain
|
|
localization = INCREASE_HOUSE_UNITY
|
|
starts_enabled = { always = yes }
|
|
}
|
|
|
|
send_option = {
|
|
flag = unity_loss
|
|
localization = DECREASE_HOUSE_UNITY
|
|
}
|
|
|
|
on_accept = {
|
|
scope:recipient = { save_scope_as = unity_target }
|
|
scope:actor = {
|
|
save_scope_as = unity_character
|
|
house = {
|
|
add_unity_value = {
|
|
value = {
|
|
if = {
|
|
limit = { scope:unity_gain = yes }
|
|
add = medium_unity_gain
|
|
}
|
|
else_if = {
|
|
limit = { scope:unity_loss = yes }
|
|
add = medium_unity_loss
|
|
}
|
|
}
|
|
character = root
|
|
desc = clan_unity_caliph_interfered_with_unity.desc
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ai_frequency = 60
|
|
|
|
ai_potential = {
|
|
any_vassal = {
|
|
any_held_title = {
|
|
this = title:d_sunni
|
|
}
|
|
}
|
|
}
|
|
|
|
ai_targets = {
|
|
# For the AI, we limit it to neighboring_rulers
|
|
ai_recipients = vassals
|
|
}
|
|
|
|
ai_will_do = {
|
|
base = 100
|
|
}
|
|
}
|