N3OW_Western_eastern_europe/common/scripted_triggers/07_ep3_triggers.txt
2025-02-20 11:52:45 +00:00

1619 lines
42 KiB
Text

ep3_should_use_byzantine_graphics_trigger = {
culture = { has_building_gfx = byzantine_building_gfx }
}
valid_for_byz_emperor_content_trigger = {
has_ep3_dlc_trigger = yes
culture = {
OR = {
has_cultural_pillar = heritage_byzantine
has_cultural_pillar = heritage_caucasian
}
}
OR = {
primary_title = title:e_byzantium
primary_title = title:e_roman_empire
AND = {
culture = {
OR = {
this = culture:greek
any_parent_culture_or_above = { this = culture:greek }
}
}
highest_held_title_tier >= tier_empire
}
}
}
valid_for_byz_governor_content_trigger = {
has_ep3_dlc_trigger = yes
is_governor = yes
top_liege.culture = {
OR = {
has_cultural_pillar = heritage_byzantine
has_cultural_pillar = heritage_caucasian
}
}
top_liege = {
OR = {
primary_title = title:e_byzantium
primary_title = title:e_roman_empire
AND = {
culture = {
OR = {
this = culture:greek
any_parent_culture_or_above = { this = culture:greek }
}
}
highest_held_title_tier >= tier_empire
}
}
}
}
has_any_charioteer_trait = {
OR = {
has_trait = charioteer_blue
has_trait = charioteer_green
has_trait = charioteer_white
has_trait = charioteer_red
}
}
available_charioteers_spots_trigger = {
scope:activity = {
any_guest_subset = {
name = charioteers
has_trait = charioteer_$TEAM$
count < scope:activity.var:num_$TEAM$s
}
}
}
ep3_varangian_trigger = {
OR = {
culture = {
OR = {
has_cultural_tradition = tradition_fp1_coastal_warriors
has_cultural_tradition = tradition_hird
has_cultural_tradition = tradition_fp1_performative_honour
has_cultural_pillar = heritage_north_germanic
has_cultural_pillar = heritage_west_germanic
}
}
has_trait = varangian
}
can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = root }
is_physically_able_adult = yes
}
is_competing_for_same_title_as = {
has_government = administrative_government
any_heir_title = {
exists = this
is_noble_family_title = no
save_temporary_scope_as = temp_title
}
$CHARACTER$ = {
has_government = administrative_government
}
scope:temp_title = {
any_title_heir = {
this = $CHARACTER$
}
}
}
is_winning_competing_for_same_title_as = {
$CHARACTER$ = { save_temporary_scope_as = target_char }
is_competing_for_same_title_as = { CHARACTER = $CHARACTER$ }
save_temporary_scope_as = root_scope
any_heir_title = {
exists = this
is_noble_family_title = no
save_temporary_scope_as = temp_title
}
scope:temp_title = {
"place_in_line_of_succession(scope:root_scope)" > "place_in_line_of_succession(scope:target_char)"
}
}
restore_greece_decision_county_trigger = {
trigger_if = {
limit = {
holder.top_liege = root
has_county_modifier = backwater_county_modifier
}
development_level >= 50
}
}
any_valid_title_to_grant_trigger = {
$CANDIDATE$ ?= {
save_temporary_scope_as = candidate_temp
custom_tooltip = {
text = support_candidacy_can_appoint_for_title_tt
$TOP_LIEGE$.primary_title = {
any_in_de_jure_hierarchy = {
continue = {
tier > tier_duchy
}
save_temporary_scope_as = title_temp
scope:candidate_temp = { can_appoint_for_title = scope:title_temp }
}
}
}
}
}
any_valid_candidacy_trigger = {
$CANDIDATE$ = {
custom_tooltip = {
text = any_valid_candidacy_tt
trigger_if = {
limit = {
$TOP_LIEGE$ = {
OR = {
has_realm_law = acclamation_succession_law
has_realm_law = appointment_succession_law
primary_title = {
OR = {
has_title_law = acclamation_succession_law
has_title_law = appointment_succession_law
}
}
}
}
appointment_candidate_score = {
title = $TOP_LIEGE$.primary_title
value > 0
}
}
always = yes
}
trigger_else = {
$TOP_LIEGE$.primary_title ?= {
any_in_de_jure_hierarchy = {
exists = holder
tier >= tier_duchy
OR = {
has_title_law = acclamation_succession_law
has_title_law = appointment_succession_law
holder = {
OR = {
has_realm_law = acclamation_succession_law
has_realm_law = appointment_succession_law
}
}
}
save_temporary_scope_as = title_temp
trigger_if = {
limit = { exists = scope:title_temp }
$CANDIDATE$ = {
appointment_candidate_score = {
title = scope:title_temp
value > 0
}
}
}
}
}
}
}
}
}
is_candidate_for_title_trigger = {
$CANDIDATE$ = {
custom_tooltip = {
text = is_candidate_for_title_tt
$TITLE$ = {
OR = {
has_title_law = acclamation_succession_law
has_title_law = appointment_succession_law
holder ?= {
OR = {
has_realm_law = acclamation_succession_law
has_realm_law = appointment_succession_law
}
}
}
holder = {
NOT = { this = $CANDIDATE$ }
}
}
appointment_candidate_score = {
title = $TITLE$
value > 0
}
}
}
}
valid_governor_contract_trigger = {
has_government = administrative_government
is_alive = yes
is_adult = yes
is_incapable = no
}
valid_governor_contract_basic_trigger = {
task_contract_taker = {
#you have to be a governor
is_governor = yes
#and the location has to be in your realm
custom_tooltip = {
text = task_contract_location_not_in_realm
any_sub_realm_county = {
any_county_province = {
this = root.task_contract_location
}
}
}
}
}
governor_contract_invalidated_message_trigger = {
task_contract_employer ?= {
NOT = { root.task_contract_taker ?= this }
OR = {
is_incapable = yes
is_imprisoned = yes
is_alive = no
}
}
}
##################################################
### CHARIOT RACE TRIGGERS
##################################################
chariot_race_0201_sitting_in_kathisma_trigger = {
OR = {
AND = {
exists = scope:activity.special_guest:chariot_race_honorary_guest
this = scope:activity.special_guest:chariot_race_honorary_guest
}
is_close_family_of = scope:host
is_consort_of = scope:host
}
}
chariot_race_0201_negative_crowd_reaction_trigger = {
OR = {
scope:activity.var:emperor_speech_topic = flag:increase_legitimacy_fail
scope:activity.var:emperor_speech_topic = flag:discredit_claimant_fail
AND = {
scope:host.capital_county = {
county_opinion <= -30
}
NOT = { scope:activity.var:emperor_speech_topic = flag:appease_populace }
}
AND = {
scope:host = {
legitimacy_level < 2
}
NOR = {
scope:activity.var:emperor_speech_topic = flag:increase_legitimacy_success
scope:activity.var:emperor_speech_topic = flag:appease_populace
}
}
}
}
cares_about_charioteer_trigger = {
OR = {
$CHARIOTEER$ = {
trigger_if = {
limit = { has_court_position = charioteer_court_position }
is_court_position_employer = {
court_position = charioteer_court_position
who = prev
}
}
trigger_else = { always = no }
}
is_close_family_of = $CHARIOTEER$
trigger_if = {
limit = { has_variable = wager_target }
OR = {
var:wager_target = $CHARIOTEER$
trigger_if = {
limit = { var:wager_target = root }
trigger_if = {
limit = { $CHARIOTEER$ = { has_trait = charioteer_blue } }
var:wager_team = flag:blues
}
trigger_if = {
limit = { $CHARIOTEER$ = { has_trait = charioteer_green } }
var:wager_team = flag:greens
}
trigger_if = {
limit = { $CHARIOTEER$ = { has_trait = charioteer_white } }
var:wager_team = flag:whites
}
trigger_if = {
limit = { $CHARIOTEER$ = { has_trait = charioteer_red } }
var:wager_team = flag:reds
}
}
trigger_else = { always = no }
}
}
trigger_else = { always = no }
}
}
supports_chariot_team_trigger = {
trigger_if = {
limit = { $TEAM$ = flag:blues }
OR = {
AND = {
has_variable = wager_team
var:wager_team = flag:blues
}
AND = {
employs_court_position = charioteer_court_position
court_position:charioteer_court_position = { has_trait = charioteer_blue }
}
}
}
trigger_else_if = {
limit = { $TEAM$ = flag:greens }
OR = {
AND = {
has_variable = wager_team
var:wager_team = flag:greens
}
AND = {
employs_court_position = charioteer_court_position
court_position:charioteer_court_position = { has_trait = charioteer_green }
}
}
}
trigger_else_if = {
limit = { $TEAM$ = flag:whites }
OR = {
AND = {
has_variable = wager_team
var:wager_team = flag:whites
}
AND = {
employs_court_position = charioteer_court_position
court_position:charioteer_court_position = { has_trait = charioteer_white }
}
}
}
trigger_else_if = {
limit = { $TEAM$ = flag:reds }
OR = {
AND = {
has_variable = wager_team
var:wager_team = flag:reds
}
AND = {
employs_court_position = charioteer_court_position
court_position:charioteer_court_position = { has_trait = charioteer_red }
}
}
}
trigger_else = {
always = no
}
}
has_same_chariot_team_as = {
trigger_if = {
limit = { has_trait = charioteer_blue }
$TARGET$ = { has_trait = charioteer_blue }
}
trigger_else_if = {
limit = { has_trait = charioteer_green }
$TARGET$ = { has_trait = charioteer_green }
}
trigger_else_if = {
limit = { has_trait = charioteer_white }
$TARGET$ = { has_trait = charioteer_white }
}
trigger_else_if = {
limit = { has_trait = charioteer_red }
$TARGET$ = { has_trait = charioteer_red }
}
trigger_else = { always = no }
}
chariot_racer_valid_trigger = {
save_temporary_scope_as = chariot_racer
is_alive = yes
exists = var:current_place_in_race
is_in_guest_subset = { name = charioteers }
}
chariot_race_anyone_ahead_of_racer_trigger = {
scope:activity ?= {
any_guest_subset = {
name = charioteers
chariot_racer_valid_trigger = yes
NOT = { this = $RACER$ }
var:current_place_in_race < $RACER$.var:current_place_in_race
}
}
}
chariot_race_anyone_behind_racer_trigger = {
scope:activity ?= {
any_guest_subset = {
name = charioteers
chariot_racer_valid_trigger = yes
NOT = { this = $RACER$ }
var:current_place_in_race > $RACER$.var:current_place_in_race
}
}
}
flag_matches_charioteer_team_trigger = {
trigger_if = {
limit = { $VAR$ = flag:blues }
has_trait = charioteer_blue
}
trigger_else_if = {
limit = { $VAR$ = flag:greens }
has_trait = charioteer_green
}
trigger_else_if = {
limit = { $VAR$ = flag:whites }
has_trait = charioteer_white
}
trigger_else_if = {
limit = { $VAR$ = flag:reds }
has_trait = charioteer_red
}
trigger_else = { always = no }
}
stands_to_win_chariot_wager_trigger = {
save_temporary_scope_as = gambler
exists = scope:activity
exists = var:wager_type
# Specific Charioteer
trigger_if = {
limit = {
exists = var:wager_target
NOT = { this = var:wager_target }
}
var:wager_target ?= {
chariot_racer_valid_trigger = yes
save_temporary_scope_as = wager_target_temp
}
OR = {
# All bets gain by first place
scope:wager_target_temp.var:current_place_in_race = 1
# Place & Show gain by second place
trigger_if = {
limit = {
OR = {
var:wager_type = flag:place
var:wager_type = flag:show
}
}
scope:wager_target_temp.var:current_place_in_race <= 2
}
trigger_else = { always = no }
# Show gains by third place
trigger_if = {
limit = { var:wager_type = flag:show }
scope:wager_target_temp.var:current_place_in_race <= 3
}
trigger_else = { always = no }
# Fallback no one is ahead of wager
NOT = {
chariot_race_anyone_ahead_of_racer_trigger = { RACER = scope:wager_target_temp }
}
}
}
# Team
trigger_else = {
scope:activity ?= {
any_guest_subset = {
name = charioteers
chariot_racer_valid_trigger = yes
flag_matches_charioteer_team_trigger = { VAR = scope:gambler.var:wager_team }
}
OR = {
# All bets gain by first place
any_guest_subset = {
name = charioteers
flag_matches_charioteer_team_trigger = { VAR = scope:gambler.var:wager_team }
var:current_place_in_race = 1
}
# Place & Show gain by second place
trigger_if = {
limit = {
OR = {
scope:gambler.var:wager_type = flag:place
scope:gambler.var:wager_type = flag:show
}
}
any_guest_subset = {
name = charioteers
flag_matches_charioteer_team_trigger = { VAR = scope:gambler.var:wager_team }
var:current_place_in_race <= 2
}
}
trigger_else = { always = no }
# Show gains by third place
trigger_if = {
limit = { scope:gambler.var:wager_type = flag:show }
any_guest_subset = {
name = charioteers
flag_matches_charioteer_team_trigger = { VAR = scope:gambler.var:wager_team }
var:current_place_in_race <= 3
}
}
trigger_else = { always = no }
# Fallback no one is ahead of wager
AND = {
any_guest_subset = {
name = charioteers
flag_matches_charioteer_team_trigger = { VAR = scope:gambler.var:wager_team }
save_temporary_scope_as = racer
}
NOT = {
chariot_race_anyone_ahead_of_racer_trigger = { RACER = scope:racer }
}
}
}
}
}
}
novice_charioteer_trigger = {
OR = {
has_trait_xp = {
trait = charioteer_blue
value < 40
}
has_trait_xp = {
trait = charioteer_green
value < 40
}
has_trait_xp = {
trait = charioteer_white
value < 40
}
has_trait_xp = {
trait = charioteer_red
value < 40
}
NOR = {
has_trait = charioteer_blue
has_trait = charioteer_green
has_trait = charioteer_white
has_trait = charioteer_red
}
}
}
middling_charioteer_trigger = {
OR = {
has_trait_xp = {
trait = charioteer_blue
value >= 40
}
has_trait_xp = {
trait = charioteer_green
value >= 40
}
has_trait_xp = {
trait = charioteer_white
value >= 40
}
has_trait_xp = {
trait = charioteer_red
value >= 40
}
}
}
experienced_charioteer_trigger = {
OR = {
has_trait_xp = {
trait = charioteer_blue
value >= 90
}
has_trait_xp = {
trait = charioteer_green
value >= 90
}
has_trait_xp = {
trait = charioteer_white
value >= 90
}
has_trait_xp = {
trait = charioteer_red
value >= 90
}
}
}
ep3_ideal_castration_candidate_trigger = {
is_ai = yes
is_male = yes
is_adult = no
is_close_family_of = scope:actor
is_eunuch_trigger = no
is_available = yes
is_betrothed = no
age < 10
}
ep3_castration_male_family_trigger = {
any_close_family_member = {
count >= 2
is_male = yes
house ?= scope:actor.house
is_eunuch_trigger = no
NOR = {
has_trait = celibate
has_trait = devoted
has_trait = order_member
has_trait = bastard
}
OR = {
#Is an old adult with a kid
AND = {
age >= 40
any_child = {
is_male = yes
}
}
#Is a young adult or child
age < 40
}
}
}
ep3_castration_interest_trigger = {
OR = {
is_landless_ruler = yes
is_lowborn = yes
highest_held_title_tier <= tier_county
AND = {
is_landed = yes
highest_held_title_tier <= tier_duchy
influence_level <= 1
}
highest_held_title_tier >= tier_empire
}
}
ep3_ai_castration_target_trigger = {
age < 12
is_male = yes
OR = {
AND = {
exists = liege
liege.culture = { has_cultural_parameter = family_castration }
}
AND = {
NOT = { exists = liege }
culture = { has_cultural_parameter = family_castration }
}
}
is_available = yes
is_landed = no
is_betrothed = no
NOR = {
#Should not be close family of a player
any_close_family_member = {
is_ai = no
}
#Should not be close family of a character who can use the interaction
any_close_family_member = {
highest_held_title_tier >= tier_county
}
#Should not be the child of a playable title heir
any_parent = {
any_heir_title = {
tier >= tier_county
}
}
#Should not be the grandchild of a playable title heir, if their parent is the eldest son
any_parent = {
any_parent = {
highest_held_title_tier >= tier_county
}
any_sibling = {
count <= 0
is_male = yes
age > prev.age
house ?= prev.house
}
}
}
#Not already a eunuch
is_eunuch_trigger = no
NOR = {
#Doesn't have a positive trait being a eunuch would ruin
has_trait = physique_good_1
has_trait = physique_good_2
has_trait = physique_good_3
has_trait = fecund
has_trait = strong
has_trait = sayyid
has_trait = giant
}
OR = {
is_lowborn = yes
has_trait = bastard
#Sons of barons are valid if they have an elder male sibling
any_sibling = {
count >= 1
is_male = yes
age > prev.age
house ?= prev.house
}
}
}
valid_for_pagan_conversion_trigger = {
faith.religion = { is_in_family = rf_pagan }
faith = { has_doctrine_parameter = unreformed }
is_at_war = no
NOR = {
has_character_flag = do_not_disturb_preachers
primary_title = { has_variable = do_not_disturb_preachers }
}
}
ep3_story_cycle_admin_eunuch_valid_story_trigger = {
any_owned_story = {
story_type = story_cycle_admin_eunuch
save_temporary_scope_as = story_temp
var:eunuch ?= {
is_alive = yes
save_temporary_scope_as = eunuch_temp
}
trigger_if = {
limit = { exists = var:protege }
var:protege = { save_temporary_scope_as = protege_temp }
}
trigger_if = {
limit = { exists = var:student }
var:student = { save_temporary_scope_as = student_temp }
}
trigger_if = {
limit = { exists = var:rival }
var:rival = { save_temporary_scope_as = rival_temp }
}
trigger_if = {
limit = { exists = var:seducer }
var:seducer = { save_temporary_scope_as = seducer_temp }
}
trigger_if = {
limit = { exists = var:spouse }
var:spouse = { save_temporary_scope_as = spouse_temp }
}
trigger_if = {
limit = { exists = var:puppet }
var:puppet = { save_temporary_scope_as = puppet_temp }
}
}
}
ep3_story_cycle_admin_eunuch_involved_character = {
employer.top_liege = {
ep3_story_cycle_admin_eunuch_valid_story_trigger = yes
OR = {
scope:eunuch_temp ?= this
scope:protege_temp ?= this
scope:student_temp ?= this
scope:seducer_temp ?= this
scope:spouse_temp ?= this
scope:puppet_temp ?= this
}
}
}
is_appointment_valid_trigger = {
$CANDIDATE$ = {
trigger_if = {
limit = { # We check independence, not tier, to allow for admin kingdoms
exists = $TITLE$
NOT = { $CANDIDATE$.top_liege.highest_held_title_tier = $TITLE$.tier }
}
$CANDIDATE$ = { is_adult = yes }
}
trigger_if = {
limit = {
exists = $TITLE$
$CANDIDATE$ = {
any_held_title = { count >= 1 }
}
}
custom_tooltip = { # Only one province of highest rank
text = only_one_province_of_highest_rank_tt
NOT = {
$CANDIDATE$ = {
any_held_title = {
tier = $TITLE$.tier
is_landless_type_title = no
is_noble_family_title = no
}
}
}
}
custom_tooltip = {
text = promote_candidate_interaction_existing_holder_tt
this != $TITLE$.holder
}
}
custom_tooltip = {
text = can_be_appointed_interaction_tt
OR = {
can_be_granted_titles_by = { RULER = $TOP_LIEGE$ }
can_be_granted_theocratic_titles_by = { RULER = $TOP_LIEGE$ }
AND = {
is_diarch_of_target = $TOP_LIEGE$
$TOP_LIEGE$ = { has_diarchy_active_parameter = diarchy_is_co_rulership }
}
}
}
custom_tooltip = { # Only administrative
text = only_administrative_tt
trigger_if = {
limit = { is_landed = yes }
has_government = administrative_government
}
}
is_clergy = no
}
}
ep3_adventurer_ai_logic_valid_trigger = {
is_alive = yes
is_ai = yes
government_has_flag = government_is_landless_adventurer
domicile ?= { is_domicile_type = camp }
}
ep3_laamp_diplo_range_trigger = {
custom_description = {
text = ep3_laamp_diplo_range_trigger_tt
subject = scope:actor
object = scope:recipient
trigger_if = {
limit = { exists = $LAAMP$.domicile.domicile_location }
trigger_if = {
limit = {
NOT = { exists = $TARGET$.capital_province }
exists = $TARGET$.host.capital_province
}
$TARGET$.host.capital_province ?= {
squared_distance = {
target = $LAAMP$.domicile.domicile_location
value < define:NTaskContract|ADVENTURER_DISTANCE_RESTRICTION
}
}
}
trigger_else_if = {
limit = {
NOT = { exists = $TARGET$.capital_province }
exists = $TARGET$.location
}
$TARGET$.location ?= {
squared_distance = {
target = $LAAMP$.domicile.domicile_location
value < define:NTaskContract|ADVENTURER_DISTANCE_RESTRICTION
}
}
}
trigger_else = {
$TARGET$.capital_province ?= {
squared_distance = {
target = $LAAMP$.domicile.domicile_location
value < define:NTaskContract|ADVENTURER_DISTANCE_RESTRICTION
}
}
}
}
trigger_else = { always = no }
}
}
can_recruit_archer_cavalry_trigger = {
custom_tooltip = {
text = can_recruit_archer_cavalry_trigger_desc
OR = {
can_create_maa = horse_archers
can_create_maa = asawira
can_create_maa = accolade_maa_horse_archers
}
}
}
ep3_transport_contract_trigger = {
OR = {
has_task_contract_type = laamp_transport_vip
has_task_contract_type = laamp_transport_artifact
has_task_contract_type = laamp_transport_gold
has_task_contract_type = laamp_transport_ward
has_task_contract_type = laamp_transport_explorer
has_task_contract_type = laamp_transport_animal
has_task_contract_type = laamp_construction_contract
}
}
ep3_vassal_will_become_admin = {
#This trigger picks out vassals that automatically convert to Admin.
#We convert vassals that are:
#Clan or Feudal
#De Jure part of the Empire
#Have the State Faith
#Aren't rivals of the admin liege
#Dukes and above must like the main liege at least a little.
primary_title = {
target_is_de_jure_liege_or_above = scope:administrative_liege.primary_title #We only auto convert de jure vassals
}
NOR = { #We convert only clan and feudal vassals in this decision
government_has_flag = government_is_theocracy
government_has_flag = government_is_republic
government_has_flag = government_is_landless_adventurer
government_has_flag = government_is_tribal
government_has_flag = government_is_administrative
}
faith = scope:administrative_liege.faith #The future state faith
}
ep3_kings_will_convert_trigger = {
primary_title.tier >= tier_kingdom
NOR = {
opinion = {
target = liege
value < -50
}
has_relation_rival = liege
}
}
ep3_is_clan_inclined_trigger = {
OR = {
faith.religion = religion:islam_religion
culture ?= {
OR = {
has_cultural_pillar = heritage_arabic
has_cultural_pillar = heritage_iranian
has_cultural_pillar = heritage_turkic
}
}
}
}
cid_story_cycle_start_trigger = {
is_alive = yes
is_playable_character = yes
has_ep3_dlc_trigger = yes
NOR = {
has_variable = ongoing_cid_story_cycle
has_variable = had_cid_story_cycle
}
is_landless_adventurer = yes
exists = top_liege
top_liege = {
any_courtier = { is_available_healthy_ai_adult = yes }
}
}
ep3_can_have_legitimists_camp_purpose_trigger = {
custom_tooltip = {
text = ep3_can_have_legitimists_camp_purpose_trigger.tt.explanation
any_claim = {
explicit = yes
tier >= tier_kingdom
}
}
}
has_any_gallowsbait_xp_trigger = {
OR = {
has_trait_xp = {
trait = gallowsbait
track = bandit
value >= 1
}
has_trait_xp = {
trait = gallowsbait
track = trickster
value >= 1
}
has_trait_xp = {
trait = gallowsbait
track = marauder
value >= 1
}
has_trait_xp = {
trait = gallowsbait
track = poacher
value >= 1
}
has_trait_xp = {
trait = gallowsbait
track = thief
value >= 1
}
}
}
ep3_restored_rome_hard_mode_trigger = {
this = title:e_roman_empire.holder
any_owned_story = { story_type = ep3_story_cycle_restoring_rome }
}
faith_is_interesting_heresy_to_state_faith_trigger = {
religion = root.top_liege.primary_title.state_faith.religion
NOT = { this = root.top_liege.primary_title.state_faith }
num_county_followers >= 3
save_temporary_scope_as = temp_heresy
root.top_liege.primary_title.state_faith = {
faith_hostility_level = {
target = scope:temp_heresy
value >= faith_hostile_level
}
}
}
ep3_boundary_dispute_county_trigger = {
tier = tier_county
custom_tooltip = {
text = dispute_border_county_neighbour_tt
county_held_or_vassal_to_target_trigger = { TARGET = $TARGET$ }
OR = {
any_neighboring_county = {
county_held_or_vassal_to_target_trigger = { TARGET = $OWNER$ }
}
AND = {
de_jure_liege.holder ?= $OWNER$
any_title_to_title_neighboring_and_across_water_county = {
county_held_or_vassal_to_target_trigger = { TARGET = $OWNER$ }
}
}
}
}
}
ep3_subsume_province_duchy_trigger = {
tier = tier_duchy
exists = holder
holder = $TARGET$
is_noble_family_title = no
is_landless_type_title = no
trigger_if = {
limit = { tier = tier_duchy }
custom_tooltip = {
text = subsume_province_must_neighbor_tt
any_de_jure_county = {
county_held_or_vassal_to_target_trigger = { TARGET = $TARGET$ }
any_neighboring_county = {
county_held_or_vassal_to_target_trigger = { TARGET = $OWNER$ }
}
}
}
custom_tooltip = {
text = subsume_province_more_than_half_tt
any_de_jure_county = {
percent < 0.5
county_held_or_vassal_to_target_trigger = { TARGET = $OWNER$ }
}
}
}
}
ep3_interesting_courtier_to_ask_trigger = {
is_councillor = no
has_any_court_position = no
OR = {
diplomacy >= high_skill_rating
martial >= high_skill_rating
stewardship >= high_skill_rating
intrigue >= high_skill_rating
learning >= high_skill_rating
prowess >= high_skill_rating
has_trait = education_diplomacy_4
has_trait = education_diplomacy_5
has_trait = education_martial_4
has_trait = education_martial_5
has_trait = education_stewardship_4
has_trait = education_stewardship_5
has_trait = education_intrigue_4
has_trait = education_intrigue_5
has_trait = education_learning_4
has_trait = education_learning_5
has_trait_xp = { trait = lifestyle_physician value >= 20 }
has_trait_xp = { trait = lifestyle_traveler track = travel value >= 20 }
has_trait_xp = { trait = lifestyle_traveler track = danger value >= 20 }
has_trait_xp = { trait = lifestyle_hunter track = hunter value >= 20 }
has_trait_xp = { trait = lifestyle_hunter track = falconer value >= 20 }
has_trait_xp = { trait = charioteer_blue value >= 20 }
has_trait_xp = { trait = charioteer_green value >= 20 }
has_trait_xp = { trait = charioteer_red value >= 20 }
has_trait_xp = { trait = charioteer_white value >= 20 }
has_trait_xp = { trait = governor value >= 20 }
}
}
ep3_admin_faction_trigger = {
trigger_if = { # Enabled for all admin realms with EP3
limit = { has_ep3_dlc_trigger = yes }
$FACTION_TARGET$ = { has_government = administrative_government }
}
trigger_else = { # Enabled for Byzantium without EP3
$FACTION_TARGET$ = { has_title = title:e_byzantium }
}
}
ep3_switch_faction_war_sides_war_trigger = {
# Recipient involved in war
is_participant = scope:recipient
# Is a Faction war
save_temporary_scope_as = faction_war_temp
primary_attacker.joined_faction.faction_war ?= scope:faction_war_temp
# Actor and recipient on opposing sides
trigger_if = {
limit = { is_defender = scope:recipient }
is_attacker = scope:actor
# Recipient must not be an ally of the opposing war leader
NOT = {
primary_defender = { is_allied_to = scope:recipient }
}
}
trigger_else = {
is_defender = scope:actor
# Recipient must not be an ally of the opposing war leader
NOT = {
primary_attacker = { is_allied_to = scope:recipient }
}
}
# Recipient must not be a war leader
NOT = { is_war_leader = scope:recipient }
# Recipient must not be the claimant
NOT = { primary_attacker.joined_faction.special_character = scope:recipient }
}
ep3_raid_insight_trigger = {
scope:owner = {
NOT = { has_character_modifier = raid_insight_$TYPE$ }
}
scope:target_domicile = { has_domicile_building_or_higher = $TYPE$_01 }
}
ep3_adventurer_ai_valid_war_target_trigger = {
is_landed = yes
reverse_opinion = {
target = $ADVENTURER$
value <= 0
}
in_diplomatic_range = $ADVENTURER$
NOR = {
is_at_war_with = $ADVENTURER$
is_allied_to = $ADVENTURER$
}
current_strength_with_allies_value < $ADVENTURER$.current_strength_with_allies_seventy_five_percent_value
save_temporary_scope_as = war_target_temp
trigger_if = {
limit = { government_has_flag = government_is_tribal }
OR = {
$ADVENTURER$.culture.culture_head ?= { government_has_flag = government_is_tribal }
capital_county.culture = {
any_parent_culture_or_above = { this = $ADVENTURER$.culture }
}
$ADVENTURER$.culture = {
any_parent_culture_or_above = { this = scope:war_target_temp.capital_county.culture }
}
}
}
$ADVENTURER$ = {
trigger_if = {
limit = { has_realm_law = camp_purpose_legitimists }
any_claim = {
tier >= tier_kingdom
holder = scope:war_target_temp
save_temporary_scope_as = claim_temp
}
can_declare_war = {
defender = scope:war_target_temp
casus_belli = claim_cb
claimant = $ADVENTURER$
target_titles = { scope:claim_temp }
}
}
trigger_else = {
OR = {
AND = {
scope:war_target_temp = {
any_held_title = {
count >= 1
tier = tier_empire
save_temporary_scope_as = war_target_title_temp
}
}
can_declare_war = {
defender = scope:war_target_temp
casus_belli = ep3_laamp_adventurer_empire_invasion
target_titles = { scope:war_target_title_temp }
}
}
AND = {
scope:war_target_temp = {
any_held_title = {
count >= 1
tier = tier_kingdom
save_temporary_scope_as = war_target_title_temp
}
}
can_declare_war = {
defender = scope:war_target_temp
casus_belli = ep3_laamp_adventurer_kingdom_invasion
target_titles = { scope:war_target_title_temp }
}
}
AND = {
scope:war_target_temp = {
any_held_title = {
count >= 1
tier = tier_duchy
save_temporary_scope_as = war_target_title_temp
}
}
can_declare_war = {
defender = scope:war_target_temp
casus_belli = ep3_laamp_adventurer_duchy_invasion
target_titles = { scope:war_target_title_temp }
}
}
AND = {
scope:war_target_temp = {
any_held_title = {
count >= 1
tier = tier_county
save_temporary_scope_as = war_target_title_temp
}
}
can_declare_war = {
defender = scope:war_target_temp
casus_belli = ep3_laamp_adventurer_county_invasion
target_titles = { scope:war_target_title_temp }
}
}
}
}
}
}
ep3_adventurer_ai_valid_legitimist_target_trigger = {
is_landed = yes
NOR = {
has_relation_friend = $ADVENTURER$
is_at_war_with = $ADVENTURER$
is_allied_to = $ADVENTURER$
}
save_temporary_scope_as = target_temp
current_strength_with_allies_value < $ADVENTURER$.current_strength_with_allies_seventy_five_percent_value
any_held_title = {
tier >= tier_kingdom
any_claimant = { this = $ADVENTURER$ }
save_temporary_scope_as = claim_temp
}
$ADVENTURER$ = {
can_declare_war = {
defender = scope:target_temp
casus_belli = claim_cb
claimant = $ADVENTURER$
target_titles = { scope:claim_temp }
}
}
}
ep3_adventurer_might_attack_target_trigger = {
is_landless_adventurer = yes
# Army at least half the size
current_strength_with_allies_value > $TARGET$.current_strength_with_allies_fifty_percent_value
# Not allies
NOT = { is_allied_to = $TARGET$ }
OR = {
# Has a claim on a title in subrealm
any_claim = {
holder ?= {
OR = {
this = $TARGET$
target_is_liege_or_above = $TARGET$
}
}
}
# Opinion
opinion = {
target = $TARGET$
value < -25
}
}
}
ep3_adventurer_mercenary_war_trigger = {
is_war_leader = $EMPLOYER$
OR = {
using_civil_war_cb_trigger = yes
using_non_ghw_holy_war_cb_trigger = yes
using_de_jure_cb_trigger = yes
using_conquest_cb_trigger = yes
}
NOT = { is_participant = $LAAMP$ }
}
ep3_adventurer_ai_valid_contract_trigger = {
$LAAMP$ = {
OR = {
# DIPLOMACY
can_create_task_contract = { type_name = laamp_base_0001 employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_base_0011 employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_base_0021 employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_base_0031 employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_base_0011 employer = $EMPLOYER$ }
# MARTIAL
can_create_task_contract = { type_name = laamp_base_1001 employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_base_1011 employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_base_1021 employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_base_1031 employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_base_1041 employer = $EMPLOYER$ }
# STEWARDSHIP
can_create_task_contract = { type_name = laamp_base_2001 employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_base_2011 employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_base_2021 employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_base_2031 employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_base_2041 employer = $EMPLOYER$ }
# INTRIGUE
can_create_task_contract = { type_name = laamp_base_3001 employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_base_3011 employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_base_3021 employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_base_3031 employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_base_3041 employer = $EMPLOYER$ }
# LEARNING
can_create_task_contract = { type_name = laamp_base_4001 employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_base_4011 employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_base_4021 employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_base_4031 employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_base_4041 employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_base_4100 employer = $EMPLOYER$ }
# PROWESS
can_create_task_contract = { type_name = laamp_base_5001 employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_base_5011 employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_base_5021 employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_base_5031 employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_base_5041 employer = $EMPLOYER$ }
# JUSTICAR
can_create_task_contract = { type_name = laamp_base_6001 employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_base_6011 employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_base_6021 employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_base_6031 employer = $EMPLOYER$ }
# EXTRA
can_create_task_contract = { type_name = laamp_boost_legitimacy_contract employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_rid_councillor_contract employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_gain_wanderer_contract employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_find_secret_contract employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_eliminate_heir_contract employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_steal_artifact_contract employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_construction_contract employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_cultural_minority_contract employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_religious_minority_contract employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_prison_break_contract employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_join_faction_contract employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_help_faith_conversion_contract employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_fight_faith_conversion_contract employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_help_find_secrets_contract employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_help_fabricate_claim_contract employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_help_increase_control_contract employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_help_find_secrets_contract employer = $EMPLOYER$ }
}
AND = {
has_realm_law = camp_purpose_mercenaries
OR = {
can_create_task_contract = { type_name = laamp_raid_contract employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_join_war_contract employer = $EMPLOYER$ }
can_create_task_contract = { type_name = laamp_help_claimant_contract employer = $EMPLOYER$ }
}
}
}
}
hasan_evangelize_province_trigger = {
save_temporary_scope_as = county
AND = {
NOT = { faith = root.faith }
#faith.religion = root.faith.religion # QA thinks its more fun without this!
scope:county = {
any_county_province = {
barony = {
NOT = { is_holy_site_of = scope:county.faith }
}
}
}
development_level <= 25
custom_tooltip = {
text = has_tougher_to_convert_tt
NOT = { has_county_modifier = tougher_to_convert }
}
custom_tooltip = {
text = 0_or_below_county_opinion_tt
county_opinion <= 0
}
}
}
hasan_camp_in_foes_realm_trigger = {
trigger_if = {
limit = {
any_owned_story = {
var:ultimate_foe ?= {
save_temporary_scope_as = ultimate_foe
}
}
}
custom_description = {
text = hasan_stroy_cycle_camp_at_foe_realm
object = scope:ultimate_foe
domicile.domicile_location.county.holder = {
OR = {
any_liege_or_above = {
this = scope:ultimate_foe
}
this = scope:ultimate_foe
}
}
}
}
trigger_else = {
character:3096 = {
save_temporary_scope_as = caliph
}
save_temporary_scope_as = hasan
any_owned_story = {
trigger_if = {
limit = { exists = var:radical_points }
save_temporary_scope_value_as = {
name = radical_points
value = var:radical_points
}
}
trigger_else = {
save_temporary_scope_value_as = {
name = radical_points
value = 0
}
}
}
custom_tooltip = {
text = hasan_stroy_cycle_ultimate_foe
any_owned_story = {
story_type = story_hasan
exists = var:ultimate_foe
exists = var:radical_points
var:radical_points >= 15
}
}
}
}
estate_can_construct_market_03_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_02 }
}
estate_can_construct_market_04_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_03 }
}
estate_can_construct_market_05_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_04 }
}
estate_can_construct_market_06_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_05 }
}
estate_can_construct_garden_leisure_04_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_03 }
}
estate_can_construct_garden_leisure_05_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_04 }
}
estate_can_construct_garden_leisure_06_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_05 }
}
estate_can_construct_garden_fruit_04_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_03 }
}
estate_can_construct_garden_fruit_05_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_04 }
}
estate_can_construct_garden_fruit_06_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_05 }
}
estate_can_construct_guardhouse_03_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_02 }
}
estate_can_construct_guardhouse_04_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_03 }
}
estate_can_construct_workshop_carpenter_03_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_02 }
}
estate_can_construct_workshop_carpenter_04_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_03 }
}
estate_can_construct_workshop_carpenter_05_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_04 }
}
estate_can_construct_workshop_carpenter_06_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_05 }
}
estate_can_construct_workshop_mason_03_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_02 }
}
estate_can_construct_workshop_mason_04_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_03 }
}
estate_can_construct_workshop_mason_05_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_04 }
}
estate_can_construct_workshop_mason_06_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_05 }
}
estate_can_construct_workshop_textile_03_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_02 }
}
estate_can_construct_workshop_textile_04_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_03 }
}
estate_can_construct_workshop_textile_05_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_04 }
}
estate_can_construct_workshop_textile_06_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_05 }
}
estate_can_construct_barracks_03_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_02 }
}
estate_can_construct_barracks_04_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_03 }
}
estate_can_construct_barracks_05_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_04 }
}
estate_can_construct_barracks_06_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_05 }
}
estate_can_construct_vineyard_03_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_02 }
}
estate_can_construct_vineyard_04_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_03 }
}
estate_can_construct_vineyard_05_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_04 }
}
estate_can_construct_vineyard_06_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_05 }
}
estate_can_construct_olive_03_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_02 }
}
estate_can_construct_olive_04_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_03 }
}
estate_can_construct_olive_05_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_04 }
}
estate_can_construct_olive_06_trigger = {
domicile ?= { has_domicile_building_or_higher = estate_main_05 }
}