N3OW/events/factions/faction_demands.txt
2026-10-30 21:04:18 +01:00

4074 lines
96 KiB
Text

namespace = faction_demand
##################################################
# GENERAL SCRIPTED TRIGGERS & EFFECTS
scripted_trigger faction_leader_would_consider_turning_down_co_emperorship_trigger = {
OR = {
is_ai = no
# Won't change their mind.
AND = {
has_trait = stubborn
NOR = {
has_trait = arrogant
has_trait = ambitious
}
}
# Eyes on the prize.
AND = {
has_trait = humble
NOT = { has_trait = ambitious }
}
# Not swayed by high office.
AND = {
has_trait = content
NOT = { has_trait = arrogant }
}
}
}
scripted_trigger faction_target_can_attempt_to_bribe_with_co_emperorship_trigger = {
may_appoint_co_emperors_trigger = yes
has_active_diarchy = no
}
scripted_effect faction_demand_counter_offer_co_rule_start_diarchy_effect = {
custom_tooltip = {
text = faction_demand.0000.enter_co_rule_avoiding_worst_effects
try_start_diarchy = co_emperorship
set_diarch = scope:faction_leader
change_diarchy_swing = 30
reverse_add_opinion = {
target = scope:faction_leader
modifier = respect_opinion
opinion = 50
}
}
}
##################################################
# EVENTS
##################################################
# Independence Faction
# by Joakim Andreasson & Ismael Serrano
# 0001 - 0010
##################################################
scripted_effect faction_demand_independence_counter_offer_corule_accepted_effect = {
add_dread = medium_dread_loss
# LEGITIMACY LOSS FOR ACCEPTING FACTION DEMANDS
faction_accept_demand_legitimacy_effect = yes
custom_tooltip = {
text = faction_demand.0000.truce_from_co_rule
scope:faction = {
every_faction_member = {
save_scope_as = recipient # Ensuring it localizes correctly
add_truce_both_ways = {
character = scope:faction.faction_target
years = faction_counter_offer_appointed_co_emperor_value
name = ep3_truce_appointed_faction_leader_coruler
}
}
}
}
add_prestige = {
value = medium_prestige_value
multiply = -1
}
scope:faction = { destroy_faction = yes }
}
scripted_effect faction_demand_independence_rejected_effect = {
# This effect should always be placed here, _before_ all the other effects in the block.
trigger_event = { on_action = on_faction_demand_rejected }
show_as_tooltip = {
scope:faction = {
custom_tooltip = faction_starts_war.tt.replacement
}
}
if = {
limit = {
scope:faction = {
faction_is_type = independence_faction
}
}
scope:faction = {
every_faction_member = {
save_scope_as = char_temp
add_clan_unity_interaction_effect = {
CHARACTER = scope:char_temp
TARGET = root
VALUE = medium_unity_loss
DESC = clan_unity_joined_independence_faction.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
}
}
}
# Independence Faction Demand
# by Joakim Andreasson
faction_demand.0001 = {
type = letter_event
sender = scope:faction_leader
opening = {
desc = "FACTION_DEMAND_INDEPENDENCE"
}
desc = "FACTION_DEMAND_INDEPENDENCE_DESC"
trigger = {
# May have ceased to exist by the time this triggers
exists = scope:faction
}
immediate = {
# Grab our scope for loc.
save_scope_as = faction_target
}
# Accept.
option = {
name = "FACTION_DEMAND_ACCEPT"
# This effect should always be placed here, _before_ all the other effects in the block.
trigger_event = { on_action = on_faction_demand_accepted }
root = {
save_scope_as = faction_target
add_dread = medium_dread_loss
# LEGITIMACY LOSS FOR ACCEPTING FACTION DEMANDS
faction_accept_demand_legitimacy_effect = yes
}
create_title_and_vassal_change = {
type = independency
save_scope_as = change
add_claim_on_loss = no
}
scope:faction = {
every_faction_member = {
change_liege_or_become_independent = {
CHANGE = scope:change
VASSAL = this
}
hidden_effect = {
save_scope_as = recipient # Ensuring it localizes correctly
add_truce_both_ways = {
character = root
days = 1825
name = TRUCE_GRANT_INDEPENDENCE
}
# Struggle Catalysts.
if = {
limit = {
is_important_or_vip_struggle_character = yes
any_character_struggle = {
involvement = involved
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
CATALYST = catalyst_gave_independence_to_powerful_diff_faith_culture_vassal
CHAR = scope:recipient
}
}
}
every_character_struggle = {
involvement = involved
limit = {
activate_struggle_catalyst_secondary_character_involvement_either_trigger = {
CATALYST = catalyst_gave_independence_to_powerful_diff_faith_culture_vassal
CHAR = scope:recipient
}
}
activate_struggle_catalyst = catalyst_gave_independence_to_powerful_diff_faith_culture_vassal
}
}
}
trigger_event = faction_demand.0002
}
}
resolve_title_and_vassal_change = scope:change
add_prestige = {
value = medium_prestige_value
multiply = -1
}
ai_chance = {
base = 1
modifier = {
add = 99
scope:faction = { faction_power >= 100 }
}
modifier = {
add = 50
scope:faction = { faction_power >= 125 }
}
modifier = {
add = 50
scope:faction = { faction_power >= 150 }
}
modifier = {
add = 50
scope:faction = { faction_power >= 200 }
}
modifier = {
factor = 0.1
any_ally = {
NOR = {
target_is_liege_or_above = root
target_is_vassal_or_below = root
}
max_military_strength > root.max_military_strength
}
}
compare_modifier = {
value = debt_level
multiplier = 25
}
modifier = {
add = -50
is_at_war = no
primary_title.tier >= tier_kingdom
}
modifier = {
add = -150
is_at_war = no
primary_title.tier >= tier_empire
}
modifier = {
add = -5000
OR = {
#mpo_has_gok_mongol_empire_trigger = yes
#has_title = title:e_ilkhanate
#has_title = title:e_golden_horde
#has_title = title:e_chagatai
#has_title = title:e_red_horde
#has_title = title:e_white_horde
#has_title = title:e_aarlud_khanate
#has_title = title:e_togskol_khanate
#has_title = title:e_baruun_khanate
#has_title = title:e_great_yuan
#has_title = title:e_blue_horde
#has_title = title:e_omnod_dalai_khanate
has_title = title:e_byzantium
has_variable = conqueror
}
}
modifier = {
add = 10000
scope:faction_leader = { is_yes_men_enabled = yes }
}
}
}
# Attempt to bribe.
option = {
name = "FACTION_DEMAND_BRIBE_CO_EMPEROR"
show_as_unavailable = { may_appoint_co_emperors_trigger = yes }
trigger = { faction_target_can_attempt_to_bribe_with_co_emperorship_trigger = yes }
# Ping-pong the choice back to the target.
## Laying out the consequences.
show_as_tooltip = {
random_list = {
# They accept!
100 = {
desc = faction_demand.0000.faction_leader_accepts
show_chance = no
faction_demand_counter_offer_co_rule_start_diarchy_effect = yes
faction_demand_independence_counter_offer_corule_accepted_effect = yes
}
# They decline.
100 = {
desc = faction_demand.0000.faction_leader_rejects
show_chance = no
faction_demand_independence_rejected_effect = yes
}
}
}
## And sorting the actual flow.
scope:faction_leader = { trigger_event = faction_demand.0006 }
ai_chance = { liege_offer_co_emperorship_to_faction_leader_modifier = yes }
}
# Reject.
option = {
name = "FACTION_DEMAND_REFUSE"
faction_demand_independence_rejected_effect = yes
scope:faction_leader = { trigger_event = faction_demand.0003 }
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 4.0
}
modifier = {
add = 50
scope:faction = { faction_power < 80 }
}
modifier = {
add = 100
scope:faction = { faction_power < 60 }
}
modifier = {
add = 1000
scope:faction = { faction_power < 40 }
}
compare_modifier = {
value = debt_level
multiplier = -25
}
modifier = {
add = 5000
OR = {
mpo_has_gok_mongol_empire_trigger = yes
#has_title = title:e_ilkhanate
#has_title = title:e_golden_horde
#has_title = title:e_chagatai
#has_title = title:e_red_horde
#has_title = title:e_white_horde
#has_title = title:e_aarlud_khanate
#has_title = title:e_togskol_khanate
#has_title = title:e_baruun_khanate
#has_title = title:e_great_yuan
#has_title = title:e_blue_horde
#has_title = title:e_omnod_dalai_khanate
has_title = title:e_byzantium
has_variable = conqueror
}
}
modifier = {
add = 10000
scope:faction_leader = { is_no_men_enabled = yes }
}
}
}
}
# Independence Faction Demand Accepted
# by Ismael Serrano
faction_demand.0002 = {
type = letter_event
sender = scope:faction_target
opening = {
desc = "FACTION_DEMAND_INDEPENDENCE_ACCEPTED"
}
desc = "FACTION_DEMAND_INDEPENDENCE_ACCEPTED_DESC"
option = {
name = "FACTION_DEMAND_ACCEPTED_OPT"
custom_tooltip = faction_demand.0002.tt
}
}
# Independence Faction Demand Refused
# by Joakim Andreasson
faction_demand.0003 = {
type = letter_event
sender = scope:faction_target
opening = {
desc = "FACTION_DEMAND_INDEPENDENCE_REFUSED"
}
desc = "FACTION_DEMAND_INDEPENDENCE_REFUSED_DESC"
option = {
name = "FACTION_DEMAND_REFUSED_OPT"
scope:faction = {
faction_start_war = {}
every_faction_member = {
limit = { this != scope:faction.faction_leader }
trigger_event = faction_demand.0004
}
}
}
}
# Independence Faction Demand Refused Member Notice
# by Joakim Andreasson
faction_demand.0004 = {
type = letter_event
sender = scope:faction_target
opening = {
desc = "FACTION_DEMAND_INDEPENDENCE_REFUSED"
}
desc = "FACTION_DEMAND_INDEPENDENCE_REFUSED_DESC"
option = {
name = "FACTION_DEMAND_REFUSED_OPT"
}
}
# Independence Faction Demand Send Notice
# by Joakim Andreasson
faction_demand.0005 = {
type = letter_event
sender = scope:faction_leader
opening = {
desc = "FACTION_DEMAND_INDEPENDENCE_SEND_DEMAND_NOTIFICATION"
}
desc = "FACTION_DEMAND_INDEPENDENCE_SEND_DEMAND_NOTIFICATION_DESC"
option = {
name = "FACTION_DEMAND_SEND_DEMAND_NOTIFICATION_OPT"
}
}
# Co-emperor counter-offer.
faction_demand.0006 = {
type = letter_event
sender = scope:faction_target
opening = FACTION_DEMAND_COUNTER_OFFER_CORULE
desc = FACTION_DEMAND_COUNTER_OFFER_CORULE_DESC
option = {
name = FACTION_DEMAND_COUNTER_OFFER_CORULE_ACCEPT
# Inform the relevant parties.
hidden_effect = {
scope:faction_target = {
send_interface_toast = {
type = msg_start_diarchy
title = faction_demand.0000.offer_accepted
show_as_tooltip = { custom_tooltip = faction_demand.0000.enter_co_emperorship }
}
}
scope:faction = {
every_faction_member = {
limit = {
is_ai = no
this != scope:faction_leader
}
trigger_event = faction_demand.9011
}
}
}
# Actual effects.
scope:faction_target = {
faction_demand_counter_offer_co_rule_start_diarchy_effect = yes
faction_demand_independence_counter_offer_corule_accepted_effect = yes
}
# Low weight: we control the AI accepting this by toggling whether they can access the refusal option at all.
ai_chance = { base = 20 }
}
option = {
name = FACTION_DEMAND_COUNTER_OFFER_CORULE_REJECT
trigger = { faction_leader_would_consider_turning_down_co_emperorship_trigger = yes }
# Inform the relevant parties.
hidden_effect = {
scope:faction_target = {
send_interface_toast = {
type = msg_war_declared_on_me
title = faction_demand.0000.offer_rejected
show_as_tooltip = {
scope:faction = { custom_tooltip = faction_starts_war.tt.replacement }
}
}
}
}
# Actual effects.
faction_demand_independence_rejected_effect = yes
# If the AI can access this at all then they should strongly consider it.
ai_chance = { base = 80 }
}
}
##################################################
# Liberty Faction
# by Henrik Fåhraeus
# 0101 - 0110
##################################################
scripted_effect faction_demand_liberty_counter_offer_corule_accepted_effect = {
add_dread = medium_dread_loss
# LEGITIMACY LOSS FOR ACCEPTING FACTION DEMANDS
faction_accept_demand_legitimacy_effect = yes
add_prestige = -200
add_character_flag = {
flag = recent_liberty_faction_war
years = 10
}
custom_tooltip = {
text = faction_demand.0000.truce_from_co_rule
scope:faction = {
every_faction_member = {
save_scope_as = recipient # Ensuring it localizes correctly
add_truce_both_ways = {
character = scope:faction.faction_target
years = faction_counter_offer_appointed_co_emperor_value
name = ep3_truce_appointed_faction_leader_coruler
}
}
}
}
scope:faction = { destroy_faction = yes }
# This effect should always be placed here, _after_ everything except the ai_chance.
trigger_event = { on_action = on_faction_demand_accepted }
}
scripted_effect faction_demand_liberty_rejected_effect = {
# This effect should always be placed here, _before_ all the other effects in the block.
trigger_event = { on_action = on_faction_demand_rejected }
show_as_tooltip = {
scope:faction = {
custom_tooltip = faction_starts_war.tt.replacement
}
}
}
# Liberty Faction Demand
# by Henrik Fåhraeus
faction_demand.0101 = {
type = letter_event
sender = scope:faction_leader
opening = {
desc = "FACTION_DEMAND_LIBERTY"
}
desc = "FACTION_DEMAND_LIBERTY_DESC"
trigger = {
# May have ceased to exist by the time this triggers
exists = scope:faction
}
immediate = {
# Grab our scope for loc.
save_scope_as = faction_target
}
option = {
name = "FACTION_DEMAND_ACCEPT"
# This effect should always be placed here, _before_ all the other effects in the block.
trigger_event = { on_action = on_faction_demand_accepted }
add_dread = medium_dread_loss
# LEGITIMACY LOSS FOR ACCEPTING FACTION DEMANDS
faction_accept_demand_legitimacy_effect = yes
change_authority_effect = { CHANGE = -1 }
add_prestige = -200
add_character_flag = {
flag = recent_liberty_faction_war
years = 10
}
scope:faction_leader = {
trigger_event = {
id = faction_demand.0102
}
}
scope:faction = {
destroy_faction = yes
}
# MERITOCRATIC EMPIRE CEREMONIAL MONARCH/REGENCY CREATION
tgp_create_meritocratic_ruling_regent_title_effect = yes
# This effect should always be placed here, _after_ everything except the ai_chance.
trigger_event = { on_action = on_faction_demand_accepted }
ai_chance = {
base = 10
modifier = {
add = 90
scope:faction = { faction_power >= 100 }
}
modifier = {
add = 50
scope:faction = { faction_power >= 125 }
}
modifier = {
add = 50
scope:faction = { faction_power >= 150 }
}
modifier = {
add = 50
scope:faction = { faction_power >= 200 }
}
modifier = {
add = 50
any_character_war = {
is_war_leader = root
is_defender = root
}
}
modifier = {
factor = 0.1
any_ally = {
NOR = {
target_is_liege_or_above = root
target_is_vassal_or_below = root
}
max_military_strength > root.max_military_strength
}
}
modifier = {
add = 10000
scope:faction_leader = { is_yes_men_enabled = yes }
}
}
}
option = {
name = "FACTION_DEMAND_BRIBE_CO_EMPEROR"
show_as_unavailable = { may_appoint_co_emperors_trigger = yes }
trigger = { faction_target_can_attempt_to_bribe_with_co_emperorship_trigger = yes }
# Ping-pong the choice back to the target.
## Laying out the consequences.
show_as_tooltip = {
random_list = {
# They accept!
100 = {
desc = faction_demand.0000.faction_leader_accepts
show_chance = no
faction_demand_counter_offer_co_rule_start_diarchy_effect = yes
faction_demand_liberty_counter_offer_corule_accepted_effect = yes
}
# They decline.
100 = {
desc = faction_demand.0000.faction_leader_rejects
show_chance = no
faction_demand_liberty_rejected_effect = yes
}
}
}
## And sorting the actual flow.
scope:faction_leader = { trigger_event = faction_demand.0106 }
ai_chance = { liege_offer_co_emperorship_to_faction_leader_modifier = yes }
}
option = {
name = "FACTION_DEMAND_REFUSE"
faction_demand_liberty_rejected_effect = yes
scope:faction_leader = {
trigger_event = {
id = faction_demand.0103
days = 1
}
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 4.0
}
modifier = {
add = 50
scope:faction = { faction_power < 80 }
}
modifier = {
add = 100
scope:faction = { faction_power < 60 }
}
modifier = {
add = 1000
scope:faction = { faction_power < 40 }
}
modifier = {
add = 10000
scope:faction_leader = { is_no_men_enabled = yes }
}
}
}
}
# Liberty Faction Demand Accepted
# by Henrik Fåhraeus
faction_demand.0102 = {
type = letter_event
sender = scope:faction_target
opening = {
desc = "FACTION_DEMAND_LIBERTY_ACCEPTED"
}
desc = "FACTION_DEMAND_LIBERTY_ACCEPTED_DESC"
option = {
name = "FACTION_DEMAND_ACCEPTED_OPT"
custom_tooltip = faction_demand.0102.tt
}
}
# Liberty Faction Demand Refused
# by Henrik Fåhraeus
faction_demand.0103 = {
type = letter_event
sender = scope:faction_target
opening = {
desc = "FACTION_DEMAND_LIBERTY_REFUSED"
}
desc = "FACTION_DEMAND_LIBERTY_REFUSED_DESC"
option = {
name = "FACTION_DEMAND_REFUSED_OPT"
scope:faction = {
faction_start_war = {}
every_faction_member = {
limit = { this != scope:faction.faction_leader }
trigger_event = faction_demand.0104
}
}
}
}
# Liberty Faction Demand Refused Member Notice
# by Henrik Fåhraeus
faction_demand.0104 = {
type = letter_event
sender = scope:faction_target
opening = {
desc = "FACTION_DEMAND_LIBERTY_REFUSED"
}
desc = "FACTION_DEMAND_LIBERTY_REFUSED_DESC"
option = {
name = "FACTION_DEMAND_REFUSED_OPT"
}
}
# Liberty Faction Demand Send Notice
# by Henrik Fåhraeus
faction_demand.0105 = {
type = letter_event
sender = scope:faction_leader
opening = {
desc = "FACTION_DEMAND_LIBERTY_SEND_DEMAND_NOTIFICATION"
}
desc = "FACTION_DEMAND_LIBERTY_SEND_DEMAND_NOTIFICATION_DESC"
option = {
name = "FACTION_DEMAND_SEND_DEMAND_NOTIFICATION_OPT"
}
}
# Co-emperor counter-offer.
faction_demand.0106 = {
type = letter_event
sender = scope:faction_target
opening = FACTION_DEMAND_COUNTER_OFFER_CORULE
desc = FACTION_DEMAND_COUNTER_OFFER_CORULE_DESC
option = {
name = FACTION_DEMAND_COUNTER_OFFER_CORULE_ACCEPT
# Inform the relevant parties.
hidden_effect = {
scope:faction_target = {
send_interface_toast = {
type = msg_start_diarchy
title = faction_demand.0000.offer_accepted
show_as_tooltip = { custom_tooltip = faction_demand.0000.enter_co_emperorship }
}
}
scope:faction = {
every_faction_member = {
limit = {
is_ai = no
this != scope:faction_leader
}
trigger_event = faction_demand.9011
}
}
}
# Actual effects.
scope:faction_target = {
faction_demand_counter_offer_co_rule_start_diarchy_effect = yes
faction_demand_liberty_counter_offer_corule_accepted_effect = yes
}
# Low weight: we control the AI accepting this by toggling whether they can access the refusal option at all.
ai_chance = { base = 20 }
}
option = {
name = FACTION_DEMAND_COUNTER_OFFER_CORULE_REJECT
trigger = { faction_leader_would_consider_turning_down_co_emperorship_trigger = yes }
# Inform the relevant parties.
hidden_effect = {
scope:faction_target = {
send_interface_toast = {
type = msg_war_declared_on_me
title = faction_demand.0000.offer_rejected
show_as_tooltip = {
scope:faction = { custom_tooltip = faction_starts_war.tt.replacement }
}
}
}
}
# Actual effects.
faction_demand_liberty_rejected_effect = yes
# If the AI can access this at all then they should strongly consider it.
ai_chance = { base = 80 }
}
}
##################################################
# Populist Faction
# by Henrik Fåhraeus and Sean Hughes
# 1001, 1010 (but not the range between them), & 0099 too for some inexplicable reason
##################################################
# Populist Faction Demand
# by Henrik Fåhraeus and Sean Hughes
faction_demand.1001 = {
type = letter_event
sender = scope:peasant_leader
opening = {
desc = "FACTION_DEMAND_POPULIST"
}
desc = {
first_valid = {
triggered_desc = {
trigger = {
government_allows = state_faith
primary_title.state_rite != scope:peasant_leader.rite
}
desc = FACTION_DEMAND_POPULIST_DESC_ADMIN
}
triggered_desc = {
trigger = {
culture != scope:peasant_leader.culture
faith = scope:peasant_leader.faith
}
desc = "FACTION_DEMAND_POPULIST_DESC_CULTURE"
}
triggered_desc = {
trigger = {
faith != scope:peasant_leader.faith
culture = scope:peasant_leader.culture
}
desc = "FACTION_DEMAND_POPULIST_DESC_FAITH"
}
desc = "FACTION_DEMAND_POPULIST_DESC"
}
}
trigger = {
exists = scope:faction
exists = scope:peasant_leader
scope:peasant_leader.joined_faction = scope:faction
}
on_trigger_fail = {
debug_log = "Popular Faction tried to press claim (probably) without existing peasant_leader"
debug_log_scopes = yes
debug_log = "Popular Faction error reporting complete"
}
immediate = {
every_realm_province = {
county = { add_to_list = remaining_counties_list }
}
scope:faction = {
every_faction_county_member = { remove_from_list = remaining_counties_list }
}
}
# Option A: Convert to the faction's faith or culture.
option = {
name = "FACTION_DEMAND_POPULIST_ACCEPT_CONVERT"
# This effect should always be placed here, _before_ all the other effects in the block.
trigger_event = { on_action = on_faction_demand_accepted }
trigger = {
# If more than 30% of your realm belongs to the revolting culture or faith, you get the option to switch to it.
OR = {
culture = scope:peasant_leader.culture
any_realm_province = {
percent >= 0.30
culture = scope:peasant_leader.culture
}
}
OR = {
faith = scope:peasant_leader.faith
any_realm_province = {
percent >= 0.30
faith = scope:peasant_leader.faith
}
}
# Heads of Faith can never convert.
faith.religious_head != root
# Option unavailable to realms with State Faith
NOT = { government_allows = state_faith }
###Restrictions to stop the AI converting quite so freely
trigger_if = {
limit = {
is_ai = yes
}
# May not convert to an unreformed faith from a reformed one.
NAND = {
scope:peasant_leader.faith = { has_doctrine_parameter = unreformed }
faith = {
NOT = { has_doctrine_parameter = unreformed }
}
}
# Must be converting from a low-fervor faith to a higher-fervor faith.
scope:peasant_leader.faith = { fervor >= 31 }
faith = { fervor <= 30 }
# Zealous rulers do not get the option to change faith.
OR = {
NOT = { has_trait = zealous }
faith = scope:peasant_leader.faith
}
# Crusaders & Crusader-Monarchs should never accept this.
NOR = {
has_trait = faith_warrior
has_trait = crusader_king
#has_title = title:k_jerusalem
}
}
###End AI restrictions.
}
if = {
limit = {
culture != scope:peasant_leader.culture
}
set_culture = scope:peasant_leader.culture
add_prestige_level = -2
}
else = {
add_prestige_level = -1
}
if = {
limit = {
faith != scope:peasant_leader.faith
}
set_character_faith = scope:peasant_leader.faith
set_character_rite = scope:peasant_leader.rite
if = {
limit = {
scope:peasant_leader.faith = { has_doctrine = doctrine_monotheist }
}
custom_description_no_bullet = { text = mandala_monotheist_warning_tt }
}
add_piety_level = -1
}
if = {
limit = {
dread > 0
}
add_dread = medium_dread_loss
}
# LEGITIMACY LOSS FOR ACCEPTING FACTION DEMANDS
faction_accept_demand_legitimacy_effect = yes
# Struggle Catalysts.
if = {
limit = {
is_important_or_vip_struggle_character = yes
any_character_struggle = {
involvement = involved
activate_struggle_catalyst_secondary_character_involvement_either_trigger = {
CATALYST = catalyst_accepted_demand_from_faction_requesting_culture_faith_conversion
CHAR = scope:peasant_leader
}
}
}
every_character_struggle = {
involvement = involved
limit = {
activate_struggle_catalyst_secondary_character_involvement_either_trigger = {
CATALYST = catalyst_accepted_demand_from_faction_requesting_culture_faith_conversion
CHAR = scope:peasant_leader
}
}
activate_struggle_catalyst = {
catalyst = catalyst_accepted_demand_from_faction_requesting_culture_faith_conversion
character = root
}
}
}
scope:faction = {
hidden_effect = {
clean_revolt_county_modifiers_from_faction_members_effect = yes
}
destroy_faction = yes # Show this to have it explicitly said in the tooltip that the faction actually disbands.
}
stress_and_fulfillment_impact = {
zealous = massive_stress_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
trigger = {
faith != scope:peasant_leader.faith
}
ai_zeal = -1
min = 0
}
compare_modifier = { # Weaker factions increase the chance of an AI ruler refusing; at 80% army strength (minimum), this will be -20; at 200% army strength, this will max out at +50.
value = {
value = scope:faction.faction_power
subtract = 100
}
max = 50
}
modifier = {
add = 50
OR = {
mpo_has_gok_mongol_empire_trigger = yes
#has_title = title:e_ilkhanate
#has_title = title:e_golden_horde
#has_title = title:e_chagatai
#has_title = title:e_red_horde
#has_title = title:e_white_horde
#has_title = title:e_aarlud_khanate
#has_title = title:e_togskol_khanate
#has_title = title:e_baruun_khanate
#has_title = title:e_great_yuan
#has_title = title:e_blue_horde
#has_title = title:e_omnod_dalai_khanate
has_title = title:e_byzantium
has_variable = conqueror
}
}
modifier = {
add = 10000
scope:peasant_leader = { is_yes_men_enabled = yes }
}
}
}
# Option D: Switch State Faith to the faction faith
# (out of order so it appears correctly in the event. this option has been added subsequently)
option = {
name = FACTION_DEMAND_POPULIST_ACCEPT_CONVERT_STATE_FAITH
trigger = { # Only available if ruler fulfills the following:
government_allows = state_faith
primary_title.state_rite != scope:peasant_leader.rite
OR = { # You share religion OR faction leader's faith is the largest faith in the realm - This is to avoid flipping to a faith that doesn't make sense
religion = scope:peasant_leader.religion
any_realm_county = {
percent >= 0.6
faith = scope:peasant_leader.faith
}
}
culture = scope:peasant_leader.culture
}
# This effect should always be placed here, _before_ all the other effects in the block.
trigger_event = { on_action = on_faction_demand_accepted }
primary_title = {
set_state_rite = scope:peasant_leader.rite
pam_tenet_popularity_boost_rite_effect = { RITE = state_rite }
}
if = {
limit = { government_has_flag = government_has_influence }
change_influence = monumental_influence_loss
}
else = {
add_prestige_level = -1
}
add_piety_level = -1
ai_chance = {
base = 50
ai_value_modifier = {
trigger = {
faith != scope:peasant_leader.faith
}
ai_zeal = -1
min = 0
}
compare_modifier = { # Weaker factions increase the chance of an AI ruler refusing; at 80% army strength (minimum), this will be -20; at 200% army strength, this will max out at +50.
value = {
value = scope:faction.faction_power
subtract = 100
}
max = 50
}
modifier = {
add = 50
OR = {
mpo_has_gok_mongol_empire_trigger = yes
#has_title = title:e_ilkhanate
#has_title = title:e_golden_horde
#has_title = title:e_chagatai
#has_title = title:e_red_horde
#has_title = title:e_white_horde
#has_title = title:e_aarlud_khanate
#has_title = title:e_togskol_khanate
#has_title = title:e_baruun_khanate
#has_title = title:e_great_yuan
#has_title = title:e_blue_horde
#has_title = title:e_omnod_dalai_khanate
has_title = title:e_byzantium
has_variable = conqueror
}
}
modifier = { # Don't agree to change the state faith to another religion
factor = 0
faith.religion != scope:peasant_leader.faith.religion
}
modifier = { # Byzantium should try to avoid becoming Latin-rite
factor = 0
primary_title = title:e_byzantium
primary_title.state_rite.faith.religion = scope:peasant_leader.faith.religion
scope:peasant_leader.rite = {
NOT = { rite_has_doctrine = special_doctrine_is_eastern_christian_faith }
}
}
}
}
# Option B: Grant the faction independence.
option = {
name = "FACTION_DEMAND_POPULIST_ACCEPT_GRANT_INDEPENDENCE"
trigger = { # AI should not give the faction independence if a player is targeted by the faction.
NAND = {
scope:faction = {
has_variable = faction_targets_player
}
is_ai = yes
}
# Only allow this option for governments with state faith it's a cultural populist faction
trigger_if = {
limit = {
government_allows = state_faith
}
primary_title.state_rite = scope:peasant_leader.rite
culture != scope:peasant_leader.culture
}
}
# This effect should always be placed here, _before_ all the other effects in the block.
trigger_event = { on_action = on_faction_demand_accepted }
add_prestige_level = -1
if = {
limit = {
dread > 0
}
add_dread = medium_dread_loss
}
successful_popular_revolt_outcome_effect = {
FACTION_LEADER = scope:peasant_leader
TARGET_TITLE = scope:target_title
SOURCE_GOVERNMENT = root
}
# If the faction includes ALL of our counties, notify the player that it will leave them landless!
if = {
limit = {
any_in_list = {
list = remaining_counties_list
count < 1
}
}
custom_tooltip = FACTION_DEMAND_POPULIST_ACCEPT_GRANT_INDEPENCE_TT
}
# Struggle Catalysts.
# Should rename the Catalysts?
if = {
limit = {
is_important_or_vip_struggle_character = yes
any_character_struggle = {
involvement = involved
activate_struggle_catalyst_secondary_character_involvement_either_trigger = {
CATALYST = catalyst_accepted_demand_from_faction_requesting_culture_faith_conversion
CHAR = scope:peasant_leader
}
}
}
every_character_struggle = {
involvement = involved
limit = {
activate_struggle_catalyst_secondary_character_involvement_either_trigger = {
CATALYST = catalyst_accepted_demand_from_faction_requesting_culture_faith_conversion
CHAR = scope:peasant_leader
}
}
activate_struggle_catalyst = {
catalyst = catalyst_accepted_demand_from_faction_requesting_culture_faith_conversion
character = root
}
}
}
hidden_effect = {
if = {
limit = {
exists = scope:faction
}
scope:faction = {
clean_revolt_county_modifiers_from_faction_members_effect = yes
destroy_faction = yes
}
}
}
ai_chance = {
base = 0
compare_modifier = { # Stronger factions increase the chance of an AI ruler capitulating; at 200% ruler army strength, this maxes out at +50% chance to accept demands.
value = {
value = scope:faction.faction_power
subtract = 100
multiply = 0.5
}
max = 50
}
compare_modifier = { # Craven rulers can get up to +37% chance to accept demands.
value = ai_boldness
multiplier = -0.5
}
modifier = {
factor = 0.1
any_ally = {
NOR = {
target_is_liege_or_above = root
target_is_vassal_or_below = root
}
max_military_strength > root.max_military_strength
}
}
compare_modifier = {
value = debt_level
multiplier = 25
}
modifier = {
add = -50
is_at_war = no
primary_title.tier >= tier_kingdom
}
modifier = {
add = -150
is_at_war = no
primary_title.tier >= tier_empire
}
modifier = {
add = -5000
OR = {
mpo_has_gok_mongol_empire_trigger = yes
#has_title = title:e_ilkhanate
#has_title = title:e_golden_horde
#has_title = title:e_chagatai
#has_title = title:e_red_horde
#has_title = title:e_white_horde
#has_title = title:e_aarlud_khanate
#has_title = title:e_togskol_khanate
#has_title = title:e_baruun_khanate
#has_title = title:e_great_yuan
#has_title = title:e_blue_horde
#has_title = title:e_omnod_dalai_khanate
has_title = title:e_byzantium
has_variable = conqueror
government_allows = state_faith
}
}
}
}
# Option C: Refuse the demand and start a war.
option = {
name = {
text = {
first_valid = {
triggered_desc = {
trigger = {
government_allows = state_faith
primary_title.state_rite != scope:peasant_leader.rite
}
desc = FACTION_DEMAND_POPULIST_REFUSE_ADMIN
}
desc = FACTION_DEMAND_POPULIST_REFUSE
}
}
}
# This effect should always be placed here, _before_ all the other effects in the block.
trigger_event = { on_action = on_faction_demand_rejected }
scope:faction = {
faction_start_war = {
title = scope:target_title
}
}
custom_tooltip = FACTION_DEMAND_POPULIST_REFUSE_TT
if = { # Send follow up event to affected vassals.
limit = {
list_size = {
name = popular_faction_vassal_targets
value > 0
}
}
every_in_list = {
list = popular_faction_vassal_targets
trigger_event = faction_demand.0099
}
}
ai_chance = {
base = 100
compare_modifier = { # Weaker factions increase the chance of an AI ruler refusing; at 80% army strength (minimum), this will be +20; at 200% army strength, this will max out at -50.
value = {
value = scope:faction.faction_power
subtract = 100
multiply = -1
}
min = -50
}
compare_modifier = { # Brave rulers get up to a 50% bonus chance to refuse.
value = ai_boldness
multiplier = -0.5
min = -50
}
modifier = {
factor = 1.5
any_ally = {
NOR = {
target_is_liege_or_above = root
target_is_vassal_or_below = root
}
max_military_strength > root.max_military_strength
}
}
compare_modifier = {
value = debt_level
multiplier = -25
}
modifier = {
add = 5000
OR = {
mpo_has_gok_mongol_empire_trigger = yes
#has_title = title:e_ilkhanate
#has_title = title:e_golden_horde
#has_title = title:e_chagatai
#has_title = title:e_red_horde
#has_title = title:e_white_horde
#has_title = title:e_aarlud_khanate
#has_title = title:e_togskol_khanate
#has_title = title:e_baruun_khanate
#has_title = title:e_great_yuan
#has_title = title:e_blue_horde
#has_title = title:e_omnod_dalai_khanate
has_title = title:e_byzantium
has_variable = conqueror
}
}
modifier = {
add = 10000
scope:peasant_leader = { is_no_men_enabled = yes }
}
}
}
after = {
if = {
limit = {
exists = scope:faction
scope:faction = {
has_variable = faction_targets_player
}
}
scope:faction = {
remove_variable = faction_targets_player
}
}
}
}
# Populist Faction Demand - Affected vassals choose their action
faction_demand.0099 = {
type = letter_event
sender = scope:peasant_leader
opening = {
desc = "FACTION_DEMAND_POPULIST"
}
desc = {
first_valid = {
triggered_desc = {
trigger = {
culture = scope:peasant_leader.culture
faith = scope:peasant_leader.faith
}
desc = "FACTION_DEMAND_POPULIST_VASSAL_DESC_SAME_CULTURE_AND_FAITH"
}
triggered_desc = {
trigger = {
culture != scope:peasant_leader.culture
faith = scope:peasant_leader.faith
}
desc = "FACTION_DEMAND_POPULIST_VASSAL_DESC_CULTURE"
}
triggered_desc = {
trigger = {
faith != scope:peasant_leader.faith
culture = scope:peasant_leader.culture
}
desc = "FACTION_DEMAND_POPULIST_VASSAL_DESC_FAITH"
}
desc = "FACTION_DEMAND_POPULIST_VASSAL_DESC"
}
}
trigger = {
exists = scope:faction
exists = scope:peasant_leader
scope:peasant_leader.joined_faction = scope:faction
}
immediate = {
scope:faction.faction_war = {
save_scope_as = populist_war
}
}
# Option A: Convert to the faction's culture/faith and join the rebels.
option = {
name = {
trigger = {
culture = scope:peasant_leader.culture
faith = scope:peasant_leader.faith
}
text = "FACTION_DEMAND_POPULIST_VASSAL_JOIN_REBELS"
}
name = {
trigger = {
NAND = {
culture = scope:peasant_leader.culture
faith = scope:peasant_leader.faith
}
}
text = "FACTION_DEMAND_POPULIST_VASSAL_CONVERTS"
}
trigger = {
# Have to be of the same faith as the faction, or the faith must have a large enough presence in the vassal's realm.
OR = {
faith = scope:peasant_leader.faith
any_realm_province = {
percent >= 0.20
faith = scope:peasant_leader.faith
}
}
# Heads of Faith can never convert.
faith.religious_head != root
# Restrictions to stop the AI converting quite so freely
trigger_if = {
limit = {
is_ai = yes
}
# May not convert to an unreformed faith from a reformed one.
NAND = {
scope:peasant_leader.faith = { has_doctrine = unreformed_faith_doctrine }
faith = {
NOT = { has_doctrine = unreformed_faith_doctrine }
}
}
# Must be converting from a low-fervor faith to a higher-fervor faith.
scope:peasant_leader.faith = { fervor >= 31 }
faith = { fervor <= 30 }
# Zealous rulers do not get the option to change faith.
OR = {
NOT = { has_trait = zealous }
faith = scope:peasant_leader.faith
}
# Crusaders & Crusader-Monarchs should never accept this.
NOR = {
has_trait = faith_warrior
has_trait = crusader_king
#has_title = title:k_jerusalem
}
}
# You cannot join the attacking side if you already are at war with another participant.
scope:faction.faction_war = {
NOT = {
any_war_participant = {
is_at_war_with = root
}
}
}
# You cannot join the attacking side if it would put you against someone you are fighting another war with.
scope:faction.faction_war = {
NOT = {
any_war_defender = {
any_war_ally = {
this = root
}
}
}
}
}
# Change culture/faith and apply penalties if needed.
if = {
limit = {
culture != scope:peasant_leader.culture
}
set_culture = scope:peasant_leader.culture
add_prestige_level = -1
}
if = {
limit = {
faith != scope:peasant_leader.faith
}
save_scope_as = convert_at_war
convert_to_rite_with_consequences_effect = { RITE = scope:peasant_leader.rite }
}
# Join the war.
scope:faction.faction_war = {
add_attacker = root
}
custom_tooltip = FACTION_DEMAND_POPULIST_VASSAL_CONVERTS_TT
stress_and_fulfillment_impact = {
zealous = massive_stress_gain
}
ai_chance = {
base = 0
# Want to convert for cultural reasons
modifier = {
add = 10
OR = {
AND = {
culture = scope:peasant_leader.culture
culture != scope:faction_target.culture
}
AND = {
any_realm_province = {
percent >= 0.40
culture = scope:peasant_leader.culture
}
culture != scope:faction_target.culture
}
}
}
modifier = {
factor = 0
culture = { has_cultural_tradition = tradition_staunch_traditionalists }
culture != scope:faction_target.culture
}
# Want to convert for religious reasons
modifier = {
add = 20
OR = {
AND = {
faith = scope:peasant_leader.faith
faith != scope:faction_target.faith
}
AND = {
any_realm_province = {
percent >= 0.40
faith = scope:peasant_leader.faith
}
faith != scope:faction_target.faith
}
}
}
modifier = {
factor = 0
culture = { has_cultural_tradition = tradition_zealous_people }
faith != scope:peasant_leader.faith
}
modifier = {
factor = 1.5
culture = { has_cultural_tradition = tradition_religion_blending }
}
modifier = {
factor = 2
has_trait = zealous
faith = scope:peasant_leader.faith
}
# General modifiers
modifier = {
factor = 1.25
has_trait = fickle
}
}
}
# Option B: Fight alongside your liege.
option = {
name = FACTION_DEMAND_POPULIST_VASSAL_JOIN_WAR
# You cannot join the defending side...
trigger = {
custom_tooltip = { # ... If you already are at war with another participant.
text = FACTION_DEMAND_POPULIST_VASSAL_JOIN_WAR_BLOCK_TT
scope:faction.faction_war = {
NOT = {
any_war_participant = {
is_at_war_with = root
}
}
}
}
custom_tooltip = { # ... If it would put you against someone you are fighting another war with.
text = FACTION_DEMAND_POPULIST_VASSAL_JOIN_WAR_BLOCK_TT_2
scope:faction.faction_war = {
NOT = {
any_war_attacker = {
any_war_ally = {
this = root
}
}
}
}
}
}
show_as_unavailable = {
OR = {
scope:faction.faction_war = {
any_war_participant = {
is_at_war_with = root
}
}
scope:faction.faction_war = {
any_war_attacker = {
any_war_ally = {
this = root
}
}
}
}
}
# Join the war.
scope:faction.faction_war = {
add_defender = root
}
custom_tooltip = FACTION_DEMAND_POPULIST_VASSAL_JOIN_WAR_TT
ai_chance = {
base = 100
}
}
# Option C: Do nothing.
option = {
name = FACTION_DEMAND_POPULIST_VASSAL_TAKE_NO_SIDE
custom_tooltip = FACTION_DEMAND_POPULIST_VASSAL_TAKE_NO_SIDE_TT_A
custom_tooltip = FACTION_DEMAND_POPULIST_VASSAL_TAKE_NO_SIDE_TT_B
ai_chance = {
base = 0
modifier = {
add = 20
has_trait = craven
}
}
}
}
# Spawn rebel reinforcements for popular revolts which successfully capture holdings.
faction_demand.1010 = {
hidden = yes
trigger = {
has_variable = rebel_leader_peasants
joined_faction = var:rebel_leader_peasants
exists = scope:war
scope:war = {
primary_defender = scope:previous_controller
}
OR = {
scope:county.culture = root.culture
scope:county.religion = root.religion
}
}
immediate = {
# Spawn the army on the captured province.
spawn_army = {
name = peasant_troops_name
levies = {
value = scope:county.county_levies_to_raise
multiply = 0.5
}
men_at_arms = {
type = pikemen_militia
stacks = 1
}
location = scope:barony.title_province
war = scope:war
}
# Additional loss of county control, can be up to -50 for large counties.
every_in_list = {
list = occupied_baronies
scope:county = {
change_county_control = -10
}
}
}
}
##################################################
# Peasant Faction
# by Sean Hughes
# 1101 - 1110
##################################################
faction_demand.1101 = {
type = letter_event
sender = scope:peasant_leader
opening = "FACTION_DEMAND_PEASANT"
desc = FACTION_DEMAND_PEASANT_DESC
trigger = {
exists = scope:faction
exists = scope:peasant_leader
scope:peasant_leader.joined_faction = scope:faction
}
on_trigger_fail = {
debug_log = "Peasant Faction tried to press claim (probably) without existing peasant_leader"
debug_log_scopes = yes
debug_log = "Peasant Faction error reporting complete"
}
option = {
name = "FACTION_DEMAND_PEASANT_ACCEPT"
# LEGITIMACY LOSS FOR ACCEPTING FACTION DEMANDS
faction_accept_demand_legitimacy_effect = yes
peasant_faction_demands_enforced = {FACTION = scope:faction}
ai_chance = {
base = 0
ai_value_modifier = {
ai_boldness = -4
}
modifier = {
add = 50
scope:faction = { faction_power >= 100 }
}
modifier = {
add = 50
scope:faction = { faction_power >= 110 }
}
modifier = {
add = 50
scope:faction = { faction_power >= 120 }
}
modifier = {
add = 50
scope:faction = { faction_power >= 130 }
}
modifier = {
add = 50
scope:faction = { faction_power >= 140 }
}
modifier = {
add = 50
scope:faction = { faction_power >= 150 }
}
modifier = {
add = -50
scope:faction.faction_target = {
is_at_war = no
primary_title.tier >= tier_kingdom
}
}
modifier = {
add = -150
scope:faction.faction_target = {
is_at_war = no
primary_title.tier >= tier_empire
}
}
modifier = {
add = 10000
scope:peasant_leader = { is_yes_men_enabled = yes }
}
}
}
option = {
name = "FACTION_DEMAND_PEASANT_REFUSE"
scope:faction = {
faction_start_war = {}
# This needs to run after 'faction_start_war' or the troops won't spawn correctly.
faction_spawn_member_county_armies_effect = {
FACTION = scope:faction
ARMY_OWNER = scope:peasant_leader
PEASANT_ARMY_NAME = peasant_faction_event_troops
}
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 4
}
modifier = {
add = 50
scope:faction = { faction_power < 90 }
}
modifier = {
add = 50
scope:faction = { faction_power < 80 }
}
modifier = {
add = 10000
scope:peasant_leader = { is_no_men_enabled = yes }
}
}
}
}
faction_demand.1102 = {
hidden = yes
trigger = {
is_imprisoned = no
}
immediate = {
death = {
death_reason = death_vanished
}
}
}
faction_demand.1110 = {
hidden = yes
trigger = {
has_variable = rebel_leader_peasants
joined_faction = var:rebel_leader_peasants
exists = scope:war
scope:war = {
primary_defender = scope:previous_controller
}
}
immediate = {
# Spawn the army on the captured province.
spawn_army = {
name = peasant_troops_name
levies = {
value = scope:county.county_levies_to_raise
multiply = 0.5
}
men_at_arms = {
type = pikemen_militia
stacks = 1
}
location = scope:barony.title_province
war = scope:war
}
# Additional loss of county control, can be up to -70 for large counties.
every_in_list = {
list = occupied_baronies
scope:county = {
change_county_control = -10
}
}
# Lose an extra -10 county control.
scope:county = {
change_county_control = -10
}
}
}
##################################################
# Claimant Faction
# by Ismael Serrano
# 2001 - 2010
##################################################
scripted_effect faction_demand_claimant_counter_offer_corule_accepted_effect = {
# This effect should always be placed here, _before_ all the other effects in the block.
trigger_event = { on_action = on_faction_demand_accepted }
add_dread = medium_dread_loss
custom_tooltip = {
text = faction_demand.0000.truce_from_co_rule
scope:faction = {
every_faction_member = {
save_scope_as = recipient # Ensuring it localizes correctly
add_truce_both_ways = {
character = scope:faction.faction_target
years = faction_counter_offer_appointed_co_emperor_value
name = ep3_truce_appointed_faction_leader_coruler
}
}
}
}
# LEGITIMACY LOSS FOR ACCEPTING FACTION DEMANDS
faction_accept_demand_legitimacy_effect = yes
on_claimant_faction_war_win_common = {
TARGET_TITLES = target_titles
ATTACKER = scope:faction.faction_leader
DEFENDER = root
CLAIMANT = scope:faction.special_character
}
scope:faction = { destroy_faction = yes }
}
scripted_effect faction_demand_claimant_rejected_effect = {
# This effect should always be placed here, _before_ all the other effects in the block.
trigger_event = { on_action = on_faction_demand_rejected }
show_as_tooltip = {
scope:faction = {
faction_start_war = { title = scope:target_title }
faction_spawn_member_county_armies_effect = {
FACTION = scope:faction
ARMY_OWNER = scope:faction_leader
PEASANT_ARMY_NAME = claimant_faction_event_troops
}
}
}
}
# Claimant Faction Demand
# by Ismael Serrano
faction_demand.2001 = {
type = letter_event
sender = scope:faction_leader
opening = {
desc = "FACTION_DEMAND_CLAIMANT"
}
desc = {
first_valid = {
triggered_desc = {
trigger = { scope:faction_claimant = scope:faction_leader }
desc = "FACTION_DEMAND_CLAIMANT_DESC_ME"
}
desc = "FACTION_DEMAND_CLAIMANT_DESC"
}
}
trigger = {
# May have ceased to exist by the time this triggers
exists = scope:faction
}
immediate = {
# Grab our scope for loc.
save_scope_as = faction_target
set_variable = {
name = claimant_faction_sent_demand
value = scope:faction_claimant
}
}
option = {
name = "FACTION_DEMAND_ACCEPT"
# This effect should always be placed here, _before_ all the other effects in the block.
trigger_event = { on_action = on_faction_demand_accepted }
add_dread = medium_dread_loss
# LEGITIMACY LOSS FOR ACCEPTING FACTION DEMANDS
faction_accept_demand_legitimacy_effect = yes
scope:faction = {
every_faction_member = {
trigger_event = faction_demand.2002
}
special_title = {
add_to_list = target_titles
}
}
# Admin Emperors lose all their held titles
if = {
limit = { has_realm_law = acclamation_succession_law }
every_held_title = {
# not baronies
title_tier >= county
limit = {
# But not their noble family title, so they can continue playing as LADMIN
NOR = { has_title_law = noble_family_succession_law }
}
add_to_list = target_titles
}
}
on_claimant_faction_war_win_common = {
TARGET_TITLES = target_titles
ATTACKER = scope:faction.faction_leader
DEFENDER = root
CLAIMANT = scope:faction.special_character
# ATTACKER_PRESTIGE = 0
# DEFENDER_PRESTIGE = 0
}
ai_chance = {
base = 10
modifier = {
add = 50
scope:faction = { faction_power >= 125 }
}
modifier = {
add = 50
scope:faction = { faction_power >= 150 }
}
modifier = {
add = 50
scope:faction = { faction_power >= 200 }
}
modifier = {
factor = 0
any_ally = {
NOR = {
target_is_liege_or_above = root
target_is_vassal_or_below = root
}
max_military_strength > root.max_military_strength
}
}
modifier = {
add = -25
is_at_war = no
primary_title.tier >= tier_kingdom
}
modifier = {
add = -50
is_at_war = no
primary_title.tier >= tier_empire
}
modifier = {
add = -5000
OR = {
mpo_has_gok_mongol_empire_trigger = yes
#has_title = title:e_ilkhanate
#has_title = title:e_golden_horde
#has_title = title:e_chagatai
#has_title = title:e_red_horde
#has_title = title:e_white_horde
#has_title = title:e_aarlud_khanate
#has_title = title:e_togskol_khanate
#has_title = title:e_baruun_khanate
#has_title = title:e_great_yuan
#has_title = title:e_blue_horde
#has_title = title:e_omnod_dalai_khanate
has_title = title:e_byzantium
has_variable = conqueror
}
}
modifier = {
add = 10000
scope:faction_leader = { is_yes_men_enabled = yes }
}
}
}
option = {
name = "FACTION_DEMAND_BRIBE_CO_EMPEROR"
show_as_unavailable = {
OR = {
may_appoint_co_emperors_trigger = yes
scope:faction_leader != scope:faction.special_character
}
}
trigger = {
faction_target_can_attempt_to_bribe_with_co_emperorship_trigger = yes
custom_tooltip = {
text = FACTION_DEMAND_BRIBE_CO_EMPEROR_REASON
scope:faction_leader = scope:faction.special_character
}
}
# Ping-pong the choice back to the target.
## Laying out the consequences.
show_as_tooltip = {
random_list = {
# They accept!
100 = {
desc = faction_demand.0000.faction_leader_accepts
show_chance = no
faction_demand_counter_offer_co_rule_start_diarchy_effect = yes
faction_demand_claimant_counter_offer_corule_accepted_effect = yes
}
# They decline.
100 = {
desc = faction_demand.0000.faction_leader_rejects
show_chance = no
faction_demand_claimant_rejected_effect = yes
}
}
}
## And sorting the actual flow.
scope:faction_leader = { trigger_event = faction_demand.2006 }
ai_chance = { liege_offer_co_emperorship_to_faction_leader_modifier = yes }
}
option = {
name = "FACTION_DEMAND_REFUSE"
faction_demand_claimant_rejected_effect = yes
scope:faction_leader = { trigger_event = faction_demand.2003 }
ai_chance = {
base = 100
compare_modifier = {
trigger = {
ai_boldness > 0
}
value = ai_boldness
multiplier = 3
}
compare_modifier = {
trigger = {
ai_boldness < 0
}
value = ai_boldness
}
modifier = {
add = 50
scope:faction = { faction_power < 80 }
}
modifier = {
add = 100
scope:faction = { faction_power < 60 }
}
modifier = {
add = 1000
scope:faction = { faction_power < 40 }
}
modifier = {
add = 5000
OR = {
mpo_has_gok_mongol_empire_trigger = yes
#has_title = title:e_ilkhanate
#has_title = title:e_golden_horde
#has_title = title:e_chagatai
#has_title = title:e_red_horde
#has_title = title:e_white_horde
#has_title = title:e_aarlud_khanate
#has_title = title:e_togskol_khanate
#has_title = title:e_baruun_khanate
#has_title = title:e_great_yuan
#has_title = title:e_blue_horde
#has_title = title:e_omnod_dalai_khanate
has_title = title:e_byzantium
has_variable = conqueror
}
}
modifier = {
add = 10000
scope:faction_leader = { is_no_men_enabled = yes }
}
}
}
after = {
remove_variable = claimant_faction_sent_demand
}
}
# Claimant Faction Demand Accepted
# by Ismael Serrano
faction_demand.2002 = {
type = letter_event
sender = scope:faction_target
opening = {
desc = "FACTION_DEMAND_CLAIMANT_ACCEPTED"
}
desc = "FACTION_DEMAND_CLAIMANT_ACCEPTED_DESC"
option = {
name = "FACTION_DEMAND_ACCEPTED_OPT"
}
}
# Claimant Faction Demand Refused
# by Ismael Serrano
faction_demand.2003 = {
type = letter_event
sender = scope:faction_target
opening = {
desc = "FACTION_DEMAND_CLAIMANT_REFUSED"
}
desc = "FACTION_DEMAND_CLAIMANT_REFUSED_DESC"
option = {
name = "FACTION_DEMAND_REFUSED_OPT"
scope:faction = {
every_faction_member = {
limit = {
this != root # i.e. not faction leader, even when the war disbands the faction
}
trigger_event = faction_demand.2004
}
faction_start_war = {
title = special_title
}
# This needs to occur after the war begins, or the troops can't spawn correctly.
faction_spawn_member_county_armies_effect = {
FACTION = scope:faction
ARMY_OWNER = scope:faction_leader
PEASANT_ARMY_NAME = claimant_faction_event_troops
}
}
}
}
# Claimant Faction Demand Refused Member Notice
# by Ismael Serrano
faction_demand.2004 = {
type = letter_event
sender = scope:faction_target
opening = {
desc = "FACTION_DEMAND_CLAIMANT_REFUSED"
}
desc = "FACTION_DEMAND_CLAIMANT_REFUSED_DESC"
option = {
name = "FACTION_DEMAND_REFUSED_OPT"
custom_tooltip = faction_demand.2004.opt_tt
}
}
# Claimant Faction Demand Send Notice
# by Ismael Serrano
faction_demand.2005 = {
type = letter_event
sender = scope:faction_leader
opening = {
desc = "FACTION_DEMAND_CLAIMANT_SEND_DEMAND_NOTIFICATION"
}
desc = "FACTION_DEMAND_CLAIMANT_SEND_DEMAND_NOTIFICATION_DESC"
option = {
name = "FACTION_DEMAND_SEND_DEMAND_NOTIFICATION_OPT"
}
}
# Co-emperor counter-offer.
faction_demand.2006 = {
type = letter_event
sender = scope:faction_target
opening = FACTION_DEMAND_COUNTER_OFFER_CORULE
desc = FACTION_DEMAND_COUNTER_OFFER_CORULE_DESC
option = {
name = FACTION_DEMAND_COUNTER_OFFER_CORULE_ACCEPT
# Inform the relevant parties.
hidden_effect = {
scope:faction_target = {
send_interface_toast = {
type = msg_start_diarchy
title = faction_demand.0000.offer_accepted
show_as_tooltip = { custom_tooltip = faction_demand.0000.enter_co_emperorship }
}
}
scope:faction = {
every_faction_member = {
limit = {
is_ai = no
this != scope:faction_leader
}
trigger_event = faction_demand.9011
}
}
}
# Actual effects.
scope:faction_target = {
faction_demand_counter_offer_co_rule_start_diarchy_effect = yes
faction_demand_claimant_counter_offer_corule_accepted_effect = yes
}
# Low weight: we control the AI accepting this by toggling whether they can access the refusal option at all.
ai_chance = { base = 20 }
}
option = {
name = FACTION_DEMAND_COUNTER_OFFER_CORULE_REJECT
trigger = { faction_leader_would_consider_turning_down_co_emperorship_trigger = yes }
# Inform the relevant parties.
hidden_effect = {
scope:faction_target = {
send_interface_toast = {
type = msg_war_declared_on_me
title = faction_demand.0000.offer_rejected
show_as_tooltip = {
scope:faction = { custom_tooltip = faction_starts_war.tt.replacement }
}
}
}
}
# Actual effects.
faction_demand_claimant_rejected_effect = yes
# If the AI can access this at all then they should strongly consider it.
ai_chance = { base = 80 }
}
}
##################################################
# Ceremonial Claimant Faction
# by Joe Parkin
# 2011 - 2020
##################################################
# Ceremonial Claimant Faction Demand
faction_demand.2011 = {
type = letter_event
sender = scope:faction_leader
opening = "FACTION_DEMAND_CEREMONIAL_CLAIMANT"
desc = {
first_valid = {
triggered_desc = {
trigger = { scope:faction_claimant = scope:faction_leader }
desc = "FACTION_DEMAND_CEREMONIAL_CLAIMANT_DESC_ME"
}
desc = "FACTION_DEMAND_CEREMONIAL_CLAIMANT_DESC"
}
}
trigger = { exists = scope:faction } # May have ceased to exist by the time this triggers
immediate = {
# Grab our scope for loc.
save_scope_as = faction_target
set_variable = {
name = ceremonial_claimant_faction_sent_demand
value = scope:faction_claimant
}
}
option = {
name = "FACTION_DEMAND_ACCEPT"
# This effect should always be placed here, _before_ all the other effects in the block.
trigger_event = { on_action = on_faction_demand_accepted }
add_dread = medium_dread_loss
# LEGITIMACY LOSS FOR ACCEPTING FACTION DEMANDS
faction_accept_demand_legitimacy_effect = yes
scope:faction = {
every_faction_member = { trigger_event = faction_demand.2012 }
}
on_ceremonial_claimant_faction_war_win_common = {
TITLE = scope:faction.special_title
ATTACKER = scope:faction.faction_leader
DEFENDER = root
CLAIMANT = scope:faction.special_character
}
hidden_effect = {
scope:faction = { destroy_faction = yes }
}
ai_chance = {
base = 10
modifier = {
add = 50
scope:faction = { faction_power >= 125 }
}
modifier = {
add = 50
scope:faction = { faction_power >= 150 }
}
modifier = {
add = 50
scope:faction = { faction_power >= 200 }
}
modifier = {
factor = 0
any_ally = {
NOR = {
target_is_liege_or_above = root
target_is_vassal_or_below = root
}
max_military_strength > root.max_military_strength
}
}
modifier = {
add = -25
is_at_war = no
primary_title.tier >= tier_kingdom
}
modifier = {
add = -50
is_at_war = no
primary_title.tier >= tier_empire
}
modifier = {
add = -5000
OR = {
mpo_has_gok_mongol_empire_trigger = yes
#has_title = title:e_ilkhanate
#has_title = title:e_golden_horde
#has_title = title:e_chagatai
#has_title = title:e_red_horde
#has_title = title:e_white_horde
#has_title = title:e_aarlud_khanate
#has_title = title:e_togskol_khanate
#has_title = title:e_baruun_khanate
#has_title = title:e_great_yuan
#has_title = title:e_blue_horde
#has_title = title:e_omnod_dalai_khanate
has_title = title:e_byzantium
has_variable = conqueror
}
}
modifier = {
scope:faction.special_character ?= { is_close_family_of = root }
add = 25
}
modifier = {
scope:faction.special_character.primary_spouse ?= { is_close_family_of = root }
add = 25
}
}
}
option = {
name = "FACTION_DEMAND_REFUSE"
faction_demand_claimant_rejected_effect = yes
scope:faction_leader = { trigger_event = faction_demand.2013 }
ai_chance = {
base = 100
compare_modifier = {
trigger = {
ai_boldness > 0
}
value = ai_boldness
multiplier = 3
}
compare_modifier = {
trigger = {
ai_boldness < 0
}
value = ai_boldness
}
modifier = {
add = 50
scope:faction = { faction_power < 80 }
}
modifier = {
add = 100
scope:faction = { faction_power < 60 }
}
modifier = {
add = 1000
scope:faction = { faction_power < 40 }
}
modifier = {
add = 5000
OR = {
mpo_has_gok_mongol_empire_trigger = yes
#has_title = title:e_ilkhanate
#has_title = title:e_golden_horde
#has_title = title:e_chagatai
#has_title = title:e_red_horde
#has_title = title:e_white_horde
#has_title = title:e_aarlud_khanate
#has_title = title:e_togskol_khanate
#has_title = title:e_baruun_khanate
#has_title = title:e_great_yuan
#has_title = title:e_blue_horde
#has_title = title:e_omnod_dalai_khanate
has_title = title:e_byzantium
has_variable = conqueror
}
}
modifier = {
scope:faction.special_title.holder ?= { is_close_family_of = root }
add = -25
}
modifier = {
scope:faction.special_title.holder.primary_spouse ?= { is_close_family_of = root }
add = -25
}
}
}
after = { remove_variable = ceremonial_claimant_faction_sent_demand }
}
# Ceremonial Claimant Faction Demand Accepted
faction_demand.2012 = {
type = letter_event
sender = scope:faction_target
opening = "FACTION_DEMAND_CEREMONIAL_CLAIMANT_ACCEPTED"
desc = "FACTION_DEMAND_CEREMONIAL_CLAIMANT_ACCEPTED_DESC"
option = { name = "FACTION_DEMAND_ACCEPTED_OPT" }
}
# Ceremonial Claimant Faction Demand Refused
faction_demand.2013 = {
type = letter_event
sender = scope:faction_target
opening = "FACTION_DEMAND_CEREMONIAL_CLAIMANT_REFUSED"
desc = "FACTION_DEMAND_CEREMONIAL_CLAIMANT_REFUSED_DESC"
option = {
name = "FACTION_DEMAND_REFUSED_OPT"
scope:faction = {
every_faction_member = {
limit = { this != root } # i.e. not faction leader, even when the war disbands the faction
trigger_event = faction_demand.2014
}
faction_start_war = { title = special_title }
# This needs to occur after the war begins, or the troops can't spawn correctly.
faction_spawn_member_county_armies_effect = {
FACTION = scope:faction
ARMY_OWNER = scope:faction_leader
PEASANT_ARMY_NAME = claimant_faction_event_troops
}
}
}
}
# Ceremonial Claimant Faction Demand Refused Member Notice
faction_demand.2014 = {
type = letter_event
sender = scope:faction_target
opening = "FACTION_DEMAND_CEREMONIAL_CLAIMANT_REFUSED"
desc = "FACTION_DEMAND_CEREMONIAL_CLAIMANT_REFUSED_DESC"
option = {
name = "FACTION_DEMAND_REFUSED_OPT"
custom_tooltip = faction_demand.2004.opt_tt
}
}
# Ceremonial Claimant Faction Demand Send Notice
faction_demand.2015 = {
type = letter_event
sender = scope:faction_leader
opening = "FACTION_DEMAND_CEREMONIAL_CLAIMANT_SEND_DEMAND_NOTIFICATION"
desc = "FACTION_DEMAND_CEREMONIAL_CLAIMANT_SEND_DEMAND_NOTIFICATION_DESC"
option = { name = "FACTION_DEMAND_SEND_DEMAND_NOTIFICATION_OPT" }
}
##################################################
# Imperial Policy Faction
# by Joe Parkin
# 0221 - 0230
##################################################
scripted_effect faction_demand_imperial_policy_counter_offer_corule_accepted_effect = {
add_dread = medium_dread_loss
# LEGITIMACY LOSS FOR ACCEPTING FACTION DEMANDS
faction_accept_demand_legitimacy_effect = yes
add_prestige = -200
add_character_flag = {
flag = recent_imperial_policy_faction_war
years = 10
}
custom_tooltip = {
text = faction_demand.0000.truce_from_co_rule
scope:faction = {
every_faction_member = {
save_scope_as = recipient # Ensuring it localizes correctly
add_truce_both_ways = {
character = scope:faction.faction_target
years = faction_counter_offer_appointed_co_emperor_value
name = ep3_truce_appointed_faction_leader_coruler
}
}
}
}
scope:faction = { destroy_faction = yes }
# This effect should always be placed here, _after_ everything except the ai_chance.
trigger_event = { on_action = on_faction_demand_accepted }
}
scripted_effect faction_demand_imperial_policy_rejected_effect = {
# This effect should always be placed here, _before_ all the other effects in the block.
trigger_event = { on_action = on_faction_demand_rejected }
show_as_tooltip = {
scope:faction = {
custom_tooltip = faction_starts_war.tt.replacement
}
}
}
# Imperial Policy Demand
faction_demand.0221 = {
type = letter_event
sender = scope:faction_leader
opening = {
desc = "FACTION_DEMAND_IMPERIAL_POLICY"
}
desc = "FACTION_DEMAND_IMPERIAL_POLICY_DESC"
trigger = {
# May have ceased to exist by the time this triggers
exists = scope:faction
}
immediate = {
# Grab our scope for loc.
save_scope_as = faction_target
}
option = {
name = "FACTION_DEMAND_ACCEPT"
# This effect should always be placed here, _before_ all the other effects in the block.
trigger_event = { on_action = on_faction_demand_accepted }
add_dread = medium_dread_loss
# LEGITIMACY LOSS FOR ACCEPTING FACTION DEMANDS
faction_accept_demand_legitimacy_effect = yes
add_prestige = -200
add_character_flag = {
flag = recent_imperial_policy_faction_war
years = 10
}
scope:faction_leader = {
trigger_event = {
id = faction_demand.0222
}
custom_tooltip = faction_demand.0222.tt
}
scope:faction = {
destroy_faction = yes
}
# This effect should always be placed here, _after_ everything except the ai_chance.
trigger_event = { on_action = on_faction_demand_accepted }
ai_chance = {
base = 10
modifier = {
add = 90
scope:faction = { faction_power >= 100 }
}
modifier = {
add = 50
scope:faction = { faction_power >= 125 }
}
modifier = {
add = 50
scope:faction = { faction_power >= 150 }
}
modifier = {
add = 50
scope:faction = { faction_power >= 200 }
}
modifier = {
add = 50
any_character_war = {
is_war_leader = root
is_defender = root
}
}
modifier = {
factor = 0.1
any_ally = {
NOR = {
target_is_liege_or_above = root
target_is_vassal_or_below = root
}
max_military_strength > root.max_military_strength
}
}
modifier = {
add = 10000
scope:faction_leader = { is_yes_men_enabled = yes }
}
}
}
option = {
name = "FACTION_DEMAND_BRIBE_CO_EMPEROR"
show_as_unavailable = { may_appoint_co_emperors_trigger = yes }
trigger = { faction_target_can_attempt_to_bribe_with_co_emperorship_trigger = yes }
# Ping-pong the choice back to the target.
## Laying out the consequences.
show_as_tooltip = {
random_list = {
# They accept!
100 = {
desc = faction_demand.0000.faction_leader_accepts
show_chance = no
faction_demand_counter_offer_co_rule_start_diarchy_effect = yes
faction_demand_imperial_policy_counter_offer_corule_accepted_effect = yes
}
# They decline.
100 = {
desc = faction_demand.0000.faction_leader_rejects
show_chance = no
faction_demand_imperial_policy_rejected_effect = yes
}
}
}
## And sorting the actual flow.
scope:faction_leader = { trigger_event = faction_demand.0226 }
ai_chance = { liege_offer_co_emperorship_to_faction_leader_modifier = yes }
}
option = {
name = "FACTION_DEMAND_REFUSE"
faction_demand_imperial_policy_rejected_effect = yes
scope:faction_leader = {
trigger_event = {
id = faction_demand.0223
days = 1
}
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 4.0
}
modifier = {
add = 50
scope:faction = { faction_power < 80 }
}
modifier = {
add = 100
scope:faction = { faction_power < 60 }
}
modifier = {
add = 1000
scope:faction = { faction_power < 40 }
}
modifier = {
add = 10000
scope:faction_leader = { is_no_men_enabled = yes }
}
}
}
}
# Imperial Policy Demand Accepted
faction_demand.0222 = {
type = letter_event
sender = scope:faction_target
opening = {
desc = "FACTION_DEMAND_IMPERIAL_POLICY_ACCEPTED"
}
desc = "FACTION_DEMAND_IMPERIAL_POLICY_ACCEPTED_DESC"
option = {
name = "FACTION_DEMAND_ACCEPTED_OPT"
custom_tooltip = faction_demand.0222.tt
trigger_event = {
id = faction_demand.0227
days = 1
}
}
}
# Imperial Policy Demand Refused
faction_demand.0223 = {
type = letter_event
sender = scope:faction_target
opening = {
desc = "FACTION_DEMAND_IMPERIAL_POLICY_REFUSED"
}
desc = "FACTION_DEMAND_IMPERIAL_POLICY_REFUSED_DESC"
option = {
name = "FACTION_DEMAND_REFUSED_OPT"
scope:faction = {
faction_start_war = {}
every_faction_member = {
limit = { this != scope:faction.faction_leader }
trigger_event = faction_demand.0224
}
}
}
}
# Imperial Policy Demand Refused Member Notice
faction_demand.0224 = {
type = letter_event
sender = scope:faction_target
opening = {
desc = "FACTION_DEMAND_IMPERIAL_POLICY_REFUSED"
}
desc = "FACTION_DEMAND_IMPERIAL_POLICY_REFUSED_DESC"
option = {
name = "FACTION_DEMAND_REFUSED_OPT"
}
}
# Imperial Policy Demand Send Notice
faction_demand.0225 = {
type = letter_event
sender = scope:faction_leader
opening = {
desc = "FACTION_DEMAND_IMPERIAL_POLICY_SEND_DEMAND_NOTIFICATION"
}
desc = "FACTION_DEMAND_IMPERIAL_POLICY_SEND_DEMAND_NOTIFICATION_DESC"
option = {
name = "FACTION_DEMAND_SEND_DEMAND_NOTIFICATION_OPT"
}
}
# Co-emperor counter-offer.
faction_demand.0226 = {
type = letter_event
sender = scope:faction_target
opening = FACTION_DEMAND_COUNTER_OFFER_CORULE
desc = FACTION_DEMAND_COUNTER_OFFER_CORULE_DESC
option = {
name = FACTION_DEMAND_COUNTER_OFFER_CORULE_ACCEPT
# Inform the relevant parties.
hidden_effect = {
scope:faction_target = {
send_interface_toast = {
type = msg_start_diarchy
title = faction_demand.0000.offer_accepted
show_as_tooltip = { custom_tooltip = faction_demand.0000.enter_co_emperorship }
}
}
scope:faction = {
every_faction_member = {
limit = {
is_ai = no
this != scope:faction_leader
}
trigger_event = faction_demand.9011
}
}
}
# Actual effects.
scope:faction_target = {
faction_demand_counter_offer_co_rule_start_diarchy_effect = yes
faction_demand_imperial_policy_counter_offer_corule_accepted_effect = yes
}
# Low weight: we control the AI accepting this by toggling whether they can access the refusal option at all.
ai_chance = { base = 20 }
}
option = {
name = FACTION_DEMAND_COUNTER_OFFER_CORULE_REJECT
trigger = { faction_leader_would_consider_turning_down_co_emperorship_trigger = yes }
# Inform the relevant parties.
hidden_effect = {
scope:faction_target = {
send_interface_toast = {
type = msg_war_declared_on_me
title = faction_demand.0000.offer_rejected
show_as_tooltip = {
scope:faction = { custom_tooltip = faction_starts_war.tt.replacement }
}
}
}
}
# Actual effects.
faction_demand_imperial_policy_rejected_effect = yes
# If the AI can access this at all then they should strongly consider it.
ai_chance = { base = 80 }
}
}
scripted_trigger imperial_policy_option_trigger = {
NOT = { has_realm_law = $LAW$ }
OR = {
var:page = $PAGE$
is_ai = yes
}
}
scripted_effect imperial_policy_option_effect = {
remove_variable = page
top_liege = { add_realm_law = $LAW$ }
}
# Choose policy
faction_demand.0227 = {
type = character_event
title = faction_demand.0227.t
desc = faction_demand.0227.desc
theme = crown
override_background = { reference = study }
left_portrait = {
character = scope:faction_leader
animation = war_over_win
}
right_portrait = {
character = scope:faction_target
animation = disapproval
}
immediate = {
# Fired from the war victory as well as from faction_demand.0222, and the war path carries no faction scopes.
save_scope_as = faction_leader
if = {
limit = { NOT = { exists = scope:faction_target } }
top_liege = { save_scope_as = faction_target }
}
if = {
limit = {
NOT = { exists = var:page }
}
set_variable = {
name = page
value = 0
}
}
}
option = {
name = faction_demand.0227.a
trigger = {
imperial_policy_option_trigger = {
LAW = defense_mobilization_law
PAGE = 0
}
}
imperial_policy_option_effect = { LAW = defense_mobilization_law }
ai_chance = {
base = 0
modifier = {
top_liege = {
any_war_enemy = {
is_independent_ruler = yes
current_military_strength >= root.top_liege.eighty_percent_of_current_military_strength
}
}
add = 50
}
modifier = {
government_has_flag = government_is_japan_feudal
add = 10
}
}
}
option = { # Disarmament
name = faction_demand.0227.b
trigger = {
imperial_policy_option_trigger = {
LAW = disarmament_law
PAGE = 0
}
}
imperial_policy_option_effect = { LAW = disarmament_law }
ai_chance = {
base = 0
modifier = {
government_has_flag = government_is_japan_administrative
add = {
value = 10
every_neighboring_realm_same_rank_owner = {
limit = {
top_liege = root.top_liege
NOT = { government_has_flag = government_is_japan_administrative }
}
add = 25
}
}
}
}
}
option = {
name = faction_demand.0227.c
trigger = {
imperial_policy_option_trigger = {
LAW = isolation_law
PAGE = 0
}
}
imperial_policy_option_effect = { LAW = isolation_law }
ai_chance = {
base = 0
modifier = {
add = {
value = 0
every_character_epidemic = { add = 25 }
}
}
modifier = {
government_has_flag = government_is_japan_feudal
add = 10
}
}
}
option = {
name = faction_demand.0227.e
trigger = {
imperial_policy_option_trigger = {
LAW = imperial_expansion_law
PAGE = 1
}
}
imperial_policy_option_effect = { LAW = imperial_expansion_law }
ai_chance = {
base = 0
modifier = {
add = {
value = 0
top_liege = {
every_neighboring_and_across_water_top_liege_realm_owner = {
limit = {
has_any_cb_on = root.top_liege
NOT = { is_allied_to = root.top_liege }
current_power_with_allies_value >= root.top_liege.current_power_with_allies_half_value
}
add = 25
}
}
}
}
modifier = {
government_has_flag = government_is_japan_feudal
add = 10
}
}
}
option = {
name = faction_demand.0227.f
trigger = {
imperial_policy_option_trigger = {
LAW = manor_reform_law
PAGE = 1
}
}
imperial_policy_option_effect = { LAW = manor_reform_law }
ai_chance = {
base = 0
modifier = {
government_has_flag = government_is_japan_administrative
add = 10
}
}
}
option = {
name = faction_demand.0227.g
trigger = {
imperial_policy_option_trigger = {
LAW = bandit_crackdown_law
PAGE = 2
}
}
imperial_policy_option_effect = { LAW = bandit_crackdown_law }
ai_chance = {
base = 0
modifier = {
add = {
value = 0
every_held_title = {
title_tier = county
limit = {
is_landless_type_title = no
county_control < 75
}
add = 10
}
}
}
}
}
option = { # Turn page
name = faction_demand.0227.i
custom_tooltip = faction_demand.0227.i.tt
if = {
limit = { var:page = 2 }
set_variable = {
name = page
value = 0
}
}
else = {
change_variable = {
name = page
add = 1
}
}
trigger_event = faction_demand.0227
ai_chance = { base = 0 }
}
}
##################################################
# Nation Fracturing Faction
# by Maxence Voleau
# 1000 - 1009 (but not 1001 or 1010)
##################################################
scripted_effect faction_demand_nation_fracturing_counter_offer_corule_accepted_effect = {
# This effect should always be placed here, _before_ all the other effects in the block.
trigger_event = { on_action = on_faction_demand_accepted }
add_dread = medium_dread_loss
# LEGITIMACY LOSS FOR ACCEPTING FACTION DEMANDS
faction_accept_demand_legitimacy_effect = yes
custom_tooltip = {
text = faction_demand.0000.truce_from_co_rule
scope:faction = {
every_faction_member = {
save_scope_as = recipient # Ensuring it localizes correctly
add_truce_both_ways = {
character = scope:faction.faction_target
years = faction_counter_offer_appointed_co_emperor_value
name = ep3_truce_appointed_faction_leader_coruler
}
}
}
}
scope:faction = { destroy_faction = yes }
}
scripted_effect faction_demand_nation_fracturing_rejected_effect = {
# This effect should always be placed here, _before_ all the other effects in the block.
trigger_event = { on_action = on_faction_demand_rejected }
show_as_tooltip = {
scope:faction = {
custom_tooltip = faction_starts_war.tt.replacement
}
}
}
# Nation Fracturing demands
faction_demand.1000 = {
type = letter_event
sender = scope:faction_leader
opening = {
desc = "FACTION_DEMAND_COLLAPSE"
}
desc = "FACTION_DEMAND_COLLAPSE_DESC"
trigger = {
# May have ceased to exist by the time this triggers
exists = scope:faction
}
immediate = {
# Grab our scope for loc.
save_scope_as = faction_target
}
option = {
name = "FACTION_DEMAND_ACCEPT"
# This effect should always be placed here, _before_ all the other effects in the block.
trigger_event = { on_action = on_faction_demand_accepted }
add_dread = medium_dread_loss
# LEGITIMACY LOSS FOR ACCEPTING FACTION DEMANDS
faction_accept_demand_legitimacy_effect = yes
# We are doing this before the create_title_and_vassal_change as the scope:change will be stored as a event_target for the faction_demand.1002 and cause an "OOS" - Title and vassal changes should be resolved in the same tick
scope:faction = {
every_faction_member = {
trigger_event = faction_demand.1002
}
}
create_title_and_vassal_change = {
type = independency
save_scope_as = change
add_claim_on_loss = no
}
scope:faction = {
every_faction_member = {
change_liege_or_become_independent = {
CHANGE = scope:change
VASSAL = this
}
hidden_effect = {
save_scope_as = recipient # Ensuring it localizes correctly
add_truce_both_ways = {
character = root
days = 1825
name = TRUCE_GRANT_INDEPENDENCE
}
# Struggle Catalysts.
if = {
limit = {
catalyst_gave_independence_to_powerful_diff_faith_culture_vassal_preliminary_trigger = {
CHAR1 = root
CHAR2 = scope:recipient
}
any_character_struggle = {
involvement = involved
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
CATALYST = catalyst_gave_independence_to_powerful_diff_faith_culture_vassal
CHAR = scope:recipient
}
}
}
every_character_struggle = {
involvement = involved
limit = {
activate_struggle_catalyst_secondary_character_involvement_either_trigger = {
CATALYST = catalyst_gave_independence_to_powerful_diff_faith_culture_vassal
CHAR = scope:recipient
}
}
activate_struggle_catalyst = {
catalyst = catalyst_gave_independence_to_powerful_diff_faith_culture_vassal
character = root
}
}
}
}
}
}
every_vassal = {
limit = { is_ai = no }
send_interface_toast = {
type = event_faction_neutral_text
title = liege_primary_title_dissolution
desc = liege_primary_title_dissolution_desc
left_icon = root
}
}
resolve_title_and_vassal_change = scope:change
every_held_title = {
limit = {
tier = prev.primary_title.tier
}
add_to_temporary_list = titles_to_destroy
}
every_in_list = {
list = titles_to_destroy
holder = {
destroy_title = prev
}
}
add_prestige = {
value = medium_prestige_value
multiply = -1
}
ai_chance = {
base = 1
modifier = {
add = 99
scope:faction = { faction_power >= 100 }
}
modifier = {
add = 50
scope:faction = { faction_power >= 125 }
}
modifier = {
add = 50
scope:faction = { faction_power >= 150 }
}
modifier = {
add = 50
scope:faction = { faction_power >= 200 }
}
modifier = {
add = 100
scope:faction = { faction_power >= 300 }
}
modifier = {
factor = 0.1
any_ally = {
NOR = {
target_is_liege_or_above = root
target_is_vassal_or_below = root
}
max_military_strength > root.max_military_strength
}
}
compare_modifier = {
value = debt_level
multiplier = 25
}
modifier = {
add = -50
is_at_war = no
primary_title.tier >= tier_kingdom
}
modifier = {
add = -150
is_at_war = no
primary_title.tier >= tier_empire
}
modifier = {
add = -5000
OR = {
mpo_has_gok_mongol_empire_trigger = yes
#has_title = title:e_ilkhanate
#has_title = title:e_golden_horde
#has_title = title:e_chagatai
#has_title = title:e_red_horde
#has_title = title:e_white_horde
#has_title = title:e_aarlud_khanate
#has_title = title:e_togskol_khanate
#has_title = title:e_baruun_khanate
#has_title = title:e_great_yuan
#has_title = title:e_blue_horde
#has_title = title:e_omnod_dalai_khanate
has_title = title:e_byzantium
has_variable = conqueror
}
}
modifier = {
add = 10000
scope:faction_leader = { is_yes_men_enabled = yes }
}
}
}
option = {
name = "FACTION_DEMAND_BRIBE_CO_EMPEROR"
show_as_unavailable = { may_appoint_co_emperors_trigger = yes }
trigger = { faction_target_can_attempt_to_bribe_with_co_emperorship_trigger = yes }
# Ping-pong the choice back to the target.
## Laying out the consequences.
show_as_tooltip = {
random_list = {
# They accept!
100 = {
desc = faction_demand.0000.faction_leader_accepts
show_chance = no
faction_demand_counter_offer_co_rule_start_diarchy_effect = yes
faction_demand_nation_fracturing_counter_offer_corule_accepted_effect = yes
}
# They decline.
100 = {
desc = faction_demand.0000.faction_leader_rejects
show_chance = no
faction_demand_nation_fracturing_rejected_effect = yes
}
}
}
## And sorting the actual flow.
scope:faction_leader = { trigger_event = faction_demand.1006 }
ai_chance = { liege_offer_co_emperorship_to_faction_leader_modifier = yes }
}
option = {
name = "FACTION_DEMAND_REFUSE"
faction_demand_nation_fracturing_rejected_effect = yes
scope:faction_leader = {
trigger_event = faction_demand.1003
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 4.0
}
modifier = {
add = 50
scope:faction = { faction_power < 80 }
}
modifier = {
add = 100
scope:faction = { faction_power < 60 }
}
modifier = {
add = 1000
scope:faction = { faction_power < 40 }
}
compare_modifier = {
value = debt_level
multiplier = -25
}
modifier = {
add = 5000
OR = {
mpo_has_gok_mongol_empire_trigger = yes
#has_title = title:e_ilkhanate
#has_title = title:e_golden_horde
#has_title = title:e_chagatai
#has_title = title:e_red_horde
#has_title = title:e_white_horde
#has_title = title:e_aarlud_khanate
#has_title = title:e_togskol_khanate
#has_title = title:e_baruun_khanate
#has_title = title:e_great_yuan
#has_title = title:e_blue_horde
#has_title = title:e_omnod_dalai_khanate
has_title = title:e_byzantium
has_variable = conqueror
}
}
modifier = {
add = 10000
scope:faction_leader = { is_no_men_enabled = yes }
}
}
}
}
# Nation Fracturing Demand Accepted
faction_demand.1002 = {
type = letter_event
sender = scope:faction_target
opening = {
desc = "FACTION_DEMAND_COLLAPSE_ACCEPTED"
}
desc = "FACTION_DEMAND_COLLAPSE_ACCEPTED_DESC"
option = {
name = "FACTION_DEMAND_ACCEPTED_OPT"
custom_tooltip = faction_demand.1002.tt
}
}
# Nation Fracturing Demand Refused
faction_demand.1003 = {
type = letter_event
sender = scope:faction_target
opening = {
desc = "FACTION_DEMAND_COLLAPSE_REFUSED"
}
desc = "FACTION_DEMAND_COLLAPSE_REFUSED_DESC"
option = {
name = "FACTION_DEMAND_REFUSED_OPT"
scope:faction = {
faction_start_war = {}
every_faction_member = {
limit = { this != scope:faction.faction_leader }
trigger_event = faction_demand.1004
}
}
}
}
# Independence Faction Demand Refused Member Notice
faction_demand.1004 = {
type = letter_event
sender = scope:faction_target
opening = {
desc = "FACTION_DEMAND_COLLAPSE_REFUSED"
}
desc = "FACTION_DEMAND_COLLAPSE_REFUSED_DESC"
option = {
name = "FACTION_DEMAND_REFUSED_OPT"
}
}
# Independence Faction Demand Send Notice
faction_demand.1005 = {
type = letter_event
sender = scope:faction_leader
opening = {
desc = "FACTION_DEMAND_COLLAPSE_SEND_DEMAND_NOTIFICATION"
}
desc = "FACTION_DEMAND_COLLAPSE_SEND_DEMAND_NOTIFICATION_DESC"
option = {
name = "FACTION_DEMAND_SEND_DEMAND_NOTIFICATION_OPT"
}
}
# Co-emperor counter-offer.
faction_demand.1006 = {
type = letter_event
sender = scope:faction_target
opening = FACTION_DEMAND_COUNTER_OFFER_CORULE
desc = FACTION_DEMAND_COUNTER_OFFER_CORULE_DESC
option = {
name = FACTION_DEMAND_COUNTER_OFFER_CORULE_ACCEPT
# Inform the relevant parties.
hidden_effect = {
scope:faction_target = {
send_interface_toast = {
type = msg_start_diarchy
title = faction_demand.0000.offer_accepted
show_as_tooltip = { custom_tooltip = faction_demand.0000.enter_co_emperorship }
}
}
scope:faction = {
every_faction_member = {
limit = {
is_ai = no
this != scope:faction_leader
}
trigger_event = faction_demand.9011
}
}
}
# Actual effects.
scope:faction_target = {
faction_demand_counter_offer_co_rule_start_diarchy_effect = yes
faction_demand_nation_fracturing_counter_offer_corule_accepted_effect = yes
}
# Low weight: we control the AI accepting this by toggling whether they can access the refusal option at all.
ai_chance = { base = 20 }
}
option = {
name = FACTION_DEMAND_COUNTER_OFFER_CORULE_REJECT
trigger = { faction_leader_would_consider_turning_down_co_emperorship_trigger = yes }
# Inform the relevant parties.
hidden_effect = {
scope:faction_target = {
send_interface_toast = {
type = msg_war_declared_on_me
title = faction_demand.0000.offer_rejected
show_as_tooltip = {
scope:faction = { custom_tooltip = faction_starts_war.tt.replacement }
}
}
}
}
# Actual effects.
faction_demand_nation_fracturing_rejected_effect = yes
# If the AI can access this at all then they should strongly consider it.
ai_chance = { base = 80 }
}
}
##################################################
# Faction Edgecases
# by various
# 9001 - 9050
##################################################
# Faction declares a retaliatory war.
faction_demand.9001 = {
type = character_event
title = faction_demand.9001.t
desc = {
first_valid = {
triggered_desc = {
trigger = {
scope:recipient = {
is_imprisoned = yes
imprisoner = scope:actor
}
}
desc = FACTION_SUCCESSFUL_IMPRISONMENT_RETALIATION
}
desc = FACTION_FAILED_IMPRISONMENT_RETALIATION
}
desc = FACTION_IMPRISONMENT_RETALIATION_END
}
theme = war
override_background = {
trigger = {
scope:recipient = {
is_imprisoned = yes
imprisoner = scope:actor
}
}
reference = dungeon
}
left_portrait = {
character = scope:actor
animation = schadenfreude
}
right_portrait = {
character = scope:recipient
animation = anger
}
trigger = {
exists = scope:retaliating_faction
}
immediate = {
show_as_tooltip = {
scope:retaliating_faction = {
faction_start_war = {}
}
}
}
option = {
name = FACTION_IMPRISONMENT_RETALIATION_OPT
# This effect should always be placed here, _before_ all the other effects in the block.
trigger_event = { on_action = on_faction_demand_rejected }
}
}
# Co-emperor counter-offer.
faction_demand.9011 = {
type = letter_event
sender = scope:faction_leader
opening = FACTION_DEMAND_COUNTER_OFFER_CORULE_MEMBER_NOTIFICATION
desc = FACTION_DEMAND_COUNTER_OFFER_CORULE_MEMBER_NOTIFICATION_DESC
immediate = {
show_as_tooltip = {
scope:faction_target = { faction_demand_counter_offer_co_rule_start_diarchy_effect = yes }
scope:faction = { destroy_faction = yes }
}
}
option = {
name = FACTION_DEMAND_COUNTER_OFFER_MEMBER_NOTIFICATION.A
# No need for AI chance or stress, just a notification event.
}
option = {
name = FACTION_DEMAND_COUNTER_OFFER_MEMBER_NOTIFICATION.B
trigger = { is_ai = no }
cancel_truce_both_ways = scope:faction_target
reverse_add_opinion = {
target = scope:faction_target
modifier = refusal_opinion
opinion = -40
}
change_strife_opinion = major_strife_gain
# Player-only choice.
}
}
##################################################
# Nomadic Faction
##################################################
# Nomadic Faction Demand
faction_demand.9998 = {
type = letter_event
sender = scope:peasant_leader
opening = {
desc = "FACTION_DEMAND_NOMADIC"
}
desc = FACTION_DEMAND_NOMADIC_DESC
trigger = {
exists = scope:faction
exists = scope:peasant_leader
scope:peasant_leader.joined_faction = scope:faction
}
immediate = {
every_realm_province = {
county = { add_to_list = remaining_counties_list }
}
scope:faction = {
every_faction_county_member = {
remove_from_list = remaining_counties_list
duchy = {
every_de_jure_county = {
limit = {
is_in_list = remaining_counties_list
}
remove_from_list = remaining_counties_list
}
}
}
}
scope:peasant_county.duchy = { save_scope_as = nomad_main_duchy }
}
# Option A: Grant the faction independence.
option = {
name = "FACTION_DEMAND_NOMADIC_ACCEPT_GRANT_INDEPENDENCE"
trigger = { # AI should not give the faction independence if a player is targeted by the faction.
NAND = {
scope:faction = {
has_variable = faction_targets_player
}
is_ai = yes
}
}
# This effect should always be placed here, _before_ all the other effects in the block.
trigger_event = { on_action = on_faction_demand_accepted }
add_prestige_level = -1
if = {
limit = {
dread > 0
}
add_dread = medium_dread_loss
}
successful_nomadic_revolt_outcome_effect = {
FACTION_LEADER = scope:peasant_leader
}
# If the faction includes ALL of our counties, notify the player that it will leave them landless!
if = {
limit = {
any_in_list = {
list = remaining_counties_list
count < 1
}
}
custom_tooltip = FACTION_DEMAND_POPULIST_ACCEPT_GRANT_INDEPENCE_TT
}
hidden_effect = {
if = {
limit = {
exists = scope:faction
}
scope:faction = {
clean_revolt_county_modifiers_from_faction_members_effect = yes
destroy_faction = yes
}
}
}
ai_chance = {
base = 0
compare_modifier = { # Stronger factions increase the chance of an AI ruler capitulating; at 200% ruler army strength, this maxes out at +50% chance to accept demands.
value = {
value = scope:faction.faction_power
subtract = 100
multiply = 0.5
}
max = 50
}
compare_modifier = { # Craven rulers can get up to +37% chance to accept demands.
value = ai_boldness
multiplier = -0.5
}
modifier = {
factor = 0.1
any_ally = {
NOR = {
target_is_liege_or_above = root
target_is_vassal_or_below = root
}
max_military_strength > root.max_military_strength
}
}
compare_modifier = {
value = debt_level
multiplier = 25
}
modifier = {
add = -50
is_at_war = no
primary_title.tier >= tier_kingdom
}
modifier = {
add = -150
is_at_war = no
primary_title.tier >= tier_empire
}
modifier = {
add = -5000
OR = {
#has_title = title:e_mongol_empire
#has_title = title:e_ilkhanate
#has_title = title:e_golden_horde
#has_title = title:e_chagatai
#has_title = title:e_red_horde
#has_title = title:e_white_horde
#has_title = title:e_aarlud_khanate
#has_title = title:e_togskol_khanate
#has_title = title:e_baruun_khanate
#has_title = title:e_great_yuan
#has_title = title:e_blue_horde
#has_title = title:e_omnod_dalai_khanate
has_title = title:e_byzantium
has_variable = conqueror
government_allows = state_faith
}
}
modifier = {
add = 10000
scope:faction_leader ?= { is_yes_men_enabled = yes }
}
}
}
# Option B: Refuse the demand and start a war.
option = {
name = "FACTION_DEMAND_POPULIST_REFUSE"
# This effect should always be placed here, _before_ all the other effects in the block.
trigger_event = { on_action = on_faction_demand_rejected }
scope:faction = {
faction_start_war = {
title = scope:nomad_main_duchy
}
}
custom_tooltip = FACTION_DEMAND_POPULIST_REFUSE_TT
if = { # Send follow up event to affected vassals.
limit = {
list_size = {
name = nomadic_faction_vassal_targets
value > 0
}
}
every_in_list = {
list = nomadic_faction_vassal_targets
limit = {
is_ai = no
}
trigger_event = faction_demand.9999
}
}
ai_chance = {
base = 100
compare_modifier = { # Weaker factions increase the chance of an AI ruler refusing; at 80% army strength (minimum), this will be +20; at 200% army strength, this will max out at -50.
value = {
value = scope:faction.faction_power
subtract = 100
multiply = -1
}
min = -50
}
compare_modifier = { # Brave rulers get up to a 50% bonus chance to refuse.
value = ai_boldness
multiplier = -0.5
min = -50
}
modifier = {
factor = 1.5
any_ally = {
NOR = {
target_is_liege_or_above = root
target_is_vassal_or_below = root
}
max_military_strength > root.max_military_strength
}
}
compare_modifier = {
value = debt_level
multiplier = -25
}
modifier = {
add = 5000
OR = {
#has_title = title:e_mongol_empire
#has_title = title:e_ilkhanate
#has_title = title:e_golden_horde
#has_title = title:e_chagatai
#has_title = title:e_red_horde
#has_title = title:e_white_horde
#has_title = title:e_aarlud_khanate
#has_title = title:e_togskol_khanate
#has_title = title:e_baruun_khanate
#has_title = title:e_great_yuan
#has_title = title:e_blue_horde
#has_title = title:e_omnod_dalai_khanate
has_title = title:e_byzantium
has_variable = conqueror
}
}
modifier = {
add = 10000
scope:peasant_leader = { is_no_men_enabled = yes }
}
}
}
after = {
if = {
limit = {
exists = scope:faction
scope:faction = {
has_variable = faction_targets_player
}
}
scope:faction = {
remove_variable = faction_targets_player
}
}
}
}
# Nomadic Faction Demand - Affected vassals choose their action
faction_demand.9999 = {
type = letter_event
sender = scope:peasant_leader
opening = {
desc = "FACTION_DEMAND_NOMADIC"
}
desc = FACTION_DEMAND_NOMADIC_VASSAL_DESC
trigger = {
exists = scope:faction
exists = scope:peasant_leader
scope:peasant_leader.joined_faction = scope:faction
}
immediate = {
scope:faction.faction_war = {
save_scope_as = populist_war # Used for loc
}
}
# Option A: Fight alongside your liege.
option = {
name = FACTION_DEMAND_NOMADIC_VASSAL_JOIN_WAR
# You cannot join the defending side...
trigger = {
custom_tooltip = { # ... If you already are at war with another participant.
text = FACTION_DEMAND_POPULIST_VASSAL_JOIN_WAR_BLOCK_TT
scope:faction.faction_war = {
NOT = {
any_war_participant = {
is_at_war_with = root
}
}
}
}
custom_tooltip = { # ... If it would put you against someone you are fighting another war with.
text = FACTION_DEMAND_POPULIST_VASSAL_JOIN_WAR_BLOCK_TT_2
scope:faction.faction_war = {
NOT = {
any_war_attacker = {
any_war_ally = {
this = root
}
}
}
}
}
}
show_as_unavailable = {
OR = {
scope:faction.faction_war = {
any_war_participant = {
is_at_war_with = root
}
}
scope:faction.faction_war = {
any_war_attacker = {
any_war_ally = {
this = root
}
}
}
}
}
# Join the war.
scope:faction.faction_war = {
add_defender = root
}
custom_tooltip = FACTION_DEMAND_POPULIST_VASSAL_JOIN_WAR_TT
ai_chance = {
base = 100
}
}
# Option B: Do nothing.
option = {
name = FACTION_DEMAND_POPULIST_VASSAL_TAKE_NO_SIDE
custom_tooltip = FACTION_DEMAND_POPULIST_VASSAL_TAKE_NO_SIDE_TT_A
custom_tooltip = FACTION_DEMAND_POPULIST_VASSAL_TAKE_NO_SIDE_TT_B
ai_chance = {
base = 0
modifier = {
add = 20
has_trait = craven
}
}
}
}