N3OW/common/scripted_triggers/00_activity_triggers.txt

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
}
}