664 lines
16 KiB
Text
664 lines
16 KiB
Text
is_available_for_activity_trigger = {
|
|
NOT = { exists = involved_activity }
|
|
is_adult = yes
|
|
OR = {
|
|
is_ai = no
|
|
is_busy_in_events_unlocalised = no
|
|
}
|
|
is_at_war = no
|
|
is_imprisoned = no
|
|
is_healthy = yes
|
|
NOR = {
|
|
exists = var:booked_for_a_party
|
|
exists = var:engaged_in_single_combat
|
|
}
|
|
}
|
|
|
|
is_available_for_child_activity_trigger = {
|
|
NOT = { exists = involved_activity }
|
|
is_adult = no
|
|
age >= 4
|
|
age < less_than_two_years_to_adulthood_value #To avoid being away when Coming of Age-event triggers
|
|
OR = {
|
|
is_ai = no
|
|
is_busy_in_events_unlocalised = no
|
|
}
|
|
is_at_war = no
|
|
is_imprisoned = no
|
|
is_hostage = no
|
|
is_healthy = yes
|
|
NOR = {
|
|
exists = var:hostage_travelling_to_warden
|
|
exists = var:ward_travelling_to_guardian
|
|
}
|
|
}
|
|
|
|
is_available_in_activity_trigger = {
|
|
exists = involved_activity
|
|
is_adult = yes
|
|
OR = {
|
|
is_ai = no
|
|
is_busy_in_events_unlocalised = no
|
|
}
|
|
is_at_war = no
|
|
is_imprisoned = no
|
|
is_healthy = yes
|
|
}
|
|
|
|
### Witch Ritual
|
|
activity_witch_ritual_valid_trigger = {
|
|
exists = house
|
|
house = {
|
|
has_house_modifier = witch_coven
|
|
any_house_member = {
|
|
NOT = { this = root }
|
|
is_witch_known_by_trigger = { CHARACTER = root }
|
|
}
|
|
}
|
|
}
|
|
|
|
### Petition Liege triggers
|
|
|
|
# Council Seat
|
|
petition_liege_council_seat_liege_trigger = {
|
|
liege ?= {
|
|
OR = {
|
|
cp:councillor_chancellor ?= {
|
|
NOT = {
|
|
is_blocked_from_being_fired_from_council_trigger = { COURT_OWNER = root.liege }
|
|
}
|
|
}
|
|
cp:councillor_marshal ?= {
|
|
NOT = {
|
|
is_blocked_from_being_fired_from_council_trigger = { COURT_OWNER = root.liege }
|
|
}
|
|
}
|
|
cp:councillor_steward ?= {
|
|
NOT = {
|
|
is_blocked_from_being_fired_from_council_trigger = { COURT_OWNER = root.liege }
|
|
}
|
|
}
|
|
cp:councillor_spymaster ?= {
|
|
NOT = {
|
|
is_blocked_from_being_fired_from_council_trigger = { COURT_OWNER = root.liege }
|
|
}
|
|
}
|
|
trigger_if = {
|
|
limit = { root.faith = root.liege.faith }
|
|
root.faith = { has_doctrine = doctrine_clerical_succession_temporal_appointment }
|
|
cp:councillor_court_chaplain ?= {
|
|
NOT = {
|
|
is_blocked_from_being_fired_from_council_trigger = { COURT_OWNER = root.liege }
|
|
}
|
|
}
|
|
}
|
|
NOT = { exists = cp:councillor_chancellor }
|
|
NOT = { exists = cp:councillor_marshal }
|
|
NOT = { exists = cp:councillor_steward }
|
|
NOT = { exists = cp:councillor_spymaster }
|
|
trigger_if = {
|
|
limit = { root.faith = root.liege.faith }
|
|
root.faith = { has_doctrine = doctrine_clerical_succession_temporal_appointment }
|
|
NOT = { exists = cp:councillor_court_chaplain }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
petition_liege_council_chaplain_appointable_trigger = {
|
|
$LIEGE$.faith = { has_doctrine = doctrine_clerical_succession_temporal_appointment }
|
|
$LIEGE$.faith = $JOB_TAKER$.faith
|
|
}
|
|
|
|
petition_liege_councillor_second_trigger = {
|
|
NOT = { $JOB_TAKER$.var:petition_liege_council_first ?= flag:$ROLE$ }
|
|
trigger_if = {
|
|
limit = { exists = $LIEGE$.cp:councillor_$ROLE$ }
|
|
OR = {
|
|
$JOB_TAKER$.$SKILL$ >= $LIEGE$.cp:councillor_$ROLE$.$SKILL$
|
|
$JOB_TAKER$ = { has_trait = education_$SKILL$ }
|
|
}
|
|
}
|
|
trigger_else = { $JOB_TAKER$.$SKILL$ >= mediocre_skill_rating }
|
|
}
|
|
|
|
petition_liege_councillor_blocked_trigger = {
|
|
$JOB_TAKER$ = {
|
|
can_be_$ROLE$_trigger = { COURT_OWNER = $LIEGE$ }
|
|
}
|
|
$LIEGE$.cp:councillor_$ROLE$ ?= {
|
|
NOT = {
|
|
is_blocked_from_being_fired_from_council_trigger = { COURT_OWNER = $LIEGE$ }
|
|
}
|
|
trigger_if = {
|
|
limit = { exists = scope:eunuch }
|
|
NOT = { is_close_family_of = scope:eunuch }
|
|
}
|
|
}
|
|
}
|
|
|
|
# Pay Debt
|
|
petition_liege_pay_debt_trigger = {
|
|
debt_level > -1
|
|
liege.debt_level = -1
|
|
}
|
|
|
|
# War Aid
|
|
petition_liege_war_aid_trigger = {
|
|
is_at_war = yes
|
|
save_temporary_scope_as = vassal
|
|
any_character_war = {
|
|
scope:vassal = { is_leader_in_war = prev }
|
|
trigger_if = {
|
|
limit = {
|
|
scope:vassal = { is_attacker_in_war = prev }
|
|
}
|
|
defender_war_score >= petition_war_aid_score_value
|
|
}
|
|
trigger_else = { attacker_war_score >= petition_war_aid_score_value }
|
|
}
|
|
}
|
|
|
|
petition_liege_war_liege_involvement_trigger = {
|
|
liege = {
|
|
NOR = {
|
|
any_character_war = {
|
|
root.liege = { is_leader_in_war = prev }
|
|
trigger_if = {
|
|
limit = {
|
|
root.liege = { is_defender_in_war = prev }
|
|
}
|
|
OR = {
|
|
primary_attacker.primary_title.tier >= root.liege.primary_title.tier
|
|
petition_liege_attacker_strength_value > petition_war_aid_liege_ally_advantage_value
|
|
}
|
|
}
|
|
trigger_else = {
|
|
OR = {
|
|
primary_attacker.primary_title.tier >= root.liege.primary_title.tier
|
|
petition_liege_attacker_strength_value > petition_war_aid_liege_ally_advantage_value
|
|
}
|
|
}
|
|
}
|
|
is_in_ongoing_great_holy_war = yes
|
|
}
|
|
}
|
|
}
|
|
|
|
petition_liege_war_aid_share_trigger = {
|
|
NOT = {
|
|
any_character_war = {
|
|
root = { is_leader_in_war = prev }
|
|
any_war_participant = { this = root.liege }
|
|
}
|
|
}
|
|
}
|
|
|
|
# Vassal War
|
|
petition_liege_vassal_war_trigger = {
|
|
any_character_war = {
|
|
root = { is_leader_in_war = prev } # root is a war leader
|
|
primary_attacker.liege = primary_defender.liege # War is between vassals of the same liege
|
|
NOT = {
|
|
root.liege = { is_participant_in_war = prev } # Liege is not involved in the war
|
|
}
|
|
}
|
|
}
|
|
|
|
# Control
|
|
petition_liege_county_control_trigger = {
|
|
tier = tier_county
|
|
trigger_if = {
|
|
limit = { tier = tier_county }
|
|
county_control < medium_county_control
|
|
}
|
|
}
|
|
|
|
# Convert
|
|
petition_liege_county_convert_trigger = {
|
|
tier = tier_county
|
|
trigger_if = {
|
|
limit = { tier = tier_county }
|
|
NOT = { county.faith = holder.faith }
|
|
}
|
|
}
|
|
|
|
# Opinion
|
|
petition_liege_county_opinion_trigger = {
|
|
tier = tier_county
|
|
trigger_if = {
|
|
limit = { tier = tier_county }
|
|
county_opinion <= petition_county_opinion_value
|
|
}
|
|
}
|
|
|
|
# Fortify
|
|
petition_liege_fortify_border_trigger = {
|
|
tier = tier_county
|
|
trigger_if = {
|
|
limit = { tier = tier_county }
|
|
county = {
|
|
save_temporary_scope_as = county_scope
|
|
any_title_to_title_neighboring_county = {
|
|
NOT = { holder.top_liege = scope:county_scope.holder.top_liege } # petition_liege
|
|
NOT = {
|
|
holder.top_liege = { is_allied_to = scope:county_scope.holder.top_liege } # petition_liege
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# Liege Title
|
|
petition_liege_title_liege_trigger = {
|
|
holder = prev.liege
|
|
NOT = { THIS = prev.liege.primary_title }
|
|
tier < prev.liege.primary_title.tier
|
|
trigger_if = {
|
|
limit = { exists = county }
|
|
NOT = { county = holder.capital_county }
|
|
}
|
|
OR = {
|
|
tier > tier_county
|
|
holder = {
|
|
any_held_title = {
|
|
count > 1
|
|
tier = tier_county
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# Vassal Title
|
|
petition_liege_title_vassal_trigger = {
|
|
exists = holder
|
|
holder = { save_temporary_scope_as = second_temp }
|
|
OR = {
|
|
scope:second_temp.liege = prev.liege
|
|
scope:second_temp.liege.liege = prev.liege
|
|
scope:second_temp.liege.liege.liege = prev.liege
|
|
}
|
|
NOR = {
|
|
scope:second_temp = prev.liege
|
|
has_variable = petition_title_cooldown
|
|
scope:second_temp = { is_at_war = yes }
|
|
prev.liege = {
|
|
any_targeting_faction = {
|
|
any_faction_member = { this = scope:second_temp }
|
|
}
|
|
}
|
|
}
|
|
#trigger_if = {
|
|
# limit = { exists = county }
|
|
# NOT = { county = holder.capital_county }
|
|
#}
|
|
scope:second_temp = {
|
|
trigger_if = {
|
|
limit = { government_has_flag = government_is_feudal }
|
|
NOT = { vassal_contract_obligation_level_can_be_decreased = title_revocation_rights }
|
|
}
|
|
}
|
|
OR = {
|
|
tier > tier_county
|
|
scope:second_temp = {
|
|
any_held_title = {
|
|
count > 1
|
|
tier = tier_county
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# Construct City
|
|
petition_liege_construct_city_trigger = {
|
|
county_has_empty_province_trigger = yes
|
|
OR = {
|
|
county_has_no_city_trigger = yes
|
|
county_has_all_holding_types = yes
|
|
}
|
|
}
|
|
|
|
# Construct Temple
|
|
petition_liege_construct_temple_trigger = {
|
|
county_has_empty_province_trigger = yes
|
|
OR = {
|
|
county_has_no_church_trigger = yes
|
|
county_has_all_holding_types = yes
|
|
}
|
|
}
|
|
|
|
# AI weightings
|
|
petition_liege_medium_cost_trigger = {
|
|
exists = scope:petition_vassal
|
|
scope:petition_vassal = { has_variable = petition_type }
|
|
OR = {
|
|
trigger_if = {
|
|
limit = { scope:petition_vassal.var:petition_type = flag:pay_debt }
|
|
scope:petition_vassal.debt_level < 3
|
|
}
|
|
scope:petition_vassal.var:petition_type = flag:war_aid
|
|
scope:petition_vassal.var:petition_type = flag:vassal_war
|
|
scope:petition_vassal.var:petition_type = flag:title_vassal
|
|
trigger_if = {
|
|
limit = { scope:petition_vassal.var:petition_type = flag:war_aid }
|
|
petitioner_war_aid_levies_cost_value > scope:petition_liege.medium_gold_value
|
|
}
|
|
}
|
|
}
|
|
|
|
petition_liege_high_cost_trigger = {
|
|
exists = scope:petition_vassal
|
|
scope:petition_vassal = { has_variable = petition_type }
|
|
OR = {
|
|
trigger_if = {
|
|
limit = { scope:petition_vassal.var:petition_type = flag:pay_debt }
|
|
scope:petition_vassal.debt_level >= 3
|
|
}
|
|
scope:petition_vassal.var:petition_type = flag:title_liege
|
|
scope:petition_vassal.var:petition_type = flag:construct_city
|
|
scope:petition_vassal.var:petition_type = flag:construct_temple
|
|
scope:petition_vassal.var:petition_type = flag:development
|
|
trigger_if = {
|
|
limit = { scope:petition_vassal.var:petition_type = flag:war_aid }
|
|
petitioner_war_aid_levies_cost_value > scope:petition_liege.major_gold_value
|
|
}
|
|
}
|
|
}
|
|
|
|
petition_liege_likes_trigger = {
|
|
exists = $COMPARE$
|
|
OR = {
|
|
has_relation_friend = $COMPARE$
|
|
has_relation_best_friend = $COMPARE$
|
|
has_relation_soulmate = $COMPARE$
|
|
has_relation_lover = $COMPARE$
|
|
is_close_family_of = $COMPARE$
|
|
opinion = {
|
|
target = $COMPARE$
|
|
value >= 50
|
|
}
|
|
}
|
|
}
|
|
|
|
petition_liege_dislikes_trigger = {
|
|
exists = $COMPARE$
|
|
OR = {
|
|
has_relation_rival = $COMPARE$
|
|
has_relation_nemesis = $COMPARE$
|
|
opinion = {
|
|
target = $COMPARE$
|
|
value <= -50
|
|
}
|
|
}
|
|
}
|
|
|
|
# Character is not already involved in the event e.g. claim target, incumbent councillor, etc.
|
|
petition_liege_skiller_trigger = {
|
|
is_available_adult = yes
|
|
|
|
trigger_if = {
|
|
limit = { exists = scope:second_party }
|
|
NOT = { this = scope:second_party }
|
|
}
|
|
trigger_if = {
|
|
limit = { exists = scope:vassal_claimant }
|
|
NOT = { this = scope:vassal_claimant }
|
|
}
|
|
trigger_if = {
|
|
limit = { exists = scope:second_councillor }
|
|
NOT = { this = scope:second_councillor }
|
|
}
|
|
trigger_if = {
|
|
limit = { exists = scope:diplomacy_check }
|
|
NOT = { this = scope:diplomacy_check }
|
|
}
|
|
trigger_if = {
|
|
limit = { exists = scope:martial_check }
|
|
NOT = { this = scope:martial_check }
|
|
}
|
|
trigger_if = {
|
|
limit = { exists = scope:stewardship_check }
|
|
NOT = { this = scope:stewardship_check }
|
|
}
|
|
trigger_if = {
|
|
limit = { exists = scope:intrigue_check }
|
|
NOT = { this = scope:intrigue_check }
|
|
}
|
|
trigger_if = {
|
|
limit = { exists = scope:learning_check }
|
|
NOT = { this = scope:learning_check }
|
|
}
|
|
trigger_if = {
|
|
limit = { exists = scope:petition_vassal }
|
|
NOT = { this = scope:petition_vassal }
|
|
}
|
|
}
|
|
|
|
# Has a councillor or spouse who is not involved in the event already
|
|
petition_liege_has_main_skiller_trigger = {
|
|
scope:petition_liege = {
|
|
OR = {
|
|
trigger_if = {
|
|
limit = { exists = cp:councillor_chancellor }
|
|
cp:councillor_chancellor = { petition_liege_skiller_trigger = yes }
|
|
}
|
|
trigger_else = { always = no }
|
|
|
|
trigger_if = {
|
|
limit = { exists = cp:councillor_marshal }
|
|
cp:councillor_marshal = { petition_liege_skiller_trigger = yes }
|
|
}
|
|
trigger_else = { always = no }
|
|
|
|
trigger_if = {
|
|
limit = { exists = cp:councillor_steward }
|
|
cp:councillor_steward = { petition_liege_skiller_trigger = yes }
|
|
}
|
|
trigger_else = { always = no }
|
|
|
|
trigger_if = {
|
|
limit = { exists = cp:councillor_spymaster }
|
|
cp:councillor_spymaster = { petition_liege_skiller_trigger = yes }
|
|
}
|
|
trigger_else = { always = no }
|
|
|
|
trigger_if = {
|
|
limit = { exists = cp:councillor_court_chaplain }
|
|
cp:councillor_court_chaplain = { petition_liege_skiller_trigger = yes }
|
|
}
|
|
trigger_else = { always = no }
|
|
|
|
trigger_if = {
|
|
limit = {
|
|
is_married = yes
|
|
exists = primary_spouse
|
|
}
|
|
primary_spouse = {
|
|
is_playable_character = no
|
|
petition_liege_skiller_trigger = yes
|
|
exists = scope:petition_vassal
|
|
NOT = { has_any_scripted_relation = scope:petition_vassal }
|
|
}
|
|
}
|
|
trigger_else = { always = no }
|
|
}
|
|
}
|
|
}
|
|
|
|
# Character can be a wildcard, due to their existing relationship with petitioner
|
|
petition_liege_wildcard_trigger = {
|
|
OR = {
|
|
has_relation_friend = scope:petition_vassal
|
|
has_relation_best_friend = scope:petition_vassal
|
|
has_relation_lover = scope:petition_vassal
|
|
has_relation_soulmate = scope:petition_vassal
|
|
opinion = {
|
|
target = scope:petition_vassal
|
|
value >= 50
|
|
}
|
|
}
|
|
}
|
|
|
|
# No more than 2 skill check options already exist
|
|
petition_liege_skillcheck_limit = {
|
|
calc_true_if = {
|
|
amount < 2
|
|
exists = scope:diplomacy_check
|
|
exists = scope:martial_check
|
|
exists = scope:stewardship_check
|
|
exists = scope:intrigue_check
|
|
exists = scope:learning_check
|
|
}
|
|
}
|
|
|
|
# Character is valid councillor and invalid wildcard
|
|
petition_liege_skiller_no_wildcard_trigger = {
|
|
petition_liege_skiller_trigger = yes
|
|
petition_liege_wildcard_trigger = no
|
|
}
|
|
|
|
# Character has some way to be placated by liege
|
|
petition_liege_relation_favor_trigger = {
|
|
can_add_hook = {
|
|
type = favor_hook
|
|
target = scope:petition_liege
|
|
}
|
|
OR = {
|
|
has_relation_friend = scope:petition_liege
|
|
has_relation_best_friend = scope:petition_liege
|
|
has_relation_lover = scope:petition_liege
|
|
has_relation_soulmate = scope:petition_liege
|
|
}
|
|
}
|
|
|
|
# For picking which council position to offer
|
|
petition_liege_councillor_replace_weight_trigger = {
|
|
AND = {
|
|
scope:petition_vassal = { has_variable = petition_liege_council_first }
|
|
scope:petition_vassal.var:petition_liege_council_first = flag:$JOB$
|
|
OR = {
|
|
NOT = { has_councillor_for_skill = $SKILL$ }
|
|
AND = {
|
|
exists = scope:second_party
|
|
scope:petition_vassal.$SKILL$ > scope:second_party.$SKILL$
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# Petition is still valid
|
|
petition_liege_valid_trigger = {
|
|
is_alive = yes
|
|
is_imprisoned = no
|
|
has_variable = petition_liege_scope
|
|
liege = var:petition_liege_scope
|
|
var:petition_liege_scope = {
|
|
is_imprisoned = no
|
|
has_royal_court = yes
|
|
}
|
|
}
|
|
|
|
adventurer_potential_destination_distance_check = {
|
|
#This is made to be used inside set_adventure_location_effect - it relies on the scope it is being run in being the adventurer
|
|
#Also expects $REGION$
|
|
any_county_in_region = {
|
|
region = $REGION$
|
|
trigger_if = {
|
|
limit = {
|
|
prev.adventure_inspiration_average_skill_value >= high_inspiration_skill
|
|
}
|
|
NOT = {
|
|
prev.location = {
|
|
geographical_region = $REGION$
|
|
}
|
|
} #Highly skilled adventurers can travel anywhere - and will not pick the region they are already in
|
|
}
|
|
trigger_else_if = {
|
|
limit = {
|
|
prev.adventure_inspiration_average_skill_value >= medium_inspiration_skill
|
|
}
|
|
squared_distance = {
|
|
target = prev.location
|
|
value <= medium_adventure_max_length
|
|
}
|
|
}
|
|
trigger_else = {
|
|
#low_inspiration_skill
|
|
squared_distance = {
|
|
target = prev.location
|
|
value < short_adventure_max_length
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
activity_invite_rule_trigger = {
|
|
is_adult = yes
|
|
is_imprisoned = no
|
|
in_diplomatic_range = root
|
|
}
|
|
|
|
considers_social_presence_a_gift_to_other_trigger = {
|
|
has_trait = improvident
|
|
OR = {
|
|
has_trait = gregarious
|
|
has_trait = arrogant
|
|
}
|
|
}
|
|
|
|
not_hosting_a_murder_feast = {
|
|
trigger_if = {
|
|
limit = {
|
|
this = scope:host
|
|
scope:activity = {
|
|
has_activity_type = activity_feast
|
|
}
|
|
}
|
|
scope:activity = {
|
|
NOT = {
|
|
has_activity_option = {
|
|
category = special_type
|
|
option = feast_type_murder
|
|
}
|
|
}
|
|
}
|
|
}
|
|
trigger_else = {
|
|
always = yes
|
|
}
|
|
}
|
|
|
|
factor_zero_if_entitled_to_freebie_activity_trigger = {
|
|
dynasty ?= { has_dynasty_perk = ep2_activities_legacy_5 }
|
|
this = house.house_head
|
|
NOT = { has_variable = ep2_activities_legacy_5_had_freebie }
|
|
}
|
|
|
|
# to be run in activity scope
|
|
has_attending_activity_guests = {
|
|
# We have more than one attending character
|
|
# Host always attends so we ignore them
|
|
any_attending_character = {
|
|
count > 1 # 1 includes the host who always attends
|
|
}
|
|
}
|
|
|
|
any_journey_point_of_interest_trigger = {
|
|
has_special_building = yes
|
|
NOR = {
|
|
has_building_or_higher = generic_university
|
|
has_building_or_higher = hall_of_heroes_01
|
|
has_building_or_higher = special_sicilian_parliament_01
|
|
has_building_or_higher = special_greenhouse_01
|
|
has_building_or_higher = holy_site_cathedral_01
|
|
has_building_or_higher = holy_site_mosque_01
|
|
has_building_or_higher = holy_site_fire_temple_01
|
|
has_building_or_higher = holy_site_pagan_grand_temple_01
|
|
has_building_or_higher = holy_site_indian_grand_temple_01
|
|
has_building_or_higher = holy_site_other_grand_temple_01
|
|
has_building_or_higher = generic_copper_mines_01
|
|
has_building_or_higher = generic_silver_mines_01
|
|
has_building_or_higher = generic_gold_mines_01
|
|
}
|
|
}
|
|
|