.mod file added

This commit is contained in:
trashmasteruni 2025-09-14 23:20:32 +02:00
parent 9112a64c1b
commit 71fbf5783f
622 changed files with 2 additions and 1370904 deletions

View file

@ -1,406 +0,0 @@
###TRIGGER LIST
#is_busy_in_events_unlocalised - already in an involved event chain
#is_in_pseudo_activity_trigger - character is involved in a pseudo-activity
#has_contagious_deadly_disease_trigger
#is_healthy
#is_available
#is_available_ai
#is_available_adult
#is_available_healthy_adult
#is_available_ai_adult
#is_available_healthy_ai_adult
#is_capable_adult
#is_capable_adult_ai
#liege_is_boss_trigger
#can_select_lifestyle_focus
#can_marry
#can_become_concubine
#is_busy_in_events_localised
# Despite the name, there are rare instances in which these may become visible to the player - if you add to this list, add localization also
is_busy_in_events_unlocalised = {
OR = {
has_character_flag = is_in_diplomacy_foreign_special_event
has_character_flag = is_in_diplomacy_family_special_event
has_character_flag = is_in_diplomacy_majesty_special_event
has_character_flag = is_in_martial_special_event
has_character_flag = is_in_stewardship_domain_special_event
has_character_flag = is_in_stewardship_duty_special_event
has_character_flag = is_in_stewardship_wealth_special_event
has_character_flag = is_in_intrigue_special_event
has_character_flag = is_in_learning_special_event
has_character_flag = is_in_task_contract_event_chain
has_character_flag = migration_events_1060_rode_ahead
}
}
# For flags that *may* be seen by the player, and thus need to be cloaked in a custom description to look nice.
is_busy_in_events_localised = {
custom_description = {
text = "yearly_1010_abducted"
NOT = { has_character_flag = yearly_1010_abducted }
}
custom_description = {
text = "yearly_1010_abductor"
NOT = { has_character_flag = yearly_1010_abductor }
}
}
has_contagious_deadly_disease_trigger = {
OR = {
has_trait = bubonic_plague
has_trait = smallpox
has_trait = typhus
has_trait = consumption
has_trait = measles
has_trait = dysentery
}
}
is_healthy = {
custom_tooltip = {
text = not_poor_health_tt
health >= fine_health
}
NOR = {
has_trait = infirm
has_trait = incapable
has_trait = wounded_2
has_trait = wounded_3
}
has_contagious_deadly_disease_trigger = no
}
basic_is_available_ai = {
is_alive = yes
is_imprisoned = no
is_ai = yes
is_incapable = no
has_contagious_deadly_disease_trigger = no
}
is_available_allow_travelling = {
is_alive = yes
is_in_army = no
is_imprisoned = no
is_incapable = no
has_contagious_deadly_disease_trigger = no
custom_description = {
text = ALREADY_IN_ACTIVITY
NOR = {
exists = involved_activity
has_variable = homage_liege_scope
has_character_flag = meditation_character_flag
has_character_flag = petition_liege_character_flag
has_character_flag = holding_court_character_flag
is_being_visited_on_tour_strict = yes
}
}
custom_description = {
text = ALREADY_PLANNING_ACTIVITY
NOT = { has_character_flag = planning_an_activity }
}
# Variable set within the adventure inspiration events
NOT = { has_variable = gone_adventuring }
}
is_available = {
is_travelling = no
is_available_allow_travelling = yes
}
is_available_travelling = {
is_alive = yes
is_in_army = no
is_imprisoned = no
is_incapable = no
is_travelling = yes
has_contagious_deadly_disease_trigger = no
NOT = { has_variable = gone_adventuring }
is_busy_in_events_unlocalised = no
}
is_available_travelling_adult = {
is_adult = yes
is_available_travelling = yes
}
is_available_travelling_ai_adult = {
is_adult = yes
is_ai = yes
is_available_travelling = yes
}
is_physically_able = {
is_alive = yes
is_imprisoned = no
is_incapable = no
}
is_physically_able_ai = {
is_ai = yes
is_alive = yes
is_imprisoned = no
is_incapable = no
}
is_physically_able_adult = {
is_adult = yes
is_physically_able = yes
}
is_physically_able_ai_adult = {
is_ai = yes
is_adult = yes
is_physically_able_adult = yes
}
is_available_ai = {
is_ai = yes
is_available = yes
}
is_available_child = {
is_adult = no
is_available = yes
}
is_available_child_allow_travel = {
is_adult = no
is_available_allow_travelling = yes
}
is_available_ai_child = {
is_adult = no
is_available = yes
is_ai = yes
}
is_available_healthy_child = {
is_available_child = yes
is_healthy = yes
}
is_available_healthy_ai_child = {
is_available_healthy_child = yes
is_ai = yes
}
is_available_adult = {
is_adult = yes
is_available = yes
}
is_available_ai_adult = {
is_available_adult = yes
is_ai = yes
}
is_available_healthy_adult = {
is_available_adult = yes
is_healthy = yes
}
is_available_healthy_ai_adult = {
is_available_healthy_adult = yes
is_ai = yes
}
is_available_adult_or_is_commanding = {
OR = {
is_commanding_army = yes
is_available_adult = yes
}
}
is_available_at_peace = {
is_at_war = no
is_available = yes
is_busy_in_events_unlocalised = no
}
is_available_at_peace_adult = {
is_at_war = no
is_available_adult = yes
is_busy_in_events_unlocalised = no
}
is_available_at_peace_ai_adult = {
is_available_at_peace_adult = yes
is_ai = yes
}
is_available_at_peace_adult_lenient = {
is_at_war = no
is_available_adult = yes
}
# Meaning you may be at war, but you're still located in your capital.
is_available_even_at_war_adult = {
is_available_adult = yes
is_busy_in_events_unlocalised = no
}
is_capable_adult = {
is_adult = yes
is_incapable = no
}
is_capable_adult_ai = {
is_ai = yes
is_adult = yes
is_incapable = no
}
can_select_lifestyle_focus = {
is_capable_adult = yes
is_playable_character = yes
}
is_not_hostile_towards_root = {
NOR = {
is_a_faction_member = yes
any_scheme = {
hostile_scheme_trigger = yes
scheme_target_character = root
}
is_at_war_with = root
}
}
player_target_available_for_personal_scheme_ongoing_events_trigger = {
$TARGET$ = {
trigger_if = {
limit = {
is_ai = no
$OWNER$ = { is_ruler = no }
}
is_at_war = no
}
trigger_else = {
always = yes
}
}
}
basic_is_valid_for_yearly_events_trigger = {
is_playable_character = yes
is_imprisoned = no
is_incapable = no
NOT = { exists = involved_activity }
OR = {
is_travelling = no
is_landless_adventurer = yes
}
is_busy_in_events_unlocalised = no
}
is_valid_for_narrow_yearly_events = {
is_at_war = no
is_commanding_army = no
basic_is_valid_for_yearly_events_trigger = yes
}
is_valid_for_narrow_yearly_events_adult = {
is_adult = yes
is_valid_for_narrow_yearly_events = yes
}
is_within_diplo_range = {
capital_province ?= {
save_temporary_scope_as = my_capital
$CHARACTER$.capital_province ?= {
squared_distance = {
target = scope:my_capital
value < 200000
}
}
}
}
# This trigger checks if a character is a Nomad
is_nomad = {
government_has_flag = government_is_nomadic
is_ruler = yes
}
# This trigger checks if a character is a landed Nomad
is_landed_nomad = {
government_has_flag = government_is_nomadic
is_landed = yes
is_ruler = yes
}
# Checks if a character is a landless nomad with a domicile
is_landless_nomad = {
government_has_flag = government_is_nomadic
is_landed = no
has_domicile = yes
}
# This trigger checks if a character is a landless adventurer
is_landless_adventurer = {
government_has_flag = government_is_landless_adventurer
is_landed = no
is_ruler = yes
}
# This trigger checks if a character is a governor in an admin realm (implying they are landed)
is_governor = {
government_has_flag = government_is_administrative
is_landed = yes
is_independent_ruler = no
highest_held_title_tier >= tier_duchy
}
is_governor_or_admin_count = {
government_has_flag = government_is_administrative
is_landed = yes
is_independent_ruler = no
highest_held_title_tier >= tier_county
}
# Checks if a character is a landless house_head within an admin realm
is_landless_administrative = {
government_has_flag = government_is_administrative
is_landed = no
has_domicile = yes
}
# Checks if a character is either landed or an unlanded house head within an admin realm
is_landed_or_landless_administrative = {
OR = {
is_landed = yes
is_landless_administrative = yes
}
}
# Checks if a character is either landed, a landless house head within an admin realm, a landless nomad, or a landless adventurer
is_playable_character = {
OR = {
is_landed = yes
is_landless_administrative = yes
is_landless_adventurer = yes
is_landless_nomad = yes
}
}
roman_restoration_is_valid_roman_empire_trigger = {
is_ai = no
OR = {
has_title = title:e_byzantium
has_title = title:e_roman_empire
}
OR = {
religion = religion:christianity_religion #Either Christian
religion = religion:hellenism_religion #Or Hellenic
}
NOT = { has_ep3_dlc_trigger = yes }
}
is_eunuch_trigger = {
OR = {
has_trait = eunuch_1
has_trait = beardless_eunuch
}
}

View file

@ -1,789 +0,0 @@
######################################################################
# Government
######################################################################
building_requirement_tribal = {
scope:holder ?= {
OR = {
government_has_flag = government_is_tribal
government_has_flag = government_is_nomadic
}
}
}
building_requirement_tribal_holding_in_county = {
NOT = {
county = {
any_county_province = {
has_holding_type = tribal_holding
}
}
}
}
building_requirement_nomad = {
scope:holder ?= {
government_has_flag = government_is_nomadic
}
}
building_requirement_nomad_holding_in_county = {
NOT = {
county = {
any_county_province = {
has_holding_type = nomad_holding
}
}
}
}
building_requirement_herder = {
scope:holder ?= {
government_has_flag = government_is_herder
}
}
building_requirement_herder_holding_in_county = {
NOT = {
county = {
any_county_province = {
has_holding_type = herder_holding
}
}
}
}
######################################################################
# Holding Level
######################################################################
building_requirement_castle_city_church = {
trigger_if = {
limit = { has_holding_type = castle_holding }
has_building_or_higher = castle_$LEVEL$
}
trigger_else_if = {
limit = { has_holding_type = city_holding }
has_building_or_higher = city_$LEVEL$
}
trigger_else_if = {
limit = { has_holding_type = church_holding }
has_building_or_higher = temple_$LEVEL$
}
trigger_else = {
custom_description = {
text = "building_requirement_castle_city_church_failed"
always = no
}
}
}
######################################################################
# Special
######################################################################
building_hall_of_heroes_requirement = {
custom_description = {
text = building_requirement_hall_of_heroes_failed
has_variable = hall_of_heroes
scope:holder = {
OR = {
has_religion = religion:baltic_religion
has_religion = religion:slavic_religion
has_religion = religion:finno_ugric_religion
has_religion = religion:siberian_religion
}
}
}
}
building_university_requirement = {
#has_variable = university
}
######################################################################
# Terrain
######################################################################
building_common_tradeport_requirement_terrain = {
OR = {
is_coastal = yes
is_riverside_province = yes
}
}
building_pastures_requirement_terrain = {
OR = {
terrain = farmlands
terrain = plains
terrain = steppe
terrain = desert
terrain = drylands
terrain = oasis
terrain = mountains
terrain = desert_mountains
terrain = hills
terrain = floodplains
AND = {
terrain = jungle
NOT = { geographical_region = world_innovation_elephants }
}
}
}
building_hunting_grounds_requirement_terrain = {
OR = {
terrain = plains
terrain = drylands
terrain = steppe
terrain = hills
terrain = taiga
terrain = forest
terrain = jungle
terrain = wetlands
}
}
building_orchards_requirement_terrain = {
OR = {
terrain = floodplains
terrain = oasis
has_building_or_higher = qanats_05
AND = {
culture = {
has_cultural_parameter = vegetarian_fruit_orchard_allowed
}
}
}
}
building_farm_estates_requirement_terrain = {
terrain = farmlands
}
building_military_camps_requirement_terrain = {
#OR = { # All Terrains
# terrain = farmlands
# terrain = plains
# terrain = drylands
# terrain = desert
# terrain = oasis
# terrain = floodplains
# terrain = steppe
# terrain = mountains
# terrain = desert_mountains
# terrain = wetlands
# terrain = forest
# terrain = taiga
# terrain = jungle
# terrain = hills
#}
}
building_regimental_grounds_requirement_terrain = {
OR = {
terrain = floodplains
terrain = farmlands
}
}
building_ramparts_requirement_terrain = {
OR = {
terrain = taiga
terrain = forest
terrain = jungle
}
}
building_curtain_walls_requirement_terrain = {
OR = {
terrain = farmlands
terrain = plains
terrain = wetlands
terrain = floodplains
}
}
building_watchtowers_requirement_terrain = {
OR = {
terrain = desert
terrain = drylands
terrain = oasis
terrain = steppe
}
}
building_cereal_fields_requirement_terrain = {
OR = {
terrain = farmlands
terrain = plains
terrain = drylands
terrain = floodplains
county = {
OR = {
has_county_modifier = fertile_desert_mountains_modifier
has_county_modifier = dodekapolis_modifier
}
}
has_building_or_higher = qanats_05
}
}
building_outposts_requirement_terrain = {
OR = {
terrain = wetlands
terrain = taiga
terrain = forest
terrain = jungle
}
}
building_barracks_requirement_terrain = {
#OR = {
# terrain = farmlands
# terrain = plains
# terrain = drylands
# terrain = floodplains # new
# terrain = hills
# terrain = mountains
# terrain = forest
# terrain = taiga
# terrain = jungle
# terrain = wetlands
# terrain = steppe
#}
}
building_camel_farms_requirement_terrain = {
geographical_region = world_innovation_camels # new
OR = {
terrain = desert
terrain = desert_mountains
terrain = oasis
terrain = floodplains
terrain = drylands # new
}
}
building_stables_requirement_terrain = {
# All terrains
}
building_smiths_requirement_terrain = {
# All terrains
}
building_workshops_requirement_terrain = {
# All terrains
}
building_logging_camps_requirement_terrain = {
OR = {
terrain = taiga
terrain = forest
terrain = jungle
}
}
building_peat_quarries_requirement_terrain = {
terrain = wetlands
}
building_hill_farms_requirement_terrain = {
terrain = hills
}
building_elephant_pens_requirement_terrain = {
terrain = jungle
OR = {
geographical_region = world_innovation_elephants
culture = { has_cultural_parameter = elephant_pens_building_bonuses }
}
}
building_horse_pastures_requirement_terrain = {
OR = {
terrain = steppe
geographical_region = world_steppe_east
culture = { has_cultural_parameter = unlock_horse_pastures_building }
}
}
building_plantations_requirement_terrain = {
OR = {
terrain = drylands
terrain = desert
terrain = oasis
}
}
building_quarries_requirement_terrain = {
OR = {
terrain = mountains
terrain = desert_mountains
culture = { has_cultural_parameter = can_build_quarries_everywhere }
}
}
building_warrior_lodges_requirement_terrain = {
OR = {
AND = {
OR = {
terrain = mountains
terrain = desert_mountains
terrain = hills
}
NOT = { geographical_region = world_horse_buildings_in_hills_and_mountains }
}
culture = { has_cultural_parameter = warrior_lodges_lift_restrictions }
}
}
building_hillside_grazing_requirement_terrain = {
OR = {
terrain = mountains
terrain = desert_mountains
terrain = hills
}
geographical_region = world_horse_buildings_in_hills_and_mountains
}
building_wind_furnace_requirement_terrain = {
geographical_region = world_india
OR = {
is_coastal = yes
AND = {
scope:holder.top_liege = {
any_realm_county = {
any_county_province = {
has_building_or_higher = konasamudram_mines_01
}
}
}
duchy = {
any_de_jure_county = {
any_county_province = {
has_building_or_higher = konasamudram_mines_01
}
}
}
}
}
scope:holder.culture = { has_innovation = innovation_wootz_steel }
}
building_hill_forts_requirement_terrain = {
OR = {
terrain = mountains
terrain = desert_mountains
terrain = hills
}
}
building_windmills_requirement_terrain = {
county ?= {
any_county_province = {
OR = {
terrain = farmlands
terrain = plains
terrain = hills
is_coastal = yes
}
}
}
}
building_watermills_requirement_terrain = {
county ?= {
any_county_province = {
OR = {
terrain = mountains
terrain = wetlands
terrain = forest
terrain = taiga
terrain = jungle
is_riverside_province = yes
}
}
}
}
building_caravanserai_requirement_terrain = {
county ?= {
any_county_province = {
OR = {
terrain = drylands
terrain = desert
terrain = oasis
terrain = floodplains
terrain = steppe
terrain = desert_mountains
AND = {
geographical_region = world_europe_west_iberia
has_global_variable = fp2_struggle_conciliation_ending
}
}
}
}
}
building_qanats_requirement_terrain = {
county ?= {
any_county_province = {
OR = {
terrain = hills
terrain = mountains
terrain = desert_mountains
terrain = desert
terrain = drylands
}
culture = { has_cultural_parameter = unlocks_qanat_building }
}
}
}
building_hospices_requirement_terrain = {
}
has_any_special_mine_trigger = {
OR = {
has_building_or_higher = rammelsberg_mines_01
has_building_or_higher = kutna_hora_mines_01
has_building_or_higher = kremnica_mines_01
has_building_or_higher = falun_mines_01
has_building_or_higher = schwaz_mines_01
has_building_or_higher = argentiera_mines_01
has_building_or_higher = kollur_mines_01
has_building_or_higher = siderokausia_mines_01
has_building_or_higher = mali_mines_01
has_building_or_higher = konasamudram_mines_01
has_building_or_higher = dean_mines_01
has_building_or_higher = zawar_mines_01
has_building_or_higher = takkeda_mines_01
has_building_or_higher = khetri_mines_01
has_building_or_higher = taghaza_mines_01
has_building_or_higher = ijil_mines_01
has_building_or_higher = turda_mines_01
has_building_or_higher = phocaea_mines_01
has_building_or_higher = pansjhir_mines_01
has_building_or_higher = trepca_mines_01
has_building_or_higher = rudnik_mines_01
has_building_or_higher = cevennes_mines_01
has_building_or_higher = allaq_mines_01
has_building_or_higher = verespatak_mines_01
has_building_or_higher = nishapur_mines_01
has_building_or_higher = srebrenica_mines_01
has_building_or_higher = ratnapura_mines_01
}
}
######################################################################
# Baronies that cannot have a holding (intended for Sahara)
######################################################################
barony_cannot_construct_holding = {
barony.title_province = {
OR = {
terrain = desert
terrain = desert_mountains
}
geographical_region = world_africa_sahara
}
}
######################################################################
# Triggers for add_random_building_effect script effect
######################################################################
# is any existing building of the checked tier? (e.g. 02)
has_any_building_of_level_trigger = {
OR = {
has_building = outposts_$BUILDING_LEVEL$
has_building = logging_camps_$BUILDING_LEVEL$
has_building = peat_quarries_$BUILDING_LEVEL$
has_building = hill_forts_$BUILDING_LEVEL$
has_building = plantations_$BUILDING_LEVEL$
has_building = quarries_$BUILDING_LEVEL$
has_building = hunting_grounds_$BUILDING_LEVEL$
has_building = military_camps_$BUILDING_LEVEL$
has_building = pastures_$BUILDING_LEVEL$
has_building = ramparts_$BUILDING_LEVEL$
has_building = curtain_walls_$BUILDING_LEVEL$
has_building = watchtowers_$BUILDING_LEVEL$
has_building = cereal_fields_$BUILDING_LEVEL$
has_building = barracks_$BUILDING_LEVEL$
has_building = camel_farms_$BUILDING_LEVEL$
has_building = hill_farms_$BUILDING_LEVEL$
has_building = elephant_pens_$BUILDING_LEVEL$
has_building = common_tradeport_$BUILDING_LEVEL$
has_building = orchards_$BUILDING_LEVEL$
has_building = farm_estates_$BUILDING_LEVEL$
has_building = regimental_grounds_$BUILDING_LEVEL$
has_building = monastic_schools_$BUILDING_LEVEL$
}
}
# is any existing building a lower tier than compare building?
has_lesser_building_trigger = {
trigger_if = {
limit = { has_building_or_higher = $COMPARE$_02 }
has_any_building_of_level_trigger = { BUILDING_LEVEL = 01 }
}
trigger_else_if = {
limit = { has_building_or_higher = $COMPARE$_03 }
OR = {
has_any_building_of_level_trigger = { BUILDING_LEVEL = 01 }
has_any_building_of_level_trigger = { BUILDING_LEVEL = 02 }
}
}
trigger_else_if = {
limit = { has_building_or_higher = $COMPARE$_04 }
OR = {
has_any_building_of_level_trigger = { BUILDING_LEVEL = 01 }
has_any_building_of_level_trigger = { BUILDING_LEVEL = 02 }
has_any_building_of_level_trigger = { BUILDING_LEVEL = 03 }
}
}
trigger_else_if = {
limit = { has_building_or_higher = $COMPARE$_05 }
OR = {
has_any_building_of_level_trigger = { BUILDING_LEVEL = 01 }
has_any_building_of_level_trigger = { BUILDING_LEVEL = 02 }
has_any_building_of_level_trigger = { BUILDING_LEVEL = 03 }
has_any_building_of_level_trigger = { BUILDING_LEVEL = 04 }
}
}
trigger_else_if = {
limit = { has_building_or_higher = $COMPARE$_06 }
OR = {
has_any_building_of_level_trigger = { BUILDING_LEVEL = 01 }
has_any_building_of_level_trigger = { BUILDING_LEVEL = 02 }
has_any_building_of_level_trigger = { BUILDING_LEVEL = 03 }
has_any_building_of_level_trigger = { BUILDING_LEVEL = 04 }
has_any_building_of_level_trigger = { BUILDING_LEVEL = 05 }
}
}
trigger_else_if = {
limit = { has_building_or_higher = $COMPARE$_07 }
OR = {
has_any_building_of_level_trigger = { BUILDING_LEVEL = 01 }
has_any_building_of_level_trigger = { BUILDING_LEVEL = 02 }
has_any_building_of_level_trigger = { BUILDING_LEVEL = 03 }
has_any_building_of_level_trigger = { BUILDING_LEVEL = 04 }
has_any_building_of_level_trigger = { BUILDING_LEVEL = 05 }
has_any_building_of_level_trigger = { BUILDING_LEVEL = 06 }
}
}
trigger_else = { always = no } # Must already be highest tier possible
}
# can this building be added?
add_random_building_trigger = {
building_$BUILDING$_requirement_terrain = yes # terrain fits building type
trigger_if = { # if all slots are full, this building type exists already
limit = { free_building_slots = 0 }
has_building_or_higher = $BUILDING$_01
NOT = {
has_lesser_building_trigger = { COMPARE = $BUILDING$ }
}
}
trigger_else = {
NOT = { has_building_or_higher = $BUILDING$_01 }
}
}
# Innovation and holding level triggers for most economic buildings
generic_economic_building_innovation_trigger = {
trigger_if = {
limit = { has_building_or_higher = $BUILDING$_01 }
scope:build_owner.culture = { has_innovation = innovation_crop_rotation }
}
trigger_if = {
limit = { has_building_or_higher = $BUILDING$_02 }
building_requirement_castle_city_church = { LEVEL = 02 }
scope:build_owner.culture = { has_innovation = innovation_manorialism }
}
trigger_if = {
limit = { has_building_or_higher = $BUILDING$_04 }
building_requirement_castle_city_church = { LEVEL = 03 }
scope:build_owner.culture = { has_innovation = innovation_guilds }
}
trigger_if = {
limit = { has_building_or_higher = $BUILDING$_06 }
building_requirement_castle_city_church = { LEVEL = 04 }
scope:build_owner.culture = { has_innovation = innovation_cranes }
}
}
# Innovation and holding level triggers for most fortification buildings
generic_fortification_building_innovations_trigger = {
trigger_if = {
limit = { has_building_or_higher = $BUILDING$_01 }
scope:build_owner.culture = { has_innovation = innovation_motte }
}
trigger_if = {
limit = { has_building_or_higher = $BUILDING$_02 }
building_requirement_castle_city_church = { LEVEL = 02 }
scope:build_owner.culture = { has_innovation = innovation_battlements }
}
trigger_if = {
limit = { has_building_or_higher = $BUILDING$_04 }
building_requirement_castle_city_church = { LEVEL = 03 }
scope:build_owner.culture = { has_innovation = innovation_hoardings }
}
trigger_if = {
limit = { has_building_or_higher = $BUILDING$_06 }
building_requirement_castle_city_church = { LEVEL = 04 }
scope:build_owner.culture = { has_innovation = innovation_machicolations }
}
}
# Innovation and holding level triggers for most recruitment buildings
generic_recruitment_building_innovations_trigger = {
trigger_if = {
limit = { has_building_or_higher = $BUILDING$_01 }
scope:build_owner.culture = { has_innovation = innovation_barracks }
}
trigger_if = {
limit = { has_building_or_higher = $BUILDING$_02 }
building_requirement_castle_city_church = { LEVEL = 02 }
scope:build_owner.culture = { has_innovation = innovation_burhs }
}
trigger_if = {
limit = { has_building_or_higher = $BUILDING$_04 }
building_requirement_castle_city_church = { LEVEL = 03 }
scope:build_owner.culture = { has_innovation = innovation_castle_baileys }
}
trigger_if = {
limit = { has_building_or_higher = $BUILDING$_06 }
building_requirement_castle_city_church = { LEVEL = 04 }
scope:build_owner.culture = { has_innovation = innovation_royal_armory }
}
}
islamic_special_building_trigger = {
OR = {
has_building = holy_site_great_mosque_of_djenne_01
has_building = holy_site_great_mosque_of_samarra_01
has_building = holy_site_prophetic_mosque_01
has_building = hagia_sophia_02
has_building = the_friday_mosque_01 # shared zoroastrian
has_building = holy_site_great_mosque_of_cordoba_01 # shared christian
has_building_or_higher = damascus_mosque_01
}
}
christian_special_building_trigger = {
OR = {
has_building = holy_site_cologne_cathedral_01
has_building = holy_site_canterbury_cathedral_01
has_building = holy_site_canterbury_cathedral_02
has_building = holy_site_canterbury_cathedral_03
has_building = temple_of_uppsala_01
has_building = temple_of_uppsala_02
has_building = lund_cathedral_01
has_building = holy_site_great_mosque_of_cordoba_01 # shared muslim
has_building_or_higher = cluny_abbey_01
has_building_or_higher = beta_giyorgis_01
has_building_or_higher = holy_wisdom_01
has_building_or_higher = duomo_florence_01
has_building_or_higher = wawel_cathedral_01
}
}
eastern_special_building_trigger = {
OR = {
has_building = buddhas_of_bamian_01
has_building = brihadeeswarar_temple_01
has_building = shwedagon_pagoda_01
has_building = ananda_temple_01
has_building = khajuraho_01
has_building_or_higher = jokhang_01
has_building_or_higher = konark_temple_01
has_building_or_higher = vatapi_caves_01
}
}
# Religious special building triggers
religious_special_building_exclusion_trigger = { # checks if any special buildings present do not fit your religion
OR = {
AND = { # Generic
NOT = {
barony = { is_holy_site_of = holder.faith }
}
OR = {
has_building = holy_site_cathedral_01
has_building = holy_site_mosque_01
has_building = holy_site_pagan_grand_temple_01
has_building = holy_site_indian_grand_temple_01
has_building = holy_site_other_grand_temple_01
has_building = hagia_sophia_01
has_building = holy_site_mahabodhi_temple_01
has_building = holy_site_imam_ali_mosque_01
has_building = holy_site_great_mosque_of_mecca_01
islamic_special_building_trigger = yes
christian_special_building_trigger = yes
}
}
AND = { # Islamic
NOT = { barony.holder.religion = religion:islam_religion }
islamic_special_building_trigger = yes
}
AND = { # Christian
NOT = { barony.holder.religion = religion:christianity_religion }
christian_special_building_trigger = yes
}
AND = { # Islamic/Zoroastrian
NOT = { barony.holder.religion = religion:zoroastrianism_religion }
has_building = the_friday_mosque_01 # shared muslim
}
AND = { # Eastern family
NOR = {
ROOT.religion = religion:hinduism_religion
ROOT.religion = religion:buddhism_religion
ROOT.religion = religion:jainism_religion
ROOT.religion = religion:taoism_religion
ROOT.religion = religion:zoroastrianism_religion
}
eastern_special_building_trigger = yes
}
# Judaism
AND = {
barony.holder.religion = religion:judaism_religion
has_building = dome_of_the_rock_01
}
AND = {
NOT = { barony.holder.religion = religion:judaism_religion }
has_building = temple_in_jerusalem_01
}
}
}
building_murex_farm_requirement_terrain = {
is_county_capital = yes
is_coastal = yes
geographical_region = mediteranean_coast
NOR = {
this.barony = title:b_salmydessus
this.barony = title:b_chelai
}
}
building_breweries_requirement = {
OR = {
AND = {
has_building_or_higher = temple_$NUMBER$
OR = {
faith = faith:catholic
faith = { has_doctrine_parameter = allows_brewery }
}
}
AND = {
has_building_or_higher = city_$NUMBER$
culture = { has_cultural_parameter = allows_brewery }
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -1,869 +0,0 @@
#############
# Diarchy Scripted Triggers
#############
##################################################
# General Triggers
character_hates_scope_due_to_strife_guts_trigger = {
# We've got to share a direct liege for strife to be valid.
exists = liege
exists = $TARGET$.liege
liege = $TARGET$.liege
# And $TARGET$ must have accumulated enough strife to aggravate me (which we modulate up or down a little with some traits).
$TARGET$.strife_opinion >= strife_harm_threshold_value
# Finally, there has to be at least _some_ love lost.
opinion = {
target = $TARGET$
value < 0
}
}
# This is hooked up to the is_diarch_valid rule, invalidating them if it returns false, referenced by Code.
is_diarch_valid_trigger = {
# Basics.
is_alive = yes
OR = {
# We always want adults...
is_adult = yes
# ... _unless_ this is junior emperor, they're always children.
liege ?= { has_diarchy_parameter = diarchy_type_is_junior_emperorship }
}
# Event blocks.
OR = {
is_ai = no
NOT = { has_character_flag = cannot_be_diarch }
}
trigger_if = {
limit = {
exists = liege
}
# Being in a diarchy yourself will disable you, outside of co-rulerships.
trigger_if = {
limit = {
NOT = {
liege = { has_diarchy_active_parameter = diarchy_is_co_rulership }
}
}
# If you're in an entrenched regency for some reason, you can't manage a regency yourself.
NOT = { has_diarchy_parameter = diarchy_type_is_entrenched_regency }
# You need to be mentally & physically sound, to some degree.
regency_for_personal_reasons_trigger = no
}
# Diarchy-specific checks.
## Viziers.
trigger_if = {
limit = {
liege = { has_diarchy_parameter = diarchy_is_vizierate }
}
# Must match their liege's gender preference.
diarch_matches_liege_faith_gender_preference_trigger = yes
# Viziers aren't big land-owners.
## Not in this way, at least.
highest_held_title_tier <= tier_barony
}
# If you have somehow managed to get invited to/start an activity outside of your realm (e.g., you're the spouse in a grand wedding), then yeah, you forfeit your position.
## ... unless you're a co-ruler.
trigger_if = {
limit = {
NOT = {
liege = { has_diarchy_active_parameter = diarchy_is_co_rulership }
}
}
# We cannot be at war with our liege.
NOT = { is_at_war_with = liege }
NAND = {
# Is it redundant to check twice?
## Yes.
### Do the machine spirits demand this thoroughness of us?
#### Also yes.
##### Do not ask why the God-Machine commands it, merely be glad that it commanded it of you.
is_travelling = yes
exists = current_travel_plan
# We check your liege so that you can attend business within the realm easily.
## Schemes are their own special lil guys so we take care of them separately.
trigger_if = {
limit = {
exists = scope:owner
exists = scope:target
}
travel_would_cause_regency_trigger = { REALM_HOLDER = scope:owner.liege }
}
## Else, we're an ordinary, gods-fearing root scope, so use that.
trigger_else = {
travel_would_cause_regency_trigger = { REALM_HOLDER = this.liege }
}
}
}
}
}
# This is hooked up to the is_diarch_able rule, referenced by Code.
is_diarch_able_trigger = {
# You can't possibly manage someone else's realm from prison.
is_imprisoned = no
# You need to be mentally & physically sound, to some degree.
## Mostly, this will invalidate, but it won't for co-rulerships so we just disable them here.
regency_for_personal_reasons_trigger = no
# You'd clearly be preoccupied.
trigger_if = {
limit = { exists = involved_activity }
save_temporary_scope_as = diarch_temp
involved_activity.activity_location.county.holder = {
NOR = {
this = scope:diarch_temp.liege
NOT = {
any_liege_or_above = { this = scope:diarch_temp.liege }
}
}
}
}
# If you're in a diarchy for any other reason, you need to chill.
NOT = { has_active_diarchy = yes }
}
# And *this* needs to be added to guest activity intents to keep diarchs from showing up to the same parties as their liege.
bannable_serving_diarch_trigger = {
liege?= { NOT = { is_landless_adventurer = yes } }
OR = {
# Diarchs with official responsibilities can't come out to play.
is_diarch = yes
is_designated_diarch = yes
# Assumed diarchs don't get to either if they're the AI, as the player might be planning around them & the AI may have designated to avoid people after if it'd known they were going to welch.
## Assumed-diarch players can make an intelligent choice on whether they want to go to events or not.
AND = {
is_ai = yes
is_diarchy_successor = yes
}
}
}
diarch_has_situational_loyalty_trigger = {
diarch_loyalty > diarch_loyalty_visibly_disloyal_threshold
diarch_loyalty < diarch_loyalty_visibly_loyal_threshold
}
diarch_callable_in_internal_war_trigger = {
OR = {
# CBs where the liege doesn't (necessarily) control an internal attacker.
using_cb = peasant_war
using_cb = populist_war
# All other internal CBs.
primary_attacker = {
any_liege_or_above = { this = scope:actor }
}
}
}
diarch_matches_liege_faith_gender_preference_trigger = {
OR = {
# Female preference.
AND = {
is_female = yes
liege.faith = { has_doctrine = doctrine_gender_female_dominated }
}
# Male preference.
AND = {
is_male = yes
liege.faith = { has_doctrine = doctrine_gender_male_dominated }
}
# Equality.
liege.faith = { has_doctrine = doctrine_gender_equal }
}
}
##################################################
# Setup Triggers
basic_eligible_for_diarchy_trigger = {
is_landed_or_landless_administrative = yes
NOT = { government_has_flag = government_is_landless_adventurer } # Laamps don't use diarchs
highest_held_title_tier >= tier_county
NOT = { has_active_diarchy = yes }
}
regency_for_personal_reasons_trigger = {
custom_tooltip = {
text = regency_for_personal_reasons_trigger.tt.cannot_govern_by_themselves
OR = {
AND = {
is_adult = no
NOT = {
liege = { has_diarchy_parameter = diarchy_type_is_junior_emperorship }
}
}
is_incapable = yes
has_character_modifier = isolating_modifier
}
}
}
imprisonment_would_cause_regency_trigger = {
custom_tooltip = {
text = imprisonment_would_cause_regency_trigger.tt.imprisoned_abroad
is_imprisoned = yes
# Doesn't count if your gaoler is your vassal.
save_temporary_scope_as = liege_temp
NOT = {
any_vassal_or_below = { this = scope:liege_temp.imprisoner }
}
}
}
travel_would_cause_regency_trigger = {
OR = {
# Travelling one-way.
AND = {
# Make sure that we _aren't_ going bilaterally.
NOT = { current_travel_plan.final_destination_province = current_travel_plan.departure_location }
# Then check that we're actually going outside of the realm.
current_travel_plan.final_destination_province.county.holder = {
NOR = {
any_liege_or_above = { this = $REALM_HOLDER$ }
this = $REALM_HOLDER$
}
}
}
# Travelling in a circle.
AND = {
# Make sure that we _are_ going bilaterally.
current_travel_plan.final_destination_province = current_travel_plan.departure_location
# Check the next destination province instead.
## We put a break in to check if there _is_ a county because you might be travelling through the ocean.
current_travel_plan.next_destination_province.county ?= {
holder = {
NOR = {
any_liege_or_above = { this = $REALM_HOLDER$ }
this = $REALM_HOLDER$
}
}
}
}
}
}
can_leave_diarchy_trigger = {
trigger_if = {
limit = { is_imprisoned = yes }
imprisonment_would_cause_regency_trigger = no
}
is_travelling = no
regency_for_personal_reasons_trigger = no
}
regent_would_remain_loyal_after_death_trigger = {
is_ai = yes
diarch_loyalty_score_type_regency_value >= diarch_loyalty_visibly_loyal_threshold
}
##################################################
# Character Interactions
diarch_cannot_be_disabled_trigger = {
custom_description = {
text = diarch_interactions_tt_is_able
subject = $DIARCH$
$DIARCH$ = { is_diarch_able_trigger = yes }
}
}
diarch_legal_meddling_claimable_title_trigger = {
custom_description = {
text = "you_must_not_have_a_claim_on_the_title"
NOT = {
any_claimant = { this = $ACTOR$ }
}
}
custom_description = {
text = "character_interactions_not_rel_head_title"
is_head_of_faith = no
}
custom_tooltip = {
text = title_must_be_county_tier.tt
tier = tier_county
}
# This is mostly here to stop people from not claiming titles because they have valid titles that are _outside_ the sub-realm.
custom_tooltip = {
text = title_must_be_same_realm.tt
holder = {
any_liege_or_above = { this = $ACTOR$.liege }
}
}
}
diarch_syphon_treasury_embezzlement_modifiers_trigger = {
OR = {
has_county_modifier = syphon_treasury_massive_sum_modifier
has_county_modifier = syphon_treasury_large_sum_modifier
has_county_modifier = syphon_treasury_medium_sum_modifier
has_county_modifier = syphon_treasury_small_sum_modifier
}
}
diarch_shift_privileges_valid_target_title_trigger = {
NOR = {
has_county_modifier = shift_privileges_monopolies_sold_modifier
has_county_modifier = shift_privileges_scutage_exemptions_modifier
has_county_modifier = shift_privileges_conflicting_deeds_modifier
}
}
diarch_swing_scales_valid_shared_hof_trigger = {
# You must share a HoF to be able to petition one.
custom_tooltip = {
text = swing_scales_currency_interaction.tt.no_shared_hof
exists = scope:actor.faith.religious_head
exists = scope:recipient.faith.religious_head
scope:actor.faith.religious_head = scope:recipient.faith.religious_head
}
# And opinions've gotta line up.
trigger_if = {
limit = { exists = scope:actor.faith.religious_head }
# They must like you.
custom_tooltip = {
text = swing_scales_currency_interaction.tt.hof_needs_to_like_you_more
scope:actor.faith.religious_head = {
opinion = {
target = scope:actor
value >= high_positive_opinion
}
}
}
# And not like scope:recipient too much.
custom_tooltip = {
text = swing_scales_currency_interaction.tt.hof_needs_to_like_them_less
scope:actor.faith.religious_head = {
opinion = {
target = scope:recipient
value <= medium_positive_opinion
}
}
}
# Plus scope:recipient can't have anything over them.
custom_tooltip = {
text = swing_scales_currency_interaction.tt.hof_refuses_to_cross_recipient
NOT = {
scope:recipient = { has_strong_hook = scope:actor.faith.religious_head }
}
}
}
}
diarch_liege_wants_to_stiff_regent_trigger = {
OR = {
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:recipient }
opinion = {
target = scope:recipient
value <= very_high_negative_opinion
}
}
}
cannot_release_former_regent_whilst_old_regent_holds_power_trigger = {
$PRISONER$ = {
trigger_if = {
limit = {
has_variable = imprisoned_by_diarch
exists = $PRISONER$.liege
$REGENT$ = { is_diarch_of_target = $PRISONER$.liege }
}
custom_tooltip = {
text = overthrow_regent_scheme_interaction.tt.cannot_release
NOR = {
var:imprisoned_by_diarch = $PRISONER$.imprisoner
var:imprisoned_by_diarch ?= $PRISONER$.liege.diarch
}
}
}
}
}
interaction_actor_is_liege_with_vizierate_trigger = {
scope:recipient.liege ?= scope:actor
scope:actor = { has_diarchy_active_parameter = diarchy_is_vizierate }
}
is_valid_basic_candidate_for_vizier_trigger = {
is_diarch_valid_trigger = yes
diarch_matches_liege_faith_gender_preference_trigger = yes
}
# I don't have a problem, I can quit scripted triggers any time I want.
## But more seriously: mostly just here for brevity/not wanting to re-do script after I had to add a second scripted trigger targeting top lieges.
character_has_co_emperorship_trigger = {
OR = {
has_diarchy_parameter = diarchy_type_is_co_emperorship
has_diarchy_parameter = diarchy_type_is_junior_emperorship
}
}
liege_has_co_emperorship_trigger = {
liege ?= { character_has_co_emperorship_trigger = yes }
}
top_liege_has_co_emperorship_trigger = {
liege ?= { character_has_co_emperorship_trigger = yes }
}
appointment_interactions_recipient_is_suitable_co_emperor_trigger = {
scope:actor = { top_liege_has_co_emperorship_trigger = yes }
OR = {
scope:recipient = { is_diarch_of_target = scope:secondary_recipient.top_liege }
scope:secondary_recipient = { is_diarch_of_target = scope:actor.top_liege }
}
# Don't get the bonus just because we're promoting our courtiers in our realm.
trigger_if = {
limit = {
NOT = { scope:target = scope:actor.primary_title }
}
NOT = { scope:target.holder = scope:actor }
}
}
may_appoint_co_emperors_trigger = {
highest_held_title_tier >= tier_empire
has_realm_law = acclamation_succession_law
OR = {
has_title = title:e_byzantium
has_title = title:e_roman_empire
culture = { has_cultural_parameter = unlock_co_emperors }
}
}
may_appoint_co_monarchs_trigger = {
highest_held_title_tier >= tier_kingdom
government_has_flag = may_elevate_co_monarch
}
valid_junior_emperor_candidate_trigger = {
is_adult = no
is_close_or_extended_family_of = $LIEGE$
is_imprisoned = no
OR = {
is_courtier_of = $LIEGE$
is_vassal_of = $LIEGE$
}
# Prevent weird governments from taking place.
NOR = {
government_has_flag = government_is_special_republic
government_has_flag = government_is_theocracy
government_has_flag = government_is_landless_adventurer
}
}
valid_co_emperor_candidate_trigger = {
is_adult = yes
is_imprisoned = no
save_temporary_scope_as = co_emperor_temp
custom_tooltip = {
text = valid_co_emperor_candidate_liege_trigger
top_liege = $LIEGE$
}
custom_tooltip = {
text = valid_co_emperor_candidate_family_trigger
OR = {
is_close_or_extended_family_of = $LIEGE$
AND = {
house ?= {
OR = {
is_powerful_family = yes
is_dominant_family = yes
}
}
scope:co_emperor_temp = house.house_head
}
}
}
NOR = {
has_trait = blind
has_trait = eunuch
has_trait = incapable
# Prevent weird governments from taking place.
government_has_flag = government_is_special_republic
government_has_flag = government_is_theocracy
government_has_flag = government_is_landless_adventurer
}
}
valid_co_monarch_candidate_trigger = {
is_adult = yes
is_child_of = $LIEGE$
is_imprisoned = no
trigger_if = {
limit = { is_ruler = no }
is_courtier_of = $LIEGE$
}
trigger_else = { is_vassal_of = $LIEGE$ }
# Gender restrictions.
custom_tooltip = {
text = valid_co_monarch_candidate_trigger.tt.gender_wrong_for_co_rule
OR = {
AND = {
is_female = yes
$LIEGE$ = {
OR = {
has_realm_law = female_only_law
has_realm_law = female_preference_law
}
}
}
AND = {
is_male = yes
$LIEGE$ = {
OR = {
has_realm_law = male_only_law
has_realm_law = male_preference_law
}
}
}
$LIEGE$ = { has_realm_law = equal_law }
}
}
# Prevent weird governments from taking place.
NOR = {
government_has_flag = government_is_special_republic
government_has_flag = government_is_theocracy
government_has_flag = government_is_landless_adventurer
}
}
governor_can_be_called_as_ally_in_expedition_war_basic_trigger = {
scope:actor.liege ?= { has_diarchy_parameter = unlock_diarch_requests_military_expedition_interaction }
scope:recipient = {
liege ?= scope:actor.liege
# Must be a governor.
government_has_flag = government_is_administrative
}
}
liege_can_maim_co_ruler_without_killing_them_trigger = {
culture = {
OR = {
has_cultural_parameter = can_blind_prisoners
has_cultural_parameter = can_castrate_prisoners
}
}
}
liege_should_systematically_maim_co_ruler_trigger = {
OR = {
AND = {
has_diarchy_active_parameter = diarchy_is_co_rulership
liege_can_maim_co_ruler_without_killing_them_trigger = yes
diarch ?= scope:recipient
}
AND = {
liege ?= { has_diarchy_active_parameter = diarchy_is_co_rulership }
liege_can_maim_co_ruler_without_killing_them_trigger = yes
is_diarch_of_target = scope:recipient
}
}
}
valid_kingdom_for_diarch_to_demand_as_despotate_trigger = {
tier = tier_kingdom
is_landless_type_title = no
# Weird formatting for the sake of cleaner tooltips.
trigger_if = {
limit = { is_title_created = no }
is_title_created = no
}
trigger_else = { holder = scope:recipient }
scope:recipient = { completely_controls = scope:target }
NOT = {
scope:recipient.capital_county = { target_is_de_jure_liege_or_above = scope:target }
}
}
is_in_scapegoating_diarchy_visibility_trigger = {
custom_tooltip = {
text = is_in_scapegoating_diarchy_visibility_trigger.tt.explanation
subject = scope:actor
OR = {
AND = {
scope:recipient = { $PARAMETER_TYPE$ = unlock_scapegoat_counterpart_interaction }
scope:actor = { is_diarch_of_target = scope:recipient }
}
AND = {
scope:actor = { $PARAMETER_TYPE$ = unlock_scapegoat_counterpart_interaction }
scope:recipient = { is_diarch_of_target = scope:actor }
}
}
}
}
ai_diarch_would_maim_execute_superior_if_got_chance_trigger = {
OR = {
opinion = {
target = $LIEGE$
value <= -1
}
has_trait = callous
has_trait = sadistic
has_trait = ambitious
has_trait = arrogant
}
NOR = {
has_trait = compassionate
has_trait = content
}
}
##################################################
# Succession Triggers
diarch_candidate_shares_relationship_with_lesser_consort_trigger = {
# Grab the right scope.
save_temporary_scope_as = char_temp
# Now check.
any_relation = {
type = $RELATION$
is_consort_of = scope:char_temp.liege
OR = {
NOT = { exists = scope:char_temp.liege.primary_spouse }
NOT = { this = scope:char_temp.liege.primary_spouse }
}
}
}
diarch_candidate_shares_relationship_with_child_trigger = {
# Grab the right scope.
save_temporary_scope_as = char_temp
# Now check.
any_relation = {
type = $RELATION$
is_adult = yes
is_child_of = scope:char_temp.liege
is_courtier_of = scope:char_temp.liege
}
}
diarch_candidate_shares_minority_status_with_trigger = {
# For performance purposes, let's do the most obvious check first.
any_liege_or_above = {
NOT = { $QUALITY$ = scope:char_temp.$QUALITY$ }
}
# Grab the right scope.
save_temporary_scope_as = char_temp
liege = {
# Ok, now make sure we connect to at least one suitable character.
## Yes we're putting a whole trigger in the scripted parameter.
### No one will believe you if you try to tell them of my crimes.
$TRIGGER_OR_TARGET$ = { $QUALITY$ = scope:char_temp.$QUALITY$ }
}
}
##################################################
# Important Actions
action_regent_imprison_suitable_char_covassals_trigger = {
opinion = {
target = root
value <= very_high_negative_opinion
}
save_temporary_scope_as = char_temp
# Could you take the interaction?
root = {
is_character_interaction_valid = {
interaction = diarch_imprison_interaction
recipient = scope:char_temp
}
}
}
action_regent_imprison_suitable_char_rivals_trigger = {
save_temporary_scope_as = char_temp
root = {
is_character_interaction_valid = {
interaction = diarch_imprison_interaction
recipient = scope:char_temp
}
}
}
action_shift_privileges_suitable_char_trigger = {
save_temporary_scope_as = char_temp
# Make sure we've got equal or higher diplo and so might get away with a cheeky forgery.
diplomacy <= root.diplomacy
# And we don't want to spam with little guys, especially as they're more expensive to use prestige on.
OR = {
highest_held_title_tier >= tier_duchy
# But don't block this out entirely within duchies.
liege.highest_held_title_tier = tier_duchy
}
# Could you take the interaction?
root = {
is_character_interaction_valid = {
interaction = diarch_shift_privileges_interaction
recipient = scope:char_temp
}
}
}
action_legal_meddling_suitable_char_trigger = {
max_military_strength < root.eighty_percent_of_max_military_strength
NOR = {
has_any_good_relationship_with_character_trigger = { CHARACTER = root }
root = { has_truce = prev }
is_allied_to = root
}
}
action_legal_meddling_suitable_title_trigger = {
diarch_legal_meddling_claimable_title_trigger = { ACTOR = root }
root = {
# Could you take the interaction?
is_character_interaction_valid = {
interaction = diarch_legal_meddling_interaction
recipient = scope:char_temp
}
}
}
##################################################
# Decisions
diarch_coup_valid_conspiracy_culmination_vassals_trigger = {
OR = {
is_powerful_vassal_of = $LIEGE$
house ?= { is_powerful_family = yes }
}
is_imprisoned = no
}
diarch_coup_attempt_is_valid_trigger = {
# Diarchy checks.
is_diarch = yes
$LIEGE$ = { has_diarchy_active_parameter = regents_can_try_to_overthrow_present_lieges }
## Liege must be physically present to overthrow. You can't coup them whilst they're abroad.
$LIEGE$ = {
is_imprisoned = no
is_travelling = no
is_at_war = no
custom_tooltip = {
text = custom.not_attending_activity
NOT = { exists = involved_activity }
}
age >= 5
}
# Support checks.
## Have you gathered enough support from the realm's powerful vassals and/or councillors?
custom_tooltip = {
text = diarch_attempt_to_overthrow_liege.tt.majority_powerful_vassal_support
subject = root
has_variable_list = coup_pv_supporters_list
any_in_list = {
variable = coup_pv_supporters_list
count >= pv_overthrow_threshold_value
# Double check they're still valid.
diarch_coup_valid_conspiracy_culmination_vassals_trigger = { LIEGE = $LIEGE$ }
}
}
# As a speed-bump, we check how long this diarchy has been on for.
OR = {
# Either, you've been a diarch for a good long ways.
years_as_diarch >= 8
# Or, you haven't been but everyone is kinda used to the concept of a diarch.
AND = {
years_as_diarch >= 4
$LIEGE$ = { years_in_diarchy >= 10 }
}
# OR, you've laid the groundwork for such a coup already
custom_tooltip = {
text = diarch_attempt_to_overthrow_liege_bypass
has_character_flag = laid_coup_groundwork_flag
}
}
# And finally, for ease of sanity, your liege must be of a certain size.
$LIEGE$.sub_realm_size >= minor_realm_size
}
diarch_coup_attempt_is_valid_showing_failure_only_trigger = {
# Diarch must be able to act.
diarch_cannot_be_disabled_trigger = { DIARCH = $DIARCH$ }
# Plus standard checks.
is_available_adult = yes
# Filter this out in advance, else we risk trying to enter a duel later, only to find we're already engaged in one.
custom_description = {
text = ENGAGED_IN_SINGLE_COMBAT
NOT = { exists = var:engaged_in_single_combat }
}
# Liege must have _something_ at the highest tier that isn't a HoF title.
custom_tooltip = {
text = diarch_attempt_to_overthrow_liege.tt.liege_cant_hold_only_hof_highest_title
liege = {
any_held_title = {
tier = prev.highest_held_title_tier
is_head_of_faith = no
}
}
}
}
diarch_coup_attempt_grabbable_kingdom_trigger = {
highest_held_title_tier >= tier_empire
any_held_title = {
diarch_coup_attempt_grabbable_kingdom_guts_trigger = { TARGET = $TARGET$ }
}
}
diarch_coup_attempt_grabbable_kingdom_guts_trigger = {
tier = tier_kingdom
is_head_of_faith = no
any_de_jure_county = {
holder = {
any_liege_or_above = { this = $TARGET$ }
}
}
}
diarch_coup_attempt_grabbable_capital_and_duchies_trigger = {
is_head_of_faith = no
is_landless_type_title = no
OR = {
AND = {
tier = tier_county
this.duchy = $TARGET$.primary_title.title_capital_county.duchy
}
this = $TARGET$.primary_title.title_capital_county.duchy
}
}
##################################################
# Mandates
#TODO_CD_EP2; rig these up to the actual loyalty value.
diarch_loyalty_due_to_hook_trigger = {
$LIEGE$ = {
OR = {
has_hook_of_type = {
target = $DIARCH$
type = loyalty_hook
}
has_hook_of_type = {
target = $DIARCH$
type = predecessor_loyalty_hook
}
}
}
}
diarch_wants_to_engage_with_mandates_trigger = {
save_temporary_scope_value_as = {
name = diarch_loyalty
value = $DIARCH$.diarch_loyalty_score_type_regency_value
}
OR = {
scope:diarch_loyalty >= diarch_loyalty_visibly_loyal_threshold
scope:diarch_loyalty <= diarch_loyalty_visibly_disloyal_threshold
}
}
##################################################
# Events
character_has_regency_diarchy_trigger = {
exists = diarch
OR = {
has_diarchy_active_parameter = diarchy_type_is_temporary_regency
has_diarchy_active_parameter = diarchy_type_is_entrenched_regency
}
}

View file

@ -1,411 +0,0 @@
remove_guardian_interaction_visible_ward_trigger = {
OR = {
#If I am the child
this = scope:actor
#The ward has actor as its liege
AND = {
exists = employer
employer = scope:actor
}
#The guardian is actor
any_relation = {
type = guardian
this = scope:actor
}
#The guardian is actor's courtier
any_relation = {
type = guardian
is_courtier_of = scope:actor
}
}
}
remove_guardian_interaction_available_ward_trigger = {
is_busy_in_events_localised = yes
#is_imprisoned = no
}
kick_from_court_validity_trigger = {
is_busy_in_events_localised = yes
NOR = {
is_spouse_of = scope:actor
is_concubine_of = scope:actor
is_close_family_of = scope:actor
has_council_position = councillor_court_chaplain
is_diarch = yes
# Marriage major partners of diarchs.
## Female.
AND = {
is_married = yes
is_female = yes
matrilinear_marriage = yes
any_consort = { is_diarch = yes }
}
## Male.
AND = {
is_married = yes
is_male = yes
patrilinear_marriage = yes
any_consort = { is_diarch = yes }
}
}
}
ask_for_pardon_available_trigger = {
$ACTOR$ = {
is_independent_ruler = no
any_liege_or_above = {
OR = {
has_imprisonment_reason = $ACTOR$
has_banish_reason = $ACTOR$
has_execute_reason = $ACTOR$
has_revoke_title_reason = $ACTOR$
}
}
}
}
title_revocation_standard_valid_showing_failures_only_trigger = {
scope:actor = {
NOR = {
is_at_war_with = scope:recipient
has_truce = scope:recipient
}
custom_description = {
text = "character_interactions_revoke_title_from_ally_without_reason"
object = scope:recipient
OR = {
NOT = {
is_allied_to = scope:recipient
}
has_revoke_title_reason = scope:recipient
}
}
}
scope:recipient = {
is_busy_in_events_localised = yes
NOT = { has_strong_hook = scope:actor }
}
}
title_revocation_standard_can_pick_title_trigger = {
is_contested = no
custom_description = {
text = "revoke_title_not_noble_family_title"
is_noble_family_title = no
}
NOT = {
recent_history = {
type = granted
years = 1
}
}
custom_description = {
text = "character_interactions_not_rel_head_title"
is_head_of_faith = no
}
}
diarch_revocation_has_claim_check_trigger = {
custom_description = {
text = diarch_has_claim_on_revokable_title
object = scope:recipient
scope:actor = {
any_claim = {
exists = holder
holder = scope:recipient
}
}
}
}
title_revocation_is_admin_governor_trigger = {
has_government = administrative_government
is_independent_ruler = yes
save_temporary_scope_as = liege_temp
$VASSAL$ = {
is_landed_or_landless_administrative = yes
target_is_liege_or_above = scope:liege_temp
}
}
title_revocation_is_tyrannical_trigger = {
NOR = {
exists = scope:administrative_revocation
has_revoke_title_reason = $VASSAL$
trigger_if = {
limit = { exists = scope:landed_title }
has_claim_on = scope:landed_title
}
title_revocation_is_admin_governor_trigger = { VASSAL = $VASSAL$ }
faith = {
$VASSAL$ = {
NOT = { vassal_contract_has_flag = religiously_protected}
}
OR = {
AND = {
has_doctrine_parameter = pluralism_righteous_revocation_tyranny_reduced
faith_hostility_level = {
target = $VASSAL$.faith
value = faith_evil_level
}
}
AND = {
has_doctrine_parameter = pluralism_fundamentalist_revocation_tyranny_minimal
faith_hostility_level = {
target = $VASSAL$.faith
value >= faith_hostile_level
}
}
}
}
}
}
vassal_revocation_is_tyrannical_trigger = {
NOR = {
exists = scope:administrative_revocation
AND = {
has_government = administrative_government
$VASSAL$ = {
has_government = administrative_government
}
}
has_revoke_title_reason = $VASSAL$
faith = {
OR = {
AND = {
has_doctrine_parameter = pluralism_righteous_revocation_tyranny_reduced
faith_hostility_level = {
target = $VASSAL$.faith
value = faith_evil_level
}
}
AND = {
has_doctrine_parameter = pluralism_fundamentalist_revocation_tyranny_minimal
faith_hostility_level = {
target = $VASSAL$.faith
value >= faith_hostile_level
}
}
}
}
}
}
vassal_retraction_standard_valid_showing_failures_only_trigger = {
NOT = {
scope:actor = { is_at_war_with = scope:recipient }
}
scope:recipient = { is_busy_in_events_localised = yes }
trigger_if = {
limit = { exists = scope:secondary_recipient }
scope:secondary_recipient = { is_busy_in_events_localised = yes }
}
scope:recipient = {
NOT = { has_strong_hook = scope:actor }
}
}
diarch_retraction_is_de_jure_liege_trigger = {
custom_description = {
text = "diarch_is_de_jure_liege_of_retractable_vassal"
object = scope:recipient
scope:actor = {
any_held_title = {
any_direct_de_jure_vassal_title = { holder.liege = scope:recipient }
}
}
}
}
is_de_jure_vassal_of_liege_trigger = {
liege = {
save_temporary_scope_as = my_liege
}
primary_title = {
OR = {
de_jure_liege = {
exists = holder
holder = scope:my_liege
}
trigger_if = {
limit = {
tier = tier_duchy
}
de_jure_liege = {
de_jure_liege = {
exists = holder
holder = scope:my_liege
}
}
}
}
}
}
send_poem_positive_poem_lock_trigger = {
OR = {
is_ai = no
NOT = { has_relation_rival = scope:recipient }
NOT = { has_relation_nemesis = scope:recipient }
}
}
send_poem_negative_poem_lock_trigger = {
OR = {
is_ai = no
has_relation_rival = scope:recipient
has_relation_nemesis = scope:recipient
}
}
can_any_traveling_family_members_travel_trigger = {
NOR = {
this = scope:recipient
is_in_pool_at = scope:actor.capital_province
}
is_ruler = no
trigger_if = {
limit = {
exists = scope:recipient.host
is_child_of = scope:recipient.host
is_adult = no
}
NOT = { dynasty = scope:recipient.host.dynasty }
}
}
imprison_neutral_is_valid_showing_failures_only_triggers_trigger = {
scope:recipient = { is_busy_in_events_localised = yes }
scope:actor.liege = {
trigger_if = {
limit = { has_realm_law_flag = imprisonment_toggle_enable }
# TIT-43801
#has_realm_law_flag = imprisonment_toggle_on
NOT = { has_realm_law = tribal_authority_0 }
}
}
scope:actor = { is_imprisoned = no }
custom_description = {
text = cannot_imprison_almohad_leader
subject = scope:recipient
NOT = {
scope:recipient = { has_character_modifier = almohad_leader_modifier }
}
}
}
grant_title_rivalry_trigger = {
is_ai = yes
is_playable_character = yes
top_liege = scope:actor
faith = scope:actor.faith
reverse_opinion = {
target = top_liege
value > -50
}
opinion = {
target = top_liege
value > -50
}
trigger_if = {
limit = {
is_female = yes
faith_dominant_gender_female_or_equal = no
}
scope:recipient = { is_female = yes }
}
trigger_if = {
limit = {
is_male = yes
faith_dominant_gender_male_or_equal = no
}
scope:recipient = { is_male = yes }
}
has_dread_level_towards = {
target = scope:actor
level < 1
}
is_eunuch_trigger = no
NOR = {
this = scope:actor
this = scope:recipient
has_trait = content
has_trait = humble
has_trait = blind
has_trait = devoted
is_close_family_of = scope:recipient
has_any_good_relationship_with_character_trigger = { CHARACTER = scope:actor }
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:actor }
}
}
should_prioritise_hostile_action_against_due_to_personal_relations_trigger = {
$ACTOR$ = {
OR = {
has_any_bad_relationship_with_character_trigger = { CHARACTER = $RECIPIENT$ }
opinion = {
target = $RECIPIENT$
value <= very_high_negative_opinion
}
}
}
}
should_avoid_hostile_action_against_due_to_personal_relations_trigger = {
$ACTOR$ = {
OR = {
has_any_good_relationship_with_character_trigger = { CHARACTER = $RECIPIENT$ }
is_allied_to = $RECIPIENT$
opinion = {
target = $RECIPIENT$
value >= very_high_positive_opinion
}
# Plus filter out heirs & other family, unless we hate 'em.
AND = {
OR = {
is_close_or_extended_family_of = $RECIPIENT$
any_spouse = { this = $RECIPIENT$ }
is_heir_of = $RECIPIENT$
}
NOR = {
has_any_bad_relationship_with_character_trigger = { CHARACTER = $RECIPIENT$ }
exposed_cheating_on_spouse_trigger = { SPOUSE = $RECIPIENT$ }
AND = {
is_ai = yes
opinion = {
target = $RECIPIENT$
value <= low_negative_opinion
}
}
}
}
}
}
}
should_avoid_hostile_action_against_due_to_liege_relations_trigger = {
$ACTOR$ = {
exists = liege
liege = {
OR = {
has_any_good_relationship_with_character_trigger = { CHARACTER = $RECIPIENT$ }
is_allied_to = $RECIPIENT$
opinion = {
target = $RECIPIENT$
value >= very_high_positive_opinion
}
}
}
}
}
is_asking_for_gold_in_ransom_trigger = {
OR = {
scope:extortionate_gold ?= yes
scope:extortionate_current_gold ?= yes
scope:gold ?= yes
scope:current_gold ?= yes
}
}

View file

@ -1,413 +0,0 @@

character_gender_can_rule_title_trigger = {
trigger_if = {
limit = {
$GENDER$ = { is_male = yes }
exists = $TITLE$
$TITLE$ = {
NOT = {
has_title_law = female_only_law
}
}
}
always = yes
}
trigger_else_if = {
limit = {
$GENDER$ = { is_female = yes }
exists = $TITLE$
$TITLE$ = {
NOT = {
has_title_law = male_only_law
}
}
}
always = yes
}
trigger_else = {
always = no
}
}
character_gender_can_inherit_from_trigger = {
save_temporary_scope_as = heir
trigger_if = {
limit = {
$CHARACTER$ = { exists = primary_title }
}
$CHARACTER$ = {
character_gender_can_rule_title_trigger = {
GENDER = scope:heir
TITLE = primary_title
}
}
}
trigger_else = {
always = no
}
}
has_partition_succession_realm_law_trigger = {
OR = {
has_realm_law = confederate_partition_succession_law
has_realm_law = partition_succession_law
has_realm_law = high_partition_succession_law
has_realm_law = clan_antagonistic_partition_succession_law
has_realm_law = clan_competitive_partition_succession_law
has_realm_law = clan_impassive_partition_succession_law
has_realm_law = clan_friendly_partition_succession_law
has_realm_law = clan_harmonious_partition_succession_law
}
}
realm_law_use_crown_authority = {
# We separate this out into a different trigger for moddability purposes, per community request: this allows more diverse authority laws to be easily modded in without needing to override 00_realm_laws.txt, and thus for greater inter-mod compatibility.
realm_law_use_tribal_authority = no
realm_law_use_camp_purpose = no
realm_law_use_imperial_bureaucracy = no
realm_law_use_nomadic_authority = no
}
realm_law_use_tribal_authority = {
government_has_flag = government_is_tribal
}
realm_law_use_camp_purpose = {
government_has_flag = government_is_landless_adventurer
}
realm_law_use_imperial_bureaucracy = {
government_has_flag = government_is_administrative
}
realm_law_use_nomadic_authority = {
government_has_flag = government_is_nomadic
}
can_have_confederate_partition_succession_law_trigger = {
OR = {
government_has_flag = government_is_feudal
government_has_flag = government_is_tribal
}
}
can_keep_partition_succession_law_trigger = {
# The 'can_keep' triggers are dependent on actually having the law. If they aren't, the trigger breakdown for the player breaks and shows incomplete information.
trigger_if = {
limit = {
has_realm_law = partition_succession_law
}
OR = {
can_have_partition_succession_law_trigger = yes
# Mongol Empires
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_black_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
}
}
NOT = { government_has_flag = government_is_clan }
}
can_have_partition_succession_law_trigger = {
culture = {
has_innovation = innovation_hereditary_rule
}
custom_description = {
text = succession_laws_must_have_organised_government_tooltip
OR = {
government_has_flag = government_is_feudal
}
}
}
can_keep_high_partition_succession_law_trigger = {
# The 'can_keep' triggers are dependent on actually having the law. If they aren't, the trigger breakdown for the player breaks and shows incomplete information.
trigger_if = {
limit = {
has_realm_law = high_partition_succession_law
}
OR = {
can_have_high_partition_succession_law_trigger = yes
# Mongol Empires
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_black_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
}
}
NOT = { government_has_flag = government_is_clan}
}
can_have_high_partition_succession_law_trigger = {
trigger_if = {
limit = {
NOT = {
culture = { has_cultural_parameter = can_enact_high_partition_succession_law }
}
}
culture = { has_innovation = innovation_heraldry }
}
custom_description = {
text = succession_laws_must_have_organised_government_tooltip
government_has_flag = government_is_feudal
}
}
can_keep_single_heir_succession_law_trigger = {
# The 'can_keep' triggers are dependent on actually having the law. If they aren't, the trigger breakdown for the player breaks and shows incomplete information.
trigger_if = {
limit = {
has_realm_law = single_heir_succession_law
}
OR = {
can_have_single_heir_succession_law_trigger = yes
# Byzantine Empire
historical_succession_access_single_heir_succession_law_trigger = yes
}
}
}
can_have_single_heir_succession_law_trigger = {
culture = {
has_innovation = innovation_primogeniture
}
# Non-tribals only
trigger_if = { # We split the tooltip into two, to make sure we don't show admin unless you actually have it
limit = {
has_ep3_dlc_trigger = yes
}
custom_tooltip = {
text = must_be_feudal_clan_or_admin
OR = {
government_has_flag = government_is_feudal
government_has_flag = government_is_clan
government_has_flag = government_is_administrative
}
}
}
trigger_else = {
custom_description = {
text = succession_laws_must_have_organised_government_tooltip
OR = {
government_has_flag = government_is_feudal
government_has_flag = government_is_clan
}
}
}
trigger_if = {
limit = {
government_has_flag = government_is_administrative
}
is_independent_ruler = yes
}
}
can_keep_single_heir_youngest_succession_law_trigger = {
# The 'can_keep' triggers are dependent on actually having the law. If they aren't, the trigger breakdown for the player breaks and shows incomplete information.
trigger_if = {
limit = {
has_realm_law = single_heir_succession_law_youngest
}
OR = {
can_have_single_heir_youngest_succession_law_trigger = yes
historical_succession_access_single_heir_succession_law_youngest_trigger = yes
}
}
}
can_have_single_heir_youngest_succession_law_trigger = {
culture = {
has_innovation = innovation_primogeniture
}
# Non-tribals only
trigger_if = { # We split the tooltip into two, to make sure we don't show admin unless you actually have it
limit = {
has_ep3_dlc_trigger = yes
}
custom_tooltip = {
text = must_be_feudal_clan_or_admin
OR = {
government_has_flag = government_is_feudal
government_has_flag = government_is_clan
government_has_flag = government_is_administrative
}
}
}
trigger_else = {
custom_description = {
text = succession_laws_must_have_organised_government_tooltip
OR = {
government_has_flag = government_is_feudal
government_has_flag = government_is_clan
}
}
}
trigger_if = {
limit = {
government_has_flag = government_is_administrative
}
is_independent_ruler = yes
}
}
can_keep_single_heir_dynasty_house_trigger = {
# The 'can_keep' triggers are dependent on actually having the law. If they aren't, the trigger breakdown for the player breaks and shows incomplete information.
trigger_if = {
limit = {
has_realm_law = single_heir_dynasty_house
}
OR = {
can_have_single_heir_dynasty_house_trigger = yes
historical_succession_access_single_heir_dynasty_house_trigger = yes
}
}
}
can_have_single_heir_dynasty_house_trigger = {
exists = house
trigger_if = {
limit = {
culture = {
OR = {
has_cultural_pillar = heritage_west_slavic
NOT = { has_innovation = innovation_heraldry }
}
}
}
culture = {
has_innovation = innovation_table_of_princes
}
}
trigger_else = {
culture = {
has_innovation = innovation_heraldry
}
}
custom_description = {
text = succession_laws_must_have_organised_government_tooltip
OR = {
government_has_flag = government_is_feudal
government_has_flag = government_is_clan
}
}
NOT = { government_has_flag = government_is_administrative }
}
can_have_bishop_theocratic_succession_law_trigger = {
OR = {
is_theocratic_lessee = yes
government_has_flag = government_is_theocracy
}
}
is_temporal_head_of_faith_trigger = {
is_head_of_faith = yes
holder.faith = { has_doctrine = doctrine_temporal_head }
}
can_title_have_law_general_trigger = {
tier >= tier_duchy
is_temporal_head_of_faith_trigger = no
}
can_have_holy_order_succession_law_trigger = {
government_has_flag = government_is_holy_order
}
can_have_mercenary_succession_law_trigger = {
government_has_flag = government_is_mercenary
}
can_have_city_succession_law_trigger = {
government_has_flag = government_is_special_republic
}
can_have_herder_succession_law_trigger = {
government_has_flag = government_is_herder
}
title_can_reduce_partition_law_trigger = {
holder ?= {
OR = {
has_realm_law = single_heir_succession_law
can_have_high_partition_succession_law_trigger = yes
}
OR = {
has_realm_law = high_partition_succession_law
can_have_high_partition_succession_law_trigger = yes
}
OR = {
has_realm_law = partition_succession_law
can_have_confederate_partition_succession_law_trigger = yes
}
}
}
can_pass_law_ca1_trigger = {
culture = { has_innovation = innovation_plenary_assemblies }
}
can_pass_law_ca2_trigger = {
culture = { has_innovation = innovation_royal_prerogative }
}
can_pass_law_ca3_trigger = {
culture = { has_innovation = innovation_royal_prerogative }
}
can_have_acclamation_succession_law_trigger = {
has_ep3_dlc_trigger = yes
government_has_flag = government_is_administrative
is_independent_ruler = yes
}
can_keep_acclamation_succession_law_trigger = {
has_ep3_dlc_trigger = yes
trigger_if = {
limit = {
has_realm_law = acclamation_succession_law
}
OR = {
can_have_acclamation_succession_law_trigger = yes
has_title = title:e_byzantium
}
}
}
can_change_acclamation_succession_law_trigger = {
has_ep3_dlc_trigger = yes
}
can_have_appointment_succession_law_trigger = {
has_ep3_dlc_trigger = yes
government_has_flag = government_is_administrative
is_independent_ruler = no
}
can_keep_appointment_succession_law_trigger = {
has_ep3_dlc_trigger = yes
trigger_if = {
limit = {
has_realm_law = appointment_succession_law
}
can_have_appointment_succession_law_trigger = yes
}
}
can_change_appointment_succession_law_trigger = {
has_ep3_dlc_trigger = yes
}

File diff suppressed because it is too large Load diff

View file

@ -1,493 +0,0 @@
# Example:
#
# example_trigger = {
# is_country_type = default
# free_leader_slots > 0
# }
#
#
# In a script file:
#
# trigger = {
# example_trigger = yes
# }
#
minor_gold_value_trigger = {
short_term_gold >= minor_gold_value
}
medium_gold_value_trigger = {
short_term_gold >= medium_gold_value
}
major_gold_value_trigger = {
short_term_gold >= major_gold_value
}
has_chosen_murder_execution_type = {
exists = scope:murder_method
}
seduction_target_is_close_trigger = {
scope:target = { is_in_the_same_court_as = scope:owner }
}
scope_is_close_to_root_trigger = {
OR = {
is_in_the_same_court_as = root
is_courtier_of = root
}
}
#Education triggers
has_education_martial_trigger = {
OR = {
has_trait = education_martial_1
has_trait = education_martial_2
has_trait = education_martial_3
has_trait = education_martial_4
has_trait = education_martial_5
}
}
has_education_diplomacy_trigger = {
OR = {
has_trait = education_diplomacy_1
has_trait = education_diplomacy_2
has_trait = education_diplomacy_3
has_trait = education_diplomacy_4
has_trait = education_diplomacy_5
}
}
has_education_learning_trigger = {
OR = {
has_trait = education_learning_1
has_trait = education_learning_2
has_trait = education_learning_3
has_trait = education_learning_4
has_trait = education_learning_5
}
}
has_education_stewardship_trigger = {
OR = {
has_trait = education_stewardship_1
has_trait = education_stewardship_2
has_trait = education_stewardship_3
has_trait = education_stewardship_4
has_trait = education_stewardship_5
}
}
has_education_intrigue_trigger = {
OR = {
has_trait = education_intrigue_1
has_trait = education_intrigue_2
has_trait = education_intrigue_3
has_trait = education_intrigue_4
has_trait = education_intrigue_5
}
}
is_cannibal_trigger = {
OR = {
has_trait = cannibal
any_secret = {
secret_type = secret_cannibal
}
}
}
is_murderer_trigger = {
OR = {
has_trait = murderer
any_secret = {
secret_type = secret_murder
}
}
}
likes_target_trigger = {
opinion = {
target = $CHARACTER$
value > 10
}
}
has_any_lifestyle_focus_trigger = {
OR = {
has_lifestyle = diplomacy_lifestyle
has_lifestyle = martial_lifestyle
has_lifestyle = stewardship_lifestyle
has_lifestyle = intrigue_lifestyle
has_lifestyle = learning_lifestyle
}
}
has_any_lifestyle_trait_trigger = {
OR = {
has_diplomacy_lifestyle_trait_trigger = yes
has_martial_lifestyle_trait_trigger = yes
has_stewardship_lifestyle_trait_trigger = yes
has_intrigue_lifestyle_trait_trigger = yes
has_learning_lifestyle_trait_trigger = yes
}
}
tier_or_related_liege_tier_equal_trigger = {
OR = {
highest_held_title_tier = $TIER$
AND = {
exists = liege
liege = { highest_held_title_tier = $TIER$ }
OR = {
is_close_family_of = this.liege
is_spouse_of = this.liege
}
}
}
}
tier_or_related_liege_tier_greater_or_equal_trigger = {
OR = {
highest_held_title_tier >= $TIER$
AND = {
exists = liege
liege = { highest_held_title_tier >= $TIER$ }
OR = {
is_close_family_of = this.liege
is_spouse_of = this.liege
}
}
}
}
torture_secret_trigger = {
NOT = { is_known_by = scope:actor }
OR = {
is_blackmailable_secret_trigger = { BLACKMAILER = scope:actor PARTICIPANT = $PARTICIPANT$ }
secret_is_always_interesting_trigger = yes
}
NAND = {
exists = secret_target
secret_target = scope:recipient
}
}
has_interesting_portrait_altering_trait_trigger = {
OR = {
has_trait = scarred
has_trait = blind
has_trait = beauty_bad
has_trait = beauty_good
has_trait = hunchbacked
has_trait = dwarf
has_trait = giant
has_trait = spindly
has_trait = scaly
has_trait = albino
has_trait = one_eyed
}
}
is_dangerous_faction_trigger = {
OR = {
AND = {
exists = faction_leader
faction_leader = { is_ai = no } # For now human factions are always dangerous
}
AND = {
faction_is_type = peasant_faction
months_until_max_discontent <= 12
}
AND = {
NOT = { faction_is_type = peasant_faction }
discontent_per_month > 0
}
}
}
basic_allowed_to_imprison_character_trigger = { #Only to be used in is_shown for imprison interaction and similar
save_temporary_scope_as = allowed_imprisoner
$CHARACTER$ = {
OR = {
target_is_liege_or_above = scope:allowed_imprisoner
is_foreign_court_or_pool_guest_of = scope:allowed_imprisoner
AND = {
# EP3 EVICTION
is_landless_adventurer = yes
reverse_has_opinion_modifier = {
target = scope:allowed_imprisoner
modifier = eviction_ignored_opinion
}
}
}
NOT = {
is_imprisoned_by = scope:allowed_imprisoner
}
}
}
advanced_allowed_to_imprison_character_trigger = {
save_temporary_scope_as = allowed_imprisoner
$CHARACTER$ = {
save_temporary_scope_as = allowed_prisoner
is_imprisoned = no
NOT = { is_at_war_with = scope:allowed_imprisoner }
custom_description = {
text = "character_interactions_imprison_recently_ransomed"
object = scope:allowed_prisoner
NOT = {
has_opinion_modifier = {
target = scope:allowed_imprisoner
modifier = ransomed_from_prison
}
}
}
NOT = { has_strong_hook = scope:allowed_imprisoner }
custom_tooltip = {
text = hostage_travelling_tt
NOT = { exists = var:hostage_travelling_to_warden }
}
trigger_if = {
limit = { is_landless_adventurer = yes }
scope:allowed_imprisoner = { is_landed = yes }
reverse_has_opinion_modifier = {
target = scope:allowed_imprisoner
modifier = eviction_ignored_opinion
}
domicile.domicile_location.county ?= { target_is_de_facto_liege_or_above = scope:allowed_imprisoner.primary_title }
}
}
scope:allowed_imprisoner = {
custom_description = {
text = "character_interactions_imprison_ally_without_reason"
object = scope:allowed_prisoner
OR = {
NOT = { is_allied_to = scope:allowed_prisoner }
has_imprisonment_reason = scope:allowed_prisoner
is_spouse_of = scope:allowed_prisoner
}
}
}
}
allowed_to_imprison_character_trigger = {
# We separate these out so that diarchs can imprison characters they aren't liege over.
advanced_allowed_to_imprison_character_trigger = { CHARACTER = $CHARACTER$ }
basic_allowed_to_imprison_character_trigger = { CHARACTER = $CHARACTER$ }
}
can_be_granted_titles_by = { #This is set up with trigger-ifs to allow for nice tooltip printouts in grant title interaction
save_temporary_scope_as = title_grantee
#Gender check
trigger_if = {
limit = {
is_ruler = no #Rulers can always get additional titles
is_theocratic_lessee = no #Theocratic lessees use other gender checks
NOT = { $RULER$ = { has_government = administrative_government } }
NOT = {
$RULER$.faith = {
has_dominant_ruling_gender = scope:title_grantee
}
}
}
trigger_if = {
limit = {
$RULER$ = { government_allows = state_faith }
}
$RULER$.primary_title.state_faith = {
has_dominant_ruling_gender = scope:title_grantee
}
}
trigger_else = {
$RULER$.faith = {
has_dominant_ruling_gender = scope:title_grantee
}
}
}
trigger_if = {
limit = {
is_ruler = no #Rulers can always get additional titles
is_theocratic_lessee = no #Theocratic lessees use other gender checks
$RULER$ = {
has_government = administrative_government
NOT = { has_realm_law = equal_law }
}
}
trigger_if = {
limit = {
$RULER$ = { has_realm_law = male_only_law }
}
scope:title_grantee = { is_female = no }
}
trigger_if = {
limit = {
$RULER$ = { has_realm_law = female_only_law }
}
scope:title_grantee = { is_female = yes }
}
#trigger_else = { always = yes }
}
trigger_else_if = {
limit = {
is_theocratic_lessee = yes
}
liege = $RULER$
#If this is ever visible anywhere, we need to write a custom desc "Theocratic lessees cannot only be given titles by their ruler"
}
trigger_else = {
always = yes
}
}
can_be_granted_theocratic_titles_by = { #This is set up with trigger-ifs to allow for nice tooltip printouts in grant title interaction
save_temporary_scope_as = title_grantee
#Gender check
trigger_if = {
limit = {
$RULER$.faith = { has_doctrine = doctrine_clerical_gender_female_only }
}
is_female = yes
}
trigger_else_if = {
limit = {
$RULER$.faith = { has_doctrine = doctrine_clerical_gender_male_only }
}
is_male = yes
}
trigger_else = { always = yes }
}
activate_disease_data_tracking_trigger = {
always = no #Should be set to no, unless you're gathering data
}
vassal_contract_can_be_modified_trigger = {
custom_description = {
text = vassal_contract_can_be_modified
vassal_contract_has_modifiable_obligations = yes
vassal_contract_is_blocked_from_modification = no
}
}
has_changed_contract_obligation_trigger = {
trigger_if = {
limit = {
scope:recipient = { government_has_flag = government_is_feudal }
}
custom_description = {
text = "modify_vassal_contract_select_different_obligation_level"
list_size = {
name = changed_obligations
value > 0
}
}
}
trigger_else = {
custom_description = {
text = "modify_non_feudal_vassal_contract_select_different_obligation_level"
list_size = {
name = changed_obligations
value > 0
}
}
}
}
recently_converted_faith_trigger = {
OR = {
has_character_flag = converted_by_heresy_0011_event
has_character_flag = converted_by_heresy_0010_event
has_character_flag = converted_by_forced_conversion_interaction
}
}
can_touch_someone_trigger = {
#This is to check if someone is physically capable and not in risk of disease. Remember to always ask for consent!
NOR = {
has_trait = leper
has_trait = scaly #people with eczema and other skin conditions often got the same treatment as lepers
has_trait = smallpox
has_trait = bubonic_plague
has_trait = measles #people with eczema and other skin conditions often got the same treatment as lepers
#circumstancial
has_trait = incapable
has_trait = wounded
has_trait = maimed
has_trait = typhus
# gout happens mostly in the foot, but as someone with inflammatory arthritis, I hate handshakes when my fingers are aching
has_trait = gout_ridden
}
}
is_spouse_or_romantic_partner_of_root = {
OR = {
has_relation_lover = root
is_consort_of = root
has_relation_soulmate = root
}
}
terrible_sum_of_all_skills_trigger = {
sum_of_all_skills_value <= sum_of_all_skills_threshold_terrible
}
poor_sum_of_all_skills_trigger = {
sum_of_all_skills_value <= sum_of_all_skills_threshold_poor
}
average_sum_of_all_skills_trigger = {
sum_of_all_skills_value <= sum_of_all_skills_threshold_average
}
good_sum_of_all_skills_trigger = {
sum_of_all_skills_value <= sum_of_all_skills_threshold_good
}
excellent_sum_of_all_skills_trigger = {
sum_of_all_skills_value <= sum_of_all_skills_threshold_excellent
}
scarred_trait_activation_1 = {
has_trait_xp = {
trait = scarred
track = scarred
value < 50
}
}
scarred_trait_activation_2 = {
AND = {
has_trait_xp = {
trait = scarred
track = scarred
value >= 50
}
has_trait_xp = {
trait = scarred
track = scarred
value < 100
}
}
}
scarred_trait_activation_3 = {
has_trait_xp = {
trait = scarred
track = scarred
value > 99
}
}
has_purchased_truce_with_char = {
has_variable_list = bought_truce_list
any_in_list = {
variable = bought_truce_list
this = $TARGET$
}
}

View file

@ -1,444 +0,0 @@

#Triggers for Shunned and Criminal Secret Types
# SECRET DEVIANT
secret_deviant_is_valid_trigger = {
$OWNER$ = {
NOT = {
has_trait = deviant
}
}
}
secret_deviant_is_shunned_trigger = {
$OWNER$ = {
OR = {
faith = { has_doctrine_parameter = deviancy_shunned }
any_liege_or_above = { faith = { has_doctrine_parameter = deviancy_shunned } }
}
}
}
secret_deviant_is_criminal_trigger = {
$OWNER$ = {
OR = {
faith = { has_doctrine_parameter = deviancy_illegal }
any_liege_or_above = { faith = { has_doctrine_parameter = deviancy_illegal } }
}
}
}
# SECRET DEVIANT - END
# SECRET HOMOSEXUAL
secret_homosexual_is_valid_trigger = {
$OWNER$ = {
NOT = {
has_trait = sodomite
}
is_male = yes #Only for men since it is localized as Sodomite and also because female homosexuality historically hasn't been "a big deal" in most cultures
}
}
secret_homosexual_is_shunned_trigger = {
$OWNER$ = {
OR = {
faith = { has_doctrine_parameter = homosexuality_shunned }
any_liege_or_above = { faith = { has_doctrine_parameter = homosexuality_shunned } }
}
}
}
secret_homosexual_is_criminal_trigger = {
$OWNER$ = {
OR = {
faith = { has_doctrine_parameter = homosexuality_illegal }
any_liege_or_above = { faith = { has_doctrine_parameter = homosexuality_illegal } }
}
}
}
# SECRET HOMOSEXUAL - END
# SECRET MURDER ATTEMPT
secret_murder_attempt_is_valid_trigger = {
NOT = { $OWNER$ = $TARGET$ } # Murder requires two people
trigger_if = { # If the target is dead, check that the killer isn't the owner since then the attempt isn't really an attempt...
limit = {
$TARGET$ = { is_alive = no }
exists = $TARGET$.killer
}
NOT = {
$TARGET$.killer = $OWNER$
}
}
}
secret_murder_attempt_is_shunned_trigger = {
$TARGET$ = {
save_temporary_scope_as = attempted_murder_target
}
$OWNER$ = {
OR = {
NOT = { exists = liege }
any_liege_or_above = {
NOR = {
this = scope:attempted_murder_target
is_spouse_of = scope:attempted_murder_target
is_close_family_of = scope:attempted_murder_target
}
}
#You are your own liege (independent) or have no liege (pool)
liege = this
}
}
}
secret_murder_attempt_is_criminal_trigger = {
$TARGET$ = {
save_temporary_scope_as = attempted_murder_target
}
$OWNER$ = {
any_liege_or_above = {
NOR = {
this = scope:attempted_murder_target
is_spouse_of = scope:attempted_murder_target
is_close_family_of = scope:attempted_murder_target
}
}
}
}
#SECRET MURDER ATTEMPT - END
# SECRET CANNIBAL
secret_cannibal_is_valid_trigger = {
$OWNER$ = {
NOT = { has_trait = cannibal }
}
}
secret_cannibal_is_shunned_trigger = {
$OWNER$ = { always = no }
}
secret_cannibal_is_criminal_trigger = {
$OWNER$ = {
OR = {
faith = {
NOT = { has_doctrine_parameter = cannibalism_legal }
}
any_liege_or_above = {
faith = {
NOT = { has_doctrine_parameter = cannibalism_legal }
}
}
}
}
}
# SECRET CANNIBAL - END
# SECRET LOVER
secret_lover_is_valid_trigger = {
$TARGET$ = {
save_temporary_scope_as = target
}
$OWNER$ = {
has_relation_lover = scope:target
NOT = { is_consort_of = scope:target }
}
}
#Placed ahead of the Shunned trigger, so that the shunned trigger can refer back to this
secret_lover_is_criminal_trigger = {
$TARGET$ = { save_temporary_scope_as = criminal_partner } #Different name to the scope in the shunned trigger, to prevent issues
$OWNER$ = {
OR = {
#Female adultery criminal
AND = {
is_female = yes
OR = {
faith = { has_doctrine_parameter = adultery_female_crime }
any_liege_or_above = { faith = { has_doctrine_parameter = adultery_female_crime } }
}
}
#Male adultery criminal
AND = {
is_male = yes
OR = {
faith = { has_doctrine_parameter = adultery_male_crime }
any_liege_or_above = { faith = { has_doctrine_parameter = adultery_male_crime } }
}
}
#Sodomy criminal
AND = {
is_male = yes
scope:criminal_partner = { is_male = yes }
OR = {
faith = { has_doctrine_parameter = homosexuality_illegal }
any_liege_or_above = { faith = { has_doctrine_parameter = homosexuality_illegal } }
}
}
}
}
}
secret_lover_is_shunned_trigger = {
$TARGET$ = { save_temporary_scope_as = partner }
$OWNER$ = {
save_temporary_scope_as = lover_owner
OR = {
#Female adultery shunned
AND = {
is_female = yes
OR = {
faith = { has_doctrine_parameter = adultery_female_shunned }
any_liege_or_above = { faith = { has_doctrine_parameter = adultery_female_shunned } }
}
}
#Male adultery shunned
AND = {
is_male = yes
OR = {
faith = { has_doctrine_parameter = adultery_male_shunned }
any_liege_or_above = { faith = { has_doctrine_parameter = adultery_male_shunned } }
}
}
#Sodomy shunned
AND = {
is_male = yes
scope:partner = { is_male = yes }
OR = {
faith = { has_doctrine_parameter = homosexuality_shunned }
any_liege_or_above = { faith = { has_doctrine_parameter = homosexuality_shunned } }
}
}
#Incest is shunned
relation_with_character_is_incestuous_in_faith_trigger = { CHARACTER = scope:partner FAITH = scope:lover_owner.faith }
any_liege_or_above = {
save_temporary_scope_as = liege_or_above
scope:lover_owner = {
relation_with_character_is_incestuous_in_faith_trigger = { CHARACTER = scope:partner FAITH = scope:liege_or_above.faith }
}
}
}
#And it doesn't fulfill the criminal conditions
NOT = {
secret_lover_is_criminal_trigger = {
OWNER = scope:lover_owner
TARGET = scope:partner
}
}
}
}
# SECRET LOVER - END
# SECRET MURDER
secret_murder_is_trivial_trigger = {
#Is the murderer important enough to get away with it?
$OWNER$ = { highest_held_title_tier >= tier_county }
#Is it a murder that people might care about?
OR = {
#Independent rulers have little fear in terms of legal consequences for their actions.
$OWNER$ = { is_independent_ruler = yes }
#Otherwise, certain victims are just not worth a strong hook.
$TARGET$ = {
NOR = {
#If landless or a baron, must have no important landed family.
AND = {
OR = {
is_ruler = no
highest_held_title_tier = tier_barony
}
any_close_or_extended_family_member = { highest_held_title_tier >= $OWNER$.primary_title.tier }
}
#Otherwise, characters who are two tiers lower than you arguably aren't nearly as much of a concern (again, providing they lack important family).
AND = {
tier_difference = {
target = $OWNER$
value >= -1
}
#Be a bit harsher with this, as these characters are the most likely to be relatives of the $OWNER$'s piers.
any_close_or_extended_family_member = {
tier_difference = {
target = $OWNER$
value >= -1
}
}
}
}
}
}
}
secret_murder_is_valid_trigger = {
$TARGET$ = {
is_alive = no
killer = $OWNER$
}
}
#Murder attempts again unimportant characters are considered less serious.
secret_murder_is_shunned_trigger = {
$OWNER$ = {
secret_murder_is_trivial_trigger = {
OWNER = $OWNER$
TARGET = $TARGET$
}
}
}
#If any of the get-out-if-imprisonment free clauses don't apply, then the murder is criminal
secret_murder_is_criminal_trigger = {
$OWNER$ = {
NOT = {
$OWNER$ = {
secret_murder_is_trivial_trigger = {
OWNER = $OWNER$
TARGET = $TARGET$
}
}
}
}
}
# SECRET MURDER - END
# SECRET NON-BELIEVER
secret_non_believer_is_valid_trigger = {
$OWNER$ = {
NOT = {
has_character_modifier = known_non_believer
}
}
}
secret_non_believer_is_shunned_trigger = {
$OWNER$ = { is_clergy = no }
}
secret_non_believer_is_criminal_trigger = {
$OWNER$ = { is_clergy = yes }
}
# SECRET NON-BELIEVER - END
# SECRET INCEST
secret_incest_is_valid_trigger = {
$OWNER$ = {
NOT = {
has_trait = incestuous
}
}
}
secret_incest_is_shunned_trigger = {
$OWNER$ = {
OR = {
faith = { NOT = { has_doctrine_parameter = allows_unrestricted_marriage } }
any_liege_or_above = { faith = { NOT = { has_doctrine_parameter = allows_unrestricted_marriage } } }
}
}
}
secret_incest_is_criminal_trigger = {
$OWNER$ = { always = no }
}
# SECRET INCEST - END
# SECRET WITCH
secret_witch_is_valid_trigger = {
$OWNER$ = {
NOT = {
has_trait = witch
}
}
}
secret_witch_is_shunned_trigger = {
$OWNER$ = {
OR = {
faith = { has_doctrine_parameter = witchcraft_shunned }
any_liege_or_above = { faith = { has_doctrine_parameter = witchcraft_shunned } }
}
}
}
secret_witch_is_criminal_trigger = {
$OWNER$ = {
OR = {
faith = { has_doctrine_parameter = witchcraft_illegal }
any_liege_or_above = { faith = { has_doctrine_parameter = witchcraft_illegal } }
}
}
}
# SECRET WITCH - END
# SECRET CRYPTO-RELIGIONIST
# Don't add the crypto-religionist trait if they practice that faith in the open
secret_crypto_religionist_is_valid_trigger = {
$OWNER$ = {
AND = {
exists = secret_faith
NOT = { secret_faith = $OWNER$.faith }
}
}
}
# Same as secret non-believer
secret_crypto_religionist_is_shunned_trigger = {
$OWNER$ = { is_clergy = no }
}
secret_crypto_religionist_is_criminal_trigger = {
$OWNER$ = { is_clergy = yes }
}
# SECRET CRYPTO-RELIGIONIST - END
# SECRET EMBEZZLER
secret_embezzler_is_valid_trigger = {
# Can't embezzle from yourself.
## Well, you can.
### That's honestly even a fairly common white collar crime.
#### You just can't in-game.
##### One rule for the wealthy, another for the rest of us [sigh].
NOT = { $OWNER$ = $TARGET$ }
}
# Embezzler is only criminal if the target is your liege _and_ the amount is very high.
secret_embezzler_is_criminal_trigger = {
$OWNER$ = {
any_secret = {
secret_type = secret_embezzler
secret_target ?= $OWNER$.liege
var:embezzlement_stake >= {
value = $OWNER$.monumental_gold_value
multiply = 1.5
}
}
}
}
# SECRET EMBEZZLER - END
# SECRET COUP_LEADER
secret_coup_plotter_is_valid_trigger = {
# Can't coup yourself
NOT = { $OWNER$ = $TARGET$ }
# Both of y'all must still be admin
$OWNER$ = { has_government = administrative_government }
$TARGET$ = { has_government = administrative_government }
}
secret_coup_plotter_is_criminal_trigger = {
always = yes
}
# SECRET COUP_LEADER - END
secret_raid_estate_is_valid_trigger = {
NOT = { $OWNER$ = $TARGET$ }
}
secret_raid_estate_is_criminal_trigger = {
NOT = {
$OWNER$.var:raid_estate_permission ?= $TARGET$.house
}
}

View file

@ -1,56 +0,0 @@
#Special succession types
#If adding new types to the decision, use a trigger, otherwise they may break if the culture is split.
special_succession_witengamot_trigger = {
culture = { has_cultural_parameter = witenagemot_succession_enabled }
}
special_succession_thing_trigger = {
culture = { has_cultural_parameter = scandinavian_elective_enabled }
}
special_succession_tanistry_trigger = {
culture = {
OR = {
has_cultural_pillar = heritage_brythonic
has_cultural_pillar = heritage_goidelic
}
}
}
special_succession_jirga_trigger = {
culture = { has_cultural_parameter = tribal_elective_enabled }
}
historical_succession_access_single_heir_succession_law_trigger = {
OR = {
has_title = title:k_austria
has_title = title:e_roman_empire
has_title = title:e_byzantium
AND = {
has_title = title:e_france
is_target_in_global_variable_list = {
name = unavailable_unique_decisions
target = flag:flag_reformed_carolingian_empire
}
}
#Add any subsequent exceptions here.
}
NOT = { has_government = administrative_government }
}
historical_succession_access_single_heir_succession_law_youngest_trigger = {
NOT = { has_government = administrative_government }
OR = {
#has_title = title:e_byzantium
#Add any subsequent exceptions here.
}
}
historical_succession_access_single_heir_dynasty_house_trigger = {
NOT = { has_government = administrative_government }
AND = {
has_title = title:d_bohemia
culture = { has_innovation = innovation_table_of_princes }
}
}

View file

@ -1,83 +0,0 @@

### Vassal stance trigger list
# has_same_vassal_stance_as_trigger
has_same_vassal_stance_as_trigger = {
is_independent_ruler = no
save_temporary_scope_as = vassal_temp
$COMPARE$ = {
is_independent_ruler = no
save_temporary_scope_as = compare_temp
}
scope:compare_temp = {
switch = {
trigger = has_vassal_stance
courtly = { scope:vassal_temp = { has_vassal_stance = courtly } }
glory_hound = { scope:vassal_temp = { has_vassal_stance = glory_hound } }
parochial = { scope:vassal_temp = { has_vassal_stance = parochial } }
zealot = { scope:vassal_temp = { has_vassal_stance = zealot } }
minority = { scope:vassal_temp = { has_vassal_stance = minority } }
barons_and_minor_landholders = { scope:vassal_temp = { has_vassal_stance = barons_and_minor_landholders } }
}
}
}
vassal_is_valid_and_follows_directive_trigger = {
is_independent_ruler = no
is_landed = yes
highest_held_title_tier >= tier_county
is_ai = yes
vassal_follows_directive_valid_trigger = { VASSAL = $VASSAL$ LIEGE = $LIEGE$ }
vassal_follows_directive_trigger = { VASSAL = $VASSAL$ LIEGE = $LIEGE$ }
}
vassal_follows_directive_valid_trigger = {
$VASSAL$ = { save_temporary_scope_as = directive_vassal }
$LIEGE$ = { save_temporary_scope_as = directive_liege }
scope:directive_vassal = {
trigger_if = {
limit = {
scope:directive_liege = { has_government = administrative_government }
}
is_vassal_of = scope:directive_liege
}
trigger_else = {
is_vassal_of = scope:directive_liege
}
NOT = { has_relation_rival = scope:directive_liege }
NOT = { is_at_war_with = scope:directive_liege }
NOT = { has_trait = disloyal }
}
}
vassal_follows_directive_trigger = {
$VASSAL$ = { save_temporary_scope_as = directive_vassal }
$LIEGE$ = { save_temporary_scope_as = directive_liege }
scope:directive_vassal = {
OR = {
trigger_if = {
limit = {
has_dlc_feature = roads_to_power
}
custom_tooltip = {
text = has_admin_gov
has_government = administrative_government
}
}
opinion = {
value >= 50
target = scope:directive_liege
}
has_trait = trusting
has_trait = loyal
scope:directive_liege = { has_relation_friend = scope:directive_vassal }
scope:directive_liege = { has_relation_lover = scope:directive_vassal }
scope:directive_liege = { has_strong_hook = scope:directive_vassal }
scope:directive_liege = { has_perk = absolute_control_perk }
scope:directive_liege = { has_perk = honored_to_serve_perk }
scope:directive_liege = { has_realm_law = crown_authority_3 }
scope:directive_liege = { legitimacy_level = 5 }
}
}
}

View file

@ -1,869 +0,0 @@

###TRIGGER LIST
#prisoner_gives_warscore_for_trigger - takes WAR and CHARACTER (primary enemy or one of their top 3 player heirs)
at_war_with_any_coreligionist_trigger = {
any_character_war = {
casus_belli = {
OR = {
primary_attacker = {
is_at_war_with = root
faith = root.faith
}
primary_defender = {
is_at_war_with = root
faith = root.faith
}
}
}
}
}
at_war_with_any_non_coreligionist_trigger = {
any_character_war = {
casus_belli = {
OR = {
primary_attacker = {
is_at_war_with = root
NOT = { faith = root.faith }
}
primary_defender = {
is_at_war_with = root
NOT = { faith = root.faith }
}
}
}
}
}
at_war_only_with_coreligionists_trigger = {
is_at_war = yes
NOT = {
any_character_war = {
casus_belli = {
OR = {
primary_attacker = {
is_at_war_with = root
NOT = { faith = root.faith }
}
primary_defender = {
is_at_war_with = root
NOT = { faith = root.faith }
}
}
}
}
}
}
joiner_not_already_in_another_war_with_any_target_war_participants_trigger = {
###Triggers to make sure the recipient doesn't end up in a war with someone they already have a war with###
# $WARRIOR$ — the already-warring character, actor in call / recipient in offer
# $JOINER$ — the ally, recipient in call / actor in offer
#Set the primary enemy
trigger_if = {
limit = { scope:target = { primary_attacker = $WARRIOR$ } }
scope:target = { primary_defender = { save_temporary_scope_as = primary_enemy } }
}
trigger_else = {
scope:target = { primary_attacker = { save_temporary_scope_as = primary_enemy } }
}
$JOINER$ = {
#recipient can't already be at war with the primary_enemy
custom_description = {
text = "is_already_war_enemy_of_primary_enemy"
subject = $JOINER$
object = scope:primary_enemy
NOT = {
any_war_enemy = { this = scope:primary_enemy }
}
}
#recipient can't already be at war with another enemy in target war
custom_description = {
text = "is_war_enemy_with_another_target_war_enemy"
subject = $JOINER$
NOT = {
any_war_enemy = {
NOT = { this = scope:primary_enemy } #Already handled above
OR = {
AND = {
scope:target = { primary_defender = scope:primary_enemy }
is_defender_in_war = scope:target
}
AND = {
scope:target = { primary_attacker = scope:primary_enemy }
is_attacker_in_war = scope:target
}
}
}
}
}
#recipient can't have a war enemy who is on actor's side in this war
custom_description = {
text = "is_war_enemy_with_my_war_ally"
subject = $JOINER$
NOT = {
any_war_enemy = {
OR = {
AND = {
scope:target = { primary_defender = $WARRIOR$ }
is_defender_in_war = scope:target
}
AND = {
scope:target = { primary_attacker = $WARRIOR$ }
is_attacker_in_war = scope:target
}
}
}
}
}
#recipient can't be on the same side in another war with primary_enemy
custom_description = {
text = "is_war_ally_of_primary_enemy"
subject = $JOINER$
object = scope:primary_enemy
NOT = {
any_character_war = {
OR = {
AND = {
is_defender = $JOINER$
any_war_defender = { this = scope:primary_enemy }
}
AND = {
is_attacker = $JOINER$
any_war_attacker = { this = scope:primary_enemy }
}
}
}
}
}
#recipient can't be on the same side in another war with another enemy in the target war
custom_description = {
text = "is_war_ally_of_another_target_enemy"
subject = $JOINER$
NOT = {
any_war_ally = {
NOT = { this = scope:primary_enemy } #Already handled above
OR = {
AND = {
scope:target = { primary_defender = scope:primary_enemy }
is_defender_in_war = scope:target
}
AND = {
scope:target = { primary_attacker = scope:primary_enemy }
is_attacker_in_war = scope:target
}
}
}
}
}
}
}
can_potentially_call_ally_trigger = {
# Can never call vassals to your own wars (their obligations are met via taxes and levies!)
custom_description = {
text = cannot_call_vassal_to_war
$JOINER$ = {
trigger_if = {
limit = {
# Diarchs can join against other vassals.
NOT = { this ?= $WARRIOR$.diarch }
}
NOT = {
target_is_liege_or_above = $WARRIOR$
}
}
}
}
# Can never call your liege to your own wars (they protect you only from foreign invaders, by being the war target instead of you)
custom_description = {
text = cannot_call_liege_to_war
$JOINER$ = {
NOT = {
target_is_vassal_or_below = $WARRIOR$
}
}
}
}
war_declarer_needs_hook_on_liege = {
scope:actor = {
trigger_if = {
limit = {
is_independent_ruler = no
liege = scope:recipient.liege
NOT = { liege = scope:recipient }
NAND = {
has_government = administrative_government
liege = { has_government = administrative_government }
}
liege = { has_realm_law_flag = vassal_internal_wars_banned }
NOT = {
vassal_contract_has_flag = vassal_contract_war_override
}
}
always = yes
}
trigger_else_if = {
limit = {
is_independent_ruler = no
NOT = { liege = scope:recipient }
NAND = {
has_government = administrative_government
liege = { has_government = administrative_government }
}
liege = { has_realm_law_flag = vassal_all_wars_banned }
NOT = {
vassal_contract_has_flag = vassal_contract_war_override
}
}
always = yes
}
trigger_else = {
always = no
}
}
}
any_liege_or_above_is_participant_trigger = {
save_temporary_scope_as = trigger_war
$CHARACTER$ = {
any_liege_or_above = {
scope:trigger_war = { is_participant = prev }
}
}
}
can_use_conquest_cbs_trigger = {
OR = {
government_has_flag = government_is_tribal
government_has_flag = government_is_clan
faith = { has_doctrine_parameter = conquest_cb_enabled }
culture = { has_cultural_parameter = can_use_conquest_cbs }
}
}
can_be_warrior_trigger = {
is_adult = yes
is_imprisoned = no
NOT = { has_trait = incapable }
OR = {
can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = $ARMY_OWNER$ }
AND = {
$ARMY_OWNER$.culture = {
has_cultural_parameter = high_prowess_ignores_knight_restrictions
}
prowess >= 10
}
}
}
can_be_knight_trigger = {
is_hostage = no
trigger_if = { # Admin governors cannot be knights
limit = {
$ARMY_OWNER$ = { has_government = administrative_government }
is_courtier = no
}
primary_title ?= {
tier < tier_duchy
trigger_if = {
limit = { is_noble_family_title = yes }
always = no
}
}
}
trigger_if = {
limit = {
$ARMY_OWNER$.culture = {
has_cultural_parameter = minimum_prowess_for_knights
}
}
prowess >= 12
}
can_be_warrior_trigger = { ARMY_OWNER = $ARMY_OWNER$ }
trigger_if = {
limit = {
OR = {
has_trait = devoted
is_clergy = yes
}
}
OR = {
faith = { has_doctrine_parameter = clergy_can_fight }
culture = { has_cultural_parameter = culture_clergy_can_fight }
AND = {
$ARMY_OWNER$.culture = {
has_cultural_parameter = high_prowess_ignores_knight_restrictions
}
prowess >= 10
}
}
}
OR = {
AND = {
$ARMY_OWNER$.culture = {
has_cultural_parameter = high_prowess_ignores_knight_restrictions
}
prowess >= 10
}
has_trait = order_member # Order Members will fight for their faith even if their faith says no
NOR = {
has_trait = blind
has_court_position = master_assassin_court_position #FP3 addition
}
}
trigger_if = {
limit = {
exists = liege.diarch
}
NOT = { this = liege.diarch }
}
is_ai = yes
}
can_be_commander_basic_trigger = {
is_alive = yes
is_adult = yes
is_hostage = no
NOR = {
has_trait = incapable
AND = {
OR = {
has_trait = devoted
is_clergy = yes
}
NOR = {
has_trait = order_member # Order Members will fight for their faith even if their faith says no
faith = { has_doctrine_parameter = clergy_can_fight }
culture = { has_cultural_parameter = culture_clergy_can_fight }
}
}
}
OR = { # You can always lead your own armies
this = $ARMY_OWNER$
can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = $ARMY_OWNER$ }
}
trigger_if = {
limit = { $ARMY_OWNER$ = { is_ai = yes } }
is_ai = yes
}
}
can_be_commander_now_trigger = {
can_be_commander_basic_trigger = { ARMY_OWNER = $ARMY_OWNER$ }
is_imprisoned = no
custom_description = {
text = ALREADY_IN_ACTIVITY
NOR = {
exists = involved_activity
has_variable = homage_liege_scope
has_character_flag = meditation_character_flag
has_character_flag = petition_liege_character_flag
has_character_flag = holding_court_character_flag
is_being_visited_on_tour_strict = yes
}
}
# Must not be currently coming from or going somewhere
is_travelling = no
}
get_valid_commander_list_trigger = {
any_vassal = {
add_to_temporary_list = temp$LIST$
}
any_courtier = {
add_to_temporary_list = temp$LIST$
}
any_in_list = {
list = temp$LIST$
count = all
can_be_commander_now_trigger = { ARMY_OWNER = scope:army_owner }
add_to_temporary_list = $LIST$
}
}
prisoner_gives_warscore_for_trigger = {
save_temporary_scope_as = war_prisoner
#Character getting war score is primary defender
trigger_if = {
limit = { $WAR$.primary_defender = $CHARACTER$ }
$WAR$.primary_attacker = {
OR = {
this = scope:war_prisoner
#player_heir_position = {
#target = scope:war_prisoner
#value <= 3
#}
}
}
}
#Character getting war score is primary attacker
trigger_else_if = {
limit = { $WAR$ = { primary_attacker = $CHARACTER$ } }
$WAR$.primary_defender = {
OR = {
this = scope:war_prisoner
#player_heir_position = {
#target = scope:war_prisoner
#value <= 3
#}
}
}
}
trigger_else = {
always = no
}
}
using_non_ghw_holy_war_cb_trigger = {
OR = {
using_cb = minor_religious_war
using_cb = religious_war
using_cb = major_religious_war
}
}
using_holy_war_cb_trigger = {
OR = {
using_non_ghw_holy_war_cb_trigger = yes
using_cb = undirected_great_holy_war
using_cb = directed_great_holy_war
}
}
using_de_jure_cb_trigger = {
OR = {
using_cb = claim_cb
using_cb = de_jure_cb
using_cb = individual_county_de_jure_cb
using_cb = individual_duchy_de_jure_cb
using_cb = imperial_reconquest_cb
using_cb = dismantle_holy_pretender_cb
using_cb = dismantle_byz_pretender_cb
using_cb = norman_conquest_cb
using_cb = norwegian_invasion_cb
}
}
using_conquest_cb_trigger = {
OR = {
using_cb = county_conquest_cb
using_cb = duchy_conquest_cb
using_cb = ducal_conquest_cb
using_cb = ireland_laudabiliter_conquest_cb
using_cb = mongol_invasion_war
}
}
using_hierarchical_cb_trigger = {
OR = {
using_cb = tribal_subjugation_cb
using_cb = vassalization_cb
}
}
# In case is_civil_war is causing issues.
using_civil_war_cb_trigger = {
OR = {
using_cb = independence_faction_war
using_cb = liberty_faction_war
using_cb = populist_war
using_cb = claimant_faction_war
using_cb = depose_war
using_cb = refused_liege_demand_war
using_cb = nation_fracturing_faction_war
using_cb = peasant_war
}
}
special_invasion_cb_seize_land_in_region_trigger = {
OR = {
AND = { # For Duchies
tier = tier_duchy
OR = {
# Title is in the specified region
capital_vassal = {
title_province = {
geographical_region = $TARGET_REGION$
}
}
# Title is owned by the current holder of the invasion's target kingdom
AND = {
exists = holder
holder = $TARGET_KINGDOM$.holder
kingdom = $TARGET_KINGDOM$
}
}
}
AND = { # For Counties
tier = tier_county
OR = {
# Title is in the specified region
title_province = {
geographical_region = $TARGET_REGION$
}
AND = {
exists = holder
holder = $TARGET_KINGDOM$.holder
kingdom = $TARGET_KINGDOM$
}
}
trigger_if = {
# If our de jure liege is an existing duchy that would have been siezed in the duchy step, do not transfer the county (it has already been transferred).
limit = {
exists = de_jure_liege
de_jure_liege = {
exists = holder
OR = {
capital_vassal = {
title_province = {
geographical_region = $TARGET_REGION$
}
}
AND = {
exists = holder
holder = $TARGET_KINGDOM$.holder
kingdom = $TARGET_KINGDOM$
}
}
}
}
always = no
}
}
}
}
can_join_war_liege_vassal_check_trigger = {
custom_description = {
text = "basic_ally_can_join_because_liege_or_vassals"
subject = $JOINER$
# actor is defender, attackers do not include recipient's liege or vassals
trigger_if = {
limit = {
$WARRIOR$ = { is_defender_in_war = scope:target }
}
$JOINER$ = {
trigger_if = {
limit = {
# Diarchs can join against other vassals.
NOT = { this ?= $WARRIOR$.diarch }
}
NOR = {
any_liege_or_above = {
is_attacker_in_war = scope:target
}
any_vassal_or_below = {
is_attacker_in_war = scope:target
}
}
}
}
}
# actor is attacker, defenders do not include recipient's liege or vassals
trigger_else_if = {
limit = {
$WARRIOR$ = { is_attacker_in_war = scope:target }
}
$JOINER$ = {
NOR = {
any_liege_or_above = {
is_defender_in_war = scope:target
}
any_vassal_or_below = {
is_defender_in_war = scope:target
}
}
}
}
# it's fine, whatever
trigger_else = {
always = yes
}
}
}
pressing_claim_of_character_trigger = {
custom_description = {
subject = this
object = $CHARACTER$
text = pressing_claim_of_character_trigger_text
save_temporary_scope_as = claim_presser
any_character_war = {
primary_attacker = scope:claim_presser
exists = claimant
claimant = $CHARACTER$
}
}
}
is_religious_war = {
OR = {
using_cb = minor_religious_war
using_cb = religious_war
using_cb = major_religious_war
using_cb = excommunication_war
using_cb = undirected_great_holy_war
using_cb = directed_great_holy_war
}
}
conquest_cb_holder_under_target_can_be_vassalized = {
# If there is no holder they can't be vassalized!
holder ?= {
# We can only vassalize characters of a lower tier than us.
highest_held_title_tier < scope:attacker.highest_held_title_tier
# We can't vassalize Governors
NOT = { government_has_flag = government_is_administrative }
# Only (sub)vassals of the defender can be considered for transfer (no poaching vassals from 3rd parties without fighting them!)
target_is_liege_or_above = scope:defender
# *All* of a character's subrealm must be within the target area. If we're attacking for Jerusalem, we don't want to also be stealing parts of Egypt, Syria, etc.
any_sub_realm_county = {
count = all
target_is_de_jure_liege_or_above = scope:target_title
}
}
}
religious_cb_holder_under_target_can_be_vassalized = {
conquest_cb_holder_under_target_can_be_vassalized = yes
# Religious Tolerance Check
scope:attacker.faith = {
OR = {
# For all Faiths, if the attacker views this vassal's faith more favorably than the defender does, they are 'liberated' and become vassals under the attacker.
# For example, if Catholics are crusading against Ash'aris(viewed as Evil), any Messalian vassals (viewed as Hostile) will become vassals under the Catholic attacker.
faith_hostility_level_comparison = {
prev.holder.faith < scope:defender.faith
}
# Pluralist faiths always attempt to preserve vassals if possible, even if the vassal follows an Evil faith.
has_doctrine_parameter = pluralism_pluralistic_holy_wars_preserve_vassals
}
}
}
desirable_for_capture_trigger = {
OR = {
is_playable_character = yes
any_parent = { always = yes }
any_spouse = { is_playable_character = yes }
any_close_family_member = { is_playable_character = yes }
diplomacy >= very_high_skill_rating
martial >= very_high_skill_rating
stewardship >= very_high_skill_rating
intrigue >= very_high_skill_rating
learning >= very_high_skill_rating
has_trait = lifestyle_physician
has_trait = lifestyle_mystic
}
}
can_use_viking_invasion_cbs_trigger = {
OR = {
# Vanilla behaviour.
AND = {
has_fp1_dlc_trigger = no
can_use_viking_invasion_cbs_dlc_trigger = yes
}
# DLC behaviour..
AND = {
has_fp1_dlc_trigger = yes
OR = {
#Players are under no restrictions.
AND = {
is_ai = no
can_use_viking_invasion_cbs_dlc_trigger = yes
}
#If the host has fp1, then we want Scandis to beat each other up and export the losers overseas, not form huge overseas empires themselves.
AND = {
can_use_viking_invasion_cbs_dlc_trigger = yes
top_liege = {
any_realm_county = {
count = all
title_province = {
NOT = { geographical_region = world_europe_north }
}
}
}
}
}
}
}
}
can_use_viking_invasion_cbs_dlc_trigger = {
faith = { has_doctrine = tenet_warmonger }
culture = { has_innovation = innovation_longboats }
any_sub_realm_county = { is_coastal_county = yes }
trigger_if = {
limit = { is_ai = yes }
prestige >= 75
OR = {
is_independent_ruler = yes
primary_title.tier >= tier_kingdom
}
NOT = {
any_liege_or_above = {
NOT = {
faith = { has_doctrine = tenet_warmonger }
}
}
}
}
}
coastal_or_neighboring_county_trigger = {
OR = {
is_coastal_county = yes
any_neighboring_county = {
holder = {
target_is_same_character_or_above = $CHARACTER$
}
}
}
}
# Non-vikings will for the AI just assert it's legal, as the target titles should already have fallen back to only allowing land and sea borders
neighboring_county_or_viking_conquest_trigger = {
OR = {
trigger_if = {
limit = {
$CHARACTER$ = {
can_use_viking_invasion_cbs_trigger = yes
}
}
is_coastal_county = yes
OR = {
$CHARACTER$ = { is_ai = no }
is_neighbor_to_realm = $CHARACTER$
$CHARACTER$ = {
NOT = {
any_sub_realm_title = {
tier = tier_county
NOT = {
is_connected_to = {
target = $CHARACTER$.capital_province.county
}
}
}
}
}
}
}
trigger_else = {
$CHARACTER$ = { is_ai = no }
}
any_neighboring_county = {
holder = {
target_is_same_character_or_above = $CHARACTER$
}
}
}
}
valid_struggle_cb_target_trigger = {
any_neighboring_county = {
holder = { target_is_same_character_or_above = $CHARACTER$ }
}
}
prisoners_of_war_trigger = {
OR = {
scope:defender = {
any_prisoner = {
OR = {
this = scope:war.primary_attacker
scope:war.primary_attacker.primary_title = {
place_in_line_of_succession = {
target = prev
value <= 3
}
}
}
}
}
#Prisoners of attackers
scope:attacker = {
any_prisoner = {
OR = {
this = scope:war.primary_defender
scope:war.primary_defender.primary_title = {
place_in_line_of_succession = {
target = prev
value <= 3
}
}
}
}
}
}
}
# Used for checking if a captured combatant is worth war-score.
character_is_potential_valuable_prisoner = {
OR = {
this = scope:primary_siege_attacker
this = scope:primary_siege_defender
is_heir_of = scope:primary_siege_attacker
is_heir_of = scope:primary_siege_defender
}
}
religious_war_vassals_constraints = {
trigger_if = {
limit = {
scope:attacker = { is_independent_ruler = no }
}
scope:attacker = {
NOT = { character_is_land_realm_neighbor = scope:defender }
}
scope:defender = { is_independent_ruler = yes }
}
trigger_else = {
always = no
}
}
feudal_clan_tribal_conquest_constraints = {
OR = {
AND = {
tier = tier_county
any_county_province = {
has_holding_type = tribal_holding
}
}
AND = {
tier > tier_county
any_in_de_jure_hierarchy = {
tier = tier_county
any_county_province = {
has_holding_type = tribal_holding
}
}
}
}
scope:attacker = {
NOT = { government_has_flag = government_is_tribal }
gold < 200
any_sub_realm_county = {
any_county_province = {
has_holding_type = tribal_holding
}
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -1,57 +0,0 @@
settlement_issue_valid_to_continue_default_trigger = {
OR = {
task_contract_location.province_owner = task_contract_taker
task_contract_location.province_owner.top_liege = task_contract_taker
}
task_contract_employer = {
is_alive = yes
OR = {
liege_or_court_owner = root.task_contract_taker
employer = root.task_contract_taker
}
}
}
settlement_issue_valid_to_keep_default_trigger = {
custom_tooltip = {
text = migration_contract_county_ownership_text
OR = {
task_contract_location.province_owner = task_contract_taker
task_contract_location.province_owner.liege = task_contract_taker
task_contract_location.province_owner.top_liege = task_contract_taker
}
}
custom_tooltip = {
text = migration_contract_county_text
task_contract_location.county = { county_control < 90 }
}
}
settlement_issue_valid_to_create_default_trigger = {
any_knight = {
count >= 1
}
any_held_county = {
is_landless_type_title = no
exists = title_province
county_control < 90
NOT = { has_county_modifier = ongoing_settlement_contract }
}
}
mpo_settlement_issue_trigger = {
any_knight = {
count >= 1
}
any_held_county = {
is_landless_type_title = no
exists = title_province
county_control < 90
NOT = { has_county_modifier = ongoing_settlement_contract }
}
NOT = {
any_task_contract = {
has_task_contract_type = nomadic_migration_contract_$NUMBER$
}
}
}