idk why I dont have a cursor
This commit is contained in:
parent
701d55c01f
commit
cda3acdcea
349 changed files with 78627 additions and 7804 deletions
664
common/scripted_triggers/00_activity_triggers.txt
Normal file
664
common/scripted_triggers/00_activity_triggers.txt
Normal file
|
|
@ -0,0 +1,664 @@
|
|||
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
|
||||
}
|
||||
}
|
||||
|
||||
129
common/scripted_triggers/00_adultery_triggers.txt
Normal file
129
common/scripted_triggers/00_adultery_triggers.txt
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
# This character is publicly known for cheating on the SPOUSE
|
||||
exposed_cheating_on_spouse_trigger = { #Is a publicly known cheater against spouse
|
||||
OR = {
|
||||
reverse_has_opinion_modifier = {
|
||||
modifier = unfaithful_spouse_exposed_opinion
|
||||
target = $SPOUSE$
|
||||
}
|
||||
AND = {
|
||||
has_variable = std_from_unfaithfulness_against
|
||||
var:std_from_unfaithfulness_against = $SPOUSE$
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
would_attempt_to_seduce_trigger = {
|
||||
is_adult = yes
|
||||
age <= 50
|
||||
# Already interested or not a relation
|
||||
trigger_if = {
|
||||
limit = { has_any_scripted_relation = $CHARACTER$ }
|
||||
OR = {
|
||||
has_relation_potential_lover = $CHARACTER$
|
||||
has_relation_crush = $CHARACTER$
|
||||
}
|
||||
}
|
||||
# Not married
|
||||
NOT = { is_consort_of = $CHARACTER$ }
|
||||
OR = {
|
||||
# Pre-existing schemes
|
||||
is_scheming_against = {
|
||||
target = $CHARACTER$
|
||||
type = seduce
|
||||
}
|
||||
is_scheming_against = {
|
||||
target = $CHARACTER$
|
||||
type = courting
|
||||
}
|
||||
AND = {
|
||||
# Sexuality
|
||||
is_attracted_to_gender_of = $CHARACTER$
|
||||
NOR = {
|
||||
# Proactive
|
||||
has_trait = chaste
|
||||
# Undevoted
|
||||
any_relation = { type = soulmate }
|
||||
}
|
||||
# Compatible or attractive
|
||||
OR = {
|
||||
trait_compatibility = {
|
||||
target = $CHARACTER$
|
||||
value >= low_positive_trait_compatibility
|
||||
}
|
||||
$CHARACTER$.attraction >= medium_positive_attraction
|
||||
}
|
||||
}
|
||||
}
|
||||
# Flouts the laws of decency
|
||||
would_attempt_to_seduce_incest_trigger = { CHARACTER = $CHARACTER$ }
|
||||
# Flouts the sanctity of marriage
|
||||
would_attempt_to_seduce_married_trigger = yes
|
||||
}
|
||||
|
||||
would_attempt_to_seduce_incest_trigger = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
save_temporary_scope_as = potential_cheater
|
||||
OR = {
|
||||
# Checks for incest
|
||||
relation_with_character_is_incestuous_in_faith_trigger = {
|
||||
FAITH = scope:potential_cheater.faith
|
||||
CHARACTER = $CHARACTER$
|
||||
}
|
||||
# Check celibate clergy too since it's a similar overcoming of norms
|
||||
AND = {
|
||||
is_clergy = yes
|
||||
faith = { has_doctrine = doctrine_clerical_marriage_allowed }
|
||||
}
|
||||
}
|
||||
}
|
||||
# Isn't god-fearing
|
||||
NOT = { has_trait = zealous }
|
||||
# Is randy
|
||||
has_trait = lustful
|
||||
# Takes what they want
|
||||
ai_boldness >= medium_positive_ai_value
|
||||
# Likes them
|
||||
opinion = {
|
||||
target = $CHARACTER$
|
||||
value >= 25
|
||||
}
|
||||
# Big attraction or get on very well
|
||||
OR = {
|
||||
trait_compatibility = {
|
||||
target = $CHARACTER$
|
||||
value >= medium_positive_trait_compatibility
|
||||
}
|
||||
$CHARACTER$.attraction >= medium_positive_attraction
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
would_attempt_to_seduce_married_trigger = {
|
||||
trigger_if = {
|
||||
limit = { is_married = yes }
|
||||
OR = {
|
||||
# Adultery is accepted for their gender in their faith
|
||||
AND = {
|
||||
is_female = yes
|
||||
faith = { has_doctrine_parameter = adultery_female_accepted }
|
||||
}
|
||||
AND = {
|
||||
is_male = yes
|
||||
faith = { has_doctrine_parameter = adultery_male_accepted }
|
||||
}
|
||||
NOR = {
|
||||
# Isn't god-fearing
|
||||
has_trait = zealous
|
||||
save_temporary_scope_as = potential_cheater
|
||||
# Isn't that fond of partner
|
||||
opinion = {
|
||||
target = scope:potential_cheater.primary_spouse
|
||||
value >= 25
|
||||
}
|
||||
# Isn't honorable
|
||||
ai_honor >= low_positive_ai_value
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
19
common/scripted_triggers/00_ai_acceptance_triggers.txt
Normal file
19
common/scripted_triggers/00_ai_acceptance_triggers.txt
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
|
||||
###TRIGGER LIST
|
||||
#ai_will_give_favor_trigger
|
||||
|
||||
#CHAR1 is the character who will be giving the favor, CHAR2 is the character who will be receiving it(i.e., CHAR2 is the one that gets to call in the favor).
|
||||
ai_will_give_favor_trigger = {
|
||||
$CHAR1$ = {
|
||||
NOR = {
|
||||
has_relation_rival = $CHAR2$
|
||||
opinion = {
|
||||
value <= -25
|
||||
target = $CHAR2$
|
||||
}
|
||||
|
||||
is_scheming_against = { target = $CHAR2$ type = murder }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
291
common/scripted_triggers/00_ai_value_triggers.txt
Normal file
291
common/scripted_triggers/00_ai_value_triggers.txt
Normal file
|
|
@ -0,0 +1,291 @@
|
|||
|
||||
###TRIGGER LIST
|
||||
#opposing_ai_values_trigger - Checks if one character has a positive value and another character has a negative value for the same ai value.
|
||||
|
||||
#Needs TARGET and the name of the VALUE
|
||||
opposing_ai_values_trigger = {
|
||||
OR = {
|
||||
AND = {
|
||||
ai_$VALUE$ < 0
|
||||
$TARGET$ = { ai_$VALUE$ > 0 }
|
||||
}
|
||||
AND = {
|
||||
ai_$VALUE$ > 0
|
||||
$TARGET$ = { ai_$VALUE$ < 0 }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ai_has_warlike_personality = {
|
||||
OR = {
|
||||
AND = {
|
||||
has_trait = despoiler_of_byzantium
|
||||
any_held_title = {
|
||||
OR = {
|
||||
empire = title:e_byzantium
|
||||
empire = title:e_latin_empire
|
||||
}
|
||||
}
|
||||
}
|
||||
vassal_contract_has_flag = admin_ai_is_warlike # Admin vassals with the "Frontier" administration consider it their job to expand
|
||||
AND = { # The unity decision "Organize House Members for War" forces AI house members to adopt this stance
|
||||
exists = house
|
||||
house = {
|
||||
has_house_modifier = unity_house_organized_for_war_modifier
|
||||
}
|
||||
}
|
||||
AND = { # They are Detractors during the FP3 Struggle in the Unrest Phase
|
||||
any_character_struggle = {
|
||||
trigger_if = {
|
||||
limit = { is_struggle_type = persian_struggle }
|
||||
is_struggle_phase = struggle_persia_phase_unrest
|
||||
}
|
||||
trigger_else = { always = no }
|
||||
}
|
||||
has_trait = fp3_struggle_detractor
|
||||
}
|
||||
AND = { # Nomads are not 'unpredictable', they are Warlike instead
|
||||
government_has_flag = government_is_nomadic
|
||||
ai_has_cautious_personality = no
|
||||
economical_ai_guts_trigger = no
|
||||
}
|
||||
AND = {
|
||||
ai_boldness > 0
|
||||
ai_greed >= 0
|
||||
|
||||
OR = {
|
||||
has_trait = wrathful
|
||||
has_trait = impatient
|
||||
has_trait = sadistic
|
||||
has_trait = ambitious
|
||||
has_trait = vengeful
|
||||
has_trait = zealous
|
||||
has_trait = irritable
|
||||
AND = {
|
||||
ai_boldness >= 50
|
||||
ai_greed >= 50
|
||||
}
|
||||
AND = {
|
||||
ai_boldness >= 25
|
||||
ai_greed >= 100
|
||||
}
|
||||
AND = {
|
||||
ai_boldness >= 100
|
||||
ai_greed >= 25
|
||||
}
|
||||
government_has_flag = government_is_tribal
|
||||
culture = { has_cultural_pillar = ethos_bellicose }
|
||||
}
|
||||
|
||||
NOR = {
|
||||
ai_compassion >= 75
|
||||
has_trait = compassionate
|
||||
has_trait = craven
|
||||
has_trait = calm
|
||||
faith = { has_doctrine_parameter = pacifist_opinion_active }
|
||||
culture = { has_cultural_parameter = reduced_cost_for_conversion_to_pacifist_faith }
|
||||
AND = {
|
||||
exists = house
|
||||
house = {
|
||||
has_house_modifier = unity_house_focused_on_economy_modifier
|
||||
}
|
||||
}
|
||||
vassal_contract_has_flag = admin_ai_is_builder
|
||||
}
|
||||
}
|
||||
# Or we're on the warpath.
|
||||
has_variable = imperial_expedition_charged
|
||||
}
|
||||
ai_has_conqueror_personality = no
|
||||
}
|
||||
|
||||
ai_has_cautious_personality = {
|
||||
ai_boldness <= 0
|
||||
|
||||
OR = {
|
||||
has_trait = paranoid
|
||||
has_trait = craven
|
||||
AND = {
|
||||
ai_boldness <= -25
|
||||
OR = {
|
||||
has_trait = patient
|
||||
has_trait = calm
|
||||
has_trait = content
|
||||
culture = { has_cultural_pillar = ethos_stoic }
|
||||
culture = { has_cultural_tradition = tradition_stalwart_defenders }
|
||||
}
|
||||
}
|
||||
}
|
||||
NOR = {
|
||||
has_trait = fickle
|
||||
has_trait = lunatic
|
||||
AND = {
|
||||
exists = house
|
||||
house = {
|
||||
OR = {
|
||||
has_house_modifier = unity_house_organized_for_war_modifier
|
||||
has_house_modifier = unity_house_focused_on_economy_modifier
|
||||
}
|
||||
}
|
||||
}
|
||||
AND = { # They are Detractors during the FP3 Struggle in the Unrest Phase
|
||||
any_character_struggle = {
|
||||
is_struggle_type = persian_struggle
|
||||
is_struggle_phase = struggle_persia_phase_unrest
|
||||
}
|
||||
has_trait = fp3_struggle_detractor
|
||||
}
|
||||
vassal_contract_has_flag = admin_ai_is_warlike
|
||||
vassal_contract_has_flag = admin_ai_is_builder
|
||||
}
|
||||
ai_has_conqueror_personality = no
|
||||
}
|
||||
|
||||
ai_has_economical_boom_personality = {
|
||||
OR = {
|
||||
vassal_contract_has_flag = admin_ai_is_builder # Admin vassals with the "Civilian" administration consider it their job to improve the economy
|
||||
AND = { # The unity decision "Encourage House to Improve the Economy" forces AI house members to adopt this stance
|
||||
exists = house
|
||||
house = {
|
||||
has_house_modifier = unity_house_focused_on_economy_modifier
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
economical_ai_guts_trigger = yes
|
||||
ai_has_warlike_personality = no
|
||||
}
|
||||
}
|
||||
ai_has_conqueror_personality = no
|
||||
}
|
||||
|
||||
economical_ai_guts_trigger = {
|
||||
ai_boldness > 0
|
||||
OR = {
|
||||
has_focus = stewardship_domain_focus # Only this focus, which is 33% of all stewardship focused characters in the world
|
||||
has_trait = calm
|
||||
has_trait = patient
|
||||
has_trait = diligent
|
||||
has_trait = generous
|
||||
has_trait = stubborn
|
||||
has_trait = profligate
|
||||
has_trait = improvident
|
||||
has_character_modifier = the_city_builder_modifier
|
||||
has_character_modifier = the_castle_builder_modifier
|
||||
has_character_modifier = the_temple_builder_modifier
|
||||
}
|
||||
NAND = {
|
||||
has_trait = greedy
|
||||
has_trait = impatient
|
||||
AND = {
|
||||
exists = house
|
||||
house = {
|
||||
has_house_modifier = unity_house_organized_for_war_modifier
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ai_wants_low_unity = {
|
||||
government_has_flag = government_is_clan
|
||||
# To actively decrease Unity, the AI needs the following personality
|
||||
OR = {
|
||||
AND = {
|
||||
OR = {
|
||||
has_trait_malicious_trigger = yes
|
||||
has_trait_dominant_trigger = yes
|
||||
}
|
||||
has_trait_submissive_trigger = no
|
||||
has_trait_benevolent_trigger = no
|
||||
}
|
||||
ai_has_warlike_personality = yes
|
||||
ai_has_conqueror_personality = yes
|
||||
has_character_flag = agenda_towards_escalation
|
||||
}
|
||||
}
|
||||
|
||||
ai_wants_high_unity = {
|
||||
government_has_flag = government_is_clan
|
||||
# We'll make sure that the AI only wants to actively increase Unity if they have a matching personality
|
||||
OR = {
|
||||
AND = {
|
||||
OR = {
|
||||
has_trait_benevolent_trigger = yes
|
||||
has_trait_submissive_trigger = yes
|
||||
}
|
||||
has_trait_malicious_trigger = no
|
||||
}
|
||||
ai_has_economical_boom_personality = yes
|
||||
AND = {
|
||||
NOT = { has_trait = fp3_struggle_detractor }
|
||||
# House is the most recent Caliphs house
|
||||
exists = struggle:persian_struggle
|
||||
trigger_if = {
|
||||
limit = { exists = title:d_sunni.holder }
|
||||
house = title:d_sunni.holder.house
|
||||
}
|
||||
trigger_else = { house = title:d_sunni.previous_holder.house }
|
||||
}
|
||||
has_character_flag = agenda_towards_deescalation
|
||||
}
|
||||
|
||||
# And to make sure the AI doesn't want to increase and decrease Unity at the same time
|
||||
ai_wants_low_unity = no
|
||||
}
|
||||
|
||||
ai_has_conqueror_personality = {
|
||||
OR = {
|
||||
has_trait = conqueror
|
||||
has_trait = greatest_of_khans
|
||||
has_character_modifier = the_great_khan_modifier
|
||||
any_owned_story = {
|
||||
story_type = story_conqueror
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ai_should_get_conqueror_bonuses = {
|
||||
AND = {
|
||||
OR = {
|
||||
has_game_rule = default_conquerors_bonuses
|
||||
has_game_rule = extreme_conquerors_bonuses
|
||||
has_game_rule = random_conquerors_bonuses
|
||||
has_game_rule = reduced_random_conquerors_bonuses
|
||||
}
|
||||
ai_has_conqueror_personality = yes
|
||||
}
|
||||
}
|
||||
|
||||
ai_should_get_extreme_conqueror_bonuses = {
|
||||
AND = {
|
||||
has_character_modifier = ai_extreme_conqueror_modifier
|
||||
ai_has_conqueror_personality = yes
|
||||
}
|
||||
}
|
||||
|
||||
ai_should_focus_on_building_in_their_capital = {
|
||||
is_landed = yes
|
||||
highest_held_title_tier >= tier_county
|
||||
ai_has_conqueror_personality = no
|
||||
NOT = { government_has_flag = government_is_nomadic }
|
||||
exists = capital_county
|
||||
exists = culture
|
||||
OR = {
|
||||
capital_county.title_province.free_building_slots > 0
|
||||
AND = {
|
||||
culture = { has_innovation = innovation_ledger }
|
||||
capital_county.title_province.combined_building_level <= 4
|
||||
}
|
||||
AND = {
|
||||
culture = { has_innovation = innovation_baliffs }
|
||||
capital_county.title_province.combined_building_level <= 6
|
||||
}
|
||||
AND = {
|
||||
culture = { has_innovation = innovation_guilds }
|
||||
capital_county.title_province.combined_building_level <= 9
|
||||
}
|
||||
AND = {
|
||||
culture = { has_innovation = innovation_cranes }
|
||||
capital_county.title_province.combined_building_level <= 12
|
||||
}
|
||||
}
|
||||
}
|
||||
2234
common/scripted_triggers/00_artifact_triggers.txt
Normal file
2234
common/scripted_triggers/00_artifact_triggers.txt
Normal file
File diff suppressed because it is too large
Load diff
17
common/scripted_triggers/00_auto_character_triggers.txt
Normal file
17
common/scripted_triggers/00_auto_character_triggers.txt
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
is_valid_auto_title_holder = {
|
||||
is_capable_adult = yes
|
||||
is_claimant = no
|
||||
is_imprisoned = no
|
||||
trigger_if = {
|
||||
limit = {
|
||||
scope:base.primary_title = { has_title_law = female_only_law }
|
||||
}
|
||||
is_female = yes
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
scope:base.primary_title = { has_title_law = male_only_law }
|
||||
}
|
||||
is_male = yes
|
||||
}
|
||||
}
|
||||
|
|
@ -17,7 +17,7 @@
|
|||
#can_become_concubine
|
||||
#is_busy_in_events_localised
|
||||
|
||||
# For flags that will never be seen by the player and thus don't need to be 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
|
||||
|
|
@ -30,6 +30,7 @@ is_busy_in_events_unlocalised = {
|
|||
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
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -318,6 +319,26 @@ is_within_diplo_range = {
|
|||
}
|
||||
}
|
||||
|
||||
# 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
|
||||
|
|
@ -327,15 +348,21 @@ is_landless_adventurer = {
|
|||
|
||||
# This trigger checks if a character is a governor in an admin realm (implying they are landed)
|
||||
is_governor = {
|
||||
ghas_government = administrative_government
|
||||
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 = {
|
||||
has_government = administrative_government
|
||||
government_has_flag = government_is_administrative
|
||||
is_landed = no
|
||||
is_house_head = yes
|
||||
has_domicile = yes
|
||||
|
|
@ -349,12 +376,13 @@ is_landed_or_landless_administrative = {
|
|||
}
|
||||
}
|
||||
|
||||
# Checks if a character is either landed, a landless house head within an admin realm, or a landless adventurer
|
||||
# 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
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
220
common/scripted_triggers/00_bastard_triggers.txt
Normal file
220
common/scripted_triggers/00_bastard_triggers.txt
Normal file
|
|
@ -0,0 +1,220 @@
|
|||
|
||||
|
||||
should_mother_give_house_to_bastard_trigger = {
|
||||
#Also governs the "should_mother_give_house_to_bastard" scripted rule
|
||||
trigger_if = {
|
||||
limit = { NOT = { exists = mother } }
|
||||
always = no
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = { NOT = { exists = mother.house } }
|
||||
always = no
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = { NOT = { exists = father } }
|
||||
always = yes
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
real_father = { is_ruler = yes }
|
||||
mother = { is_ruler = no }
|
||||
exists = real_father.house
|
||||
}
|
||||
always = no
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
real_father = { is_ruler = no }
|
||||
mother = { is_ruler = yes }
|
||||
exists = mother.house
|
||||
}
|
||||
always = yes
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
mother = { NOT = { exists = house } }
|
||||
exists = real_father.house
|
||||
}
|
||||
always = no
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
real_father = { NOT = { exists = house } }
|
||||
exists = mother.house
|
||||
}
|
||||
always = yes
|
||||
}
|
||||
# making the default behavior explicit if no other trigger_(else_)ifs are valid
|
||||
trigger_else = {
|
||||
always = yes
|
||||
}
|
||||
}
|
||||
|
||||
secret_unmarried_illegitimate_child_is_valid_trigger = {
|
||||
$TARGET$ = {
|
||||
is_alive = yes
|
||||
exists = real_father
|
||||
exists = mother
|
||||
NOT = { has_trait = child_of_concubine }
|
||||
save_temporary_scope_as = temp_child
|
||||
trigger_if = {
|
||||
limit = {
|
||||
exists = father
|
||||
exists = scope:temp_child.real_father
|
||||
}
|
||||
NOT = { father = scope:temp_child.real_father }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
secret_disputed_heritage_is_valid_trigger = {
|
||||
$TARGET$ = { # Child
|
||||
is_alive = yes
|
||||
exists = real_father
|
||||
exists = father
|
||||
exists = mother
|
||||
NOT = { real_father = father }
|
||||
NOR = {
|
||||
has_trait = bastard
|
||||
has_trait = wild_oat
|
||||
has_trait = legitimized_bastard
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bastard_secret_is_criminal = {
|
||||
$TARGET$ = { save_temporary_scope_as = criminal_bastard }
|
||||
$PARTICIPANT$ = { save_temporary_scope_as = criminal_participant }
|
||||
OR = {
|
||||
#Mother if female adultery is criminal
|
||||
scope:criminal_participant = {
|
||||
scope:criminal_bastard = { mother = scope:criminal_participant }
|
||||
OR = {
|
||||
faith = { has_doctrine_parameter = adultery_female_crime }
|
||||
any_liege_or_above = { faith = { has_doctrine_parameter = adultery_female_crime } }
|
||||
}
|
||||
}
|
||||
#Real father is male adultery is criminal
|
||||
scope:criminal_participant = {
|
||||
scope:criminal_bastard = { real_father = scope:criminal_participant }
|
||||
OR = {
|
||||
faith = { has_doctrine_parameter = adultery_male_crime }
|
||||
any_liege_or_above = { faith = { has_doctrine_parameter = adultery_male_crime } }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bastard_secret_is_shunned = {
|
||||
# FOR DEBUG PURPOSES -- REMOVE ONCE RESOLVED TODO_CD
|
||||
assert_if = {
|
||||
limit = { NOT = { exists = $TARGET$ } }
|
||||
text = "Empty TARGET was passed to bastard_secret_is_shunned!"
|
||||
}
|
||||
assert_if = {
|
||||
limit = { NOT = { exists = $TARGET$ } }
|
||||
text = "Empty PARTICIPANT was passed to bastard_secret_is_shunned!"
|
||||
}
|
||||
|
||||
#Saving bastard & other parent scope
|
||||
$TARGET$ = { save_temporary_scope_as = bastard }
|
||||
$PARTICIPANT$ = { save_temporary_scope_as = participant }
|
||||
|
||||
assert_if = {
|
||||
limit = { NOT = { exists = scope:bastard } }
|
||||
text = "scope:bastard does not exist in bastard_secret_is_shunned!"
|
||||
}
|
||||
assert_if = {
|
||||
limit = { NOT = { exists = scope:participant } }
|
||||
text = "scope:participant does not exist in bastard_secret_is_shunned!"
|
||||
}
|
||||
assert_if = {
|
||||
limit = { NOT = { exists = scope:bastard.mother } }
|
||||
text = "scope:bastard.mother does not exist in bastard_secret_is_shunned!"
|
||||
}
|
||||
assert_if = {
|
||||
limit = { NOT = { exists = scope:bastard.real_father } }
|
||||
text = "scope:bastard.real_father does not exist in bastard_secret_is_shunned!"
|
||||
}
|
||||
|
||||
OR = {
|
||||
#Bastard child: always shunned, never criminal
|
||||
scope:participant = scope:bastard
|
||||
#Mother if female adultery is shunned
|
||||
scope:participant = {
|
||||
exists = scope:bastard.mother
|
||||
this = scope:bastard.mother
|
||||
OR = {
|
||||
faith = { has_doctrine_parameter = adultery_female_shunned }
|
||||
any_liege_or_above = { faith = { has_doctrine_parameter = adultery_female_shunned } }
|
||||
}
|
||||
}
|
||||
#Real father is male adultery is shunned
|
||||
scope:participant = {
|
||||
exists = scope:bastard.real_father
|
||||
this = scope:bastard.real_father
|
||||
OR = {
|
||||
faith = { has_doctrine_parameter = adultery_male_shunned }
|
||||
any_liege_or_above = { faith = { has_doctrine_parameter = adultery_male_shunned } }
|
||||
}
|
||||
}
|
||||
#Either parent if incest is shunned
|
||||
AND = {
|
||||
# Can't have incest with only one parent!
|
||||
exists = scope:bastard.real_father
|
||||
exists = scope:bastard.mother
|
||||
|
||||
# Also the secret participant has to be one of the parents
|
||||
scope:participant = {
|
||||
OR = {
|
||||
this = scope:bastard.mother
|
||||
this = scope:bastard.real_father
|
||||
}
|
||||
trigger_if = {
|
||||
limit = { this = scope:bastard.mother }
|
||||
scope:bastard.real_father = { save_temporary_scope_as = other_parent }
|
||||
}
|
||||
trigger_else = {
|
||||
scope:bastard.mother = { save_temporary_scope_as = other_parent }
|
||||
}
|
||||
|
||||
# Check if the relation would be incestuous in my faith or my liege's faith
|
||||
relation_with_character_is_incestuous_in_faith_trigger = {
|
||||
CHARACTER = scope:other_parent
|
||||
FAITH = scope:participant.faith
|
||||
}
|
||||
any_liege_or_above = {
|
||||
save_temporary_scope_as = liege_or_above
|
||||
scope:participant = {
|
||||
relation_with_character_is_incestuous_in_faith_trigger = {
|
||||
CHARACTER = scope:other_parent
|
||||
FAITH = scope:liege_or_above.faith
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
NOT = {
|
||||
bastard_secret_is_criminal = {
|
||||
TARGET = scope:bastard
|
||||
PARTICIPANT = scope:participant
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
has_any_bastard_trait_trigger = {
|
||||
OR = {
|
||||
has_trait = wild_oat
|
||||
has_any_negative_bastard_trait_trigger = yes
|
||||
}
|
||||
}
|
||||
|
||||
has_any_negative_bastard_trait_trigger = {
|
||||
OR = {
|
||||
has_trait = bastard
|
||||
has_trait = legitimized_bastard
|
||||
has_trait = disputed_heritage
|
||||
}
|
||||
}
|
||||
59
common/scripted_triggers/00_birth_triggers.txt
Normal file
59
common/scripted_triggers/00_birth_triggers.txt
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
|
||||
### Birth trigger list
|
||||
|
||||
|
||||
birth_will_happen_as_usual_trigger = {
|
||||
OR = {
|
||||
has_character_flag = birth_will_go_smoothly
|
||||
has_character_flag = birth_child_will_become_sickly
|
||||
has_character_flag = birth_mother_will_become_ill
|
||||
}
|
||||
}
|
||||
|
||||
allow_naming_on_birth_of_child_trigger = {
|
||||
save_temporary_scope_as = naming_parent
|
||||
exists = $CHILD$
|
||||
is_ai = no
|
||||
is_close_family_of = $CHILD$
|
||||
OR = {
|
||||
#I am the only player parent of child
|
||||
NOT = {
|
||||
$CHILD$ = {
|
||||
any_parent = {
|
||||
is_ai = no
|
||||
NOT = { this = scope:naming_parent }
|
||||
}
|
||||
}
|
||||
}
|
||||
#I am the best player to name this child
|
||||
AND = {
|
||||
$CHILD$ = { #There are two player parents
|
||||
exists = father
|
||||
exists = mother
|
||||
NOT = { any_parent = { is_ai = yes } }
|
||||
}
|
||||
OR = {
|
||||
AND = { #They are of my dynasty, not theirs
|
||||
dynasty = $CHILD$.dynasty
|
||||
$CHILD$ = {
|
||||
any_parent = {
|
||||
NOT = { this = scope:naming_parent }
|
||||
NOT = { dynasty = $CHILD$.dynasty }
|
||||
}
|
||||
}
|
||||
}
|
||||
AND = { #I am their mother, and parents are of same dynasty/neither has baby's dynasty
|
||||
$CHILD$ = { mother = { this = scope:naming_parent } }
|
||||
OR = {
|
||||
$CHILD$.mother.dynasty = $CHILD$.father.dynasty
|
||||
NOR = {
|
||||
$CHILD$.mother.dynasty = $CHILD$.dynasty
|
||||
$CHILD$.father.dynasty = $CHILD$.dynasty
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
76
common/scripted_triggers/00_board_game_scripted_triggers.txt
Normal file
76
common/scripted_triggers/00_board_game_scripted_triggers.txt
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
|
||||
##################################################
|
||||
# GENERIC TRIGGERS
|
||||
|
||||
# Note: this is a very stripped down trigger set. It's expected that it'll be parsed through something that parses out more typically unsuitable candidates (e.g., prisoners under most circumstances).
|
||||
bg_can_start_board_game_trigger = {
|
||||
# Check for the usual stuff.
|
||||
can_start_board_game_eligibility_checks_trigger = yes
|
||||
# And filter out those who can never play a board game.
|
||||
bg_can_start_board_game_is_scope_banned_checks_trigger = no
|
||||
}
|
||||
|
||||
can_start_board_game_eligibility_checks_trigger = {
|
||||
# Children need to be old enough to know to not eat the playing pieces.
|
||||
age >= 8
|
||||
# Otherwise, we're actually pretty forgiving of basically everyone being able to play somehow. For now.
|
||||
}
|
||||
|
||||
bg_can_start_board_game_is_scope_banned_checks_trigger = {
|
||||
# Currently, we just *always* filter anyone who's already in a bout.
|
||||
exists = var:engaged_in_board_game
|
||||
}
|
||||
|
||||
##################################################
|
||||
# INTERACTION TRIGGERS
|
||||
|
||||
bg_game_type_region_pachisi_trigger = {
|
||||
OR = {
|
||||
geographical_region = world_india
|
||||
geographical_region = world_burma
|
||||
}
|
||||
}
|
||||
|
||||
bg_game_type_region_hnefatafl_trigger = {
|
||||
NOT = { geographical_region = board_game_fidchell_region }
|
||||
OR = {
|
||||
geographical_region = world_europe_north
|
||||
geographical_region = world_europe_west_britannia
|
||||
}
|
||||
}
|
||||
|
||||
bg_game_type_region_tabula_trigger = {
|
||||
OR = {
|
||||
geographical_region = world_asia_minor
|
||||
geographical_region = world_europe_south
|
||||
}
|
||||
}
|
||||
|
||||
bg_game_type_region_go_trigger = {
|
||||
geographical_region = world_tibet
|
||||
}
|
||||
|
||||
bg_game_type_region_fidchell_trigger = {
|
||||
geographical_region = board_game_fidchell_region
|
||||
}
|
||||
|
||||
bg_stake_land_valid_neighbouring_county_to_trade_trigger = {
|
||||
tier = tier_county
|
||||
# Suppress a false positive error.
|
||||
trigger_if = {
|
||||
limit = { tier = tier_county }
|
||||
NOT = { this = prev.capital_county }
|
||||
any_neighboring_county = {
|
||||
# Ensure that they're swappable.
|
||||
OR = {
|
||||
# Generally, the county should be held by the other character.
|
||||
holder = $NEIGHBOUR$
|
||||
# But OCMs can be traded too.
|
||||
holder = {
|
||||
liege = $NEIGHBOUR$
|
||||
sub_realm_size = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
789
common/scripted_triggers/00_building_requirement_triggers.txt
Normal file
789
common/scripted_triggers/00_building_requirement_triggers.txt
Normal file
|
|
@ -0,0 +1,789 @@
|
|||
######################################################################
|
||||
# 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 }
|
||||
}
|
||||
}
|
||||
}
|
||||
362
common/scripted_triggers/00_childhood_triggers.txt
Normal file
362
common/scripted_triggers/00_childhood_triggers.txt
Normal file
|
|
@ -0,0 +1,362 @@
|
|||
@infant_upper_age_threshold_value = 2
|
||||
@teen_lower_threshold_value = 13
|
||||
@teen_upper_threshold_value = 19
|
||||
|
||||
child_is_infant_trigger = {
|
||||
age <= @infant_upper_age_threshold_value
|
||||
is_adult = no
|
||||
}
|
||||
|
||||
# Duplicated because there were some weird edge case OR uses where "child_is_infant_trigger = no" read _extremely_ confusingly.
|
||||
child_not_infant_trigger = {
|
||||
age > @infant_upper_age_threshold_value
|
||||
is_adult = no
|
||||
}
|
||||
|
||||
# At what point is it not weird to hear a child using (relatively) advanced reasoning & so able to hold an extended conversation?
|
||||
child_can_have_full_conversations_trigger = {
|
||||
age >= 6
|
||||
is_adult = no
|
||||
}
|
||||
|
||||
child_not_teen_trigger = {
|
||||
child_not_infant_trigger = yes
|
||||
age < @teen_lower_threshold_value
|
||||
is_adult = no
|
||||
}
|
||||
|
||||
# Duplicated because there were some weird edge case OR uses where "child_not_teen_trigger = no" read _extremely_ confusingly.
|
||||
child_is_teen_trigger = {
|
||||
age >= @teen_lower_threshold_value
|
||||
is_adult = no
|
||||
}
|
||||
|
||||
child_old_enough_for_responsibility_trigger = {
|
||||
age >= 8
|
||||
is_adult = no
|
||||
}
|
||||
|
||||
# Note: we don't want to say that children below this definitely can't read, that's a lot of edge cases to account for, but it's convenient to roughly unified trigger we can check for whether pensive characters are more likely to read or be read to.
|
||||
child_likely_reader_trigger = { age >= 7 }
|
||||
|
||||
character_is_teen_trigger = {
|
||||
age >= @teen_lower_threshold_value
|
||||
age <= @teen_upper_threshold_value
|
||||
}
|
||||
|
||||
character_is_teen_or_older_trigger = {
|
||||
age > @teen_lower_threshold_value
|
||||
}
|
||||
|
||||
save_good_friend_character_trigger_check = {
|
||||
is_adult = no
|
||||
age >= root.age_dif_child_down_friend
|
||||
age <= root.age_dif_child_up_friend
|
||||
NOT = { this = root }
|
||||
is_imprisoned = no
|
||||
opinion = {
|
||||
target = root
|
||||
value > -10
|
||||
}
|
||||
NOR = {
|
||||
has_relation_friend = root
|
||||
has_any_bad_relationship_with_root_trigger = yes
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
save_good_crush_character_trigger_check = {
|
||||
is_adult = no
|
||||
age >= root.age_dif_child_down
|
||||
age <= root.age_dif_child_up
|
||||
age > childhood_education_start_age
|
||||
NOT = { this = root }
|
||||
is_imprisoned = no
|
||||
is_close_family_of_root_trigger = no
|
||||
NOR = {
|
||||
root = { has_relation_crush = prev }
|
||||
has_relation_victim = root
|
||||
}
|
||||
OR = {
|
||||
has_sexuality = heterosexual
|
||||
has_sexuality = bisexual
|
||||
has_sexuality = homosexual
|
||||
}
|
||||
is_attracted_to_gender_of = root
|
||||
root = { is_attracted_to_gender_of = prev }
|
||||
OR = {
|
||||
num_of_relation_crush <= 2
|
||||
has_trait = lustful
|
||||
}
|
||||
}
|
||||
|
||||
save_good_bully_character_trigger_check = {
|
||||
is_adult = no
|
||||
age >= 6
|
||||
age >= root.age
|
||||
NOT = { this = root }
|
||||
is_imprisoned = no
|
||||
OR = {
|
||||
has_trait_malicious_trigger = yes
|
||||
has_trait_dominant_trigger = yes
|
||||
has_trait_emotional_trigger = yes
|
||||
}
|
||||
NOR = {
|
||||
has_trait = compassionate
|
||||
has_trait_submissive_trigger = yes
|
||||
}
|
||||
opinion = {
|
||||
target = root
|
||||
value < 0
|
||||
}
|
||||
NOR = {
|
||||
has_any_bad_relationship_with_root_trigger = yes
|
||||
has_relation_victim = root
|
||||
has_relation_friend = root
|
||||
has_relation_crush = root
|
||||
}
|
||||
}
|
||||
|
||||
save_good_victim_character_trigger_check = {
|
||||
is_adult = no
|
||||
age >= 6
|
||||
age <= root.age
|
||||
NOT = { this = root }
|
||||
is_imprisoned = no
|
||||
reverse_opinion = {
|
||||
target = root
|
||||
value < 0
|
||||
}
|
||||
NOR = {
|
||||
has_any_bad_relationship_with_root_trigger = yes
|
||||
has_relation_victim = root
|
||||
has_relation_friend = root
|
||||
has_relation_crush = root
|
||||
}
|
||||
}
|
||||
|
||||
child_suitable_to_play_with_character = {
|
||||
# Is available for events at $CHARACTER$'s locale.
|
||||
is_available_child = yes
|
||||
exists = location
|
||||
location = $CHARACTER$.location
|
||||
# Of a suitable age range.
|
||||
child_not_infant_trigger = yes
|
||||
# Doesn't have a bad relationship with $CHARACTER$.
|
||||
NOT = {
|
||||
has_any_bad_relationship_with_character_trigger = { CHARACTER = $CHARACTER$ }
|
||||
}
|
||||
}
|
||||
|
||||
child_suitable_to_play_with_character_one_sided = {
|
||||
child_suitable_to_play_with_character = { CHARACTER = $CHARACTER$ }
|
||||
is_ai = yes
|
||||
}
|
||||
|
||||
|
||||
|
||||
childhood_mean_child_trigger = {
|
||||
OR = {
|
||||
has_trait = rowdy
|
||||
has_personality_malicious_trigger = yes
|
||||
has_personality_dominant_trigger = yes
|
||||
ai_compassion <= low_negative_ai_value
|
||||
}
|
||||
}
|
||||
|
||||
childhood_loud_child_trigger = {
|
||||
OR = {
|
||||
has_trait = curious
|
||||
has_trait = bossy
|
||||
has_personality_extroverted_trigger = yes
|
||||
has_personality_emotional_trigger = yes
|
||||
ai_energy >= low_positive_ai_value
|
||||
ai_boldness >= low_positive_ai_value
|
||||
}
|
||||
}
|
||||
|
||||
childhood_quiet_child_trigger = {
|
||||
OR = {
|
||||
has_trait = pensive
|
||||
has_personality_submissive_trigger = yes
|
||||
has_personality_introverted_trigger = yes
|
||||
ai_energy <= low_negative_ai_value
|
||||
ai_boldness <= low_negative_ai_value
|
||||
}
|
||||
}
|
||||
|
||||
childhood_nice_child_trigger = {
|
||||
OR = {
|
||||
has_trait = charming
|
||||
has_trait = curious
|
||||
has_personality_benevolent_trigger = yes
|
||||
has_personality_levelheaded_trigger = yes
|
||||
ai_compassion >= low_positive_ai_value
|
||||
}
|
||||
}
|
||||
|
||||
suitable_same_realm_child = {
|
||||
exists = location.county.holder # Scoping like this allows children in the pool to also get this event
|
||||
location.county.holder = {
|
||||
OR = {
|
||||
AND = {
|
||||
is_ai = yes
|
||||
is_available_child = yes
|
||||
NOT = { this = root }
|
||||
age >= 6
|
||||
}
|
||||
any_courtier_or_guest = {
|
||||
is_ai = yes
|
||||
is_available_child = yes
|
||||
NOT = { this = root }
|
||||
age >= 6
|
||||
}
|
||||
any_warden_hostage = {
|
||||
is_ai = yes
|
||||
is_available_child = yes
|
||||
NOT = { this = root }
|
||||
age >= 6
|
||||
}
|
||||
any_vassal = {
|
||||
is_ai = yes
|
||||
is_available_child = yes
|
||||
NOT = { this = root }
|
||||
age >= 6
|
||||
}
|
||||
any_vassal = {
|
||||
any_courtier_or_guest = {
|
||||
is_ai = yes
|
||||
is_available_child = yes
|
||||
NOT = { this = root }
|
||||
age >= 6
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
similar_age_same_court_child = {
|
||||
exists = location.county.holder # Scoping like this allows children in the pool to also get this event
|
||||
location.county.holder = {
|
||||
OR = {
|
||||
AND = {
|
||||
is_ai = yes
|
||||
is_available_child = yes
|
||||
NOT = { this = root }
|
||||
age <= root.age_plus_3
|
||||
age >= age_minus_3
|
||||
}
|
||||
any_courtier_or_guest = {
|
||||
is_ai = yes
|
||||
is_available_child = yes
|
||||
NOT = { this = root }
|
||||
age <= root.age_plus_3
|
||||
age >= age_minus_3
|
||||
}
|
||||
any_warden_hostage = {
|
||||
is_ai = yes
|
||||
is_available_child = yes
|
||||
NOT = { this = root }
|
||||
age <= root.age_plus_3
|
||||
age >= age_minus_3
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
suitable_crush_trigger = {
|
||||
AND = {
|
||||
save_temporary_scope_as = temp_crush
|
||||
is_ai = yes
|
||||
is_available_child = yes
|
||||
NOT = { this = root }
|
||||
child_not_infant_trigger = yes
|
||||
age <= root.age_plus_3
|
||||
age >= root.age_minus_3
|
||||
location = root.location
|
||||
OR = {
|
||||
matching_gender_and_sexuality_trigger = {
|
||||
CHARACTER_1 = root
|
||||
CHARACTER_2 = scope:temp_crush
|
||||
}
|
||||
AND = {
|
||||
has_sexuality = asexual
|
||||
root = {
|
||||
OR = {
|
||||
is_attracted_to_gender_of = scope:temp_crush
|
||||
has_sexuality = asexual
|
||||
}
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
root = { has_sexuality = asexual }
|
||||
OR = {
|
||||
is_attracted_to_gender_of = root
|
||||
has_sexuality = asexual
|
||||
}
|
||||
}
|
||||
}
|
||||
NOT = {
|
||||
relation_with_character_is_incestuous_in_my_faith_trigger = { CHARACTER = root }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
suitable_crush_same_court_child = {
|
||||
exists = location.county.holder # Scoping like this allows children in the pool to also get this event
|
||||
location.county.holder = {
|
||||
OR = {
|
||||
save_good_crush_character_trigger_check = yes
|
||||
any_courtier_or_guest = {
|
||||
save_good_crush_character_trigger_check = yes
|
||||
}
|
||||
any_warden_hostage = {
|
||||
save_good_crush_character_trigger_check = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
guardian_or_court_tutor_trait = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
any_relation = {
|
||||
type = guardian
|
||||
}
|
||||
}
|
||||
any_relation = {
|
||||
type = guardian
|
||||
has_trait = $TRAIT$
|
||||
}
|
||||
}
|
||||
trigger_else = {
|
||||
court_owner.court_position:court_tutor_court_position ?= {
|
||||
has_trait = $TRAIT$
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
guardian_or_court_tutor_2_trait = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
any_relation = {
|
||||
type = guardian
|
||||
}
|
||||
}
|
||||
any_relation = {
|
||||
type = guardian
|
||||
OR = {
|
||||
has_trait = $TRAIT$
|
||||
has_trait = $TRAIT_2$
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_else = {
|
||||
court_owner.court_position:court_tutor_court_position ?= {
|
||||
OR = {
|
||||
has_trait = $TRAIT$
|
||||
has_trait = $TRAIT_2$
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
26
common/scripted_triggers/00_clan_triggers.txt
Normal file
26
common/scripted_triggers/00_clan_triggers.txt
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
### CLAN TRIGGERS ###
|
||||
is_in_clan_trigger = {
|
||||
exists = house
|
||||
government_has_flag = government_is_clan
|
||||
top_liege = house.house_head
|
||||
}
|
||||
|
||||
is_in_same_clan_as_trigger = {
|
||||
exists = house
|
||||
exists = $CHARACTER$.house
|
||||
OR = {
|
||||
government_has_flag = government_is_clan
|
||||
$CHARACTER$ = { government_has_flag = government_is_clan }
|
||||
}
|
||||
house = $CHARACTER$.house
|
||||
top_liege = $CHARACTER$.top_liege
|
||||
}
|
||||
|
||||
check_tax_collector_aptitude = {
|
||||
$CHARACTER$ = {
|
||||
tax_collector_aptitude = {
|
||||
tax_slot_type = clan_tax_slot
|
||||
value = $VALUE$
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -126,7 +126,12 @@ portrait_wear_armor_trigger = {
|
|||
}
|
||||
}
|
||||
}
|
||||
NOT = { has_any_charioteer_trait = yes }
|
||||
NOT = {
|
||||
OR = {
|
||||
has_court_position = court_astrologer_court_position
|
||||
has_any_charioteer_trait = yes
|
||||
}
|
||||
}
|
||||
portrait_ep2_wedding_clothes_trigger = no
|
||||
trigger_if = {
|
||||
limit = { portrait_sickness_trigger = yes }
|
||||
|
|
@ -271,6 +276,7 @@ portrait_wear_helmet_trigger = { # Different from Armor, as Kings and Emperors s
|
|||
}
|
||||
is_incapable = no
|
||||
is_imprisoned = no
|
||||
NOT = { has_court_position = court_astrologer_court_position }
|
||||
trigger_if = {
|
||||
limit = { portrait_sickness_trigger = yes }
|
||||
is_in_army = yes
|
||||
|
|
@ -394,6 +400,52 @@ is_dwarf_height = {
|
|||
}
|
||||
}
|
||||
|
||||
should_use_fat_animation = {
|
||||
OR = {
|
||||
AND = { # Dwarf not fat
|
||||
scope:current_weight <= 40
|
||||
is_dwarf_height = yes
|
||||
}
|
||||
AND = { # Fat non dwarf
|
||||
scope:current_weight >= 40
|
||||
is_dwarf_height = no
|
||||
}
|
||||
AND = { # Pregnant non dwarf
|
||||
portrait_has_trait_trigger = { TRAIT = pregnant }
|
||||
is_dwarf_height = no
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
should_use_fat_dwarf_animation = {
|
||||
# Fat dwarf
|
||||
scope:current_weight >= 40
|
||||
is_dwarf_height = yes
|
||||
}
|
||||
|
||||
should_use_pregnant_animation = {
|
||||
portrait_has_trait_trigger = { TRAIT = pregnant }
|
||||
scope:current_weight <= 40
|
||||
is_dwarf_height = no
|
||||
}
|
||||
|
||||
should_use_fat_pregnant_animation = {
|
||||
portrait_has_trait_trigger = { TRAIT = pregnant }
|
||||
OR = {
|
||||
scope:current_weight >= 40
|
||||
AND = {
|
||||
is_dwarf_height = yes
|
||||
scope:current_weight <= 40
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
should_use_fat_dwarf_pregnant_animation = {
|
||||
portrait_has_trait_trigger = { TRAIT = pregnant }
|
||||
is_dwarf_height = yes
|
||||
scope:current_weight >= 40
|
||||
}
|
||||
|
||||
portrait_shared_clothing_contents_trigger = {
|
||||
trigger_if = {
|
||||
limit = { exists = top_liege.var:adopted_cultural_style }
|
||||
|
|
@ -637,7 +689,10 @@ portrait_fp3_iranian_clothing_spouse_trigger = {
|
|||
|
||||
#turkic
|
||||
portrait_fp3_turkic_clothing_trigger = {
|
||||
has_fp3_dlc_trigger = yes
|
||||
OR = {
|
||||
has_fp3_dlc_trigger = yes
|
||||
has_mpo_dlc_trigger = yes
|
||||
}
|
||||
portrait_shared_clothing_contents_trigger = {
|
||||
CULTURE_SCOPE = scope:culture
|
||||
CULTURE_FLAG = turkic
|
||||
|
|
@ -645,7 +700,24 @@ portrait_fp3_turkic_clothing_trigger = {
|
|||
}
|
||||
|
||||
portrait_fp3_turkic_clothing_spouse_trigger = {
|
||||
has_fp3_dlc_trigger = yes
|
||||
OR = {
|
||||
has_fp3_dlc_trigger = yes
|
||||
has_mpo_dlc_trigger = yes
|
||||
}
|
||||
portrait_shared_clothing_contents_trigger = {
|
||||
CULTURE_SCOPE = culture
|
||||
CULTURE_FLAG = turkic
|
||||
}
|
||||
}
|
||||
|
||||
portrait_turkic_clothing_trigger = {
|
||||
portrait_shared_clothing_contents_trigger = {
|
||||
CULTURE_SCOPE = scope:culture
|
||||
CULTURE_FLAG = turkic
|
||||
}
|
||||
}
|
||||
|
||||
portrait_turkic_clothing_spouse_trigger = {
|
||||
portrait_shared_clothing_contents_trigger = {
|
||||
CULTURE_SCOPE = culture
|
||||
CULTURE_FLAG = turkic
|
||||
|
|
@ -869,20 +941,6 @@ portrait_rus_clothing_spouse_trigger = {
|
|||
}
|
||||
}
|
||||
|
||||
portrait_turkic_clothing_trigger = {
|
||||
portrait_shared_clothing_contents_trigger = {
|
||||
CULTURE_SCOPE = scope:culture
|
||||
CULTURE_FLAG = turkic
|
||||
}
|
||||
}
|
||||
|
||||
portrait_turkic_clothing_spouse_trigger = {
|
||||
portrait_shared_clothing_contents_trigger = {
|
||||
CULTURE_SCOPE = culture
|
||||
CULTURE_FLAG = turkic
|
||||
}
|
||||
}
|
||||
|
||||
portrait_can_use_noble_headgear_trigger = {
|
||||
NAND = {
|
||||
portrait_has_trait_trigger = { TRAIT = peasant_leader }
|
||||
|
|
@ -1068,19 +1126,20 @@ portrait_commoner_trigger = {
|
|||
government_has_flag = government_is_landless_adventurer
|
||||
has_realm_law = camp_purpose_scholars
|
||||
}
|
||||
government_has_flag = government_is_herder
|
||||
}
|
||||
NOR = {
|
||||
portrait_high_nobles_trigger = {
|
||||
CULTURE_INPUT = $CULTURE_INPUT$
|
||||
CULTURE_INPUT = $CULTURE_INPUT$
|
||||
}
|
||||
portrait_royalty_trigger = {
|
||||
CULTURE_INPUT = $CULTURE_INPUT$
|
||||
CULTURE_INPUT = $CULTURE_INPUT$
|
||||
}
|
||||
portrait_imperial_trigger = {
|
||||
CULTURE_INPUT = $CULTURE_INPUT$
|
||||
CULTURE_INPUT = $CULTURE_INPUT$
|
||||
}
|
||||
portrait_low_nobles_trigger = {
|
||||
CULTURE_INPUT = $CULTURE_INPUT$
|
||||
CULTURE_INPUT = $CULTURE_INPUT$
|
||||
}
|
||||
}
|
||||
trigger_if = {
|
||||
|
|
@ -1107,10 +1166,10 @@ portrait_commoner_trigger = {
|
|||
liege ?= {
|
||||
highest_held_title_tier >= tier_duchy
|
||||
}
|
||||
OR = {
|
||||
OR = {
|
||||
has_council_position = councillor_chancellor
|
||||
has_council_position = councillor_steward
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_if = {
|
||||
|
|
@ -1140,11 +1199,12 @@ portrait_commoner_no_mayors_trigger = {
|
|||
government_has_flag = government_is_landless_adventurer
|
||||
has_realm_law = camp_purpose_scholars
|
||||
}
|
||||
government_has_flag = government_is_herder
|
||||
}
|
||||
trigger_if = {
|
||||
limit = { exists = this } # To check if this is an actual character
|
||||
NOR = {
|
||||
government_has_flag = government_is_republic
|
||||
government_has_flag = government_is_special_republic
|
||||
primary_spouse ?= {
|
||||
AND = {
|
||||
highest_held_title_tier > tier_county
|
||||
|
|
@ -1190,13 +1250,13 @@ portrait_low_nobles_trigger = {
|
|||
}
|
||||
NOR = {
|
||||
portrait_imperial_trigger = {
|
||||
CULTURE_INPUT = $CULTURE_INPUT$
|
||||
CULTURE_INPUT = $CULTURE_INPUT$
|
||||
}
|
||||
portrait_royalty_trigger = {
|
||||
CULTURE_INPUT = $CULTURE_INPUT$
|
||||
CULTURE_INPUT = $CULTURE_INPUT$
|
||||
}
|
||||
portrait_high_nobles_trigger = {
|
||||
CULTURE_INPUT = $CULTURE_INPUT$
|
||||
CULTURE_INPUT = $CULTURE_INPUT$
|
||||
}
|
||||
}
|
||||
OR = {
|
||||
|
|
@ -1208,11 +1268,11 @@ portrait_low_nobles_trigger = {
|
|||
liege ?= {
|
||||
highest_held_title_tier >= tier_duchy
|
||||
}
|
||||
OR = {
|
||||
OR = {
|
||||
has_council_position = councillor_chancellor
|
||||
has_council_position = councillor_steward
|
||||
}
|
||||
portrait_$CULTURE_INPUT$_clothing_trigger = yes
|
||||
}
|
||||
portrait_$CULTURE_INPUT$_clothing_trigger = yes
|
||||
}
|
||||
AND = { # Courtiers
|
||||
highest_held_title_tier < tier_county
|
||||
|
|
@ -1242,8 +1302,9 @@ portrait_low_nobles_trigger = {
|
|||
highest_held_title_tier = tier_county
|
||||
}
|
||||
NOR = {
|
||||
government_has_flag = government_is_herder
|
||||
AND = {
|
||||
government_has_flag = government_is_republic
|
||||
government_has_flag = government_is_special_republic
|
||||
primary_title.tier > tier_barony
|
||||
}
|
||||
AND = {
|
||||
|
|
@ -1272,7 +1333,7 @@ portrait_low_nobles_trigger = {
|
|||
}
|
||||
NOR = {
|
||||
AND = {
|
||||
government_has_flag = government_is_republic
|
||||
government_has_flag = government_is_special_republic
|
||||
primary_title.tier > tier_barony
|
||||
}
|
||||
AND = {
|
||||
|
|
@ -1319,7 +1380,7 @@ portrait_high_nobles_trigger = {
|
|||
OR = {
|
||||
highest_held_title_tier >= tier_duchy # Most cultures do not have specific clothes for royalty and imperial tier, so we use the high nobility for anything from duke/duchess and up
|
||||
AND = {
|
||||
government_has_flag = government_is_republic
|
||||
government_has_flag = government_is_special_republic
|
||||
primary_title.tier > tier_barony
|
||||
}
|
||||
AND = {
|
||||
|
|
@ -1353,7 +1414,7 @@ portrait_high_nobles_trigger = {
|
|||
OR = {
|
||||
highest_held_title_tier >= tier_duchy
|
||||
AND = {
|
||||
government_has_flag = government_is_republic
|
||||
government_has_flag = government_is_special_republic
|
||||
primary_title.tier > tier_barony
|
||||
}
|
||||
AND = {
|
||||
|
|
@ -1388,6 +1449,7 @@ portrait_high_nobles_trigger = {
|
|||
}
|
||||
}
|
||||
AND = { # Family members of rulers
|
||||
highest_held_title_tier <= tier_duchy
|
||||
any_close_family_member = {
|
||||
is_ruler = yes
|
||||
highest_held_title_tier > tier_duchy
|
||||
|
|
@ -1418,7 +1480,7 @@ portrait_high_nobles_headgear_trigger = {
|
|||
OR = {
|
||||
highest_held_title_tier = tier_duchy
|
||||
AND = {
|
||||
government_has_flag = government_is_republic
|
||||
government_has_flag = government_is_special_republic
|
||||
primary_title.tier > tier_county
|
||||
}
|
||||
AND = {
|
||||
|
|
@ -1451,7 +1513,7 @@ portrait_high_nobles_headgear_trigger = {
|
|||
OR = {
|
||||
highest_held_title_tier = tier_duchy
|
||||
AND = {
|
||||
government_has_flag = government_is_republic
|
||||
government_has_flag = government_is_special_republic
|
||||
primary_title.tier > tier_county
|
||||
}
|
||||
AND = {
|
||||
|
|
@ -1485,6 +1547,7 @@ portrait_high_nobles_headgear_trigger = {
|
|||
}
|
||||
}
|
||||
AND = { # Family members of rulers
|
||||
highest_held_title_tier <= tier_duchy
|
||||
any_close_family_member = {
|
||||
is_ruler = yes
|
||||
highest_held_title_tier > tier_duchy
|
||||
|
|
@ -1500,7 +1563,7 @@ portrait_high_nobles_headgear_trigger = {
|
|||
highest_held_title_tier >= tier_kingdom
|
||||
NOR = {
|
||||
AND = {
|
||||
government_has_flag = government_is_republic
|
||||
government_has_flag = government_is_special_republic
|
||||
primary_title.tier > tier_barony
|
||||
}
|
||||
AND = {
|
||||
|
|
@ -1510,7 +1573,7 @@ portrait_high_nobles_headgear_trigger = {
|
|||
}
|
||||
portrait_$CULTURE_INPUT$_clothing_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
portrait_royalty_trigger = {
|
||||
|
|
@ -1522,7 +1585,7 @@ portrait_royalty_trigger = {
|
|||
highest_held_title_tier = tier_kingdom
|
||||
NOR = {
|
||||
AND = {
|
||||
government_has_flag = government_is_republic
|
||||
government_has_flag = government_is_special_republic
|
||||
primary_title.tier > tier_barony
|
||||
}
|
||||
AND = {
|
||||
|
|
@ -1544,7 +1607,7 @@ portrait_royalty_trigger = {
|
|||
highest_held_title_tier = tier_kingdom
|
||||
NOR = {
|
||||
AND = {
|
||||
government_has_flag = government_is_republic
|
||||
government_has_flag = government_is_special_republic
|
||||
primary_title.tier > tier_barony
|
||||
}
|
||||
AND = {
|
||||
|
|
@ -1563,7 +1626,7 @@ portrait_royalty_trigger = {
|
|||
highest_held_title_tier >= tier_kingdom
|
||||
NOR = {
|
||||
AND = {
|
||||
government_has_flag = government_is_republic
|
||||
government_has_flag = government_is_special_republic
|
||||
primary_title.tier > tier_barony
|
||||
}
|
||||
AND = {
|
||||
|
|
@ -1615,7 +1678,7 @@ portrait_royalty_african_headgear_trigger = {
|
|||
}
|
||||
}
|
||||
}
|
||||
NOT = { government_has_flag = government_is_republic }
|
||||
NOT = { government_has_flag = government_is_special_republic }
|
||||
OR = {
|
||||
portrait_african_clothing_trigger = yes
|
||||
AND = {
|
||||
|
|
@ -1653,7 +1716,7 @@ portrait_royalty_african_headgear_trigger = {
|
|||
has_realm_law = camp_purpose_legitimists
|
||||
}
|
||||
}
|
||||
NOT = { government_has_flag = government_is_republic }
|
||||
NOT = { government_has_flag = government_is_special_republic }
|
||||
OR = {
|
||||
portrait_african_clothing_spouse_trigger = yes
|
||||
AND = {
|
||||
|
|
@ -1684,7 +1747,7 @@ portrait_imperial_trigger = {
|
|||
highest_held_title_tier = tier_empire
|
||||
NOR = {
|
||||
AND = {
|
||||
government_has_flag = government_is_republic
|
||||
government_has_flag = government_is_special_republic
|
||||
primary_title.tier > tier_barony
|
||||
}
|
||||
AND = {
|
||||
|
|
@ -1705,7 +1768,7 @@ portrait_imperial_trigger = {
|
|||
highest_held_title_tier = tier_empire
|
||||
NOR = {
|
||||
AND = {
|
||||
government_has_flag = government_is_republic
|
||||
government_has_flag = government_is_special_republic
|
||||
primary_title.tier > tier_barony
|
||||
}
|
||||
AND = {
|
||||
|
|
@ -1744,7 +1807,7 @@ portrait_imperial_nobles_headgear_trigger = {
|
|||
is_ruler = yes
|
||||
government_has_flag = government_is_landless_adventurer
|
||||
}
|
||||
government_has_flag = government_is_republic
|
||||
government_has_flag = government_is_special_republic
|
||||
AND = {
|
||||
is_ruler = yes
|
||||
government_has_flag = government_is_theocracy
|
||||
|
|
@ -2000,6 +2063,22 @@ portrait_beggar_trigger = {
|
|||
}
|
||||
}
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
is_married = yes
|
||||
}
|
||||
NOT = {
|
||||
any_consort = {
|
||||
OR = {
|
||||
is_landed = yes
|
||||
AND = {
|
||||
government_has_flag = government_is_nomadic
|
||||
is_ruler = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -2036,7 +2115,7 @@ portrait_mayor_trigger = {
|
|||
portrait_mayor_headgear_trigger = {
|
||||
exists = this
|
||||
highest_held_title_tier < tier_county
|
||||
government_has_flag = government_is_republic
|
||||
government_has_flag = government_is_special_republic
|
||||
portrait_$CULTURE_INPUT$_clothing_trigger = yes
|
||||
}
|
||||
|
||||
|
|
@ -2181,17 +2260,9 @@ portrait_religious_head_popes_trigger = {
|
|||
exists = this
|
||||
OR = {
|
||||
AND = {
|
||||
faith = faith:roman_catholic
|
||||
faith = faith:catholic
|
||||
is_adult = yes
|
||||
religion = religion:catholic_religion
|
||||
primary_title ?= {
|
||||
is_head_of_faith = yes
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
faith = faith:sevillian
|
||||
is_adult = yes
|
||||
religion = religion:catholic_religion
|
||||
religion = religion:christianity_religion
|
||||
primary_title ?= {
|
||||
is_head_of_faith = yes
|
||||
}
|
||||
|
|
@ -2242,25 +2313,8 @@ portrait_religious_christian_trigger = {
|
|||
}
|
||||
|
||||
portrait_religious_catholic_trigger = {
|
||||
OR = {
|
||||
faith = {
|
||||
portrait_religious_faith_or_foundational_trigger = { FAITH = faith:roman_catholic }
|
||||
}
|
||||
faith = {
|
||||
portrait_religious_faith_or_foundational_trigger = { FAITH = faith:sevillian }
|
||||
}
|
||||
faith = {
|
||||
portrait_religious_faith_or_foundational_trigger = { FAITH = faith:celtic }
|
||||
}
|
||||
faith = {
|
||||
portrait_religious_faith_or_foundational_trigger = { FAITH = faith:iberian }
|
||||
}
|
||||
faith = {
|
||||
portrait_religious_faith_or_foundational_trigger = { FAITH = faith:orleaniste }
|
||||
}
|
||||
faith = {
|
||||
portrait_religious_faith_or_foundational_trigger = { FAITH = faith:teutonic }
|
||||
}
|
||||
faith = {
|
||||
portrait_religious_faith_or_foundational_trigger = { FAITH = faith:catholic }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2377,7 +2431,7 @@ portrait_religious_african_trigger = {
|
|||
|
||||
portrait_reichskrone_trigger = {
|
||||
exists = this
|
||||
AND = {
|
||||
OR = {
|
||||
has_primary_title = title:e_hre
|
||||
any_equipped_character_artifact = {
|
||||
has_variable = reichskrone
|
||||
|
|
@ -2411,9 +2465,9 @@ portrait_ep2_western_travel_cloak_trigger = {
|
|||
# thou shalt shed thy cloak whilst at an activity
|
||||
trigger_if = {
|
||||
limit = {
|
||||
involved_activity ?= {
|
||||
involved_activity ?= {
|
||||
NOR = {
|
||||
has_activity_type = activity_hunt
|
||||
has_activity_type = activity_hunt
|
||||
has_activity_type = activity_roaming
|
||||
}
|
||||
}
|
||||
|
|
@ -2446,9 +2500,9 @@ portrait_ep2_mena_travel_cloak_trigger = {
|
|||
# thou shalt shed thy cloak whilst at an activity
|
||||
trigger_if = {
|
||||
limit = {
|
||||
involved_activity ?= {
|
||||
involved_activity ?= {
|
||||
NOR = {
|
||||
has_activity_type = activity_hunt
|
||||
has_activity_type = activity_hunt
|
||||
has_activity_type = activity_roaming
|
||||
}
|
||||
}
|
||||
|
|
@ -2535,5 +2589,3 @@ portrait_ep2_wedding_clothes_trigger = {
|
|||
}
|
||||
|
||||
### General headgear triggers ###
|
||||
|
||||
|
||||
|
|
|
|||
364
common/scripted_triggers/00_coa_triggers.txt
Normal file
364
common/scripted_triggers/00_coa_triggers.txt
Normal file
|
|
@ -0,0 +1,364 @@
|
|||
#Triggers to control Coat of Arms weighting
|
||||
|
||||
coa_african_trigger = {
|
||||
OR = {
|
||||
coa_african_culture_trigger = yes
|
||||
coa_african_religion_trigger = yes
|
||||
}
|
||||
}
|
||||
|
||||
coa_african_culture_trigger = {
|
||||
scope:culture = {
|
||||
OR = {
|
||||
has_coa_gfx = central_african_group_coa_gfx
|
||||
has_coa_gfx = east_african_coa_gfx
|
||||
has_coa_gfx = west_african_group_coa_gfx
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
coa_african_religion_trigger = {
|
||||
scope:faith.religion = {
|
||||
save_temporary_scope_as = religion
|
||||
}
|
||||
OR = {
|
||||
scope:religion = religion:akom_religion
|
||||
scope:religion = religion:waaqism_religion
|
||||
scope:religion = religion:west_african_religion
|
||||
scope:religion = religion:west_african_bori_religion
|
||||
scope:religion = religion:west_african_orisha_religion
|
||||
scope:religion = religion:west_african_roog_religion
|
||||
}
|
||||
}
|
||||
|
||||
coa_bishopric_trigger = {
|
||||
scope:faith.religion = religion:christianity_religion
|
||||
coa_theocratic_trigger = yes
|
||||
}
|
||||
|
||||
coa_breton_trigger = {
|
||||
OR = {
|
||||
scope:culture = { has_coa_gfx = breton_coa_gfx }
|
||||
AND = {
|
||||
exists = scope:title
|
||||
scope:title = {
|
||||
any_this_title_or_de_jure_above = {
|
||||
this = title:k_brittany
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
coa_byzantine_trigger = {
|
||||
OR = {
|
||||
scope:culture = { has_coa_gfx = byzantine_group_coa_gfx }
|
||||
AND = {
|
||||
exists = scope:title
|
||||
scope:title = {
|
||||
any_this_title_or_de_jure_above = {
|
||||
this = title:e_byzantium
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
coa_castilian_trigger = {
|
||||
OR = {
|
||||
scope:culture = { has_coa_gfx = castilian_coa_gfx }
|
||||
AND = {
|
||||
exists = scope:title
|
||||
scope:title = {
|
||||
any_this_title_or_de_jure_above = {
|
||||
this = title:k_castille
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
coa_coptic_trigger = {
|
||||
OR = {
|
||||
# TODO graphical faith trigger
|
||||
scope:faith = faith:coptic
|
||||
#scope:faith = faith:armenian_apostolic
|
||||
#scope:faith = faith:paulician
|
||||
}
|
||||
}
|
||||
|
||||
coa_cross_trigger = {
|
||||
scope:faith = {
|
||||
religion = religion:christianity_religion
|
||||
NOT = { has_doctrine = tenet_aniconism }
|
||||
}
|
||||
}
|
||||
|
||||
coa_england_switches_to_france_coa_trigger = {
|
||||
holder = {
|
||||
OR = {
|
||||
has_title = title:k_france
|
||||
has_claim_on = title:k_france
|
||||
has_title = title:e_france
|
||||
has_claim_on = title:e_france
|
||||
}
|
||||
}
|
||||
}
|
||||
coa_switch_to_norman_trigger = {
|
||||
holder.culture = {
|
||||
OR = {
|
||||
has_coa_gfx = english_coa_gfx
|
||||
has_coa_gfx = frankish_group_coa_gfx
|
||||
has_coa_gfx = latin_group_coa_gfx
|
||||
has_coa_gfx = iberian_group_coa_gfx
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
coa_switch_to_norse_trigger = {
|
||||
holder = {
|
||||
NOT = {
|
||||
faith.religion = religion:christianity_religion
|
||||
}
|
||||
OR = {
|
||||
faith.religion = religion:germanic_religion
|
||||
culture = { has_coa_gfx = norse_coa_gfx }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
coa_feudal_trigger = {
|
||||
scope:faith.religion = religion:christianity_religion
|
||||
government_has_flag = government_is_feudal
|
||||
}
|
||||
|
||||
coa_french_trigger = {
|
||||
OR = {
|
||||
scope:culture = { has_coa_gfx = french_coa_gfx }
|
||||
AND = {
|
||||
exists = root
|
||||
any_liege_or_above = {
|
||||
primary_title = {
|
||||
this = title:k_france
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
coa_irish_trigger = {
|
||||
OR = {
|
||||
scope:culture = { has_coa_gfx = irish_coa_gfx }
|
||||
AND = {
|
||||
exists = scope:title
|
||||
scope:title = {
|
||||
any_this_title_or_de_jure_above = {
|
||||
this = title:k_ireland
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
coa_indian_culture_trigger = {
|
||||
OR = {
|
||||
scope:culture = { has_coa_gfx = burman_group_coa_gfx }
|
||||
scope:culture = { has_coa_gfx = dravidian_group_coa_gfx }
|
||||
scope:culture = { has_coa_gfx = indo_aryan_group_coa_gfx }
|
||||
scope:culture = { has_coa_gfx = tibetan_group_coa_gfx }
|
||||
}
|
||||
}
|
||||
coa_indian_region_trigger = {
|
||||
exists = scope:title
|
||||
scope:title = {
|
||||
any_this_title_or_de_jure_above = {
|
||||
OR = {
|
||||
this = title:e_india
|
||||
this = title:e_bengal
|
||||
this = title:e_deccan
|
||||
this = title:e_rajastan
|
||||
this = title:e_tibet
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
coa_indian_religion_trigger = {
|
||||
scope:faith.religion = {
|
||||
save_temporary_scope_as = religion
|
||||
}
|
||||
OR = {
|
||||
scope:religion = religion:bon_religion
|
||||
scope:religion = religion:buddhism_religion
|
||||
scope:religion = religion:hinduism_religion
|
||||
scope:religion = religion:jainism_religion
|
||||
}
|
||||
}
|
||||
coa_indian_trigger = {
|
||||
OR = {
|
||||
coa_indian_culture_trigger = yes
|
||||
coa_indian_region_trigger = yes
|
||||
coa_indian_religion_trigger = yes
|
||||
}
|
||||
}
|
||||
|
||||
coa_jewish_trigger = {
|
||||
OR = {
|
||||
scope:faith.religion = religion:judaism_religion
|
||||
scope:culture = { has_coa_gfx = israelite_group_coa_gfx }
|
||||
}
|
||||
}
|
||||
|
||||
coa_leonese_trigger = {
|
||||
OR = {
|
||||
scope:culture = { has_coa_gfx = leonese_coa_gfx }
|
||||
AND = {
|
||||
exists = scope:title
|
||||
scope:title = {
|
||||
any_this_title_or_de_jure_above = {
|
||||
this = title:k_leon
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
coa_manx_trigger = {
|
||||
OR = {
|
||||
AND = {
|
||||
exists = scope:title
|
||||
scope:title = {
|
||||
any_this_title_or_de_jure_above = {
|
||||
this = title:d_the_isles # Mann
|
||||
}
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
exists = root
|
||||
any_liege_or_above = {
|
||||
primary_title = {
|
||||
OR = {
|
||||
this = title:c_isle_of_man
|
||||
this = title:d_the_isles # Mann
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
coa_mena_trigger = {
|
||||
OR = {
|
||||
scope:faith.religion = religion:islam_religion
|
||||
scope:culture = {
|
||||
OR = {
|
||||
has_coa_gfx = arabic_group_coa_gfx
|
||||
has_coa_gfx = berber_group_coa_gfx
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
coa_suomenusko_trigger = {
|
||||
OR = {
|
||||
scope:faith.religion = religion:finno_ugric_religion
|
||||
scope:culture = {
|
||||
OR = {
|
||||
has_coa_gfx = balto_finnic_group_coa_gfx
|
||||
has_coa_gfx = ugro_permian_group_coa_gfx
|
||||
has_coa_gfx = volga_finnic_group_coa_gfx
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
coa_polish_trigger = {
|
||||
OR = {
|
||||
scope:culture = { has_coa_gfx = polish_coa_gfx }
|
||||
AND = {
|
||||
exists = root
|
||||
any_liege_or_above = {
|
||||
primary_title = {
|
||||
this = title:k_poland
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
coa_scottish_trigger = {
|
||||
OR = {
|
||||
scope:culture = { has_coa_gfx = scottish_coa_gfx }
|
||||
AND = {
|
||||
exists = scope:title
|
||||
scope:title = {
|
||||
any_this_title_or_de_jure_above = {
|
||||
this = title:k_scotland
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
coa_theocratic_trigger = {
|
||||
exists = root
|
||||
OR = {
|
||||
government_has_flag = government_is_theocracy
|
||||
AND = {
|
||||
exists = liege
|
||||
liege = {
|
||||
any_sub_realm_barony = {
|
||||
lessee = ROOT
|
||||
title_province = {
|
||||
has_holding_type = church_holding
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
coa_welsh_trigger = {
|
||||
scope:culture = { has_coa_gfx = welsh_coa_gfx }
|
||||
}
|
||||
|
||||
coa_tamga_trigger = {
|
||||
scope:culture = { has_coa_gfx = steppe_coa_gfx }
|
||||
}
|
||||
|
||||
coa_scandinavian_trigger = {
|
||||
OR = {
|
||||
scope:culture = { has_coa_gfx = swedish_coa_gfx }
|
||||
scope:culture = { has_coa_gfx = norwegian_coa_gfx }
|
||||
scope:culture = { has_coa_gfx = danish_coa_gfx }
|
||||
}
|
||||
}
|
||||
|
||||
coa_norse_trigger = {
|
||||
scope:culture = { has_coa_gfx = norse_coa_gfx }
|
||||
}
|
||||
|
||||
coa_germanic_trigger = {
|
||||
scope:culture = { has_coa_gfx = german_group_coa_gfx }
|
||||
}
|
||||
|
||||
coa_iberian_trigger = {
|
||||
OR = {
|
||||
scope:culture = { has_coa_gfx = iberian_group_coa_gfx }
|
||||
AND = {
|
||||
scope:culture = { has_coa_gfx = arabic_group_coa_gfx }
|
||||
AND = {
|
||||
exists = scope:title
|
||||
scope:title = {
|
||||
any_this_title_or_de_jure_above = {
|
||||
this = title:e_spain
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
coa_iranian_trigger = {
|
||||
scope:culture = { has_coa_gfx = iranian_group_coa_gfx }
|
||||
}
|
||||
62
common/scripted_triggers/00_commander_triggers.txt
Normal file
62
common/scripted_triggers/00_commander_triggers.txt
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
#Triggers relating to Commander Characters
|
||||
|
||||
commander_in_terrain_specialisation = {
|
||||
OR = {
|
||||
AND = {
|
||||
has_trait = desert_warrior
|
||||
location = {
|
||||
terrain = desert
|
||||
terrain = desert_mountains
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
has_trait = jungle_stalker
|
||||
location = { terrain = jungle }
|
||||
}
|
||||
AND = {
|
||||
has_trait = open_terrain_expert
|
||||
location = {
|
||||
terrain = farmlands
|
||||
terrain = plains
|
||||
terrain = steppe
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
has_trait = rough_terrain_expert
|
||||
location = {
|
||||
terrain = hills
|
||||
terrain = mountains
|
||||
terrain = wetlands
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
has_trait = forest_fighter
|
||||
location = {
|
||||
terrain = forest
|
||||
terrain = taiga
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
has_commander_trait_trigger = {
|
||||
OR = {
|
||||
has_trait = logistician
|
||||
has_trait = military_engineer
|
||||
has_trait = aggressive_attacker
|
||||
has_trait = unyielding_defender
|
||||
has_trait = forder
|
||||
has_trait = flexible_leader
|
||||
has_trait = desert_warrior
|
||||
has_trait = jungle_stalker
|
||||
has_trait = reaver
|
||||
has_trait = reckless
|
||||
has_trait = holy_warrior
|
||||
has_trait = open_terrain_expert
|
||||
has_trait = rough_terrain_expert
|
||||
has_trait = forest_fighter
|
||||
has_trait = cautious_leader
|
||||
has_trait = organizer
|
||||
has_trait = winter_soldier
|
||||
}
|
||||
}
|
||||
22
common/scripted_triggers/00_compliment_triggers.txt
Normal file
22
common/scripted_triggers/00_compliment_triggers.txt
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
#####################
|
||||
# COMPLIMENT SYSTEM #
|
||||
#####################
|
||||
#This system evaluates whether a character would accept a certain type of compliment (types listed below) from another character. It will set a compliment_outcome varaible with a flag value of either good, neutral or bad which can be used to trigger follow up events. Read more in the effects file.
|
||||
|
||||
can_receieve_good_available_compliment_trigger = {
|
||||
OR = {
|
||||
ai_compassion >= low_positive_ai_value
|
||||
ai_boldness >= low_positive_ai_value
|
||||
ai_honor >= low_positive_ai_value
|
||||
ai_greed >= low_positive_ai_value
|
||||
ai_rationality >= low_positive_ai_value
|
||||
ai_zeal >= low_positive_ai_value
|
||||
ai_energy >= low_positive_ai_value
|
||||
ai_vengefulness <= low_negative_ai_value
|
||||
attraction >= 10
|
||||
has_trait = strong
|
||||
has_trait = physique_good
|
||||
has_personality_extroverted_trigger = yes
|
||||
has_personality_dominant_trigger = yes
|
||||
}
|
||||
}
|
||||
1179
common/scripted_triggers/00_councillor_triggers.txt
Normal file
1179
common/scripted_triggers/00_councillor_triggers.txt
Normal file
File diff suppressed because it is too large
Load diff
47
common/scripted_triggers/00_county_corruption_triggers.txt
Normal file
47
common/scripted_triggers/00_county_corruption_triggers.txt
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
|
||||
###TRIGGER LIST
|
||||
|
||||
# has_county_corruption_trigger - Does the County have any corruption modifiers
|
||||
# immune_to_county_corruption_trigger - Is the County immune to corruption for any reason
|
||||
# is_valid_for_county_corruption_trigger - Can County Corruption be applied in this County
|
||||
|
||||
has_county_corruption_trigger = {
|
||||
OR = {
|
||||
has_county_modifier = county_corruption_inefficient_tax_collection_modifier
|
||||
has_county_modifier = county_corruption_deserting_levies_modifier
|
||||
has_county_modifier = county_corruption_smuggling_ring_modifier
|
||||
has_county_modifier = county_corruption_bandits_rampant_modifier
|
||||
has_county_modifier = county_corruption_inefficient_census_modifier
|
||||
has_county_modifier = county_corruption_lack_of_sheriffs_modifier
|
||||
has_county_modifier = county_corruption_lack_of_courts_modifier
|
||||
has_county_modifier = county_corruption_thieves_guild_modifier
|
||||
has_county_modifier = county_corruption_unsafe_highways_modifier
|
||||
has_county_modifier = county_corruption_uncooperative_guilds_modifier
|
||||
has_county_modifier = county_corruption_lackluster_administration_modifier
|
||||
has_county_modifier = county_corruption_roaming_bandits_modifier
|
||||
has_county_modifier = county_corruption_wild_beast_attacks_modifier
|
||||
has_county_modifier = county_corruption_upset_shepherds_modifier
|
||||
has_county_modifier = county_corruption_rogue_warriors_modifier
|
||||
has_county_modifier = county_corruption_unruly_nomads_modifier
|
||||
has_county_modifier = small_investment_in_revolt_modifier
|
||||
has_county_modifier = medium_investment_in_revolt_modifier
|
||||
has_county_modifier = high_investment_in_revolt_modifier
|
||||
}
|
||||
}
|
||||
|
||||
immune_to_county_corruption_trigger = {
|
||||
OR = {
|
||||
is_landless_type_title = yes
|
||||
has_variable = corruption_event_happening
|
||||
has_variable = county_corruption_recent_removal
|
||||
is_target_of_council_task = task_increase_control
|
||||
has_county_modifier = marshal_task_military_presence_modifier
|
||||
}
|
||||
}
|
||||
|
||||
is_valid_for_county_corruption_trigger = {
|
||||
NOT = {
|
||||
county_corruption_modifier_count >= max_county_corruption_modifiers_at_once
|
||||
}
|
||||
immune_to_county_corruption_trigger = no
|
||||
}
|
||||
1682
common/scripted_triggers/00_court_position_triggers.txt
Normal file
1682
common/scripted_triggers/00_court_position_triggers.txt
Normal file
File diff suppressed because it is too large
Load diff
92
common/scripted_triggers/00_court_role_triggers.txt
Normal file
92
common/scripted_triggers/00_court_role_triggers.txt
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
is_non_spouse_councillor_trigger = {
|
||||
is_available_healthy_ai_adult = yes
|
||||
NOT = {
|
||||
is_spouse_of = scope:ruler
|
||||
}
|
||||
}
|
||||
|
||||
court_event_ongoing_trigger = {
|
||||
OR = {
|
||||
has_local_player_open_court_event = yes
|
||||
has_local_player_unopened_court_event = yes
|
||||
}
|
||||
}
|
||||
|
||||
is_available_non_adventurer_inspired_person_trigger = {
|
||||
exists = inspiration
|
||||
is_in_the_same_court_as_or_guest = scope:ruler
|
||||
is_available_healthy_ai_adult = yes
|
||||
}
|
||||
|
||||
is_available_schemer = {
|
||||
save_temporary_scope_as = schemer_check
|
||||
OR = {
|
||||
has_owned_scheme = yes
|
||||
scope:ruler = {
|
||||
any_targeting_scheme = {
|
||||
is_hostile = yes
|
||||
any_scheme_agent_character = {
|
||||
this = scope:schemer_check
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
is_available_healthy_ai_adult = yes
|
||||
}
|
||||
|
||||
is_available_non_primary_consort = {
|
||||
is_available = yes
|
||||
NOT = {this = primary_spouse }
|
||||
}
|
||||
|
||||
is_available_non_child_family = {
|
||||
is_available = yes
|
||||
is_healthy = yes
|
||||
child_not_infant_trigger = yes
|
||||
is_close_or_extended_family_of = scope:ruler
|
||||
}
|
||||
|
||||
is_incorrect_type_for_throne_trigger = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
exists = $CHARACTER$.capital_county
|
||||
}
|
||||
$CHARACTER$.capital_county.culture = {
|
||||
OR = {
|
||||
has_graphical_mena_culture_group_trigger = yes
|
||||
has_graphical_india_culture_group_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
OR = {
|
||||
has_trait = dwarf
|
||||
has_trait = giant
|
||||
is_adult = no
|
||||
}
|
||||
}
|
||||
|
||||
is_spouse_incorrect_type_for_throne_trigger = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
exists = $CHARACTER$.capital_county
|
||||
}
|
||||
$CHARACTER$.capital_county.culture = {
|
||||
OR = {
|
||||
has_graphical_mena_culture_group_trigger = yes
|
||||
has_graphical_india_culture_group_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
exists = $CHARACTER$.primary_spouse
|
||||
$CHARACTER$.primary_spouse = {
|
||||
OR = {
|
||||
has_trait = dwarf
|
||||
has_trait = giant
|
||||
is_adult = no
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
has_court_event_flag = {
|
||||
has_character_flag = in_court_event
|
||||
}
|
||||
6
common/scripted_triggers/00_court_scheme_triggers.txt
Normal file
6
common/scripted_triggers/00_court_scheme_triggers.txt
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
court_love_is_shunned_or_criminal_trigger = {
|
||||
OR = {
|
||||
scope:target = { relation_with_character_is_incestuous_in_my_or_lieges_faith_trigger = { CHARACTER = scope:owner } }
|
||||
scope:target = { relation_with_character_is_sodomy_in_my_or_lieges_faith_trigger = { CHARACTER = scope:owner } }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,829 @@
|
|||
###TRIGGER LIST###
|
||||
|
||||
#GUEST/COURTIER LEAVING/ARRIVING TRIGGERS:
|
||||
#any_child_not_in_traveling_family_trigger
|
||||
#any_consort_not_in_traveling_family_trigger
|
||||
#courtier_allowed_to_leave_trigger
|
||||
#guest_allowed_to_leave_trigger
|
||||
#guest_allowed_to_arrive_trigger
|
||||
|
||||
#GUEST/COURTIER USEFULNESS:
|
||||
#courtier_or_guest_claim_trigger
|
||||
#useful_courtier_or_guest_claim_trigger
|
||||
#has_useful_potential_spouse_claim_trigger
|
||||
#guest_knight_candidate_trigger
|
||||
#guest_commander_candidate_trigger
|
||||
#guest_vassal_candidate_trigger
|
||||
#guest_physician_candidate_trigger
|
||||
#guest_male_female_balance_trigger
|
||||
#child_available_for_guest_marriage_trigger
|
||||
#guest_marriage_candidate_trigger
|
||||
|
||||
#POOL CHARACTER TRIGGERS:
|
||||
#pool_character_is_pruneable_trigger
|
||||
|
||||
|
||||
####GUEST/COURTIER LEAVING/ARRIVING TRIGGERS###
|
||||
same_location_and_court_status_as = { # Same location and both are in court / are guests / are pool characters
|
||||
exists = location
|
||||
exists = $CHARACTER$.location
|
||||
location = $CHARACTER$.location
|
||||
OR = {
|
||||
is_in_the_same_court_as = $CHARACTER$
|
||||
trigger_if = {
|
||||
limit = { $CHARACTER$ = { is_pool_guest = yes } }
|
||||
is_pool_guest = yes
|
||||
}
|
||||
trigger_if = {
|
||||
limit = { $CHARACTER$ = { is_pool_character = yes } }
|
||||
is_pool_character = yes
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
any_child_not_in_traveling_family_trigger = {
|
||||
save_temporary_scope_as = traveler
|
||||
exists = location
|
||||
any_child = {
|
||||
is_adult = no
|
||||
same_location_and_court_status_as = { CHARACTER = scope:traveler }
|
||||
save_temporary_scope_as = checking_child
|
||||
scope:traveler = {
|
||||
NOT = {
|
||||
any_traveling_family_member = { this = scope:checking_child }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
any_consort_not_in_traveling_family_trigger = {
|
||||
save_temporary_scope_as = traveler
|
||||
exists = location
|
||||
any_spouse = {
|
||||
exists = location
|
||||
same_location_and_court_status_as = { CHARACTER = scope:traveler }
|
||||
save_temporary_scope_as = checking_consort
|
||||
scope:traveler = {
|
||||
NOT = {
|
||||
any_traveling_family_member = { this = scope:checking_consort }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
courtier_allowed_to_leave_trigger = {
|
||||
save_temporary_scope_as = leaving_courtier
|
||||
NOR = {
|
||||
# Not blocked by script
|
||||
has_character_flag = blocked_from_leaving
|
||||
is_councillor_of = scope:liege
|
||||
is_consort_of = scope:liege
|
||||
scope:liege = {
|
||||
player_heir_position = {
|
||||
target = scope:leaving_courtier
|
||||
value <= 2 #Not 1st, 2nd or 3rd player heir (0,1,2)
|
||||
}
|
||||
}
|
||||
has_any_court_position = yes
|
||||
has_relation_lover = scope:liege
|
||||
is_knight_of = scope:liege
|
||||
is_tax_collector_of = scope:liege
|
||||
any_relation = {
|
||||
type = ward
|
||||
OR = {
|
||||
this = scope:liege
|
||||
AND = {
|
||||
is_courtier_of = scope:liege
|
||||
OR = {
|
||||
NOT = { any_close_family_member = { this = scope:leaving_courtier } }
|
||||
any_close_family_member = { this = scope:liege }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
any_relation = {
|
||||
type = guardian
|
||||
OR = {
|
||||
this = scope:liege
|
||||
AND = {
|
||||
is_courtier_of = scope:liege
|
||||
OR = {
|
||||
NOT = { any_close_family_member = { this = scope:leaving_courtier } }
|
||||
any_close_family_member = { this = scope:liege }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
any_relation = {
|
||||
type = mentor
|
||||
OR = {
|
||||
this = scope:liege
|
||||
AND = {
|
||||
is_courtier_of = scope:liege
|
||||
OR = {
|
||||
NOT = { any_close_family_member = { this = scope:leaving_courtier } }
|
||||
any_close_family_member = { this = scope:liege }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
any_relation = {
|
||||
type = student
|
||||
OR = {
|
||||
this = scope:liege
|
||||
AND = {
|
||||
is_courtier_of = scope:liege
|
||||
OR = {
|
||||
NOT = { any_close_family_member = { this = scope:leaving_courtier } }
|
||||
any_close_family_member = { this = scope:liege }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
has_epidemic_disease_trigger = yes
|
||||
#Keep daughters/sons for marriages
|
||||
AND = {
|
||||
OR = {
|
||||
is_child_of = scope:liege
|
||||
is_grandchild_of = scope:liege
|
||||
is_great_grandchild_of = scope:liege
|
||||
}
|
||||
NOT = { has_trait = bastard }
|
||||
trigger_if = { #Daughters
|
||||
limit = { is_female = yes }
|
||||
scope:liege = {
|
||||
OR = {
|
||||
has_realm_law = male_only_law
|
||||
has_realm_law = male_preference_law
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_else = { #Sons
|
||||
scope:liege = {
|
||||
OR = {
|
||||
has_realm_law = female_only_law
|
||||
has_realm_law = female_preference_law
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#No children of liege can leave court while children
|
||||
AND = {
|
||||
OR = {
|
||||
is_child_of = scope:liege
|
||||
is_grandchild_of = scope:liege
|
||||
is_great_grandchild_of = scope:liege
|
||||
}
|
||||
is_adult = no
|
||||
}
|
||||
#Claimant won't leave while claim is pressed...
|
||||
scope:liege = { pressing_claim_of_character_trigger = { CHARACTER = scope:leaving_courtier } }
|
||||
#Would be leaving without a child or consort
|
||||
any_child_not_in_traveling_family_trigger = yes
|
||||
any_consort_not_in_traveling_family_trigger = yes
|
||||
#...Or while they have a promise for a claim getting pressed
|
||||
has_character_flag = courtier_staying_for_claim
|
||||
|
||||
#...Or if they're involved in an ongoing event
|
||||
has_variable = stewardship_duty_1062_employer
|
||||
|
||||
#...Or if someone is trying to elope with them
|
||||
any_targeting_scheme = {
|
||||
scheme_type = elope
|
||||
}
|
||||
|
||||
#Non-dominant spouses don't wander off
|
||||
AND = {
|
||||
is_married = yes
|
||||
any_spouse = {
|
||||
OR = {
|
||||
AND = {
|
||||
exists = liege
|
||||
liege = scope:leaving_courtier.liege
|
||||
}
|
||||
AND = {
|
||||
exists = host
|
||||
exists = scope:leaving_courtier.host
|
||||
liege = scope:leaving_courtier.host
|
||||
}
|
||||
is_in_the_same_court_as = scope:leaving_courtier
|
||||
}
|
||||
}
|
||||
trigger_if = {
|
||||
limit = { is_female = yes }
|
||||
scope:liege = {
|
||||
OR = {
|
||||
has_realm_law = male_only_law
|
||||
has_realm_law = male_preference_law
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_else = {
|
||||
scope:liege = {
|
||||
OR = {
|
||||
has_realm_law = female_only_law
|
||||
has_realm_law = female_preference_law
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Diarchs don't leave their court.
|
||||
is_diarch = yes
|
||||
is_designated_diarch = yes
|
||||
|
||||
#Shieldmaidens stay till dismissed.
|
||||
has_trait = shieldmaiden
|
||||
|
||||
# Children taught a lesson won't leave
|
||||
has_character_modifier = mellowed_spirit
|
||||
|
||||
# Courtiers with sponsored inspirations won't leave on their own.
|
||||
AND = {
|
||||
exists = inspiration
|
||||
inspiration = { exists = inspiration_sponsor }
|
||||
}
|
||||
|
||||
scope:liege = { government_has_flag = government_is_landless_adventurer }
|
||||
is_obedient_to = scope:liege
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
guest_allowed_to_leave_trigger = {
|
||||
NOR = {
|
||||
# Not blocked by script
|
||||
has_character_flag = blocked_from_leaving
|
||||
#Agent in a local scheme
|
||||
scope:host = {
|
||||
any_courtier = {
|
||||
any_targeting_scheme = {
|
||||
any_scheme_agent_character = {
|
||||
this = scope:guest
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
scope:host = {
|
||||
any_targeting_scheme = {
|
||||
any_scheme_agent_character = {
|
||||
this = scope:guest
|
||||
}
|
||||
}
|
||||
}
|
||||
any_child = { # No child can be a known child of the host
|
||||
is_adult = no
|
||||
any_parent = { this = scope:host }
|
||||
}
|
||||
# Diarchs don't leave their court.
|
||||
is_diarch = yes
|
||||
is_designated_diarch = yes
|
||||
#Too sick to travel
|
||||
has_epidemic_disease_trigger = yes
|
||||
#Would be leaving without spouse or underage child
|
||||
any_child_not_in_traveling_family_trigger = yes
|
||||
any_consort_not_in_traveling_family_trigger = yes
|
||||
#Is waiting for inspiration funding
|
||||
exists = inspiration
|
||||
}
|
||||
}
|
||||
|
||||
guest_allowed_to_arrive_trigger = {
|
||||
trigger_if = {
|
||||
limit = { exists = var:last_visited_ruler }
|
||||
NOT = { var:last_visited_ruler = $HOST$ }
|
||||
}
|
||||
trigger_if = { # Make sure that they're not trying to go back to where they are right now
|
||||
limit = { exists = host }
|
||||
NOT = { host = $HOST$ }
|
||||
}
|
||||
has_epidemic_disease_trigger = no
|
||||
NOT = { has_relation_rival = $HOST$ }
|
||||
#Compatible faiths
|
||||
faith = {
|
||||
save_temporary_scope_as = potential_guest_faith
|
||||
faith_hostility_level = {
|
||||
target = $HOST$.faith
|
||||
value < faith_evil_level
|
||||
}
|
||||
}
|
||||
$HOST$.faith = {
|
||||
faith_hostility_level = {
|
||||
target = scope:potential_guest_faith
|
||||
value < faith_evil_level
|
||||
}
|
||||
}
|
||||
|
||||
#Isn't too good for host
|
||||
NAND = {
|
||||
OR = {
|
||||
any_claim = { tier = tier_empire }
|
||||
any_close_family_member = { highest_held_title_tier = tier_empire }
|
||||
}
|
||||
$HOST$ = { highest_held_title_tier <= tier_county }
|
||||
}
|
||||
} #Note: this trigger used to contain opinion triggers but then some awful rulers could never get guests because everyone hates them
|
||||
|
||||
|
||||
#This is a localized trigger for checking that a character do not have a spouse that's employed or has some other circumstance blocking them from being recruited to a court
|
||||
can_recruit_character_to_court_trigger = {
|
||||
$RECRUITER$ = { save_temporary_scope_as = recruiter }
|
||||
$RECRUITEE$ = { save_temporary_scope_as = recruitee }
|
||||
scope:recruitee = {
|
||||
bp2_valid_for_standard_interactions_trigger = yes
|
||||
NOR = {
|
||||
custom_description = {
|
||||
text = is_not_wandering_child
|
||||
subject = scope:recruitee
|
||||
AND = {
|
||||
is_adult = no
|
||||
NOT = { is_close_or_extended_family_of = scope:recruiter }
|
||||
}
|
||||
}
|
||||
is_imprisoned = yes
|
||||
is_theocratic_lessee = yes
|
||||
is_diarch = yes
|
||||
trigger_if = {
|
||||
limit = {
|
||||
exists = host
|
||||
NOT = { is_player_heir_of = scope:recruiter }
|
||||
}
|
||||
is_player_heir_of = host
|
||||
}
|
||||
trigger_if = {
|
||||
limit = { exists = host }
|
||||
is_consort_of = host
|
||||
}
|
||||
trigger_if = {
|
||||
limit = { exists = host }
|
||||
host = {
|
||||
pressing_claim_of_character_trigger = { CHARACTER = scope:recruitee }
|
||||
}
|
||||
}
|
||||
trigger_if = {
|
||||
limit = { exists = host }
|
||||
#Are they employed?
|
||||
is_councillor_of = scope:recruitee.host
|
||||
is_knight_of = scope:recruitee.host
|
||||
any_relation = {
|
||||
type = ward
|
||||
OR = {
|
||||
this = scope:recruitee.host
|
||||
is_close_family_of = scope:recruitee.host
|
||||
}
|
||||
}
|
||||
any_relation = {
|
||||
type = guardian
|
||||
OR = {
|
||||
this = scope:recruitee.host
|
||||
is_close_family_of = scope:recruitee.host
|
||||
}
|
||||
}
|
||||
any_relation = {
|
||||
type = mentor
|
||||
OR = {
|
||||
this = scope:recruitee.host
|
||||
is_close_family_of = scope:recruitee.host
|
||||
}
|
||||
}
|
||||
any_relation = {
|
||||
type = student
|
||||
OR = {
|
||||
this = scope:recruitee.host
|
||||
is_close_family_of = scope:recruitee.host
|
||||
}
|
||||
}
|
||||
any_court_position_employer = { this = scope:recruitee.host }
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
scope:recruiter = { is_landless_adventurer = yes }
|
||||
}
|
||||
custom_tooltip = {
|
||||
text = can_recruit_character_to_court_trigger.tt.laamps_invitation_restrictions
|
||||
NOR = {
|
||||
is_player_heir_of = scope:recruiter
|
||||
has_relation_soulmate = scope:recruiter
|
||||
has_relation_best_friend = scope:recruiter
|
||||
is_consort_of = scope:recruiter
|
||||
AND = {
|
||||
is_pool_character = yes
|
||||
OR = {
|
||||
has_relation_friend = scope:recruiter
|
||||
has_relation_lover = scope:recruiter
|
||||
is_close_family_of = scope:recruiter
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#Do they have the "wrong" marriage type and the spouse is employed?
|
||||
custom_description = {
|
||||
text = is_married_matrilineally_and_spouse_is_dominant_partner
|
||||
subject = scope:recruitee
|
||||
any_spouse = {
|
||||
is_female = yes
|
||||
matrilinear_marriage = yes
|
||||
exists = host
|
||||
host = scope:recruitee.host
|
||||
save_temporary_scope_as = spouse
|
||||
OR = { #Is employed in some way
|
||||
is_councillor_of = scope:recruitee.host
|
||||
is_knight_of = scope:recruitee.host
|
||||
any_relation = {
|
||||
type = ward
|
||||
OR = {
|
||||
this = scope:recruitee.host
|
||||
is_close_family_of = scope:recruitee.host
|
||||
}
|
||||
}
|
||||
any_relation = {
|
||||
type = guardian
|
||||
OR = {
|
||||
this = scope:recruitee.host
|
||||
is_close_family_of = scope:recruitee.host
|
||||
}
|
||||
}
|
||||
any_relation = {
|
||||
type = mentor
|
||||
OR = {
|
||||
this = scope:recruitee.host
|
||||
is_close_family_of = scope:recruitee.host
|
||||
}
|
||||
}
|
||||
any_relation = {
|
||||
type = student
|
||||
OR = {
|
||||
this = scope:recruitee.host
|
||||
is_close_family_of = scope:recruitee.host
|
||||
}
|
||||
}
|
||||
scope:spouse = {
|
||||
any_court_position_employer = { this = scope:recruitee.host }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
custom_description = {
|
||||
text = is_married_patrilineally_and_spouse_is_dominant_partner
|
||||
subject = scope:recruitee
|
||||
any_spouse = {
|
||||
is_male = yes
|
||||
patrilinear_marriage = yes
|
||||
exists = host
|
||||
host = scope:recruitee.host
|
||||
save_temporary_scope_as = spouse
|
||||
OR = { #Is employed in some way
|
||||
is_councillor_of = scope:recruitee.host
|
||||
is_knight_of = scope:recruitee.host
|
||||
any_relation = {
|
||||
type = ward
|
||||
OR = {
|
||||
this = scope:recruitee.host
|
||||
is_close_family_of = scope:recruitee.host
|
||||
}
|
||||
}
|
||||
any_relation = {
|
||||
type = guardian
|
||||
OR = {
|
||||
this = scope:recruitee.host
|
||||
is_close_family_of = scope:recruitee.host
|
||||
}
|
||||
}
|
||||
any_relation = {
|
||||
type = mentor
|
||||
OR = {
|
||||
this = scope:recruitee.host
|
||||
is_close_family_of = scope:recruitee.host
|
||||
}
|
||||
}
|
||||
any_relation = {
|
||||
type = student
|
||||
OR = {
|
||||
this = scope:recruitee.host
|
||||
is_close_family_of = scope:recruitee.host
|
||||
}
|
||||
}
|
||||
scope:spouse = {
|
||||
any_court_position_employer = { this = scope:recruitee.host }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
custom_description = {
|
||||
text = "is_escaped_prisoner"
|
||||
subject = scope:recruitee
|
||||
OR = {
|
||||
has_opinion_modifier = {
|
||||
modifier = attempted_imprisonment_opinion
|
||||
target = scope:recruiter
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = treasonous_imprison_refusal
|
||||
target = scope:recruiter
|
||||
}
|
||||
AND = {
|
||||
exists = var:escaped_imprisonment_from
|
||||
var:escaped_imprisonment_from = scope:recruiter
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
###GUEST/COURTIER USEFULNESS TRIGGERS###
|
||||
courtier_or_guest_claim_trigger = {
|
||||
exists = holder
|
||||
NOT = {
|
||||
holder = {
|
||||
OR = {
|
||||
this = $RULER$
|
||||
target_is_liege_or_above = $RULER$
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
useful_courtier_or_guest_claim_trigger = {
|
||||
courtier_or_guest_claim_trigger = { RULER = $RULER$ }
|
||||
tier < $RULER$.highest_held_title_tier
|
||||
$RULER$ = { is_landed = yes }
|
||||
OR = { #For distance check
|
||||
exists = title_province
|
||||
exists = holder.capital_province
|
||||
}
|
||||
#The higher tier the ruler has, the longer distance is acceptable
|
||||
#We prefer to measure against the title's province, but if there is none, check its holder
|
||||
trigger_if = {
|
||||
limit = { $RULER$ = { highest_held_title_tier = tier_empire } }
|
||||
trigger_if = {
|
||||
limit = { exists = title_province }
|
||||
title_province = { squared_distance = { target = $RULER$.capital_province value <= squared_distance_almost_massive } }
|
||||
}
|
||||
trigger_else = {
|
||||
holder.capital_province = { squared_distance = { target = $RULER$.capital_province value <= squared_distance_almost_massive } }
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = { $RULER$ = { highest_held_title_tier = tier_kingdom } }
|
||||
trigger_if = {
|
||||
limit = { exists = title_province }
|
||||
title_province = { squared_distance = { target = $RULER$.capital_province value <= squared_distance_huge } }
|
||||
}
|
||||
trigger_else = {
|
||||
holder.capital_province = { squared_distance = { target = $RULER$.capital_province value <= squared_distance_huge } }
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = { $RULER$ = { highest_held_title_tier = tier_duchy } }
|
||||
trigger_if = {
|
||||
limit = { exists = title_province }
|
||||
title_province = { squared_distance = { target = $RULER$.capital_province value <= squared_distance_large } }
|
||||
}
|
||||
trigger_else = {
|
||||
holder.capital_province = { squared_distance = { target = $RULER$.capital_province value <= squared_distance_large } }
|
||||
}
|
||||
}
|
||||
trigger_else = {
|
||||
trigger_if = {
|
||||
limit = { exists = title_province }
|
||||
title_province = { squared_distance = { target = $RULER$.capital_province value <= squared_distance_medium } }
|
||||
}
|
||||
trigger_else = {
|
||||
holder.capital_province = { squared_distance = { target = $RULER$.capital_province value <= squared_distance_medium } }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
neighboring_useful_courtier_or_guest_claim_trigger = {
|
||||
courtier_or_guest_claim_trigger = { RULER = $RULER$ }
|
||||
tier < $RULER$.highest_held_title_tier
|
||||
exists = $RULER$.capital_province
|
||||
holder = {
|
||||
any_sub_realm_county = {
|
||||
is_neighbor_to_realm = $RULER$
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
has_useful_potential_spouse_claim_trigger = {
|
||||
any_claim = {
|
||||
pressed = yes
|
||||
exists = holder
|
||||
NOT = {
|
||||
holder = {
|
||||
OR = {
|
||||
this = $RULER$
|
||||
target_is_liege_or_above = $RULER$
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
guest_knight_candidate_trigger = {
|
||||
can_be_knight_trigger = { ARMY_OWNER = $HOST$ }
|
||||
age < 60
|
||||
age >= 25
|
||||
prowess > medium_skill_rating
|
||||
}
|
||||
|
||||
guest_commander_candidate_trigger = {
|
||||
can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = $HOST$ }
|
||||
age < 60
|
||||
age >= 25
|
||||
martial > medium_skill_rating
|
||||
}
|
||||
|
||||
guest_vassal_candidate_good_traits_trigger = {
|
||||
OR = { #Gives +opinion of liege
|
||||
has_trait = content
|
||||
has_trait = trusting
|
||||
has_trait = humble
|
||||
}
|
||||
}
|
||||
|
||||
guest_vassal_candidate_bad_traits_trigger = {
|
||||
OR = { #Gives -opinion of liege
|
||||
has_trait = ambitious
|
||||
has_trait = arrogant
|
||||
has_trait = impatient
|
||||
}
|
||||
}
|
||||
|
||||
guest_vassal_candidate_trigger = {
|
||||
age < 60
|
||||
faith = scope:host.faith
|
||||
culture = scope:host.culture
|
||||
faith = {
|
||||
has_dominant_ruling_gender = prev
|
||||
}
|
||||
guest_vassal_candidate_bad_traits_trigger = no
|
||||
save_temporary_scope_as = vassal_candidate
|
||||
is_eunuch_trigger = no
|
||||
NOR = { #So they don't leave your realm through inheritance
|
||||
any_heir_title = {
|
||||
scope:guest = { is_primary_heir_of = scope:vassal_candidate }
|
||||
}
|
||||
any_child = { is_playable_character = yes }
|
||||
has_trait = devoted
|
||||
has_trait = order_member
|
||||
}
|
||||
}
|
||||
|
||||
guest_physician_candidate_trigger = {
|
||||
age < 70
|
||||
learning >= decent_skill_rating
|
||||
}
|
||||
|
||||
guest_male_female_balance_trigger = { #are you interesting enough to get "upbalanced" to make up for lack of available positions due to your gender?
|
||||
is_adult = yes
|
||||
age <= 65
|
||||
is_lowborn = no
|
||||
}
|
||||
|
||||
child_available_for_guest_marriage_trigger = {
|
||||
is_married = no
|
||||
is_betrothed = no
|
||||
age >= 10
|
||||
OR = {
|
||||
is_vassal_of = scope:host
|
||||
is_courtier_of = scope:host
|
||||
}
|
||||
}
|
||||
|
||||
guest_marriage_candidate_trigger = {
|
||||
save_temporary_scope_as = marriage_candidate
|
||||
OR = {
|
||||
is_male = yes
|
||||
age <= 40
|
||||
}
|
||||
OR = {
|
||||
AND = {
|
||||
is_married = no
|
||||
can_marry_character_trigger = { CHARACTER = scope:host }
|
||||
}
|
||||
scope:host = {
|
||||
any_child = {
|
||||
child_available_for_guest_marriage_trigger = yes
|
||||
can_marry_character_trigger = { CHARACTER = scope:marriage_candidate }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
###POOL TRIGGERS###
|
||||
is_visitable_relation_trigger = {
|
||||
exists = capital_province
|
||||
capital_province = { local_pool_is_full_trigger = no }
|
||||
NOR = {
|
||||
this = $CHARACTER$.host
|
||||
has_relation_rival = $CHARACTER$
|
||||
}
|
||||
$CHARACTER$ = {
|
||||
NAND = {
|
||||
exists = var:last_visited_ruler
|
||||
var:last_visited_ruler = prev
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
###########################
|
||||
# POOL CHARACTER TRIGGERS #
|
||||
###########################
|
||||
|
||||
pool_character_is_pruneable_trigger = {
|
||||
save_temporary_scope_as = pool_prune_check
|
||||
is_adult = yes
|
||||
NOR = {
|
||||
has_trait = peasant_leader
|
||||
has_trait = gallowsbait
|
||||
has_trait = heresiarch
|
||||
has_trait = populist_leader
|
||||
has_trait = adventurer_follower
|
||||
has_trait = adventurer
|
||||
has_trait = historical_character
|
||||
has_character_flag = ai_will_not_convert
|
||||
is_married = yes
|
||||
any_claim = { always = yes }
|
||||
any_child = { is_adult = no }
|
||||
num_of_good_genetic_traits >= 1
|
||||
any_relation = {
|
||||
type = lover
|
||||
is_ruler = yes
|
||||
}
|
||||
any_relation = {
|
||||
type = friend
|
||||
is_ruler = yes
|
||||
}
|
||||
any_close_or_extended_family_member = { is_ruler = yes }
|
||||
AND = { #Belongs to a dynasty with more than 1 member
|
||||
exists = dynasty
|
||||
dynasty = { any_dynasty_member = { NOT = { this = scope:pool_prune_check } } }
|
||||
}
|
||||
any_relation = {
|
||||
type = rival
|
||||
is_ai = no
|
||||
}
|
||||
has_character_flag = easteregg
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
is_lowborn = no
|
||||
}
|
||||
NOR = {
|
||||
diplomacy >= high_skill_rating
|
||||
martial >= high_skill_rating
|
||||
stewardship >= high_skill_rating
|
||||
intrigue >= high_skill_rating
|
||||
learning >= high_skill_rating
|
||||
prowess >= high_skill_rating
|
||||
any_relation = {
|
||||
type = rival
|
||||
is_ruler = yes
|
||||
}
|
||||
culture = {
|
||||
has_cultural_tradition = tradition_diasporic
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
local_pool_is_full_trigger = {
|
||||
number_of_characters_in_pool >= full_pool_size
|
||||
}
|
||||
|
||||
guest_poet_candidate_trigger = {
|
||||
age < 80
|
||||
age >= 16
|
||||
diplomacy > medium_skill_rating
|
||||
}
|
||||
|
||||
is_courtier_or_knight_of_root = {
|
||||
OR = {
|
||||
is_courtier_of = root
|
||||
is_knight_of = root
|
||||
}
|
||||
}
|
||||
|
||||
guest_herder_candidate_trigger = {
|
||||
government_has_flag = government_is_herder
|
||||
has_trait = lifestyle_seasoned_pastor
|
||||
trigger_if = {
|
||||
limit = { root.faith = { has_doctrine = doctrine_gender_male_dominated } }
|
||||
is_male = yes
|
||||
}
|
||||
trigger_if = {
|
||||
limit = { root.faith = { has_doctrine = doctrine_gender_female_dominated } }
|
||||
is_female = yes
|
||||
}
|
||||
age < 45
|
||||
age >= 25
|
||||
}
|
||||
68
common/scripted_triggers/00_crime_triggers.txt
Normal file
68
common/scripted_triggers/00_crime_triggers.txt
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
#is_witch_trigger
|
||||
#is_deviant_trigger
|
||||
|
||||
|
||||
|
||||
is_witch_trigger = {
|
||||
custom_description = {
|
||||
text = is_a_witch
|
||||
subject = this
|
||||
OR = {
|
||||
has_trait = witch
|
||||
any_secret = { secret_type = secret_witch }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
is_witch_known_by_trigger = {
|
||||
OR = {
|
||||
has_trait = witch
|
||||
custom_description = {
|
||||
text = has_a_witch_secret_known_by_character
|
||||
subject = this
|
||||
object = $CHARACTER$
|
||||
any_secret = {
|
||||
secret_type = secret_witch
|
||||
is_known_by = $CHARACTER$
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
is_deviant_trigger = {
|
||||
OR = {
|
||||
has_trait = deviant
|
||||
any_secret = { secret_type = secret_deviant }
|
||||
}
|
||||
}
|
||||
|
||||
is_incestuous_trigger = {
|
||||
OR = {
|
||||
has_trait = incestuous
|
||||
any_secret = {
|
||||
secret_type = secret_incest
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sexual_activity_with_partner_is_criminal_in_faith_trigger = {
|
||||
save_temporary_scope_as = sexual_legality_check
|
||||
OR = {
|
||||
#Incest (currently never illegal so commented out)
|
||||
#AND = {
|
||||
# relation_with_character_is_incestuous_in_faith_trigger = { CHARACTER = $PARTNER$ FAITH = $FAITH$ }
|
||||
# trait_is_criminal_in_faith_trigger = { TRAIT = incestuous FAITH = $FAITH$ GENDER_CHARACTER = scope:sexual_legality_check } }
|
||||
#}
|
||||
#Sodomy
|
||||
AND = {
|
||||
relation_with_character_is_sodomy_in_faith_trigger = { CHARACTER = $PARTNER$ FAITH = $FAITH$ }
|
||||
trait_is_criminal_in_faith_trigger = { TRAIT = sodomite FAITH = $FAITH$ GENDER_CHARACTER = scope:sexual_legality_check }
|
||||
}
|
||||
#Adultery/fornication
|
||||
AND = {
|
||||
NOT = { is_consort_of = $PARTNER$ }
|
||||
trait_is_criminal_in_faith_trigger = { TRAIT = fornicator FAITH = $FAITH$ GENDER_CHARACTER = scope:sexual_legality_check }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
16
common/scripted_triggers/00_crypto_religionist_triggers.txt
Normal file
16
common/scripted_triggers/00_crypto_religionist_triggers.txt
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
knows_about_character_being_same_crypto_religionist_trigger = {
|
||||
exists = secret_faith
|
||||
$CHARACTER$ = { exists = secret_faith }
|
||||
secret_faith = $CHARACTER$.secret_faith
|
||||
any_known_secret = {
|
||||
secret_owner = $CHARACTER$
|
||||
secret_type = secret_crypto_religionist
|
||||
}
|
||||
}
|
||||
|
||||
has_crypto_religionist_secret_known_by_character_trigger = {
|
||||
any_secret = {
|
||||
secret_type = secret_crypto_religionist
|
||||
any_secret_knower = { this = $CHARACTER$ }
|
||||
}
|
||||
}
|
||||
185
common/scripted_triggers/00_cultural_heritage_triggers.txt
Normal file
185
common/scripted_triggers/00_cultural_heritage_triggers.txt
Normal file
|
|
@ -0,0 +1,185 @@
|
|||
|
||||
### Cultural heritage triggers
|
||||
# By their nature these triggers will be a bit lose and inaccurate, so keep that in mind when using them!
|
||||
|
||||
|
||||
#ASIA
|
||||
culture_has_asian_heritage_pillar_trigger = {
|
||||
OR = {
|
||||
culture_has_east_asian_heritage_pillar_trigger = yes
|
||||
culture_has_west_asian_heritage_pillar_trigger = yes
|
||||
culture_has_south_asian_heritage_pillar_trigger = yes
|
||||
culture_has_north_asian_heritage_pillar_trigger = yes
|
||||
culture_has_central_asian_heritage_pillar_trigger = yes
|
||||
}
|
||||
}
|
||||
culture_has_east_asian_heritage_pillar_trigger = {
|
||||
culture = {
|
||||
OR = {
|
||||
has_cultural_pillar = heritage_tibetan
|
||||
has_cultural_pillar = heritage_chinese
|
||||
has_cultural_pillar = heritage_mongolic
|
||||
has_cultural_pillar = heritage_turkic
|
||||
has_cultural_pillar = heritage_burman
|
||||
has_cultural_pillar = heritage_qiangic
|
||||
}
|
||||
}
|
||||
}
|
||||
culture_has_west_asian_heritage_pillar_trigger = {
|
||||
culture = {
|
||||
OR = {
|
||||
has_cultural_pillar = heritage_iranian
|
||||
has_cultural_pillar = heritage_turkic
|
||||
}
|
||||
}
|
||||
}
|
||||
culture_has_south_asian_heritage_pillar_trigger = {
|
||||
culture = {
|
||||
OR = {
|
||||
has_cultural_pillar = heritage_indo_aryan
|
||||
has_cultural_pillar = heritage_dravidian
|
||||
has_cultural_pillar = heritage_burman
|
||||
has_cultural_pillar = heritage_qiangic
|
||||
}
|
||||
}
|
||||
}
|
||||
culture_has_north_asian_heritage_pillar_trigger = {
|
||||
culture = {
|
||||
OR = {
|
||||
has_cultural_pillar = heritage_turkic
|
||||
has_cultural_pillar = heritage_mongolic
|
||||
has_cultural_pillar = heritage_ugro_permian
|
||||
}
|
||||
}
|
||||
}
|
||||
culture_has_central_asian_heritage_pillar_trigger = {
|
||||
culture = {
|
||||
OR = {
|
||||
has_cultural_pillar = heritage_qiangic
|
||||
has_cultural_pillar = heritage_turkic
|
||||
has_cultural_pillar = heritage_mongolic
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#AFRICA
|
||||
culture_has_african_heritage_pillar_trigger = {
|
||||
OR = {
|
||||
culture_has_west_african_heritage_pillar_trigger = yes
|
||||
culture_has_east_african_heritage_pillar_trigger = yes
|
||||
culture_has_north_african_heritage_pillar_trigger = yes
|
||||
culture_has_central_african_heritage_pillar_trigger = yes
|
||||
}
|
||||
}
|
||||
culture_has_west_african_heritage_pillar_trigger = {
|
||||
culture = {
|
||||
OR = {
|
||||
has_cultural_pillar = heritage_akan
|
||||
has_cultural_pillar = heritage_yoruba
|
||||
has_cultural_pillar = heritage_west_african
|
||||
has_cultural_pillar = heritage_senegambian
|
||||
has_cultural_pillar = heritage_sahelian
|
||||
has_cultural_pillar = heritage_akan
|
||||
}
|
||||
}
|
||||
}
|
||||
culture_has_east_african_heritage_pillar_trigger = {
|
||||
culture = {
|
||||
OR = {
|
||||
has_cultural_pillar = heritage_somalian
|
||||
has_cultural_pillar = heritage_east_african
|
||||
}
|
||||
}
|
||||
}
|
||||
culture_has_north_african_heritage_pillar_trigger = {
|
||||
culture = {
|
||||
has_cultural_pillar = heritage_berber
|
||||
}
|
||||
}
|
||||
culture_has_central_african_heritage_pillar_trigger = {
|
||||
culture = {
|
||||
has_cultural_pillar = heritage_central_african
|
||||
}
|
||||
}
|
||||
|
||||
#MENA
|
||||
culture_has_mena_heritage_pillar_trigger = {
|
||||
OR = {
|
||||
culture = { has_cultural_pillar = heritage_arabic }
|
||||
culture = { has_cultural_pillar = heritage_syriac }
|
||||
culture_has_north_african_heritage_pillar_trigger = yes
|
||||
}
|
||||
}
|
||||
|
||||
#EUROPE
|
||||
culture_has_european_heritage_pillar_trigger = {
|
||||
OR = {
|
||||
culture_has_west_european_heritage_pillar_trigger = yes
|
||||
culture_has_east_european_heritage_pillar_trigger = yes
|
||||
culture_has_north_european_heritage_pillar_trigger = yes
|
||||
culture_has_south_european_heritage_pillar_trigger = yes
|
||||
culture_has_central_european_heritage_pillar_trigger = yes
|
||||
}
|
||||
}
|
||||
culture_has_west_european_heritage_pillar_trigger = {
|
||||
culture = {
|
||||
OR = {
|
||||
has_cultural_pillar = heritage_goidelic
|
||||
has_cultural_pillar = heritage_west_germanic
|
||||
has_cultural_pillar = heritage_brythonic
|
||||
has_cultural_pillar = heritage_israelite
|
||||
}
|
||||
}
|
||||
}
|
||||
culture_has_east_european_heritage_pillar_trigger = {
|
||||
culture = {
|
||||
OR = {
|
||||
has_cultural_pillar = heritage_turkic
|
||||
has_cultural_pillar = heritage_volga_finnic
|
||||
has_cultural_pillar = heritage_east_slavic
|
||||
has_cultural_pillar = heritage_baltic
|
||||
has_cultural_pillar = heritage_caucasian
|
||||
}
|
||||
}
|
||||
}
|
||||
culture_has_north_european_heritage_pillar_trigger = {
|
||||
culture = {
|
||||
OR = {
|
||||
has_cultural_pillar = heritage_balto_finnic
|
||||
has_cultural_pillar = heritage_north_germanic
|
||||
has_cultural_pillar = heritage_ugro_permian
|
||||
}
|
||||
}
|
||||
}
|
||||
culture_has_south_european_heritage_pillar_trigger = {
|
||||
culture = {
|
||||
OR = {
|
||||
has_cultural_pillar = heritage_iberian
|
||||
has_cultural_pillar = heritage_latin
|
||||
has_cultural_pillar = heritage_byzantine
|
||||
has_cultural_pillar = heritage_south_slavic
|
||||
has_cultural_pillar = heritage_israelite
|
||||
}
|
||||
}
|
||||
}
|
||||
culture_has_central_european_heritage_pillar_trigger = {
|
||||
culture = {
|
||||
OR = {
|
||||
has_cultural_pillar = heritage_magyar
|
||||
has_cultural_pillar = heritage_west_slavic
|
||||
has_cultural_pillar = heritage_central_germanic
|
||||
has_cultural_pillar = heritage_frankish
|
||||
has_cultural_pillar = heritage_israelite
|
||||
has_cultural_pillar = heritage_israelite
|
||||
}
|
||||
}
|
||||
}
|
||||
culture_has_slavic_heritage_pillar_trigger = {
|
||||
culture = {
|
||||
OR = {
|
||||
has_cultural_pillar = heritage_south_slavic
|
||||
has_cultural_pillar = heritage_east_slavic
|
||||
has_cultural_pillar = heritage_west_slavic
|
||||
}
|
||||
}
|
||||
}
|
||||
586
common/scripted_triggers/00_cultural_triggers.txt
Normal file
586
common/scripted_triggers/00_cultural_triggers.txt
Normal file
|
|
@ -0,0 +1,586 @@
|
|||
|
||||
### Cultural trigger list
|
||||
|
||||
# drinks_alcohol_trigger - Would this person drink alcohol?
|
||||
# holder_or_above_is_player_of_culture - Is this county's holder or anyone above them in the de facto hierarchy a player with the same culture?
|
||||
|
||||
|
||||
######################
|
||||
# Cultural triggers #
|
||||
######################
|
||||
|
||||
drinks_alcohol_trigger = {
|
||||
is_adult = yes
|
||||
custom_tooltip = {
|
||||
text = drinks_alcohol
|
||||
OR = {
|
||||
has_trait = drunkard
|
||||
faith_forbids_alcohol_trigger = no
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
faith_forbids_alcohol_trigger = {
|
||||
OR = {
|
||||
religion = religion:islam_religion # Prohibited by khamr, a prohibition against intoxicants
|
||||
religion = religion:jainism_religion # Prohibited along with the consumption of any fermented food
|
||||
AND = {
|
||||
has_trait = zealous
|
||||
religion = religion:buddhism_religion # Discouraged as it disrupts progress along the eightfold path
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# If you need to check if a county drinks alcohol.
|
||||
faith_only_forbids_alcohol_trigger = {
|
||||
OR = {
|
||||
religion = religion:islam_religion # Prohibited by khamr, a prohibition against intoxicants
|
||||
religion = religion:jainism_religion # Prohibited along with the consumption of any fermented food
|
||||
religion = religion:buddhism_religion # Discouraged as it disrupts progress along the eightfold path
|
||||
}
|
||||
}
|
||||
|
||||
holder_or_above_is_player_of_culture = {
|
||||
culture = {
|
||||
save_temporary_scope_as = this_culture
|
||||
}
|
||||
OR = {
|
||||
holder = {
|
||||
AND = {
|
||||
is_ai = no
|
||||
culture = scope:this_culture
|
||||
}
|
||||
any_liege_or_above = {
|
||||
is_ai = no
|
||||
culture = scope:this_culture
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
culture_in_winter_geographical_region_trigger = {
|
||||
custom_description = {
|
||||
text = culture_in_winter_geographical_region_trigger_desc
|
||||
any_culture_county = {
|
||||
any_county_province = {
|
||||
OR = {
|
||||
geographical_region = world_europe_north
|
||||
geographical_region = world_europe_west
|
||||
geographical_region = world_europe_east
|
||||
geographical_region = world_steppe
|
||||
geographical_region = world_tibet
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
culture_in_non_sedentary_geographical_region_trigger = {
|
||||
custom_description = {
|
||||
text = culture_in_non_sedentary_geographical_region_trigger_desc
|
||||
any_culture_county = {
|
||||
any_county_province = {
|
||||
OR = {
|
||||
geographical_region = world_steppe
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
culture_not_pacifistic_trigger = {
|
||||
custom_description = {
|
||||
text = culture_not_pacifist_trigger_desc
|
||||
NOT = {
|
||||
culture_tradition:tradition_pacifism = { is_in_list = traits }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
culture_not_warlike_trigger = {
|
||||
custom_description = {
|
||||
text = culture_not_warlike_trigger_desc
|
||||
NOR = {
|
||||
culture_tradition:tradition_winter_warriors = { is_in_list = traits }
|
||||
culture_tradition:tradition_forest_fighters = { is_in_list = traits }
|
||||
culture_tradition:tradition_mountaineers = { is_in_list = traits }
|
||||
culture_tradition:tradition_warriors_of_the_dry = { is_in_list = traits }
|
||||
culture_tradition:tradition_highland_warriors = { is_in_list = traits }
|
||||
culture_tradition:tradition_jungle_warriors = { is_in_list = traits }
|
||||
culture_tradition:tradition_quarrelsome = { is_in_list = traits }
|
||||
culture_tradition:tradition_malleable_invaders = { is_in_list = traits }
|
||||
culture_tradition:tradition_hunters = { is_in_list = traits }
|
||||
culture_tradition:tradition_warrior_culture = { is_in_list = traits }
|
||||
culture_tradition:tradition_martial_admiration = { is_in_list = traits }
|
||||
}
|
||||
}
|
||||
custom_description = {
|
||||
text = culture_has_winter_warriors_desc
|
||||
NOT = {
|
||||
culture_tradition:tradition_winter_warriors = { is_in_list = traits }
|
||||
}
|
||||
}
|
||||
custom_description = {
|
||||
text = culture_has_forest_fighter_desc
|
||||
NOT = {
|
||||
culture_tradition:tradition_forest_fighters = { is_in_list = traits }
|
||||
}
|
||||
}
|
||||
custom_description = {
|
||||
text = culture_has_mountaineers_desc
|
||||
NOT = {
|
||||
culture_tradition:tradition_mountaineers = { is_in_list = traits }
|
||||
}
|
||||
}
|
||||
custom_description = {
|
||||
text = culture_has_warriors_of_the_dry_desc
|
||||
NOT = {
|
||||
culture_tradition:tradition_warriors_of_the_dry = { is_in_list = traits }
|
||||
}
|
||||
}
|
||||
custom_description = {
|
||||
text = culture_has_highland_warriors_desc
|
||||
NOT = {
|
||||
culture_tradition:tradition_highland_warriors = { is_in_list = traits }
|
||||
}
|
||||
}
|
||||
custom_description = {
|
||||
text = culture_has_jungle_warriors_desc
|
||||
NOT = {
|
||||
culture_tradition:tradition_jungle_warriors = { is_in_list = traits }
|
||||
}
|
||||
}
|
||||
custom_description = {
|
||||
text = culture_has_quarrelsome_desc
|
||||
NOT = {
|
||||
culture_tradition:tradition_quarrelsome = { is_in_list = traits }
|
||||
}
|
||||
}
|
||||
custom_description = {
|
||||
text = culture_has_malleable_invaders_desc
|
||||
NOT = {
|
||||
culture_tradition:tradition_malleable_invaders = { is_in_list = traits }
|
||||
}
|
||||
}
|
||||
custom_description = {
|
||||
text = culture_has_hunters_desc
|
||||
NOT = {
|
||||
culture_tradition:tradition_hunters = { is_in_list = traits }
|
||||
}
|
||||
}
|
||||
custom_description = {
|
||||
text = culture_has_warrior_culture_desc
|
||||
NOT = {
|
||||
culture_tradition:tradition_warrior_culture = { is_in_list = traits }
|
||||
}
|
||||
}
|
||||
custom_description = {
|
||||
text = culture_has_martial_admiration_desc
|
||||
NOT = {
|
||||
culture_tradition:tradition_martial_admiration = { is_in_list = traits }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
should_have_same_faith_succession_trigger = {
|
||||
culture = {
|
||||
has_cultural_parameter = same_faith_inheritance_only
|
||||
}
|
||||
NOR = {
|
||||
government_has_flag = government_is_theocracy # Handled separately
|
||||
government_has_flag = government_is_holy_order # Handled separately
|
||||
government_has_flag = government_is_mercenary # Irrelevant
|
||||
}
|
||||
}
|
||||
|
||||
not_tribal_raid_trigger = {
|
||||
culture = {
|
||||
has_cultural_parameter = not_tribal_raiding_malus
|
||||
}
|
||||
NOT = { government_has_flag = government_is_tribal }
|
||||
}
|
||||
|
||||
culture_is_not_historical_hybrid_trigger = {
|
||||
#Used to tell if a hybrid culture is one of the historical hybrids or not, mainly in checks for AI hybridization checks related to game rules.
|
||||
#Expects to be used in culture scope
|
||||
NOR = {
|
||||
this = culture:norman
|
||||
this = culture:maghrebi
|
||||
this = culture:gaelic
|
||||
this = culture:anglo_saxon
|
||||
this = culture:scottish
|
||||
this = culture:andalusian
|
||||
this = culture:catalan
|
||||
this = culture:english
|
||||
this = culture:sicilian
|
||||
this = culture:cisalpine
|
||||
}
|
||||
}
|
||||
|
||||
# Cultural MAA triggers - Used in various places for triggers, AI weights, etc.
|
||||
culture_has_skirmisher_maa = {
|
||||
OR = {
|
||||
has_cultural_parameter = unlock_maa_horn_warrior
|
||||
has_cultural_parameter = unlock_maa_shomer
|
||||
has_cultural_parameter = unlock_maa_abudrar
|
||||
has_cultural_parameter = unlock_maa_guinea_warrior
|
||||
has_innovation = innovation_adaptive_militia #Goedendag - Later Era MAA
|
||||
has_cultural_parameter = unlock_maa_akritai
|
||||
}
|
||||
}
|
||||
|
||||
culture_has_archer_maa = {
|
||||
OR = {
|
||||
has_cultural_parameter = unlock_maa_archers_of_the_nile
|
||||
has_cultural_parameter = unlock_maa_bush_hunter
|
||||
has_cultural_parameter = unlock_maa_metsanvartija
|
||||
has_cultural_parameter = unlock_maa_maturkan_warriors
|
||||
has_cultural_parameter = unlock_maa_longbowmen
|
||||
has_innovation = innovation_repeating_crossbow #Chu-ko-nu Archers
|
||||
has_innovation = innovation_bamboo_bows #Paiks
|
||||
}
|
||||
}
|
||||
|
||||
culture_has_heavy_infantry_maa = {
|
||||
OR = {
|
||||
has_cultural_parameter = unlock_maa_ayyar
|
||||
has_cultural_parameter = unlock_maa_mubarizun
|
||||
has_cultural_parameter = unlock_maa_druzhina
|
||||
has_cultural_parameter = unlock_maa_khandayat
|
||||
has_cultural_parameter = unlock_maa_garudas
|
||||
has_cultural_parameter = unlock_maa_palace_guards
|
||||
has_cultural_parameter = unlock_maa_huscarls
|
||||
has_cultural_parameter = unlock_maa_mountaineer
|
||||
has_cultural_parameter = unlock_maa_zbrojnosh
|
||||
has_innovation = innovation_sarawit #Sarawit - Later Era MAA
|
||||
has_innovation = innovation_legionnaires #Praetorian
|
||||
has_cultural_parameter = unlock_maa_varangian_guards
|
||||
}
|
||||
}
|
||||
|
||||
culture_has_pikemen_maa = { #I.e. Spearmen
|
||||
OR = {
|
||||
has_cultural_parameter = unlock_maa_zupin_warrior
|
||||
has_innovation = innovation_rectilinear_schiltron #Schiltron - Later Era MAA
|
||||
has_innovation = innovation_pike_columns #Picchieri - Later Era MAA
|
||||
has_innovation = innovation_zweihanders #Later Era MAA
|
||||
has_cultural_parameter = unlock_maa_skoutatoi
|
||||
}
|
||||
}
|
||||
|
||||
culture_has_light_cavalry_maa = {
|
||||
OR = {
|
||||
has_cultural_parameter = unlock_maa_mulaththamun
|
||||
has_cultural_parameter = unlock_maa_hussar #Konni
|
||||
has_cultural_parameter = unlock_maa_tawashi #Tawashi
|
||||
has_cultural_parameter = unlock_maa_ayrudzi
|
||||
has_innovation = innovation_desert_tactics #Chasseur
|
||||
has_innovation = innovation_caballeros #Caballero
|
||||
has_innovation = innovation_hobbies #Hobelar
|
||||
has_innovation = innovation_sahel_horsemen #Sahel Horsemen
|
||||
}
|
||||
}
|
||||
|
||||
culture_has_heavy_cavalry_maa = {
|
||||
OR = {
|
||||
has_cultural_parameter = unlock_maa_cataphract
|
||||
has_cultural_parameter = unlock_maa_monaspa
|
||||
has_cultural_parameter = unlock_maa_tarkhan
|
||||
has_cultural_parameter = unlock_maa_conrois
|
||||
has_cultural_parameter = unlock_maa_cataphract_archers
|
||||
has_innovation = innovation_valets #Gendarme - Later Era MAA
|
||||
}
|
||||
}
|
||||
|
||||
culture_has_archer_cavalry_maa = {
|
||||
OR = {
|
||||
has_cultural_parameter = unlock_maa_horse_archers
|
||||
has_cultural_parameter = unlock_maa_mangudai
|
||||
culture_head ?= {
|
||||
mpo_can_recruit_nomad_maa_trigger = yes
|
||||
}
|
||||
any_player = {
|
||||
culture = prev
|
||||
mpo_can_recruit_nomad_maa_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#Culture specialized in maa type
|
||||
culture_specializes_in_skirmisher_maa = {
|
||||
OR = {
|
||||
has_cultural_tradition = tradition_forest_folk
|
||||
has_cultural_tradition = tradition_jungle_dwellers
|
||||
has_cultural_tradition = tradition_polders
|
||||
has_cultural_tradition = tradition_adaptive_skirmishing
|
||||
has_cultural_tradition = tradition_hit_and_run
|
||||
has_cultural_tradition = tradition_forest_wardens
|
||||
has_cultural_tradition = tradition_hussar
|
||||
has_cultural_tradition = tradition_fp3_pragmatic_creed
|
||||
culture_has_skirmisher_maa = yes
|
||||
}
|
||||
}
|
||||
|
||||
culture_specializes_in_archer_maa = {
|
||||
OR = {
|
||||
has_cultural_tradition = tradition_forest_folk
|
||||
has_cultural_tradition = tradition_jungle_dwellers
|
||||
has_cultural_tradition = tradition_adaptive_skirmishing
|
||||
has_cultural_tradition = tradition_formation_fighting
|
||||
culture_has_archer_maa = yes
|
||||
}
|
||||
}
|
||||
|
||||
culture_specializes_in_heavy_infantry_maa = {
|
||||
OR = {
|
||||
has_cultural_tradition = tradition_roman_legacy
|
||||
has_cultural_tradition = tradition_metal_craftsmanship
|
||||
has_cultural_tradition = tradition_mountain_homes
|
||||
has_cultural_tradition = tradition_stand_and_fight
|
||||
has_cultural_tradition = tradition_mobile_guards
|
||||
has_cultural_tradition = tradition_mountaineer_ruralism
|
||||
culture_has_heavy_infantry_maa = yes
|
||||
}
|
||||
}
|
||||
|
||||
culture_specializes_in_pikemen_maa = {
|
||||
OR = {
|
||||
has_cultural_tradition = tradition_mountaineer_ruralism
|
||||
has_cultural_tradition = tradition_metal_craftsmanship
|
||||
has_cultural_tradition = tradition_mountain_homes
|
||||
has_cultural_tradition = tradition_formation_fighting
|
||||
has_cultural_tradition = tradition_stand_and_fight
|
||||
has_cultural_tradition = tradition_mobile_guards
|
||||
culture_has_pikemen_maa = yes
|
||||
}
|
||||
}
|
||||
|
||||
culture_specializes_in_light_cavalry_maa = {
|
||||
OR = {
|
||||
has_cultural_tradition = tradition_dryland_dwellers
|
||||
has_cultural_tradition = tradition_pastoralists
|
||||
has_cultural_tradition = tradition_hit_and_run
|
||||
has_cultural_tradition = tradition_horse_breeder
|
||||
has_cultural_tradition = tradition_saharan_nomads
|
||||
culture_has_light_cavalry_maa = yes
|
||||
}
|
||||
}
|
||||
|
||||
culture_specializes_in_heavy_cavalry_maa = {
|
||||
OR = {
|
||||
has_cultural_tradition = tradition_roman_legacy
|
||||
has_cultural_tradition = tradition_mountain_homes
|
||||
has_cultural_tradition = tradition_horse_breeder
|
||||
has_cultural_tradition = tradition_stand_and_fight
|
||||
has_cultural_tradition = tradition_mobile_guards
|
||||
has_cultural_tradition = tradition_ep3_indomitable_azatani
|
||||
has_cultural_tradition = tradition_mountaineer_ruralism
|
||||
culture_has_heavy_cavalry_maa = yes
|
||||
}
|
||||
}
|
||||
|
||||
culture_specializes_in_archer_cavalry_maa = {
|
||||
OR = {
|
||||
has_cultural_tradition = tradition_ep3_indomitable_azatani
|
||||
has_cultural_tradition = tradition_horse_breeder
|
||||
has_cultural_tradition = tradition_mpo_iron_cavalry
|
||||
has_cultural_tradition = tradition_devoted_horsemanship
|
||||
culture_has_archer_cavalry_maa = yes
|
||||
}
|
||||
}
|
||||
|
||||
# Language trigger - Makes languages available when you diverge your culture
|
||||
language_is_shown_trigger = {
|
||||
scope:character = {
|
||||
OR = {
|
||||
AND = {
|
||||
exists = var:legendary_culture
|
||||
var:legendary_culture = { has_cultural_pillar = $LANGUAGE$ }
|
||||
}
|
||||
AND = {
|
||||
# The target language needs to fulfill ALL of the following:
|
||||
any_sub_realm_county = { # Language needs to be well-represented within your realm
|
||||
percent >= 0.1
|
||||
culture = { has_cultural_pillar = $LANGUAGE$ }
|
||||
}
|
||||
any_sub_realm_county = { # Language needs to border your own culture
|
||||
culture = { has_cultural_pillar = $LANGUAGE$ }
|
||||
any_neighboring_county = {
|
||||
culture = { this = scope:character.culture }
|
||||
}
|
||||
}
|
||||
any_sub_realm_county = { # You need a minimum acceptance with any culture speaking the language
|
||||
culture = {
|
||||
has_cultural_pillar = $LANGUAGE$
|
||||
cultural_acceptance = {
|
||||
target = scope:character.culture
|
||||
value >= 25
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Language trigger - Makes heritages available when you diverge your culture
|
||||
heritage_is_shown_trigger = {
|
||||
scope:character = {
|
||||
OR = {
|
||||
AND = {
|
||||
exists = var:legendary_culture
|
||||
var:legendary_culture = { has_cultural_pillar = $HERITAGE$ }
|
||||
}
|
||||
culture = { has_cultural_pillar = $HERITAGE$ }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Checks if you could Hybridise with the culture without checking for acceptance
|
||||
is_valid_for_hybridising_trigger = {
|
||||
$CHARACTER$ = {
|
||||
culture = {
|
||||
NOT = { has_same_culture_heritage = $CULTURE$ }
|
||||
culture_age >= culture_hybrid_cooldown
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
NAND = {
|
||||
exists = var:special_culture
|
||||
var:special_culture = $CULTURE$
|
||||
}
|
||||
}
|
||||
custom_description = {
|
||||
text = culture_present_in_realm_for_hybridization
|
||||
any_sub_realm_county = {
|
||||
culture = $CULTURE$
|
||||
}
|
||||
}
|
||||
}
|
||||
custom_description = {
|
||||
text = culture_is_not_parent_culture
|
||||
culture = {
|
||||
NOT = {
|
||||
any_parent_culture = {
|
||||
this = $CULTURE$
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
custom_description = {
|
||||
text = culture_is_not_child_culture
|
||||
$CULTURE$ = {
|
||||
NOT = {
|
||||
any_parent_culture = {
|
||||
this = $CHARACTER$.culture
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Checks if you can currently hybridise with the culture
|
||||
can_hybridize_culture_trigger = {
|
||||
is_valid_for_hybridising_trigger = {
|
||||
CHARACTER = $CHARACTER$
|
||||
CULTURE = $CULTURE$
|
||||
}
|
||||
$CHARACTER$ = {
|
||||
culture = {
|
||||
cultural_acceptance = { target = $CULTURE$ value >= hybridization_threshold_value }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Uses current scope and scope:culture
|
||||
cultures_share_relevant_region_trigger = {
|
||||
OR = {
|
||||
AND = {
|
||||
culture_overlaps_geographical_region = world_europe
|
||||
scope:culture = {
|
||||
culture_overlaps_geographical_region = world_europe
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
culture_overlaps_geographical_region = world_asia_minor
|
||||
scope:culture = {
|
||||
culture_overlaps_geographical_region = world_asia_minor
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
OR = {
|
||||
culture_overlaps_geographical_region = world_middle_east
|
||||
culture_overlaps_geographical_region = world_middle_east_persia
|
||||
}
|
||||
scope:culture = {
|
||||
OR = {
|
||||
culture_overlaps_geographical_region = world_middle_east
|
||||
culture_overlaps_geographical_region = world_middle_east_persia
|
||||
}
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
culture_overlaps_geographical_region = world_steppe
|
||||
scope:culture = {
|
||||
culture_overlaps_geographical_region = world_steppe
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
culture_overlaps_geographical_region = world_tibet
|
||||
scope:culture = {
|
||||
culture_overlaps_geographical_region = world_tibet
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
OR = {
|
||||
culture_overlaps_geographical_region = world_india
|
||||
culture_overlaps_geographical_region = world_burma
|
||||
}
|
||||
scope:culture = {
|
||||
OR = {
|
||||
culture_overlaps_geographical_region = world_india
|
||||
culture_overlaps_geographical_region = world_burma
|
||||
}
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
culture_overlaps_geographical_region = world_africa
|
||||
scope:culture = {
|
||||
culture_overlaps_geographical_region = world_africa
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
is_vegetarian_trigger = {
|
||||
OR = {
|
||||
culture = {
|
||||
has_cultural_parameter = cannot_hunt
|
||||
}
|
||||
faith_is_vegetarian_trigger = yes
|
||||
}
|
||||
}
|
||||
|
||||
faith_is_vegetarian_trigger = {
|
||||
faith = {
|
||||
OR = {
|
||||
religion = religion:buddhism_religion
|
||||
religion = religion:jainism_religion
|
||||
religion = religion:bon_religion
|
||||
this = faith:mazdakism
|
||||
this = faith:manichean
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
culture_tradition_reduction_trigger = {
|
||||
scope:character = {
|
||||
has_variable_list = culture_tradition_reduction
|
||||
is_target_in_variable_list = {
|
||||
name = culture_tradition_reduction
|
||||
target = culture_tradition:$TRADITION$
|
||||
}
|
||||
}
|
||||
}
|
||||
97
common/scripted_triggers/00_death_management_triggers.txt
Normal file
97
common/scripted_triggers/00_death_management_triggers.txt
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
block_death_event_trigger = {
|
||||
OR = {
|
||||
trigger_if = {
|
||||
limit = { exists = var:block_death_event_from }
|
||||
var:block_death_event_from = $DEAD$
|
||||
#If we get timed variables in list:
|
||||
# is_target_in_variable_list = {
|
||||
# name = block_death_event_from
|
||||
# target = $DEAD$
|
||||
# }
|
||||
}
|
||||
has_character_flag = sent_relevant_death_event
|
||||
}
|
||||
}
|
||||
|
||||
had_gruesome_death_trigger = { #Used to check if a character's death was gruesome
|
||||
OR = {
|
||||
death_reason = death_physician_mistreatment
|
||||
death_reason = death_murder
|
||||
death_reason = death_ended_on_feast_table
|
||||
death_reason = death_mysterious
|
||||
death_reason = death_plotting
|
||||
death_reason = death_script_cruelty
|
||||
death_reason = death_punishment
|
||||
death_reason = death_dungeon
|
||||
death_reason = death_head_ripped_off
|
||||
death_reason = death_cloven_in_half
|
||||
death_reason = death_viciously_dismembered
|
||||
death_reason = death_ripped_apart_limb_by_limb
|
||||
death_reason = death_chopped_to_pieces
|
||||
death_reason = death_heart_ripped_out
|
||||
death_reason = death_fear
|
||||
death_reason = death_skull_cracked_open
|
||||
death_reason = death_strangled_with_own_intestines
|
||||
death_reason = death_carp_accident
|
||||
death_reason = death_whipping
|
||||
death_reason = death_torture
|
||||
death_reason = death_execution_blood_eagle
|
||||
death_reason = death_execution_blot
|
||||
death_reason = death_execution
|
||||
death_reason = death_burned
|
||||
death_reason = death_eaten
|
||||
death_reason = death_beaten
|
||||
death_reason = death_sacrificed_to_gods
|
||||
death_reason = death_crucified
|
||||
death_reason = death_burned_witch
|
||||
death_reason = death_feast_accident
|
||||
death_reason = death_fall
|
||||
death_reason = death_poison
|
||||
death_reason = death_crocodile
|
||||
death_reason = death_dog_attack
|
||||
death_reason = death_wolves
|
||||
death_reason = death_bear
|
||||
death_reason = death_ritually_hung_then_eaten
|
||||
death_reason = death_ritually_hung
|
||||
death_reason = death_ritually_eaten
|
||||
death_reason = death_botched_decapitation
|
||||
death_reason = death_decapitated
|
||||
death_reason = death_kennel
|
||||
death_reason = death_thrown_onto_chariot_track
|
||||
death_reason = death_thrown_off_kathisma
|
||||
death_reason = death_killed_while_attempting_murder
|
||||
death_reason = death_chariot_race_trick
|
||||
death_reason = death_snake
|
||||
}
|
||||
}
|
||||
|
||||
death_killer_always_public_trigger = {
|
||||
OR = {
|
||||
# Executions
|
||||
death_reason = death_crucified
|
||||
death_reason = death_burned_witch
|
||||
death_reason = death_torture
|
||||
death_reason = death_execution_blood_eagle
|
||||
death_reason = death_execution_blot
|
||||
death_reason = death_execution
|
||||
death_reason = death_dungeon
|
||||
death_reason = death_ritually_hung_then_eaten
|
||||
death_reason = death_ritually_hung
|
||||
death_reason = death_ritually_eaten
|
||||
death_reason = death_hostage_execution
|
||||
death_reason = death_botched_decapitation
|
||||
death_reason = death_decapitated
|
||||
death_reason = death_sacrificed_to_gods
|
||||
death_reason = death_eaten
|
||||
death_reason = death_kennel
|
||||
# Public Fights
|
||||
death_reason = death_fight
|
||||
death_reason = death_battle
|
||||
death_reason = death_duel
|
||||
death_reason = death_beaten
|
||||
death_reason = death_killed_while_attempting_murder
|
||||
# Accidents
|
||||
death_reason = death_carp_accident
|
||||
death_reason = death_feast_accident
|
||||
}
|
||||
}
|
||||
870
common/scripted_triggers/00_diarchy_scripted_triggers.txt
Normal file
870
common/scripted_triggers/00_diarchy_scripted_triggers.txt
Normal file
|
|
@ -0,0 +1,870 @@
|
|||
#############
|
||||
# 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
|
||||
any_held_title = { is_noble_family_title = yes }
|
||||
}
|
||||
}
|
||||
}
|
||||
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
|
||||
}
|
||||
}
|
||||
23
common/scripted_triggers/00_distance_triggers.txt
Normal file
23
common/scripted_triggers/00_distance_triggers.txt
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
character_realm_neighbors_target_trigger = {
|
||||
any_character_to_title_neighboring_county = {
|
||||
holder = {
|
||||
OR = {
|
||||
this = $TARGET_CHARACTER$
|
||||
target_is_liege_or_above = $TARGET_CHARACTER$
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
should_notify_player_about_neighboring_rulers_wars_trigger = {
|
||||
NOR = {
|
||||
target_is_liege_or_above = $TARGET_CHARACTER$ # We have separate toasts for this.
|
||||
target_is_vassal_or_below = $TARGET_CHARACTER$ # We are probably already aware of our vassal's wars (and likely involved in them in some fashion).
|
||||
}
|
||||
character_realm_neighbors_target_trigger = { TARGET_CHARACTER = $TARGET_CHARACTER$ }
|
||||
OR = {
|
||||
$TARGET_CHARACTER$ = { is_independent_ruler = yes } # Independent rulers are always relevant.
|
||||
liege = $TARGET_CHARACTER$.liege # Rulers are also relevant if we have the same direct liege (We might be able to DoW them, or at least want to stay informed as to relative power level).
|
||||
top_liege = $TARGET_CHARACTER$.liege # Alternatively, if their direct liege is our top liege, we can still DoW them (If I am a Duke under a King under an Emperor, I might still want to DoW one of the Emperor's other King or Duke vassals.)
|
||||
}
|
||||
}
|
||||
119
common/scripted_triggers/00_dynasty_triggers.txt
Normal file
119
common/scripted_triggers/00_dynasty_triggers.txt
Normal file
|
|
@ -0,0 +1,119 @@
|
|||
|
||||
|
||||
is_house_head = { # For unevaluated triggers
|
||||
trigger_if = {
|
||||
limit = {
|
||||
exists = this
|
||||
}
|
||||
save_temporary_scope_as = house_check
|
||||
exists = house
|
||||
house = {
|
||||
house_head = scope:house_check
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
is_dynast = {
|
||||
save_temporary_scope_as = dynast_check
|
||||
custom_description = {
|
||||
text = is_dynast
|
||||
subject = scope:dynast_check
|
||||
|
||||
exists = dynasty
|
||||
dynasty = {
|
||||
dynast = scope:dynast_check
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
can_start_new_legacy_track_trigger = {
|
||||
exists = dynasty
|
||||
dynasty = {
|
||||
OR = {
|
||||
NOT = { has_dynasty_perk = blood_legacy_1 }
|
||||
has_dynasty_perk = blood_legacy_5
|
||||
}
|
||||
OR = {
|
||||
NOT = { has_dynasty_perk = warfare_legacy_1 }
|
||||
has_dynasty_perk = warfare_legacy_5
|
||||
}
|
||||
OR = {
|
||||
NOT = { has_dynasty_perk = law_legacy_1 }
|
||||
has_dynasty_perk = law_legacy_5
|
||||
}
|
||||
OR = {
|
||||
NOT = { has_dynasty_perk = guile_legacy_1 }
|
||||
has_dynasty_perk = guile_legacy_5
|
||||
}
|
||||
OR = {
|
||||
NOT = { has_dynasty_perk = erudition_legacy_1 }
|
||||
has_dynasty_perk = erudition_legacy_5
|
||||
}
|
||||
OR = {
|
||||
NOT = { has_dynasty_perk = glory_legacy_1 }
|
||||
has_dynasty_perk = glory_legacy_5
|
||||
}
|
||||
OR = {
|
||||
NOT = { has_dynasty_perk = kin_legacy_1 }
|
||||
has_dynasty_perk = kin_legacy_5
|
||||
}
|
||||
OR = {
|
||||
NOT = { has_fp1_dlc_trigger = yes }
|
||||
NOT = { has_dynasty_perk = fp1_adventure_legacy_1 }
|
||||
has_dynasty_perk = fp1_adventure_legacy_5
|
||||
}
|
||||
OR = {
|
||||
NOT = { has_fp1_dlc_trigger = yes }
|
||||
NOT = { has_dynasty_perk = fp1_pillage_legacy_1 }
|
||||
has_dynasty_perk = fp1_pillage_legacy_5
|
||||
}
|
||||
OR = {
|
||||
NOT = { has_dlc_feature = hybridize_culture }
|
||||
NOT = { has_dynasty_perk = ep1_culture_legacy_1 }
|
||||
has_dynasty_perk = ep1_culture_legacy_5
|
||||
}
|
||||
OR = {
|
||||
NOT = { has_dlc_feature = the_fate_of_iberia }
|
||||
NOT = { has_dynasty_perk = fp2_urbanism_legacy_1 }
|
||||
has_dynasty_perk = fp2_urbanism_legacy_5
|
||||
}
|
||||
OR = {
|
||||
NOT = { has_dlc_feature = the_fate_of_iberia }
|
||||
NOT = { has_dynasty_perk = fp2_coterie_legacy_1 }
|
||||
has_dynasty_perk = fp2_coterie_legacy_5
|
||||
}
|
||||
OR = {
|
||||
NOT = { has_dlc_feature = legacy_of_persia }
|
||||
NOT = { has_dynasty_perk = fp3_khvarenah_legacy_1 }
|
||||
has_dynasty_perk = fp3_khvarenah_legacy_5
|
||||
}
|
||||
OR = {
|
||||
NOT = { has_dlc_feature = tours_and_tournaments }
|
||||
NOT = { has_dynasty_perk = ep2_activities_legacy_1 }
|
||||
has_dynasty_perk = ep2_activities_legacy_5
|
||||
}
|
||||
OR = {
|
||||
NOT = { has_dlc_feature = legends_of_the_dead }
|
||||
NOT = { has_dynasty_perk = ce1_heroic_legacy_1 }
|
||||
has_dynasty_perk = ce1_heroic_legacy_5
|
||||
}
|
||||
OR = {
|
||||
NOT = { has_dlc_feature = legends_of_the_dead }
|
||||
NOT = { has_dynasty_perk = ce1_legitimacy_legacy_1 }
|
||||
has_dynasty_perk = ce1_legitimacy_legacy_5
|
||||
}
|
||||
OR = {
|
||||
NOT = { has_dlc_feature = roads_to_power }
|
||||
NOT = { has_dynasty_perk = ep3_administrative_legacy_1 }
|
||||
has_dynasty_perk = ep3_administrative_legacy_5
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dynasty_head_prefers_activities_trigger = {
|
||||
has_trait = diligent
|
||||
OR = {
|
||||
has_trait = gregarious
|
||||
has_trait = lifestyle_reveler
|
||||
}
|
||||
}
|
||||
99
common/scripted_triggers/00_economic_triggers.txt
Normal file
99
common/scripted_triggers/00_economic_triggers.txt
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
can_make_expensive_purchase_trigger = {
|
||||
OR = {
|
||||
# Players can make their own decisions.
|
||||
is_ai = no
|
||||
# Some people are just really bad with money.
|
||||
has_trait = profligate
|
||||
## If a purchase is unwise but would be magnanimous, save this scope first to flag it as valid in the event.
|
||||
### If you're in a chain, don't forget to clear the scope up afterwards with clear_saved_scope, otherwise it might affect other usages of the trigger further down the chain.
|
||||
AND = {
|
||||
has_trait = improvident
|
||||
exists = scope:generous_purchase
|
||||
}
|
||||
# And if you've got the cash to spare, who cares?
|
||||
short_term_gold >= $PRICE$
|
||||
}
|
||||
}
|
||||
|
||||
county_has_any_special_mine_building_trigger = {
|
||||
OR = {
|
||||
# Rammelsberg Mines
|
||||
has_building_or_higher = rammelsberg_mines_01
|
||||
# Kutna_hora Mines
|
||||
has_building_or_higher = kutna_hora_mines_01
|
||||
# Kremnica Mines
|
||||
has_building_or_higher = kremnica_mines_01
|
||||
# Falun Mines
|
||||
has_building_or_higher = falun_mines_01
|
||||
# Schwaz Mines
|
||||
has_building_or_higher = schwaz_mines_01
|
||||
# Argentiera Mines
|
||||
has_building_or_higher = argentiera_mines_01
|
||||
# Kollur Mines
|
||||
has_building_or_higher = kollur_mines_01
|
||||
# Siderokausia Mines
|
||||
has_building_or_higher = siderokausia_mines_01
|
||||
# Mali Mines
|
||||
has_building_or_higher = mali_mines_01
|
||||
# Konasamudram Mines
|
||||
has_building_or_higher = konasamudram_mines_01
|
||||
# Dean Mines
|
||||
has_building_or_higher = dean_mines_01
|
||||
# Zawar Mines
|
||||
has_building_or_higher = zawar_mines_01
|
||||
# Takkeda Mines
|
||||
has_building_or_higher = takkeda_mines_01
|
||||
# Khetri Mines
|
||||
has_building_or_higher = khetri_mines_01
|
||||
# Taghaza Mines
|
||||
has_building_or_higher = taghaza_mines_01
|
||||
# Ijil Mines
|
||||
has_building_or_higher = ijil_mines_01
|
||||
# Turda Mines
|
||||
has_building_or_higher = turda_mines_01
|
||||
# Phocaea Mines
|
||||
has_building_or_higher = phocaea_mines_01
|
||||
# Pansjhir Mines
|
||||
has_building_or_higher = pansjhir_mines_01
|
||||
# Trepca Mines
|
||||
has_building_or_higher = trepca_mines_01
|
||||
# Rudnik Mines
|
||||
has_building_or_higher = rudnik_mines_01
|
||||
# Cevennes Mines
|
||||
has_building_or_higher = cevennes_mines_01
|
||||
# Allaq Mines
|
||||
has_building_or_higher = allaq_mines_01
|
||||
# Verespatak Mines
|
||||
has_building_or_higher = verespatak_mines_01
|
||||
# Nishapur Mines
|
||||
has_building_or_higher = nishapur_mines_01
|
||||
# Srebrenica Mines
|
||||
has_building_or_higher = srebrenica_mines_01
|
||||
# Ratnapura Mines
|
||||
has_building_or_higher = ratnapura_mines_01
|
||||
}
|
||||
}
|
||||
|
||||
location_has_multi_story_buildings_trigger = {
|
||||
$LOCATION$ = {
|
||||
# Filter out ocean-going people.
|
||||
## Yes, this will error otherwise.
|
||||
is_sea_province = no
|
||||
# We just want to make sure we're not dealing with a tribe, who likely won't have too many really tall buildings.
|
||||
NOT = { has_holding_type = tribal_holding }
|
||||
# And that the place isn't a total backwater, which would also stop it having too many tall buildings.
|
||||
county = { development_level >= 10 }
|
||||
}
|
||||
}
|
||||
|
||||
location_has_fast_traffic_trigger = {
|
||||
$LOCATION$ = {
|
||||
# Filter out ocean-going people.
|
||||
## This one just might hypothetically error, so we check just in case.
|
||||
is_sea_province = no
|
||||
# We just want to make sure we're not dealing with a tribe, who would probably have carts but likely don't have to worry about them speeding much.
|
||||
NOT = { has_holding_type = tribal_holding }
|
||||
# And that the place isn't a total backwater, which would also keep the flow down.
|
||||
county = { development_level >= 20 }
|
||||
}
|
||||
}
|
||||
453
common/scripted_triggers/00_education_triggers.txt
Normal file
453
common/scripted_triggers/00_education_triggers.txt
Normal file
|
|
@ -0,0 +1,453 @@
|
|||
|
||||
|
||||
###TRIGGER LIST
|
||||
|
||||
#Takes RANK and OPERATOR
|
||||
#OPERATOR can be "equals", "greater" or "less"
|
||||
has_education_rank_trigger = {
|
||||
save_temporary_scope_value_as = {
|
||||
name = operator
|
||||
value = flag:$OPERATOR$
|
||||
}
|
||||
OR = {
|
||||
AND = {
|
||||
scope:operator = flag:equals
|
||||
OR = {
|
||||
has_trait_rank = {
|
||||
trait = education_diplomacy
|
||||
rank = $RANK$
|
||||
}
|
||||
has_trait_rank = {
|
||||
trait = education_martial
|
||||
rank = $RANK$
|
||||
}
|
||||
has_trait_rank = {
|
||||
trait = education_stewardship
|
||||
rank = $RANK$
|
||||
}
|
||||
has_trait_rank = {
|
||||
trait = education_intrigue
|
||||
rank = $RANK$
|
||||
}
|
||||
has_trait_rank = {
|
||||
trait = education_learning
|
||||
rank = $RANK$
|
||||
}
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
scope:operator = flag:greater
|
||||
OR = {
|
||||
has_trait_rank = {
|
||||
trait = education_diplomacy
|
||||
rank > $RANK$
|
||||
}
|
||||
has_trait_rank = {
|
||||
trait = education_martial
|
||||
rank > $RANK$
|
||||
}
|
||||
has_trait_rank = {
|
||||
trait = education_stewardship
|
||||
rank > $RANK$
|
||||
}
|
||||
has_trait_rank = {
|
||||
trait = education_intrigue
|
||||
rank > $RANK$
|
||||
}
|
||||
has_trait_rank = {
|
||||
trait = education_learning
|
||||
rank > $RANK$
|
||||
}
|
||||
}
|
||||
}
|
||||
#AND = {
|
||||
# scope:operator = flag:less
|
||||
# OR = {
|
||||
# has_trait_rank = {
|
||||
# trait = education_diplomacy
|
||||
# rank < $RANK$
|
||||
# }
|
||||
# has_trait_rank = {
|
||||
# trait = education_martial
|
||||
# rank < $RANK$
|
||||
# }
|
||||
# has_trait_rank = {
|
||||
# trait = education_stewardship
|
||||
# rank < $RANK$
|
||||
# }
|
||||
# has_trait_rank = {
|
||||
# trait = education_intrigue
|
||||
# rank < $RANK$
|
||||
# }
|
||||
# has_trait_rank = {
|
||||
# trait = education_learning
|
||||
# rank < $RANK$
|
||||
# }
|
||||
# }
|
||||
#}
|
||||
}
|
||||
}
|
||||
|
||||
has_education_rank_1_trigger = {
|
||||
OR = {
|
||||
has_trait_rank = {
|
||||
trait = education_diplomacy
|
||||
rank = 1
|
||||
}
|
||||
has_trait_rank = {
|
||||
trait = education_martial
|
||||
rank = 1
|
||||
}
|
||||
has_trait_rank = {
|
||||
trait = education_stewardship
|
||||
rank = 1
|
||||
}
|
||||
has_trait_rank = {
|
||||
trait = education_intrigue
|
||||
rank = 1
|
||||
}
|
||||
has_trait_rank = {
|
||||
trait = education_learning
|
||||
rank = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
has_education_rank_2_trigger = {
|
||||
OR = {
|
||||
has_trait_rank = {
|
||||
trait = education_diplomacy
|
||||
rank = 2
|
||||
}
|
||||
has_trait_rank = {
|
||||
trait = education_martial
|
||||
rank = 2
|
||||
}
|
||||
has_trait_rank = {
|
||||
trait = education_stewardship
|
||||
rank = 2
|
||||
}
|
||||
has_trait_rank = {
|
||||
trait = education_intrigue
|
||||
rank = 2
|
||||
}
|
||||
has_trait_rank = {
|
||||
trait = education_learning
|
||||
rank = 2
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
has_education_rank_3_trigger = {
|
||||
OR = {
|
||||
has_trait_rank = {
|
||||
trait = education_diplomacy
|
||||
rank = 3
|
||||
}
|
||||
has_trait_rank = {
|
||||
trait = education_martial
|
||||
rank = 3
|
||||
}
|
||||
has_trait_rank = {
|
||||
trait = education_stewardship
|
||||
rank = 3
|
||||
}
|
||||
has_trait_rank = {
|
||||
trait = education_intrigue
|
||||
rank = 3
|
||||
}
|
||||
has_trait_rank = {
|
||||
trait = education_learning
|
||||
rank = 3
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
has_education_rank_4_trigger = {
|
||||
OR = {
|
||||
has_trait_rank = {
|
||||
trait = education_diplomacy
|
||||
rank = 4
|
||||
}
|
||||
has_trait_rank = {
|
||||
trait = education_martial
|
||||
rank = 4
|
||||
}
|
||||
has_trait_rank = {
|
||||
trait = education_stewardship
|
||||
rank = 4
|
||||
}
|
||||
has_trait_rank = {
|
||||
trait = education_intrigue
|
||||
rank = 4
|
||||
}
|
||||
has_trait_rank = {
|
||||
trait = education_learning
|
||||
rank = 4
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
has_education_rank_5_trigger = {
|
||||
OR = {
|
||||
has_trait_rank = {
|
||||
trait = education_diplomacy
|
||||
rank = 5
|
||||
}
|
||||
has_trait_rank = {
|
||||
trait = education_martial
|
||||
rank = 5
|
||||
}
|
||||
has_trait_rank = {
|
||||
trait = education_stewardship
|
||||
rank = 5
|
||||
}
|
||||
has_trait_rank = {
|
||||
trait = education_intrigue
|
||||
rank = 5
|
||||
}
|
||||
has_trait_rank = {
|
||||
trait = education_learning
|
||||
rank = 5
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
has_education_focus_trigger = {
|
||||
OR = {
|
||||
has_focus = education_diplomacy
|
||||
has_focus = education_martial
|
||||
has_focus = education_stewardship
|
||||
has_focus = education_intrigue
|
||||
has_focus = education_learning
|
||||
}
|
||||
}
|
||||
|
||||
#Takes RANK and FOCUS
|
||||
education_points_and_focus_equals_education_rank = {
|
||||
save_temporary_scope_value_as = {
|
||||
name = education_rank
|
||||
value = $RANK$
|
||||
}
|
||||
OR = {
|
||||
AND = {
|
||||
has_focus = education_$FOCUS$
|
||||
OR = {
|
||||
AND = {
|
||||
var:education_$FOCUS$_variable <= education_level_1
|
||||
scope:education_rank = 1
|
||||
}
|
||||
AND = {
|
||||
var:education_$FOCUS$_variable <= education_level_2
|
||||
scope:education_rank = 2
|
||||
}
|
||||
AND = {
|
||||
var:education_$FOCUS$_variable <= education_level_3
|
||||
scope:education_rank = 3
|
||||
}
|
||||
AND = {
|
||||
var:education_$FOCUS$_variable > education_level_3
|
||||
scope:education_rank = 4
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#Takes RANK
|
||||
education_points_equals_education_rank = {
|
||||
OR = {
|
||||
education_points_and_focus_equals_education_rank = { RANK = $RANK$ FOCUS = diplomacy }
|
||||
education_points_and_focus_equals_education_rank = { RANK = $RANK$ FOCUS = martial }
|
||||
education_points_and_focus_equals_education_rank = { RANK = $RANK$ FOCUS = stewardship }
|
||||
education_points_and_focus_equals_education_rank = { RANK = $RANK$ FOCUS = intrigue }
|
||||
education_points_and_focus_equals_education_rank = { RANK = $RANK$ FOCUS = learning }
|
||||
}
|
||||
}
|
||||
|
||||
#Affinity/disaffinity
|
||||
#For children
|
||||
has_diplomacy_education_affinity_childhood_trait_trigger = {
|
||||
OR = {
|
||||
has_trait = charming
|
||||
has_trait = curious
|
||||
}
|
||||
}
|
||||
|
||||
has_martial_education_affinity_childhood_trait_trigger = {
|
||||
OR = {
|
||||
has_trait = rowdy
|
||||
has_trait = bossy
|
||||
}
|
||||
}
|
||||
|
||||
has_stewardship_education_affinity_childhood_trait_trigger = {
|
||||
OR = {
|
||||
has_trait = bossy
|
||||
has_trait = pensive
|
||||
}
|
||||
}
|
||||
|
||||
has_intrigue_education_affinity_childhood_trait_trigger = {
|
||||
OR = {
|
||||
has_trait = charming
|
||||
has_trait = rowdy
|
||||
}
|
||||
}
|
||||
|
||||
has_learning_education_affinity_childhood_trait_trigger = {
|
||||
OR = {
|
||||
has_trait = pensive
|
||||
has_trait = curious
|
||||
}
|
||||
}
|
||||
|
||||
has_diplomacy_education_disaffinity_childhood_trait_trigger = {
|
||||
has_trait = bossy
|
||||
}
|
||||
|
||||
has_martial_education_disaffinity_childhood_trait_trigger = {
|
||||
has_trait = curious
|
||||
}
|
||||
|
||||
has_stewardship_education_disaffinity_childhood_trait_trigger = {
|
||||
has_trait = charming
|
||||
}
|
||||
|
||||
has_intrigue_education_disaffinity_childhood_trait_trigger = {
|
||||
has_trait = pensive
|
||||
}
|
||||
|
||||
has_learning_education_disaffinity_childhood_trait_trigger = {
|
||||
has_trait = rowdy
|
||||
}
|
||||
|
||||
#For adults
|
||||
had_diplomacy_education_affinity_childhood_trait_trigger = {
|
||||
has_variable = childhood_trait_type
|
||||
OR = {
|
||||
var:childhood_trait_type = flag:charming
|
||||
var:childhood_trait_type = flag:curious
|
||||
}
|
||||
}
|
||||
|
||||
had_martial_education_affinity_childhood_trait_trigger = {
|
||||
has_variable = childhood_trait_type
|
||||
OR = {
|
||||
var:childhood_trait_type = flag:rowdy
|
||||
var:childhood_trait_type = flag:bossy
|
||||
}
|
||||
}
|
||||
|
||||
had_stewardship_education_affinity_childhood_trait_trigger = {
|
||||
has_variable = childhood_trait_type
|
||||
OR = {
|
||||
var:childhood_trait_type = flag:bossy
|
||||
var:childhood_trait_type = flag:pensive
|
||||
}
|
||||
}
|
||||
|
||||
had_intrigue_education_affinity_childhood_trait_trigger = {
|
||||
has_variable = childhood_trait_type
|
||||
OR = {
|
||||
var:childhood_trait_type = flag:charming
|
||||
var:childhood_trait_type = flag:rowdy
|
||||
}
|
||||
}
|
||||
|
||||
had_learning_education_affinity_childhood_trait_trigger = {
|
||||
has_variable = childhood_trait_type
|
||||
OR = {
|
||||
var:childhood_trait_type = flag:pensive
|
||||
var:childhood_trait_type = flag:curious
|
||||
}
|
||||
}
|
||||
|
||||
had_diplomacy_education_disaffinity_childhood_trait_trigger = {
|
||||
has_variable = childhood_trait_type
|
||||
var:childhood_trait_type = flag:bossy
|
||||
}
|
||||
|
||||
had_martial_education_disaffinity_childhood_trait_trigger = {
|
||||
has_variable = childhood_trait_type
|
||||
var:childhood_trait_type = flag:curious
|
||||
}
|
||||
|
||||
had_stewardship_education_disaffinity_childhood_trait_trigger = {
|
||||
has_variable = childhood_trait_type
|
||||
var:childhood_trait_type = flag:charming
|
||||
}
|
||||
|
||||
had_intrigue_education_disaffinity_childhood_trait_trigger = {
|
||||
has_variable = childhood_trait_type
|
||||
var:childhood_trait_type = flag:pensive
|
||||
}
|
||||
|
||||
had_learning_education_disaffinity_childhood_trait_trigger = {
|
||||
has_variable = childhood_trait_type
|
||||
var:childhood_trait_type = flag:rowdy
|
||||
}
|
||||
|
||||
has_university_building_trigger = {
|
||||
OR = {
|
||||
has_building_or_higher = generic_university
|
||||
has_building_or_higher = al_azhar_university
|
||||
has_building_or_higher = sankore_university
|
||||
has_building_or_higher = siena_university
|
||||
has_building_or_higher = nalanda_university
|
||||
has_building_or_higher = house_of_wisdom_01
|
||||
has_building_or_higher = al_qarawiyyin_university_01
|
||||
has_building_or_higher = somapura_university_01
|
||||
has_building_or_higher = cluny_abbey_01
|
||||
}
|
||||
}
|
||||
|
||||
characters_have_same_education_group_trigger = {
|
||||
# First, we make sure that both characters have an education finalised.
|
||||
$CHARACTER_1$ = {
|
||||
OR = {
|
||||
has_trait = education_diplomacy
|
||||
has_trait = education_martial
|
||||
has_trait = education_stewardship
|
||||
has_trait = education_intrigue
|
||||
has_trait = education_learning
|
||||
}
|
||||
}
|
||||
$CHARACTER_2$ = {
|
||||
OR = {
|
||||
has_trait = education_diplomacy
|
||||
has_trait = education_martial
|
||||
has_trait = education_stewardship
|
||||
has_trait = education_intrigue
|
||||
has_trait = education_learning
|
||||
}
|
||||
}
|
||||
# Now check for the actual traits.
|
||||
$CHARACTER_1$ = {
|
||||
# Diplomacy.
|
||||
trigger_if = {
|
||||
limit = { has_trait = education_diplomacy }
|
||||
$CHARACTER_2$ = { has_trait = education_diplomacy}
|
||||
}
|
||||
# Martial.
|
||||
trigger_if = {
|
||||
limit = { has_trait = education_martial }
|
||||
$CHARACTER_2$ = { has_trait = education_martial }
|
||||
}
|
||||
# Stewardship.
|
||||
trigger_if = {
|
||||
limit = { has_trait = education_stewardship }
|
||||
$CHARACTER_2$ = { has_trait = education_stewardship }
|
||||
}
|
||||
# Intrigue.
|
||||
trigger_if = {
|
||||
limit = { has_trait = education_intrigue }
|
||||
$CHARACTER_2$ = { has_trait = education_intrigue }
|
||||
}
|
||||
# Learning.
|
||||
trigger_if = {
|
||||
limit = { has_trait = education_learning }
|
||||
$CHARACTER_2$ = { has_trait = education_learning }
|
||||
}
|
||||
}
|
||||
}
|
||||
339
common/scripted_triggers/00_elective_triggers.txt
Normal file
339
common/scripted_triggers/00_elective_triggers.txt
Normal file
|
|
@ -0,0 +1,339 @@
|
|||
# Example:
|
||||
#
|
||||
# example_trigger = {
|
||||
# is_country_type = default
|
||||
# free_leader_slots > 0
|
||||
# }
|
||||
#
|
||||
#
|
||||
# In a script file:
|
||||
#
|
||||
# trigger = {
|
||||
# example_trigger = yes
|
||||
# }
|
||||
#
|
||||
|
||||
has_unelectable_trait_trigger = {
|
||||
OR = {
|
||||
has_trait = disinherited
|
||||
has_trait = gallivanter
|
||||
is_eunuch_trigger = yes
|
||||
has_trait = crusader_king #Avoid realm merging after Crusade.
|
||||
has_trait = devoted
|
||||
has_trait = order_member
|
||||
AND = {
|
||||
has_trait = bastard #If landed, he might still be electable on the grounds of being an Elector.
|
||||
is_ruler = no
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
has_unelectable_government_trigger = {
|
||||
OR = {
|
||||
government_has_flag = government_is_special_republic
|
||||
government_has_flag = government_is_theocracy
|
||||
government_has_flag = government_is_mercenary
|
||||
government_has_flag = government_is_holy_order
|
||||
}
|
||||
}
|
||||
|
||||
this_is_martial_society_trigger = {
|
||||
NOR = {
|
||||
faith = { has_doctrine = tenet_pacifism }
|
||||
faith = { has_doctrine = tenet_dharmic_pacifism }
|
||||
}
|
||||
OR = {
|
||||
government_has_flag = government_is_clan
|
||||
government_has_flag = government_is_tribal
|
||||
government_has_flag = government_is_mercenary
|
||||
government_has_flag = government_is_holy_order
|
||||
faith = {
|
||||
OR = {
|
||||
has_doctrine_parameter = great_holy_wars_active
|
||||
has_doctrine_parameter = great_holy_wars_active_if_reformed
|
||||
has_doctrine_parameter = cheaper_holy_wars_active
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this_is_diplomatic_society_trigger = {
|
||||
OR = {
|
||||
government_has_flag = government_is_feudal
|
||||
government_has_flag = government_is_special_republic
|
||||
government_has_flag = government_is_theocracy
|
||||
}
|
||||
OR = {
|
||||
faith = { has_doctrine = tenet_communal_identity }
|
||||
faith = { has_doctrine = tenet_alexandrian_catechism }
|
||||
faith = { has_doctrine = tenet_legalism }
|
||||
}
|
||||
}
|
||||
this_is_spiritual_society_trigger = {
|
||||
faith = {
|
||||
NOR = {
|
||||
has_doctrine = tenet_false_conversion_sanction
|
||||
has_doctrine = tenet_hedonistic
|
||||
has_doctrine = tenet_carnal_exaltation
|
||||
has_doctrine = tenet_exaltation_of_pain
|
||||
has_doctrine = tenet_pursuit_of_power
|
||||
}
|
||||
OR = {
|
||||
has_doctrine = tenet_inner_journey
|
||||
has_doctrine = tenet_asceticism
|
||||
has_doctrine = tenet_literalism
|
||||
has_doctrine = tenet_esotericism
|
||||
has_doctrine = tenet_astrology
|
||||
has_doctrine = tenet_monasticism
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ere_elective_politician_titles_trigger = { #Used in Byzantine Elective to determine AI behavior.
|
||||
OR = {
|
||||
has_council_position = councillor_chancellor
|
||||
has_council_position = councillor_marshal
|
||||
has_council_position = councillor_steward
|
||||
has_council_position = councillor_spymaster
|
||||
has_council_position = councillor_court_chaplain
|
||||
}
|
||||
}
|
||||
|
||||
parent_for_elective_succession_trigger = { #This trigger is used to prevent grandchildren from being selectable when their parent is still available as a candidate.
|
||||
NOT = { this = scope:holder } #Not the current ruler.
|
||||
dynasty = scope:holder.dynasty
|
||||
is_child_of = scope:holder
|
||||
|
||||
OR = {
|
||||
is_female = no
|
||||
scope:title = {
|
||||
NOT = { has_title_law = male_only_law }
|
||||
}
|
||||
}
|
||||
OR = {
|
||||
is_female = yes
|
||||
scope:title = {
|
||||
NOT = { has_title_law = female_only_law }
|
||||
}
|
||||
}
|
||||
|
||||
OR = { #Candidate should not be a landless Courtier that is about to inherit a Theocracy or Republic
|
||||
AND = {
|
||||
is_ruler = yes
|
||||
is_playable_character = yes
|
||||
has_unelectable_government_trigger = no
|
||||
}
|
||||
NOT = {
|
||||
any_heir_title = {
|
||||
exists = holder
|
||||
holder = {
|
||||
has_unelectable_government_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
OR = { #If the title controls the faith, candidates must be of the same faith.
|
||||
scope:holder = {
|
||||
NAND = {
|
||||
exists = faith.religious_head
|
||||
this = faith.religious_head
|
||||
}
|
||||
}
|
||||
faith = scope:holder.faith
|
||||
}
|
||||
has_unelectable_trait_trigger = no
|
||||
has_unelectable_government_trigger = no
|
||||
}
|
||||
|
||||
feudal_elective_potential_landed_candidate_trigger = {
|
||||
save_temporary_scope_as = potential_candidate
|
||||
has_same_government = scope:holder
|
||||
#Either the candidate is in the realm, or the title is independent, or the realm of the title does NOT have protected inheritance.
|
||||
OR = {
|
||||
any_liege_or_above = {
|
||||
this = scope:holder
|
||||
}
|
||||
scope:holder = { is_independent_ruler = yes }
|
||||
scope:holder = {
|
||||
exists = liege
|
||||
NOT = {
|
||||
any_liege_or_above = {
|
||||
has_realm_law_flag = titles_cannot_leave_realm_on_succession
|
||||
NOR = {
|
||||
this = scope:potential_candidate
|
||||
target_is_vassal_or_below = scope:potential_candidate
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
OR = { #If the title controls the faith, candidates must be of the same faith.
|
||||
scope:holder = {
|
||||
NAND = {
|
||||
exists = faith.religious_head
|
||||
this = faith.religious_head
|
||||
}
|
||||
}
|
||||
this.faith = scope:holder.faith
|
||||
}
|
||||
has_unelectable_trait_trigger = no
|
||||
has_unelectable_government_trigger = no
|
||||
}
|
||||
|
||||
feudal_elective_potential_landless_claimant_candidate_trigger = {
|
||||
save_temporary_scope_as = potential_candidate
|
||||
#Either the candidate is in the realm, or is landless, or the title is independent, or the realm of the title does NOT have protected inheritance.
|
||||
OR = {
|
||||
any_liege_or_above = {
|
||||
this = scope:holder
|
||||
}
|
||||
is_ruler = no
|
||||
scope:holder = { is_independent_ruler = yes }
|
||||
scope:holder = {
|
||||
exists = liege
|
||||
NOT = {
|
||||
any_liege_or_above = {
|
||||
has_realm_law_flag = titles_cannot_leave_realm_on_succession
|
||||
NOR = {
|
||||
this = scope:potential_candidate
|
||||
target_is_vassal_or_below = scope:potential_candidate
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
NOT = { #Landless characters should not be heirs to Theocracies/Republics.
|
||||
any_heir_title = {
|
||||
exists = holder
|
||||
holder = {
|
||||
has_unelectable_government_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
OR = { #If the title controls the faith, candidates must be of the same faith.
|
||||
scope:holder = {
|
||||
NAND = {
|
||||
exists = faith.religious_head
|
||||
this = scope:holder.faith.religious_head
|
||||
}
|
||||
}
|
||||
faith = scope:holder.faith
|
||||
}
|
||||
has_unelectable_trait_trigger = no
|
||||
has_unelectable_government_trigger = no
|
||||
}
|
||||
|
||||
feudal_elective_potential_landless_dynastic_candidate_trigger = {
|
||||
save_temporary_scope_as = potential_candidate
|
||||
#Either the candidate is in the realm, or is landless, or the title is independent, or the realm of the title does NOT have protected inheritance.
|
||||
OR = {
|
||||
any_liege_or_above = {
|
||||
this = scope:holder
|
||||
}
|
||||
is_ruler = no
|
||||
scope:holder = { is_independent_ruler = yes }
|
||||
scope:holder = {
|
||||
exists = liege
|
||||
NOT = {
|
||||
any_liege_or_above = {
|
||||
has_realm_law_flag = titles_cannot_leave_realm_on_succession
|
||||
NOR = {
|
||||
this = scope:potential_candidate
|
||||
target_is_vassal_or_below = scope:potential_candidate
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
NOT = { #Landless characters should not be heirs to Theocracies/Republics.
|
||||
any_heir_title = {
|
||||
exists = holder
|
||||
holder = {
|
||||
has_unelectable_government_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
OR = { #If the title controls the faith, candidates must be of the same faith.
|
||||
scope:holder = {
|
||||
NAND = {
|
||||
exists = faith.religious_head
|
||||
this = scope:holder.faith.religious_head
|
||||
}
|
||||
}
|
||||
faith = scope:holder.faith
|
||||
}
|
||||
|
||||
#Grandkid block
|
||||
trigger_if = {
|
||||
limit = {
|
||||
NOR = {
|
||||
#Check to see that you're not the product of incest
|
||||
AND = {
|
||||
exists = mother
|
||||
exists = father
|
||||
mother = {
|
||||
relation_with_character_is_incestuous_in_my_or_lieges_faith_trigger = { CHARACTER = prev.father }
|
||||
}
|
||||
}
|
||||
#Let's make the incredibly bold assumption that if incest is completely allowed we'll just default to check the child instead of parents
|
||||
scope:holder.faith = {
|
||||
has_doctrine_parameter = consanguinity_unrestricted_incest
|
||||
}
|
||||
}
|
||||
}
|
||||
# We don't want grandkids to show as candidates if their parent is eligable and still alive
|
||||
NOR = {
|
||||
AND = {
|
||||
exists = mother
|
||||
mother = {
|
||||
is_alive = yes
|
||||
parent_for_elective_succession_trigger = yes
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
exists = father
|
||||
father = {
|
||||
is_alive = yes
|
||||
parent_for_elective_succession_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#if incest is allowed, check if you're the child of the holder since you can be both their kid and grandkid at the same time...
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
OR = {
|
||||
AND = {
|
||||
exists = mother
|
||||
mother = {
|
||||
is_alive = yes
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
exists = father
|
||||
father = {
|
||||
is_alive = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
parent_for_elective_succession_trigger = yes
|
||||
}
|
||||
trigger_else = {
|
||||
#Your parents are dead and you're eligible for title inheritance. Congrats.
|
||||
}
|
||||
|
||||
has_unelectable_trait_trigger = no
|
||||
has_unelectable_government_trigger = no
|
||||
}
|
||||
|
||||
byzantine_elective_deformed_candidate_trigger = {
|
||||
OR = {
|
||||
has_trait = disfigured
|
||||
has_trait = blind
|
||||
is_eunuch_trigger = yes
|
||||
has_trait = dwarf
|
||||
has_trait = clubfooted
|
||||
has_trait = inbred
|
||||
}
|
||||
}
|
||||
159
common/scripted_triggers/00_faction_triggers.txt
Normal file
159
common/scripted_triggers/00_faction_triggers.txt
Normal file
|
|
@ -0,0 +1,159 @@
|
|||
|
||||
### TRIGGER LIST ###
|
||||
# General Triggers:
|
||||
# -
|
||||
#
|
||||
# Popular Faction Triggers:
|
||||
# -
|
||||
#
|
||||
|
||||
############################
|
||||
# General Faction Triggers #
|
||||
############################
|
||||
immune_to_factions_trigger = {
|
||||
OR = {
|
||||
# Genghis Khan is immune to factions
|
||||
has_character_flag = is_temujin
|
||||
# Seljuk leader is immune to factions too
|
||||
has_character_flag = is_seljuk
|
||||
}
|
||||
}
|
||||
|
||||
character_has_faction_disabling_modifier_trigger = {
|
||||
NOR = {
|
||||
has_character_modifier = yearly_close_watch_modifier
|
||||
#Add any subsequent character modifiers above this line.
|
||||
}
|
||||
}
|
||||
|
||||
common_character_validity_trigger = {
|
||||
NOR = { #No prince-bishop can ever join
|
||||
government_has_flag = government_is_theocracy
|
||||
trigger_if = {
|
||||
limit = { exists = cp:councillor_court_chaplain }
|
||||
this = cp:councillor_court_chaplain
|
||||
}
|
||||
}
|
||||
OR = {
|
||||
$FACTION_TARGET$ = liege
|
||||
any_character_active_contract = {
|
||||
task_contract_target = $FACTION_TARGET$
|
||||
}
|
||||
}
|
||||
highest_held_title_tier > tier_barony
|
||||
|
||||
#Not blocked through events
|
||||
custom_description = {
|
||||
text = character_blocked_from_joining
|
||||
NOT = {
|
||||
has_character_flag = joining_faction_block
|
||||
}
|
||||
}
|
||||
|
||||
NOT = { has_relation_blood_brother = $FACTION_TARGET$ }
|
||||
}
|
||||
|
||||
common_can_character_join_trigger = {
|
||||
common_character_validity_trigger = {
|
||||
FACTION_TARGET = $FACTION_TARGET$
|
||||
}
|
||||
is_adult = yes
|
||||
NOT = { has_truce = $FACTION_TARGET$ }
|
||||
$FACTION_TARGET$ = {
|
||||
NOT = { has_strong_hook = root }
|
||||
NOT = { is_allied_to = root }
|
||||
}
|
||||
|
||||
OR = {
|
||||
is_ai = no
|
||||
NOR = {
|
||||
has_relation_lover = $FACTION_TARGET$
|
||||
has_relation_friend = $FACTION_TARGET$
|
||||
}
|
||||
}
|
||||
|
||||
$FACTION_TARGET$.highest_held_title_tier > tier_county
|
||||
|
||||
custom_description = {
|
||||
text = character_has_faction_disabling_modifier
|
||||
character_has_faction_disabling_modifier_trigger = yes
|
||||
}
|
||||
}
|
||||
|
||||
common_can_character_create_trigger = {
|
||||
NOT = { has_truce = $FACTION_TARGET$ }
|
||||
common_character_validity_trigger = {
|
||||
FACTION_TARGET = $FACTION_TARGET$
|
||||
}
|
||||
####
|
||||
# BLOCKERS
|
||||
####
|
||||
# General Faction immunity
|
||||
custom_description = {
|
||||
text = character_is_immune_to_factions
|
||||
subject = $FACTION_TARGET$
|
||||
NOT = { $FACTION_TARGET$ = { immune_to_factions_trigger = yes } }
|
||||
}
|
||||
}
|
||||
|
||||
base_faction_trigger = {
|
||||
NOT = { has_truce = scope:target }
|
||||
can_join_or_create_faction_against = {
|
||||
who = scope:target
|
||||
faction = $FACTION_TYPE$
|
||||
}
|
||||
scope:target = { NOT = { has_strong_hook = root } }
|
||||
trigger_if = {
|
||||
limit = {
|
||||
exists = scope:recipient
|
||||
}
|
||||
scope:recipient = {
|
||||
NOT = { is_at_war_with = scope:actor }
|
||||
NOT = { has_trait = incapable }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
############################
|
||||
# Popular Faction Triggers #
|
||||
############################
|
||||
|
||||
character_can_join_popular_faction_trigger = {
|
||||
OR = {
|
||||
NOT = { faith = $FACTION$.faction_target.faith }
|
||||
NOT = { culture = $FACTION$.faction_target.culture }
|
||||
}
|
||||
}
|
||||
|
||||
county_can_join_popular_faction_trigger = {
|
||||
OR = {
|
||||
NOT = { faith = $FACTION$.faction_target.faith }
|
||||
NOT = { culture = $FACTION$.faction_target.culture }
|
||||
}
|
||||
}
|
||||
|
||||
has_active_diarch_for_factions_trigger = {
|
||||
exists = $TARGET$.diarch
|
||||
NOT = { $TARGET$.faith = $TARGET$.diarch.faith }
|
||||
}
|
||||
|
||||
#factions with only landless adventurers cannot exist
|
||||
has_valid_faction_members_trigger = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
is_landless_adventurer = yes
|
||||
}
|
||||
scope:faction = {
|
||||
OR = {
|
||||
any_faction_member = {
|
||||
is_landless_adventurer = no
|
||||
is_forced_into_faction = no
|
||||
}
|
||||
any_faction_county_member = {
|
||||
count >= 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
336
common/scripted_triggers/00_family_triggers.txt
Normal file
336
common/scripted_triggers/00_family_triggers.txt
Normal file
|
|
@ -0,0 +1,336 @@
|
|||
|
||||
###TRIGGER LIST
|
||||
|
||||
# is_close_family_of_root_trigger
|
||||
# is_sibling_child_of_root_trigger
|
||||
# is_parent_sibling_of_root_trigger
|
||||
# is_cousin_of_root_trigger
|
||||
# is_sibling_in_law_of_root_trigger
|
||||
# is_mother_of_compare_character_trigger
|
||||
# is_father_of_compare_character_trigger
|
||||
# is_sibling_of_compare_character_trigger
|
||||
# is_child_of_compare_character_trigger
|
||||
# is_close_family_of_compare_character_trigger
|
||||
# is_allowed_to_legitimize_children_trigger
|
||||
|
||||
|
||||
is_close_family_of_root_trigger = {
|
||||
OR = {
|
||||
any_parent = { this = root }
|
||||
any_sibling = { this = root }
|
||||
any_child = { this = root }
|
||||
}
|
||||
}
|
||||
|
||||
is_close_family_or_spouse_of_root_trigger = {
|
||||
OR = {
|
||||
any_parent = { this = root }
|
||||
any_sibling = { this = root }
|
||||
any_child = { this = root }
|
||||
any_spouse = { this = root }
|
||||
}
|
||||
}
|
||||
|
||||
is_sibling_child_of_root_trigger = {
|
||||
any_parent = {
|
||||
even_if_dead = yes
|
||||
any_sibling = {
|
||||
this = root
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
is_parent_sibling_of_root_trigger = {
|
||||
any_sibling = {
|
||||
even_if_dead = yes
|
||||
any_child = {
|
||||
this = root
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
is_cousin_of_root_trigger = {
|
||||
any_parent = {
|
||||
even_if_dead = yes
|
||||
any_sibling = {
|
||||
even_if_dead = yes
|
||||
any_child = {
|
||||
this = root
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
is_sibling_in_law_of_root_trigger = {
|
||||
NOT = {
|
||||
any_sibling = {
|
||||
this = root
|
||||
}
|
||||
}
|
||||
any_spouse = {
|
||||
any_sibling = {
|
||||
this = root
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
is_cousin_in_law_of_root_trigger = {
|
||||
any_spouse = {
|
||||
is_cousin_of = root
|
||||
NOT = { this = root }
|
||||
}
|
||||
}
|
||||
|
||||
is_auntuncle_in_law_of_root_trigger = {
|
||||
any_spouse = {
|
||||
is_uncle_or_aunt_of = root
|
||||
NOT = { this = root }
|
||||
}
|
||||
}
|
||||
|
||||
is_grandmotherfather_in_law_of_root_trigger = {
|
||||
any_spouse = {
|
||||
is_grandparent_of = root
|
||||
NOT = { this = root }
|
||||
}
|
||||
}
|
||||
|
||||
is_great_grandmotherfather_in_law_of_root_trigger = {
|
||||
any_spouse = {
|
||||
is_great_grandparent_of = root
|
||||
NOT = { this = root }
|
||||
}
|
||||
}
|
||||
|
||||
is_granddaughterson_in_law_of_root_trigger = {
|
||||
any_spouse = {
|
||||
is_grandchild_of = root
|
||||
NOT = { this = root }
|
||||
}
|
||||
}
|
||||
|
||||
is_great_granddaughterson_in_law_of_root_trigger = {
|
||||
any_spouse = {
|
||||
is_great_grandchild_of = root
|
||||
NOT = { this = root }
|
||||
}
|
||||
}
|
||||
|
||||
is_nibling_in_law_of_root_trigger = {
|
||||
any_spouse = {
|
||||
is_nibling_of = root
|
||||
NOT = { this = root }
|
||||
}
|
||||
}
|
||||
|
||||
is_any_family_relation_or_spouse_of_root_trigger = {
|
||||
OR = {
|
||||
any_parent = { this = root }
|
||||
any_sibling = { this = root }
|
||||
any_child = { this = root }
|
||||
any_spouse = { this = root }
|
||||
any_parent = {
|
||||
even_if_dead = yes
|
||||
any_sibling = {
|
||||
this = root
|
||||
}
|
||||
}
|
||||
any_sibling = {
|
||||
even_if_dead = yes
|
||||
any_child = {
|
||||
this = root
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
NOT = {
|
||||
any_sibling = {
|
||||
this = root
|
||||
}
|
||||
}
|
||||
any_parent = {
|
||||
even_if_dead = yes
|
||||
any_child = {
|
||||
this = root
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
is_mother_of_compare_character_trigger = {
|
||||
this = scope:compare_character.mother
|
||||
}
|
||||
|
||||
is_father_of_compare_character_trigger = {
|
||||
this = scope:compare_character.father
|
||||
}
|
||||
|
||||
is_sibling_of_compare_character_trigger = {
|
||||
scope:compare_character = {
|
||||
any_sibling = {
|
||||
this = prev
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
is_child_of_compare_character_trigger = {
|
||||
scope:compare_character = {
|
||||
any_child = {
|
||||
this = prev
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
is_close_family_of_compare_character_trigger = {
|
||||
OR = {
|
||||
this = scope:compare_character.mother
|
||||
this = scope:compare_character.father
|
||||
any_sibling = {
|
||||
this = scope:compare_character
|
||||
}
|
||||
father = scope:compare_character
|
||||
mother = scope:compare_character
|
||||
}
|
||||
}
|
||||
|
||||
is_allowed_to_legitimize_children_trigger = {
|
||||
is_lowborn = no
|
||||
is_concubine = no
|
||||
is_ruler = yes
|
||||
custom_description = {
|
||||
text = faith_allows_legitimization_of_bastards
|
||||
faith = {
|
||||
has_doctrine_parameter = bastards_legitimize
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
###############################################
|
||||
# Triggers that take an argument and NOT root
|
||||
##############################################
|
||||
is_close_family_trigger = {
|
||||
OR = {
|
||||
any_parent = { this = $CHARACTER$ }
|
||||
any_sibling = { this = $CHARACTER$ }
|
||||
any_child = { this = $CHARACTER$ }
|
||||
}
|
||||
}
|
||||
|
||||
is_close_family_or_spouse_trigger = {
|
||||
OR = {
|
||||
any_parent = { this = $CHARACTER$ }
|
||||
any_sibling = { this = $CHARACTER$ }
|
||||
any_child = { this = $CHARACTER$ }
|
||||
any_spouse = { this = $CHARACTER$ }
|
||||
}
|
||||
}
|
||||
|
||||
is_any_family_relation_or_spouse_trigger = {
|
||||
save_temporary_scope_as = root_character
|
||||
OR = {
|
||||
any_parent = { this = $CHARACTER$ }
|
||||
any_sibling = { this = $CHARACTER$ }
|
||||
any_child = { this = $CHARACTER$ }
|
||||
any_spouse = { this = $CHARACTER$ }
|
||||
any_parent = {
|
||||
even_if_dead = yes
|
||||
any_sibling = {
|
||||
this = $CHARACTER$
|
||||
}
|
||||
}
|
||||
any_parent = {
|
||||
even_if_dead = yes
|
||||
any_sibling = {
|
||||
even_if_dead = yes
|
||||
any_child = {
|
||||
this = $CHARACTER$
|
||||
}
|
||||
}
|
||||
}
|
||||
any_sibling = {
|
||||
even_if_dead = yes
|
||||
any_child = {
|
||||
this = $CHARACTER$
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
NOT = {
|
||||
any_sibling = {
|
||||
this = $CHARACTER$
|
||||
}
|
||||
}
|
||||
any_parent = {
|
||||
even_if_dead = yes
|
||||
any_child = {
|
||||
this = $CHARACTER$
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#child/parent/sibling/nephew/grandchild/grandparent/uncle/aunt/niece/nephew is married to the other
|
||||
any_spouse = {
|
||||
OR = {
|
||||
is_close_family_of = $CHARACTER$
|
||||
is_nibling_of = $CHARACTER$
|
||||
is_uncle_or_aunt_of = $CHARACTER$
|
||||
}
|
||||
}
|
||||
$CHARACTER$ = {
|
||||
any_spouse = {
|
||||
OR = {
|
||||
is_close_family_of = scope:root_character
|
||||
is_nibling_of = scope:root_character
|
||||
is_uncle_or_aunt_of = scope:root_character
|
||||
}
|
||||
}
|
||||
}
|
||||
#child/parent/sibling is married to other's child/parent/sibling
|
||||
any_close_family_member = {
|
||||
OR = {
|
||||
is_parent_of = scope:root_character
|
||||
is_child_of = scope:root_character
|
||||
is_sibling_of = scope:root_character
|
||||
}
|
||||
any_spouse = {
|
||||
OR = {
|
||||
is_parent_of = $CHARACTER$
|
||||
is_child_of = $CHARACTER$
|
||||
is_sibling_of = $CHARACTER$
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
house_head_would_approve_legitimization_trigger = {
|
||||
$LEGITIMIZER$ = {
|
||||
save_temporary_scope_as = the_legitimizer
|
||||
}
|
||||
$BASTARD$ = {
|
||||
save_temporary_scope_as = the_bastard
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
exists = scope:legitimizer.house
|
||||
}
|
||||
scope:legitimizer.house.house_head = {
|
||||
save_temporary_scope_as = the_house_head
|
||||
}
|
||||
|
||||
house_head_legitimize_approval_rating > 0
|
||||
}
|
||||
}
|
||||
|
||||
is_allowed_to_legitimize_child_trigger = {
|
||||
is_allowed_to_legitimize_children_trigger = yes
|
||||
OR = {
|
||||
this = house.house_head
|
||||
house_head_would_approve_legitimization_trigger = {
|
||||
LEGITIMIZER = $LEGITIMIZER$
|
||||
BASTARD = $BASTARD$
|
||||
}
|
||||
}
|
||||
}
|
||||
66
common/scripted_triggers/00_feast_activity_triggers.txt
Normal file
66
common/scripted_triggers/00_feast_activity_triggers.txt
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
|
||||
###TRIGGER LIST
|
||||
|
||||
# has_strong_religious_conviction_trigger
|
||||
|
||||
#Check whether any special conditions are true.
|
||||
#Make sure conditions for new special Main Events are added to this!
|
||||
has_special_main_event_potential = {
|
||||
scope:activity = {
|
||||
has_variable = potential_friend
|
||||
}
|
||||
}
|
||||
|
||||
is_murder_feast = {
|
||||
scope:activity = {
|
||||
has_activity_option = {
|
||||
category = special_type
|
||||
option = feast_type_murder
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
feast_default_participant_including_player_trigger = {
|
||||
is_ai = yes
|
||||
NOT = { this = root }
|
||||
is_alive = yes
|
||||
is_imprisoned = no
|
||||
}
|
||||
|
||||
feast_default_participant_trigger = {
|
||||
is_ai = yes
|
||||
NOT = { this = root }
|
||||
is_alive = yes
|
||||
is_imprisoned = no
|
||||
}
|
||||
|
||||
feast_default_adult_participant_trigger = {
|
||||
is_ai = yes
|
||||
NOT = { this = root }
|
||||
is_adult = yes
|
||||
is_alive = yes
|
||||
is_imprisoned = no
|
||||
}
|
||||
|
||||
has_hosted_feast_opinion_targeting_character = {
|
||||
OR = {
|
||||
has_opinion_modifier = {
|
||||
modifier = feast_hosted_successful_feast
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = feast_hosted_successful_feast_with_music
|
||||
target = $CHARACTER$
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
use_goblet_in_tavern_trigger = {
|
||||
OR = {
|
||||
location.culture ?= { has_graphical_india_culture_group_trigger = yes }
|
||||
location.culture ?= { has_graphical_mena_culture_group_trigger = yes }
|
||||
location.culture ?= { has_building_gfx = iranian_building_gfx }
|
||||
location.culture ?= { has_graphical_african_culture_group_trigger = yes }
|
||||
location.culture ?= { has_graphical_steppe_culture_group_trigger = yes }
|
||||
}
|
||||
}
|
||||
56
common/scripted_triggers/00_food_scripted_triggers.txt
Normal file
56
common/scripted_triggers/00_food_scripted_triggers.txt
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
|
||||
# James _insisted_ I make this file. So here we are.
|
||||
|
||||
##################################################
|
||||
# VEGETABLE TRIGGERS
|
||||
|
||||
province_has_vegetable_carrot_trigger = {
|
||||
OR = {
|
||||
geographical_region = world_india
|
||||
geographical_region = world_middle_east
|
||||
geographical_region = world_europe
|
||||
geographical_region = world_steppe_west
|
||||
geographical_region = world_asia_minor
|
||||
}
|
||||
}
|
||||
|
||||
province_has_vegetable_parsnip_trigger = {
|
||||
NOT = { geographical_region = world_africa }
|
||||
}
|
||||
|
||||
province_has_vegetable_turnip_trigger = {
|
||||
NOT = { geographical_region = world_africa }
|
||||
}
|
||||
|
||||
province_has_vegetable_yams_trigger = {
|
||||
OR = {
|
||||
# African yams
|
||||
geographical_region = world_africa
|
||||
# Chinese yams
|
||||
geographical_region = world_tibet
|
||||
geographical_region = world_burma
|
||||
geographical_region = world_steppe_east
|
||||
geographical_region = world_steppe_tarim
|
||||
}
|
||||
}
|
||||
|
||||
province_has_vegetable_kokoro_trigger = {
|
||||
geographical_region = world_africa
|
||||
}
|
||||
|
||||
province_has_vegetable_ginger_trigger = {
|
||||
OR = {
|
||||
geographical_region = world_india
|
||||
geographical_region = world_burma
|
||||
}
|
||||
}
|
||||
|
||||
province_has_vegetable_taro_trigger = {
|
||||
OR = {
|
||||
geographical_region = world_india
|
||||
geographical_region = world_burma
|
||||
geographical_region = world_tibet
|
||||
geographical_region = world_steppe_east
|
||||
geographical_region = world_steppe_tarim
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
|
||||
################################################################
|
||||
### Triggers related to funerals and general body-related things
|
||||
|
||||
body_is_available = {
|
||||
is_alive = no
|
||||
time_since_death = {
|
||||
years <= 5 # Usually it takes a body less time than this to decompose, but we can plausibly say the body is being preserved in some way
|
||||
}
|
||||
NOT = { has_dead_character_variable = body_has_been_disposed }
|
||||
}
|
||||
|
||||
# NOTE: Keep this trigger in sync with `funeral_add_funeral_targets_to_list` effect
|
||||
has_available_funeral_target = {
|
||||
OR = {
|
||||
primary_title ?= { # Previous holders of your primary title
|
||||
any_past_holder = {
|
||||
body_is_available = yes
|
||||
}
|
||||
}
|
||||
any_close_or_extended_family_member = {
|
||||
even_if_dead = yes
|
||||
body_is_available = yes
|
||||
}
|
||||
any_spouse = {
|
||||
even_if_dead = yes
|
||||
body_is_available = yes
|
||||
}
|
||||
any_memory = {
|
||||
OR = {
|
||||
has_memory_type = friend_died
|
||||
has_memory_type = lover_died
|
||||
has_memory_type = soulmate_died
|
||||
}
|
||||
trigger_if = {
|
||||
limit = { exists = memory_participant:dead_relation }
|
||||
memory_participant:dead_relation = { body_is_available = yes }
|
||||
}
|
||||
trigger_else = { always = no }
|
||||
}
|
||||
}
|
||||
}
|
||||
281
common/scripted_triggers/00_game_rule_triggers.txt
Normal file
281
common/scripted_triggers/00_game_rule_triggers.txt
Normal file
|
|
@ -0,0 +1,281 @@
|
|||
hungarian_migration_valid_ai_mogyer_ruler_trigger = {
|
||||
culture = culture:mogyer
|
||||
is_ai = yes
|
||||
government_has_flag = government_is_tribal
|
||||
is_at_war = no
|
||||
highest_held_title_tier <= tier_kingdom
|
||||
OR = {
|
||||
is_independent_ruler = yes
|
||||
NOT = {
|
||||
liege = { culture = culture:mogyer }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
hungarian_migration_valid_pannonian_target_trigger = {
|
||||
NOR = {
|
||||
culture = culture:mogyer
|
||||
any_liege_or_above = { culture = culture:mogyer }
|
||||
}
|
||||
is_ai = yes
|
||||
any_realm_county = {
|
||||
count >= $COUNT$
|
||||
title_province = { geographical_region = custom_hungary }
|
||||
}
|
||||
}
|
||||
|
||||
exclave_independence_trigger = {
|
||||
is_independent_ruler = yes
|
||||
NOT = { has_title = title:k_papal_state }
|
||||
exists = root.capital_province
|
||||
any_sub_realm_title = {
|
||||
tier = tier_county
|
||||
NOT = {
|
||||
is_connected_to = {
|
||||
target = root.capital_province.county
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
exists = primary_heir
|
||||
}
|
||||
primary_heir = {
|
||||
NOR = {
|
||||
is_independent_ruler = yes # Disallow this when the heir is independent, lest we risk breaking up realms that should be connected
|
||||
is_ai = no # Players always inherit everything
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Sometimes we disable these events for specific characters.
|
||||
harm_game_rule_enablement_trigger = {
|
||||
# Disable entirely if harm_safe.
|
||||
trigger_if = {
|
||||
limit = { has_game_rule = harm_safe }
|
||||
always = no
|
||||
}
|
||||
# harm_target_player_only
|
||||
trigger_else_if = {
|
||||
limit = { has_game_rule = harm_target_player_only }
|
||||
is_ai = no
|
||||
}
|
||||
# harm_target_ai_only
|
||||
trigger_else_if = {
|
||||
limit = { has_game_rule = harm_target_ai_only }
|
||||
is_ai = yes
|
||||
}
|
||||
# harm_target_all
|
||||
trigger_else = { always = yes }
|
||||
# Never just kill the player if it'd utterly game-over them.
|
||||
trigger_if = {
|
||||
limit = { is_ai = no }
|
||||
# Either because they have no heir.
|
||||
exists = player_heir
|
||||
# Or because they have an heir they can't survive with.
|
||||
player_heir.dynasty ?= dynasty
|
||||
}
|
||||
# Immortals do not receive harm events, as they would be inevitably killed by them over a long enough period of time.
|
||||
NOT = { has_trait = immortal }
|
||||
}
|
||||
|
||||
# Who do we care about when recording variable logs for harm events?
|
||||
harm_game_rule_valid_for_logging_trigger = {
|
||||
OR = {
|
||||
AND = {
|
||||
highest_held_title_tier >= tier_duchy
|
||||
OR = {
|
||||
government_has_flag = government_is_feudal
|
||||
government_has_flag = government_is_clan
|
||||
government_has_flag = government_is_theocracy
|
||||
}
|
||||
}
|
||||
any_close_family_member = {
|
||||
highest_held_title_tier >= tier_duchy
|
||||
OR = {
|
||||
government_has_flag = government_is_feudal
|
||||
government_has_flag = government_is_clan
|
||||
government_has_flag = government_is_theocracy
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rule_title_creation_imperial_power_projection_title_creation_targeting_trigger = {
|
||||
trigger_if = {
|
||||
limit = { has_game_rule = title_creation_imperial_power_projection_targeting_ai_only }
|
||||
is_ai = yes
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = { has_game_rule = title_creation_imperial_power_projection_targeting_player_only }
|
||||
is_ai = no
|
||||
}
|
||||
trigger_else = { always = yes }
|
||||
}
|
||||
|
||||
rule_title_creation_imperial_power_projection_title_creation_trigger = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
has_game_rule = title_creation_imperial_power_projection_any_power_advantage
|
||||
rule_title_creation_imperial_power_projection_title_creation_targeting_trigger = yes
|
||||
highest_held_title_tier <= tier_kingdom
|
||||
}
|
||||
custom_tooltip = {
|
||||
text = rule_title_creation_imperial_power_projection_title_creation_trigger.tt.any_power_advantage
|
||||
any_neighboring_top_liege_realm_owner = {
|
||||
count = all
|
||||
trigger_if = {
|
||||
limit = { highest_held_title_tier >= tier_empire }
|
||||
save_temporary_scope_as = char_temp
|
||||
OR = {
|
||||
any_close_family_member = { is_spouse_of = root }
|
||||
root = { has_strong_hook = scope:char_temp }
|
||||
root.current_military_strength >= scope:char_temp.fifty_percent_more_of_current_military_strength
|
||||
}
|
||||
}
|
||||
trigger_else = { always = yes }
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
has_game_rule = title_creation_imperial_power_projection_hard_power_only
|
||||
rule_title_creation_imperial_power_projection_title_creation_targeting_trigger = yes
|
||||
highest_held_title_tier <= tier_kingdom
|
||||
}
|
||||
custom_tooltip = {
|
||||
text = rule_title_creation_imperial_power_projection_title_creation_trigger.tt.hard_power_only
|
||||
any_neighboring_top_liege_realm_owner = {
|
||||
count = all
|
||||
trigger_if = {
|
||||
limit = { highest_held_title_tier >= tier_empire }
|
||||
save_temporary_scope_as = char_temp
|
||||
root.current_military_strength >= scope:char_temp.fifty_percent_more_of_current_military_strength
|
||||
}
|
||||
trigger_else = { always = yes }
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
has_game_rule = title_creation_imperial_power_projection_soft_power_only
|
||||
rule_title_creation_imperial_power_projection_title_creation_targeting_trigger = yes
|
||||
highest_held_title_tier <= tier_kingdom
|
||||
}
|
||||
custom_tooltip = {
|
||||
text = rule_title_creation_imperial_power_projection_title_creation_trigger.tt.soft_power_only
|
||||
any_neighboring_top_liege_realm_owner = {
|
||||
count = all
|
||||
trigger_if = {
|
||||
limit = { highest_held_title_tier >= tier_empire }
|
||||
save_temporary_scope_as = char_temp
|
||||
OR = {
|
||||
any_close_family_member = { is_spouse_of = root }
|
||||
root = { has_strong_hook = scope:char_temp }
|
||||
}
|
||||
}
|
||||
trigger_else = { always = yes }
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
has_game_rule = title_creation_imperial_power_projection_hard_power_only_strict
|
||||
rule_title_creation_imperial_power_projection_title_creation_targeting_trigger = yes
|
||||
highest_held_title_tier <= tier_kingdom
|
||||
}
|
||||
custom_tooltip = {
|
||||
text = rule_title_creation_imperial_power_projection_title_creation_trigger.tt.hard_power_only_strict.neighbours
|
||||
any_neighboring_top_liege_realm_owner = {
|
||||
count = all
|
||||
trigger_if = {
|
||||
limit = { highest_held_title_tier >= tier_empire }
|
||||
save_temporary_scope_as = char_temp
|
||||
root.current_military_strength >= scope:char_temp.fifty_percent_more_of_current_military_strength
|
||||
}
|
||||
trigger_else = { always = yes }
|
||||
}
|
||||
}
|
||||
custom_tooltip = {
|
||||
text = rule_title_creation_imperial_power_projection_title_creation_trigger.tt.hard_power_only_strict.de_jure_sharers
|
||||
any_sub_realm_county = {
|
||||
count = all
|
||||
empire = {
|
||||
OR = {
|
||||
is_title_created = no
|
||||
holder = {
|
||||
save_temporary_scope_as = char_temp
|
||||
root.current_military_strength >= scope:char_temp.fifty_percent_more_of_current_military_strength
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
has_game_rule = title_creation_imperial_power_projection_any_power_strict
|
||||
rule_title_creation_imperial_power_projection_title_creation_targeting_trigger = yes
|
||||
highest_held_title_tier <= tier_kingdom
|
||||
}
|
||||
custom_tooltip = {
|
||||
text = rule_title_creation_imperial_power_projection_title_creation_trigger.tt.any_power_strict.neighbours
|
||||
any_neighboring_top_liege_realm_owner = {
|
||||
count = all
|
||||
trigger_if = {
|
||||
limit = { highest_held_title_tier >= tier_empire }
|
||||
save_temporary_scope_as = char_temp
|
||||
OR = {
|
||||
any_close_family_member = { is_spouse_of = root }
|
||||
root = { has_strong_hook = scope:char_temp }
|
||||
root.current_military_strength >= scope:char_temp.fifty_percent_more_of_current_military_strength
|
||||
}
|
||||
}
|
||||
trigger_else = { always = yes }
|
||||
}
|
||||
}
|
||||
custom_tooltip = {
|
||||
text = rule_title_creation_imperial_power_projection_title_creation_trigger.tt.any_power_strict.de_jure_sharers
|
||||
any_sub_realm_county = {
|
||||
count = all
|
||||
empire = {
|
||||
OR = {
|
||||
is_title_created = no
|
||||
holder = {
|
||||
save_temporary_scope_as = char_temp
|
||||
OR = {
|
||||
any_close_family_member = { is_spouse_of = root }
|
||||
root = { has_strong_hook = scope:char_temp }
|
||||
root.current_military_strength >= scope:char_temp.fifty_percent_more_of_current_military_strength
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_else = { always = yes }
|
||||
}
|
||||
|
||||
game_rule_rig_norman_conquest_for_hereward_trigger = {
|
||||
OR = {
|
||||
has_game_rule = historicity_norman_conquest_determined_william
|
||||
# We also rig it for William if we have a player Hereward and no other input.
|
||||
AND = {
|
||||
has_game_rule = historicity_norman_conquest_default_random
|
||||
character:90028 ?= { is_ai = no }
|
||||
NOT = {
|
||||
any_player = {
|
||||
NOT = { this = character:90028 }
|
||||
any_character_war = {
|
||||
OR = {
|
||||
using_cb = norman_conquest_cb
|
||||
using_cb = norwegian_invasion_cb
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
1236
common/scripted_triggers/00_general_trait_triggers.txt
Normal file
1236
common/scripted_triggers/00_general_trait_triggers.txt
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,259 @@
|
|||
###########################
|
||||
# These triggers are designed for use in generic event content:
|
||||
# They are very restrictive, and designed to, as much as possible, not break immersion.
|
||||
# Use them where you can, but be aware that they will make event triggers very strict
|
||||
###########################
|
||||
|
||||
###### LOVER TRIGGERS #####
|
||||
|
||||
######
|
||||
# are_characters_sensible_and_appropriate_open_lovers_trigger = { INSTIGATING_LOVER = scope:something TARGET_OF_LOVE = scope:something_else }
|
||||
# This is the most restrictive form of lover trigger,
|
||||
# use it when you need a couple of innocent lovers
|
||||
|
||||
######
|
||||
# are_characters_sensible_and_appropriate_lovers_trigger = { INSTIGATING_LOVER = scope:something TARGET_OF_LOVE = scope:something_else }
|
||||
# Is the pairing both sensible from an attraction standpoint,
|
||||
# and appropriate from a social standpoint?
|
||||
|
||||
######
|
||||
# are_characters_sensible_lovers_trigger = { INSTIGATING_LOVER = scope:something TARGET_OF_LOVE = scope:something_else }
|
||||
# Is the pairing sensible from an attraction standpoint?
|
||||
# Does not restrict based on genetic bad looks,
|
||||
# this is about the _lover_ status, not attraction-based sex
|
||||
|
||||
|
||||
# Would two characters fancy each other somewhat?
|
||||
are_characters_sensible_lovers_trigger = {
|
||||
$INSTIGATING_LOVER$ = { save_temporary_scope_as = instigating_character }
|
||||
$TARGET_OF_LOVE$ = { save_temporary_scope_as = target_of_love }
|
||||
|
||||
scope:instigating_character = {
|
||||
NOT = { this = scope:target_of_love }
|
||||
is_physically_able_adult = yes
|
||||
might_cheat_on_every_partner_trigger = yes
|
||||
can_set_relation_lover_trigger = { CHARACTER = scope:target_of_love }
|
||||
is_attracted_to_gender_of = scope:target_of_love
|
||||
NOR = {
|
||||
has_trait = chaste
|
||||
has_trait = celibate
|
||||
has_sexuality = asexual
|
||||
has_trait = beardless_eunuch
|
||||
has_trait = leper
|
||||
has_trait = great_pox
|
||||
has_trait = bubonic_plague
|
||||
has_trait = smallpox
|
||||
has_trait = measles
|
||||
has_trait = ergotism
|
||||
has_trait = dysentery
|
||||
has_trait = consumption
|
||||
has_trait = typhus
|
||||
has_trait = pneumonic
|
||||
}
|
||||
# These three only need to be checked on one char
|
||||
age <= scope:target_of_love.age_plus_10
|
||||
age >= scope:target_of_love.age_minus_10
|
||||
trait_compatibility = {
|
||||
target = scope:target_of_love
|
||||
value >= low_positive_trait_compatibility
|
||||
}
|
||||
}
|
||||
|
||||
scope:target_of_love = {
|
||||
NOT = { this = scope:instigating_character }
|
||||
might_cheat_on_every_partner_trigger = yes
|
||||
can_set_relation_lover_trigger = { CHARACTER = scope:instigating_character }
|
||||
is_attracted_to_gender_of = scope:instigating_character
|
||||
NOR = {
|
||||
has_trait = chaste
|
||||
has_trait = celibate
|
||||
has_sexuality = asexual
|
||||
has_trait = beardless_eunuch
|
||||
has_trait = leper
|
||||
has_trait = great_pox
|
||||
has_trait = bubonic_plague
|
||||
has_trait = smallpox
|
||||
has_trait = measles
|
||||
has_trait = ergotism
|
||||
has_trait = dysentery
|
||||
has_trait = consumption
|
||||
has_trait = typhus
|
||||
has_trait = pneumonic
|
||||
}
|
||||
}
|
||||
|
||||
accepts_incest_with_each_other_trigger = {
|
||||
CHARACTER_1 = scope:instigating_character
|
||||
CHARACTER_2 = scope:target_of_love
|
||||
}
|
||||
}
|
||||
|
||||
# Various social blockers - what would you, interpreting society, think of having a lover
|
||||
are_characters_sensible_and_appropriate_lovers_trigger = {
|
||||
$INSTIGATING_LOVER$ = { save_temporary_scope_as = instigating_character }
|
||||
$TARGET_OF_LOVE$ = { save_temporary_scope_as = target_of_love }
|
||||
|
||||
are_characters_sensible_lovers_trigger = {
|
||||
INSTIGATING_LOVER = scope:instigating_character
|
||||
TARGET_OF_LOVE = scope:target_of_love
|
||||
}
|
||||
|
||||
scope:instigating_character = {
|
||||
OR = {
|
||||
has_trait = lustful
|
||||
any_relation = {
|
||||
type = lover
|
||||
count < 1
|
||||
}
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
is_clergy = yes
|
||||
}
|
||||
faith = {
|
||||
has_doctrine_parameter = clergy_can_marry
|
||||
}
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
is_courtier = yes
|
||||
is_close_or_extended_family_of = liege
|
||||
has_no_particular_noble_roots_trigger = no
|
||||
}
|
||||
OR = {
|
||||
scope:target_of_love = { has_no_particular_noble_roots_trigger = no }
|
||||
is_deviant_trigger = yes
|
||||
has_trait = lustful
|
||||
trait_compatibility = {
|
||||
target = scope:target_of_love
|
||||
value >= high_positive_trait_compatibility
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
OR = {
|
||||
faith = {
|
||||
has_doctrine_parameter = homosexuality_shunned
|
||||
}
|
||||
liege.faith ?= {
|
||||
has_doctrine_parameter = homosexuality_shunned
|
||||
}
|
||||
faith = {
|
||||
has_doctrine_parameter = homosexuality_illegal
|
||||
}
|
||||
liege.faith ?= {
|
||||
has_doctrine_parameter = homosexuality_illegal
|
||||
}
|
||||
}
|
||||
}
|
||||
NOR = {
|
||||
AND = {
|
||||
is_female = yes
|
||||
scope:target_of_love = { is_female = yes }
|
||||
}
|
||||
AND = {
|
||||
is_male = yes
|
||||
scope:target_of_love = { is_male = yes }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
scope:target_of_love = {
|
||||
OR = {
|
||||
has_trait = lustful
|
||||
any_relation = {
|
||||
type = lover
|
||||
count < 1
|
||||
}
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
is_clergy = yes
|
||||
}
|
||||
faith = {
|
||||
has_doctrine_parameter = clergy_can_marry
|
||||
}
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
is_courtier = yes
|
||||
is_close_or_extended_family_of = liege
|
||||
has_no_particular_noble_roots_trigger = no
|
||||
}
|
||||
OR = {
|
||||
scope:instigating_character = { has_no_particular_noble_roots_trigger = no }
|
||||
is_deviant_trigger = yes
|
||||
has_trait = lustful
|
||||
trait_compatibility = {
|
||||
target = scope:instigating_character
|
||||
value >= high_positive_trait_compatibility
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
OR = {
|
||||
faith = {
|
||||
has_doctrine_parameter = homosexuality_shunned
|
||||
}
|
||||
liege.faith ?= {
|
||||
has_doctrine_parameter = homosexuality_shunned
|
||||
}
|
||||
faith = {
|
||||
has_doctrine_parameter = homosexuality_illegal
|
||||
}
|
||||
liege.faith ?= {
|
||||
has_doctrine_parameter = homosexuality_illegal
|
||||
}
|
||||
}
|
||||
}
|
||||
NOR = {
|
||||
AND = {
|
||||
is_female = yes
|
||||
scope:target_of_love = { is_female = yes }
|
||||
}
|
||||
AND = {
|
||||
is_male = yes
|
||||
scope:target_of_love = { is_male = yes }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Would the characters make sense as lovers within the context of their social situation
|
||||
are_characters_sensible_and_appropriate_open_lovers_trigger = {
|
||||
$INSTIGATING_LOVER$ = { save_temporary_scope_as = instigating_character }
|
||||
$TARGET_OF_LOVE$ = { save_temporary_scope_as = target_of_love }
|
||||
|
||||
scope:instigating_character = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
NOT = {
|
||||
is_consort_of = scope:target_of_love
|
||||
}
|
||||
}
|
||||
is_married = no
|
||||
is_concubine = no
|
||||
}
|
||||
}
|
||||
|
||||
scope:target_of_love = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
NOT = {
|
||||
is_consort_of = scope:instigating_character
|
||||
}
|
||||
}
|
||||
is_married = no
|
||||
is_concubine = no
|
||||
}
|
||||
}
|
||||
|
||||
are_characters_sensible_and_appropriate_lovers_trigger = {
|
||||
INSTIGATING_LOVER = scope:instigating_character
|
||||
TARGET_OF_LOVE = scope:target_of_love
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,508 @@
|
|||
|
||||
##################################################
|
||||
# Debug Triggers
|
||||
|
||||
# Do we want to gather global variable tallies for the Persian struggle?
|
||||
## Toggled off for release, toggle back on to check how often we change phases & which catalysts are firing.
|
||||
gather_debug_variables_for_persian_struggle_trigger = { always = no }
|
||||
|
||||
##################################################
|
||||
# General Triggers
|
||||
## Miscellaneous assorted triggers related to bits of neutral struggle content.
|
||||
|
||||
# Characters of some note within the struggle.
|
||||
is_important_struggle_character = {
|
||||
highest_held_title_tier = tier_duchy
|
||||
}
|
||||
|
||||
# Characters who are very important within the struggle (generally enough that they matter for catalysts).
|
||||
is_vip_struggle_character = {
|
||||
OR = {
|
||||
highest_held_title_tier >= tier_kingdom
|
||||
AND = {
|
||||
exists = faith.religious_head
|
||||
this = faith.religious_head
|
||||
}
|
||||
this = culture.culture_head
|
||||
}
|
||||
}
|
||||
|
||||
is_important_or_vip_struggle_character = {
|
||||
OR = {
|
||||
is_important_struggle_character = yes
|
||||
is_vip_struggle_character = yes
|
||||
}
|
||||
}
|
||||
|
||||
is_semi_important_ruler_struggle_character = {
|
||||
OR = {
|
||||
highest_held_title_tier >= tier_county
|
||||
is_important_or_vip_struggle_character = yes
|
||||
}
|
||||
}
|
||||
|
||||
is_secondary_character_involvement_involved_trigger = {
|
||||
save_temporary_scope_as = struggle_temp
|
||||
$CHAR$ = {
|
||||
any_character_struggle = {
|
||||
involvement = involved
|
||||
this = scope:struggle_temp
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
is_secondary_character_involvement_interloper_trigger = {
|
||||
save_temporary_scope_as = struggle_temp
|
||||
$CHAR$ = {
|
||||
any_character_struggle = {
|
||||
involvement = interloper
|
||||
this = scope:struggle_temp
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
is_secondary_character_involvement_either_trigger = {
|
||||
save_temporary_scope_as = struggle_temp
|
||||
$CHAR$ = {
|
||||
any_character_struggle = { this = scope:struggle_temp }
|
||||
}
|
||||
}
|
||||
|
||||
is_secondary_character_involvement_neither_trigger = {
|
||||
save_temporary_scope_as = struggle_temp
|
||||
$CHAR$ = {
|
||||
NOT = {
|
||||
any_character_struggle = { this = scope:struggle_temp }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
is_diff_faith_or_culture_trigger = {
|
||||
NAND = {
|
||||
culture = $CHAR$.culture
|
||||
faith = $CHAR$.faith
|
||||
}
|
||||
$CHAR$ = { any_character_struggle = { involvement = $STATUS$ } }
|
||||
# Removed the check for what struggle it is
|
||||
}
|
||||
|
||||
is_same_faith_or_culture_trigger = {
|
||||
OR = {
|
||||
culture = $CHAR$.culture
|
||||
faith = $CHAR$.faith
|
||||
}
|
||||
$CHAR$ = { any_character_struggle = { involvement = $STATUS$ } }
|
||||
# Removed the check for what struggle it is
|
||||
}
|
||||
|
||||
is_same_culture_trigger = {
|
||||
culture = $CHAR$.culture
|
||||
$CHAR$ = { any_character_struggle = { involvement = $STATUS$ } }
|
||||
# Removed the check for what struggle it is
|
||||
}
|
||||
|
||||
is_same_faith_trigger = {
|
||||
culture = $CHAR$.culture
|
||||
$CHAR$ = { any_character_struggle = { involvement = $STATUS$ } }
|
||||
# Removed the check for what struggle it is
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Catalyst Phase Triggers
|
||||
## Should a catalyst be activating in this phase?
|
||||
### Remember, that means it should activate in the phase _before_ the one that has it as a valid transitionary catalyst.
|
||||
|
||||
|
||||
##################################################
|
||||
# Catalyst Triggers
|
||||
## Some common rump triggers used in catalysts activation, plus preliminaries for catalysts triggered in multiple locations.
|
||||
|
||||
catalyst_gave_independence_to_powerful_diff_faith_culture_vassal_preliminary_trigger = {
|
||||
$CHAR1$ = {
|
||||
NAND = {
|
||||
culture = $CHAR2$.culture
|
||||
faith = $CHAR2$.faith
|
||||
}
|
||||
}
|
||||
$CHAR2$ = { is_powerful_vassal_of = $CHAR1$ }
|
||||
}
|
||||
|
||||
catalyst_granted_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = {
|
||||
$CHAR$ = {
|
||||
any_in_list = {
|
||||
list = changed_obligations
|
||||
vassal_contract_type = {
|
||||
OR = {
|
||||
this = vassal_contract:religious_rights
|
||||
this = vassal_contract:jizya_special_rights
|
||||
}
|
||||
}
|
||||
obligation_level_score >= 1
|
||||
}
|
||||
is_powerful_vassal = yes
|
||||
}
|
||||
}
|
||||
|
||||
catalyst_revoked_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = {
|
||||
$CHAR$ = {
|
||||
any_in_list = {
|
||||
list = changed_obligations
|
||||
vassal_contract_type = {
|
||||
OR = {
|
||||
this = vassal_contract:religious_rights
|
||||
this = vassal_contract:jizya_special_rights
|
||||
}
|
||||
}
|
||||
obligation_level_score >= 1
|
||||
}
|
||||
is_powerful_vassal = yes
|
||||
}
|
||||
}
|
||||
|
||||
catalyst_hybridise_or_diverge_regional_cultures_preliminary_trigger = {
|
||||
phase_has_catalyst = catalyst_hybridise_or_diverge_regional_cultures
|
||||
save_temporary_scope_as = struggle_temp
|
||||
OR = {
|
||||
AND = {
|
||||
exists = scope:parent_culture_2
|
||||
scope:struggle_temp = {
|
||||
is_culture_involved_in_struggle = scope:parent_culture_1
|
||||
is_culture_involved_in_struggle = scope:parent_culture_2
|
||||
}
|
||||
}
|
||||
is_culture_involved_in_struggle = scope:parent_culture_1
|
||||
}
|
||||
}
|
||||
|
||||
catalyst_very_important_child_change_culture_or_faith_preliminary_trigger = {
|
||||
any_character_struggle = {
|
||||
phase_has_catalyst = catalyst_very_important_child_change_culture_or_faith
|
||||
}
|
||||
is_adult = no
|
||||
any_parent = {
|
||||
any_character_struggle ={
|
||||
involvement = involved
|
||||
}
|
||||
is_vip_struggle_character = yes
|
||||
}
|
||||
}
|
||||
|
||||
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
|
||||
phase_has_catalyst = $CATALYST$
|
||||
save_temporary_scope_as = struggle_temp
|
||||
$CHAR$ = {
|
||||
any_character_struggle = {
|
||||
involvement = involved
|
||||
this = scope:struggle_temp
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
activate_struggle_catalyst_secondary_character_involvement_interloper_trigger = {
|
||||
phase_has_catalyst = $CATALYST$
|
||||
save_temporary_scope_as = struggle_temp
|
||||
$CHAR$ = {
|
||||
any_character_struggle = {
|
||||
involvement = interloper
|
||||
this = scope:struggle_temp
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
activate_struggle_catalyst_secondary_character_involvement_either_trigger = {
|
||||
phase_has_catalyst = $CATALYST$
|
||||
save_temporary_scope_as = struggle_temp
|
||||
$CHAR$ = {
|
||||
any_character_struggle = { this = scope:struggle_temp }
|
||||
}
|
||||
}
|
||||
|
||||
activate_struggle_catalyst_secondary_character_involvement_neither_trigger = {
|
||||
phase_has_catalyst = $CATALYST$
|
||||
save_temporary_scope_as = struggle_temp
|
||||
$CHAR$ = {
|
||||
NOT = {
|
||||
any_character_struggle = { this = scope:struggle_temp }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
activate_struggle_catalyst_secondary_character_involvement_interloper_or_uninvolved_trigger = {
|
||||
phase_has_catalyst = $CATALYST$
|
||||
save_temporary_scope_as = struggle_temp
|
||||
$CHAR$ = {
|
||||
OR = {
|
||||
any_character_struggle = {
|
||||
involvement = interloper
|
||||
this = scope:struggle_temp
|
||||
}
|
||||
NOT = {
|
||||
any_character_struggle = { this = scope:struggle_temp }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
activate_struggle_catalyst_warfare_check_attacker_involvement_trigger = {
|
||||
phase_has_catalyst = $CATALYST$
|
||||
save_temporary_scope_as = struggle_temp
|
||||
$VAR_SCOPE$ = {
|
||||
trigger_if = {
|
||||
limit = { scope:attacker = scope:loser }
|
||||
has_variable = struggle_involvement_attacker
|
||||
has_variable = struggle_scope_attacker
|
||||
var:struggle_involvement_attacker = flag:$INVOLVEMENT$
|
||||
var:struggle_scope_attacker = scope:struggle_temp
|
||||
}
|
||||
trigger_else = {
|
||||
has_variable = struggle_involvement_defender
|
||||
has_variable = struggle_scope_defender
|
||||
var:struggle_involvement_defender = flag:$INVOLVEMENT$
|
||||
var:struggle_scope_defender = scope:struggle_temp
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Parameter Triggers
|
||||
## If a parameter is triggered in multiple places, we use a scripted trigger to keep things unified.
|
||||
|
||||
is_struggle_parameter_active_interfaith_marriages_available_between_involved_characters_trigger = {
|
||||
scope:actor = {
|
||||
any_character_struggle = {
|
||||
involvement = involved
|
||||
has_struggle_phase_parameter = interfaith_marriages_available_between_involved_characters
|
||||
save_temporary_scope_as = struggle_temp
|
||||
scope:recipient = {
|
||||
any_character_struggle = {
|
||||
involvement = involved
|
||||
this = scope:struggle_temp
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
is_struggle_parameter_active_cheaper_to_convert_to_struggle_culture_trigger = {
|
||||
capital_county = {
|
||||
any_county_struggle = { has_struggle_phase_parameter = cheaper_to_convert_to_struggle_culture }
|
||||
}
|
||||
}
|
||||
|
||||
is_struggle_parameter_active_secondary_character_involvement_involved_trigger = {
|
||||
has_struggle_phase_parameter = $PARAMETER$
|
||||
save_temporary_scope_as = struggle_temp
|
||||
$CHAR$ = {
|
||||
any_character_struggle = {
|
||||
involvement = involved
|
||||
this = scope:struggle_temp
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
is_struggle_parameter_active_secondary_character_involvement_interloper_trigger = {
|
||||
has_struggle_phase_parameter = $PARAMETER$
|
||||
save_temporary_scope_as = struggle_temp
|
||||
$CHAR$ = {
|
||||
any_character_struggle = {
|
||||
involvement = interloper
|
||||
this = scope:struggle_temp
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
is_struggle_parameter_active_secondary_character_involvement_either_trigger = {
|
||||
has_struggle_phase_parameter = $PARAMETER$
|
||||
save_temporary_scope_as = struggle_temp
|
||||
$CHAR$ = {
|
||||
any_character_struggle = { this = scope:struggle_temp }
|
||||
}
|
||||
}
|
||||
|
||||
is_struggle_parameter_active_secondary_character_involvement_neither_trigger = {
|
||||
has_struggle_phase_parameter = $PARAMETER$
|
||||
save_temporary_scope_as = struggle_temp
|
||||
$CHAR$ = {
|
||||
NOT = {
|
||||
any_character_struggle = { this = scope:struggle_temp }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
is_struggle_parameter_active_secondary_county_trigger = {
|
||||
has_struggle_phase_parameter = $PARAMETER$
|
||||
save_temporary_scope_as = struggle_temp
|
||||
$COUNTY$ = {
|
||||
any_county_struggle = { this = scope:struggle_temp }
|
||||
}
|
||||
}
|
||||
|
||||
is_struggle_parameter_active_variable_cb_target_secondary_county_trigger = {
|
||||
has_struggle_phase_parameter = $PARAMETER$
|
||||
save_temporary_scope_as = struggle_temp
|
||||
any_in_list = {
|
||||
list = target_titles
|
||||
count >= 1
|
||||
tier = tier_county
|
||||
any_county_struggle = { this = scope:struggle_temp }
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Casus Belli Triggers
|
||||
## Struggle triggers related to wars & similar.
|
||||
|
||||
# Is the scoped war using a CB we consider important enough to be a catalyst-worthy CB within the struggle?
|
||||
is_large_conquest_war_for_struggle_trigger = {
|
||||
$WAR$ = {
|
||||
OR = {
|
||||
# Large claim wars.
|
||||
AND = {
|
||||
using_cb = claim_cb
|
||||
any_in_list = {
|
||||
list = target_titles
|
||||
tier >= tier_kingdom
|
||||
}
|
||||
}
|
||||
using_cb = duchy_conquest_cb
|
||||
using_cb = individual_duchy_de_jure_cb
|
||||
using_cb = imperial_reconquest_cb
|
||||
using_cb = invasion_war
|
||||
using_cb = clan_invasion_war
|
||||
using_cb = mongol_invasion_war
|
||||
using_cb = mongol_realm_invasion_war
|
||||
using_cb = mpo_gok_onslaught_cb
|
||||
using_cb = major_religious_war
|
||||
using_cb = undirected_great_holy_war
|
||||
using_cb = directed_great_holy_war
|
||||
using_cb = tribal_subjugation_cb
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Can conquest holy wars be accessed in the current phase of the struggle?
|
||||
are_holy_wars_disabled_in_struggle_phase_trigger = {
|
||||
exists = scope:target
|
||||
trigger_if = {
|
||||
scope:target.tier = tier_county
|
||||
scope:target = {
|
||||
any_county_struggle = {
|
||||
NOT = { has_struggle_phase_parameter = holy_wars_in_region_cannot_be_declared }
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_else = { # For Duchy and Kingdom Holy War
|
||||
scope:target = {
|
||||
any_in_de_facto_hierarchy = { # We only consider county within the realm of the target's holder
|
||||
tier = tier_county
|
||||
any_county_struggle = {
|
||||
NOT = { has_struggle_phase_parameter = holy_wars_in_region_cannot_be_declared }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Can the struggle conquest CB be used?
|
||||
## Currently, we're generous with this. Rather than tying it to a parameter, you just need to be involved in a struggle.
|
||||
## This should sync neatly with the various struggle_conquest_cb_is_XYZ_phase_triggers, but due to parameter requirements, can't easily be made to do so automagically.
|
||||
can_use_struggle_cbs_trigger = {
|
||||
OR = {
|
||||
any_character_struggle = { involvement = involved }
|
||||
# Execption if taking hostility ending
|
||||
AND = {
|
||||
exists = scope:attacker.house
|
||||
scope:attacker.house = {
|
||||
OR ={
|
||||
has_house_modifier = fp2_struggle_hostility_house_combined_modifier
|
||||
has_house_modifier = fp2_struggle_hostility_house_faith_modifier
|
||||
has_house_modifier = fp2_struggle_hostility_house_culture_modifier
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# These triggers govern the relative costs for the struggle conquest CB.
|
||||
## These should sync neatly with can_use_struggle_cbs_trigger, but due to parameter requirements, can't easily be made to do so automagically.
|
||||
## Cheap.
|
||||
struggle_conquest_cb_is_warlike_phase_trigger = {
|
||||
$CHAR1$ = {
|
||||
any_character_struggle = {
|
||||
involvement = involved
|
||||
is_struggle_type = iberian_struggle
|
||||
is_struggle_phase = struggle_iberia_phase_hostility
|
||||
is_secondary_character_involvement_either_trigger = { CHAR = $CHAR2$ }
|
||||
}
|
||||
}
|
||||
}
|
||||
## Average.
|
||||
struggle_conquest_cb_is_average_phase_trigger = {
|
||||
$CHAR1$ = {
|
||||
any_character_struggle = {
|
||||
involvement = involved
|
||||
is_struggle_type = iberian_struggle
|
||||
is_struggle_phase = struggle_iberia_phase_opportunity
|
||||
is_secondary_character_involvement_either_trigger = { CHAR = $CHAR2$ }
|
||||
}
|
||||
}
|
||||
}
|
||||
## Pricey.
|
||||
struggle_conquest_cb_is_peaceful_phase_trigger = {
|
||||
$CHAR1$ = {
|
||||
any_character_struggle = {
|
||||
involvement = involved
|
||||
is_struggle_type = iberian_struggle
|
||||
OR = {
|
||||
is_struggle_phase = struggle_iberia_phase_compromise
|
||||
is_struggle_phase = struggle_iberia_phase_conciliation
|
||||
}
|
||||
is_secondary_character_involvement_either_trigger = { CHAR = $CHAR2$ }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Work out whether we need to vassalise someone vs. taking some of their stuff.
|
||||
struggle_conquest_cb_target_is_ocm_trigger = {
|
||||
any_in_list = {
|
||||
list = target_titles
|
||||
# Should only ever be one title, but just in case...
|
||||
count = all
|
||||
holder = {
|
||||
any_held_title = {
|
||||
count = 1
|
||||
tier = tier_county
|
||||
}
|
||||
NOT = {
|
||||
any_vassal = { highest_held_title_tier >= tier_county }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struggle_blocks_invasion_conquest_cb_trigger = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
scope:attacker = {
|
||||
any_character_struggle = {
|
||||
involvement = involved
|
||||
has_struggle_phase_parameter = invasion_conquest_war_cannot_be_declared
|
||||
}
|
||||
}
|
||||
exists = scope:defender
|
||||
}
|
||||
scope:defender = {
|
||||
NOR = {
|
||||
any_character_struggle = {
|
||||
involvement = involved
|
||||
has_struggle_phase_parameter = invasion_conquest_war_cannot_be_declared
|
||||
}
|
||||
any_character_struggle = {
|
||||
involvement = interloper
|
||||
has_struggle_phase_parameter = invasion_conquest_war_cannot_be_declared
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_else = { always = yes }
|
||||
}
|
||||
70
common/scripted_triggers/00_government_triggers.txt
Normal file
70
common/scripted_triggers/00_government_triggers.txt
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
|
||||
should_apply_tribal_development_penalty_trigger = {
|
||||
government_has_flag = government_is_tribal
|
||||
NOR = {
|
||||
any_liege_or_above = {
|
||||
OR = {
|
||||
government_has_flag = government_is_feudal
|
||||
government_has_flag = government_is_clan
|
||||
}
|
||||
}
|
||||
any_vassal_or_below = {
|
||||
OR = {
|
||||
government_has_flag = government_is_feudal
|
||||
government_has_flag = government_is_clan
|
||||
}
|
||||
}
|
||||
any_neighboring_top_liege_realm_owner = {
|
||||
OR = {
|
||||
government_has_flag = government_is_feudal
|
||||
government_has_flag = government_is_clan
|
||||
}
|
||||
tier_difference = {
|
||||
target = prev
|
||||
value < -1
|
||||
}
|
||||
}
|
||||
scope:county ?= {
|
||||
holder ?= {
|
||||
any_neighboring_realm_same_rank_owner = {
|
||||
OR = {
|
||||
government_has_flag = government_is_feudal
|
||||
government_has_flag = government_is_clan
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
faith_qualifies_for_west_african_pagan_feudalisation_trigger = {
|
||||
faith = {
|
||||
# Unreformed West African Pagans are our targets.
|
||||
OR = {
|
||||
religion = religion:akom_religion
|
||||
religion = religion:west_african_religion
|
||||
religion = religion:west_african_bori_religion
|
||||
religion = religion:west_african_orisha_religion
|
||||
religion = religion:west_african_roog_religion
|
||||
}
|
||||
custom_tooltip = {
|
||||
text = faith_qualifies_for_west_african_pagan_feudalisation_trigger.tt
|
||||
has_doctrine_parameter = unreformed
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
should_use_temple_character_background_trigger = {
|
||||
trigger_if = {
|
||||
limit = { is_landed = yes }
|
||||
government_has_flag = government_is_theocracy
|
||||
}
|
||||
trigger_else = {
|
||||
OR = {
|
||||
has_trait = order_member
|
||||
has_council_position = councillor_court_chaplain
|
||||
government_has_flag = government_is_theocracy
|
||||
is_clergy = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
134
common/scripted_triggers/00_great_holy_war_triggers.txt
Normal file
134
common/scripted_triggers/00_great_holy_war_triggers.txt
Normal file
|
|
@ -0,0 +1,134 @@
|
|||
|
||||
suitable_theocrat_sponsor_trigger = {
|
||||
faith = scope:the_faith
|
||||
is_capable_adult_ai = yes
|
||||
is_imprisoned = no
|
||||
}
|
||||
|
||||
suitable_faith_for_undirected_ghw_trigger = {
|
||||
OR = {
|
||||
has_doctrine_parameter = great_holy_wars_active
|
||||
AND = {
|
||||
has_doctrine_parameter = great_holy_wars_active_if_reformed
|
||||
NOT = { has_doctrine_parameter = unreformed }
|
||||
}
|
||||
has_doctrine = divine_destiny_doctrine #SPECIAL: Has become the Chakravarti
|
||||
}
|
||||
has_doctrine = doctrine_spiritual_head
|
||||
NOR = {
|
||||
has_doctrine_parameter = unreformed
|
||||
AND = {
|
||||
has_doctrine = tenet_dharmic_pacifism
|
||||
NOT = { has_doctrine = divine_destiny_doctrine }
|
||||
}
|
||||
has_doctrine = tenet_pacifism
|
||||
}
|
||||
fervor >= 75
|
||||
save_temporary_scope_value_as = {
|
||||
name = faith_strength
|
||||
value = faith_military_strength
|
||||
}
|
||||
save_temporary_scope_as = faith
|
||||
any_kingdom = {
|
||||
valid_ghw_target_trigger = { FAITH = scope:faith }
|
||||
}
|
||||
}
|
||||
|
||||
suitable_faith_for_directed_ghw_trigger = {
|
||||
OR = {
|
||||
has_doctrine = tenet_armed_pilgrimages #Catholics
|
||||
has_doctrine = tenet_struggle_submission #Islam (though, the default Faiths have Temporal Heads, so still do not qualify)
|
||||
has_doctrine = tenet_warmonger #Germanic (though, starting as Unreformed, it still doesn't qualify by default)
|
||||
has_doctrine = divine_destiny_doctrine #SPECIAL: Has become the Chakravarti
|
||||
}
|
||||
has_doctrine = doctrine_temporal_head
|
||||
NOR = {
|
||||
has_doctrine_parameter = unreformed
|
||||
AND = {
|
||||
has_doctrine = tenet_dharmic_pacifism
|
||||
NOT = { has_doctrine = divine_destiny_doctrine }
|
||||
}
|
||||
has_doctrine = tenet_pacifism
|
||||
}
|
||||
fervor >= 75
|
||||
}
|
||||
|
||||
suitable_faith_for_any_ghw_trigger = {
|
||||
OR = {
|
||||
has_doctrine = tenet_armed_pilgrimages #Catholics
|
||||
has_doctrine = tenet_struggle_submission #Islam (though, the default Faiths have Temporal Heads, so still do not qualify)
|
||||
has_doctrine = tenet_warmonger #Germanic (though, starting as Unreformed, it still doesn't qualify by default)
|
||||
has_doctrine = divine_destiny_doctrine #SPECIAL: Has become the Chakravarti
|
||||
}
|
||||
OR = {
|
||||
has_doctrine = doctrine_temporal_head
|
||||
has_doctrine = doctrine_spiritual_head
|
||||
}
|
||||
NOR = {
|
||||
has_doctrine_parameter = unreformed
|
||||
AND = {
|
||||
has_doctrine = tenet_dharmic_pacifism
|
||||
NOT = { has_doctrine = divine_destiny_doctrine }
|
||||
}
|
||||
has_doctrine = tenet_pacifism
|
||||
}
|
||||
fervor >= 65
|
||||
}
|
||||
|
||||
valid_ghw_target_trigger = {
|
||||
exists = capital_vassal.capital_vassal
|
||||
any_in_de_jure_hierarchy = {
|
||||
continue = { tier > tier_county }
|
||||
tier = tier_county
|
||||
count >= 5
|
||||
$FAITH$ = {
|
||||
is_hostile_enough_for_holy_war_trigger = { FAITH = prev.holder.top_liege.faith }
|
||||
}
|
||||
}
|
||||
NOT = {
|
||||
any_in_de_jure_hierarchy = {
|
||||
continue = { tier > tier_county }
|
||||
tier = tier_county
|
||||
$FAITH$ = {
|
||||
is_hostile_enough_for_holy_war_trigger = { FAITH = prev.holder.top_liege.faith }
|
||||
prev.holder.top_liege.current_military_strength > { value = scope:faith_strength }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#The Pope is getting annoyed that player hasn't joined or contributed to the Crusade yet.
|
||||
ghw_pope_annoyed_at_lack_of_participation_trigger = {
|
||||
faith = scope:the_faith
|
||||
NOR = {
|
||||
this = scope:the_faith.great_holy_war.ghw_war_declarer
|
||||
has_character_flag = ghw_unpledging_cooldown
|
||||
#Has not already unpledged and been castigated for it once.
|
||||
has_character_flag = ghw_unpledged_once
|
||||
#Has not already pledged troops or money.
|
||||
has_character_flag = ghw_pledged_gold
|
||||
scope:the_faith.great_holy_war = { has_pledged_attacker = prev }
|
||||
#Do not pledge against your own liege, or when your top liege belongs to the faith being targeted.
|
||||
any_liege_or_above = {
|
||||
this = scope:the_faith.great_holy_war.ghw_target_character
|
||||
}
|
||||
}
|
||||
OR = { #Either be independent, or all lieges above you MUST be of the same Faith declaring the war to avoid messy situations of vassals and lieges fighting against each other.
|
||||
is_independent_ruler = yes
|
||||
NOT = {
|
||||
any_liege_or_above = {
|
||||
NOT = { faith = scope:the_faith }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
ghw_pope_annoyed_at_lack_of_participation_tier_trigger = { #Either King/Emperor, or Independent Dukes.
|
||||
OR = {
|
||||
highest_held_title_tier > 3
|
||||
AND = {
|
||||
is_independent_ruler = yes
|
||||
highest_held_title_tier >= tier_duchy
|
||||
is_landless_adventurer = no
|
||||
}
|
||||
}
|
||||
}
|
||||
89
common/scripted_triggers/00_has_dlc_scripted_triggers.txt
Normal file
89
common/scripted_triggers/00_has_dlc_scripted_triggers.txt
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
##################################################
|
||||
# Chapter Bonus Triggers
|
||||
has_sp4_dlc_trigger = {
|
||||
has_dlc_feature = crowns_of_the_world
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Creator content Triggers
|
||||
has_afr_dlc_trigger = {
|
||||
has_dlc_feature = north_african_attire
|
||||
}
|
||||
has_pol_dlc_trigger = {
|
||||
has_dlc_feature = west_slavic_attire
|
||||
}
|
||||
|
||||
has_cp3_dlc_trigger = {
|
||||
has_dlc_feature = medieval_monuments
|
||||
}
|
||||
|
||||
has_cp4_dlc_trigger = {
|
||||
has_dlc_feature = arctic_attire
|
||||
}
|
||||
|
||||
|
||||
##################################################
|
||||
# Booster Pack Triggers
|
||||
|
||||
has_bp1_dlc_trigger = {
|
||||
has_dlc_feature = friends_and_foes
|
||||
}
|
||||
|
||||
has_bp2_dlc_trigger = {
|
||||
has_dlc_feature = wards_and_wardens
|
||||
}
|
||||
|
||||
has_bp3_dlc_trigger = {
|
||||
has_dlc_feature = wandering_nobles
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Flavour Pack Triggers
|
||||
|
||||
has_fp1_dlc_trigger = {
|
||||
# Does the host have the appropriate DLC?
|
||||
has_dlc_feature = the_northern_lords
|
||||
}
|
||||
|
||||
has_fp2_dlc_trigger = {
|
||||
# Does the host have the appropriate DLC?
|
||||
has_dlc_feature = the_fate_of_iberia
|
||||
}
|
||||
|
||||
has_fp3_dlc_trigger = {
|
||||
# Does the host have the appropriate DLC?
|
||||
has_dlc_feature = legacy_of_persia
|
||||
}
|
||||
|
||||
has_ce1_dlc_trigger = {
|
||||
# Does the host have the appropriate DLC?
|
||||
has_dlc_feature = legends_of_the_dead
|
||||
}
|
||||
|
||||
has_mpo_dlc_trigger = {
|
||||
# Does the host have the appropriate DLC?
|
||||
has_dlc_feature = khans_of_the_steppe
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Expansion Pack Triggers
|
||||
|
||||
has_ep1_dlc_trigger = {
|
||||
has_dlc_feature = royal_court
|
||||
}
|
||||
|
||||
has_ep1_court_positions_dlc_trigger = {
|
||||
has_dlc_feature = royal_court
|
||||
}
|
||||
|
||||
has_ep2_dlc_trigger = {
|
||||
has_dlc_feature = tours_and_tournaments
|
||||
}
|
||||
|
||||
has_ep3_dlc_trigger = {
|
||||
has_dlc_feature = roads_to_power
|
||||
}
|
||||
|
||||
has_playable_adventurer_dlc_trigger = {
|
||||
has_dlc_feature = roads_to_power
|
||||
}
|
||||
1074
common/scripted_triggers/00_hunt_triggers.txt
Normal file
1074
common/scripted_triggers/00_hunt_triggers.txt
Normal file
File diff suppressed because it is too large
Load diff
619
common/scripted_triggers/00_illustration_triggers.txt
Normal file
619
common/scripted_triggers/00_illustration_triggers.txt
Normal file
|
|
@ -0,0 +1,619 @@
|
|||
should_use_tribal_realm_palace_graphics_trigger = {
|
||||
government_has_flag = government_is_tribal
|
||||
culture = {
|
||||
has_graphical_india_culture_group_trigger = no
|
||||
has_graphical_mena_culture_group_trigger = no
|
||||
has_graphical_steppe_culture_group_trigger = no
|
||||
has_graphical_african_culture_group_trigger = no
|
||||
}
|
||||
}
|
||||
|
||||
has_graphical_mena_culture_group_trigger = {
|
||||
has_building_gfx = mena_building_gfx
|
||||
}
|
||||
|
||||
has_graphical_india_culture_group_trigger = {
|
||||
has_building_gfx = indian_building_gfx
|
||||
}
|
||||
|
||||
has_graphical_mediterranean_culture_group_trigger = {
|
||||
OR = {
|
||||
has_building_gfx = mediterranean_building_gfx
|
||||
has_building_gfx = byzantine_building_gfx
|
||||
}
|
||||
}
|
||||
|
||||
has_graphical_western_culture_group_trigger = {
|
||||
has_building_gfx = western_building_gfx
|
||||
}
|
||||
|
||||
has_graphical_norse_culture_group_trigger = {
|
||||
has_building_gfx = norse_building_gfx
|
||||
}
|
||||
|
||||
has_graphical_african_culture_group_trigger = {
|
||||
has_building_gfx = african_building_gfx
|
||||
}
|
||||
|
||||
has_graphical_steppe_culture_group_trigger = {
|
||||
has_building_gfx = steppe_building_gfx
|
||||
}
|
||||
|
||||
has_graphical_iberian_culture_group_trigger = {
|
||||
has_building_gfx = iberian_building_gfx
|
||||
}
|
||||
|
||||
has_graphical_iranian_culture_group_trigger = {
|
||||
has_building_gfx = iranian_building_gfx
|
||||
}
|
||||
|
||||
|
||||
graphical_wilderness_desert_trigger = {
|
||||
OR = {
|
||||
terrain = desert
|
||||
terrain = desert_mountains
|
||||
terrain = oasis
|
||||
AND = {
|
||||
terrain = hills
|
||||
OR = {
|
||||
geographical_region = world_africa
|
||||
geographical_region = world_middle_east_arabia
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
graphical_wilderness_forest_pine_trigger = {
|
||||
OR = {
|
||||
terrain = taiga
|
||||
AND = {
|
||||
terrain = forest
|
||||
OR = {
|
||||
geographical_region = world_europe_north
|
||||
geographical_region = world_steppe
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
graphical_wilderness_forest_trigger = {
|
||||
OR = {
|
||||
terrain = forest
|
||||
terrain = farmlands
|
||||
}
|
||||
}
|
||||
|
||||
graphical_wilderness_mountains_trigger = {
|
||||
terrain = mountains
|
||||
}
|
||||
|
||||
graphical_wilderness_steppe_trigger = {
|
||||
OR = {
|
||||
terrain = steppe
|
||||
AND = {
|
||||
terrain = hills
|
||||
OR = {
|
||||
geographical_region = world_steppe
|
||||
geographical_region = world_middle_east_persia
|
||||
geographical_region = world_middle_east_jerusalem
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
graphical_drylands_trigger = {
|
||||
terrain = drylands
|
||||
}
|
||||
|
||||
graphical_wilderness_wetlands_trigger = {
|
||||
OR = {
|
||||
terrain = wetlands
|
||||
terrain = floodplains
|
||||
}
|
||||
}
|
||||
|
||||
graphical_wilderness_jungle_trigger = {
|
||||
OR = {
|
||||
terrain = jungle
|
||||
AND = {
|
||||
terrain = hills
|
||||
geographical_region = graphical_india
|
||||
NOT = { geographical_region = world_tibet }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
graphical_plains_trigger = {
|
||||
terrain = plains
|
||||
}
|
||||
|
||||
graphical_wilderness_ocean_trigger = {
|
||||
is_sea_province = yes
|
||||
}
|
||||
|
||||
graphical_hills_trigger = {
|
||||
terrain = hills
|
||||
}
|
||||
|
||||
### Scripted illustrations
|
||||
|
||||
# This doesn't really evaluate anything, it just saves the scope out for later things to use
|
||||
title_illustration_save_province_temporary = {
|
||||
trigger_if = {
|
||||
limit = { tier = tier_barony }
|
||||
title_province = {
|
||||
save_temporary_scope_as = province
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
tier > tier_county
|
||||
NOT = {
|
||||
any_in_de_jure_hierarchy = { tier = tier_county }
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_else = {
|
||||
title_capital_county.title_province = {
|
||||
save_temporary_scope_as = province
|
||||
}
|
||||
}
|
||||
always = yes
|
||||
}
|
||||
|
||||
#has_indian_culture_trigger = {
|
||||
has_graphical_india_region_trigger = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
exists = capital_province
|
||||
}
|
||||
capital_province = {
|
||||
geographical_region = graphical_india
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
NOT = { exists = capital_province }
|
||||
}
|
||||
trigger_if = {
|
||||
limit = { exists = host.capital_province }
|
||||
host.capital_province = {
|
||||
geographical_region = graphical_india
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
exists = liege.capital_province
|
||||
}
|
||||
liege.capital_province = {
|
||||
geographical_region = graphical_india
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
exists = location.province_owner.capital_province
|
||||
}
|
||||
location.province_owner.capital_province = {
|
||||
geographical_region = graphical_india
|
||||
}
|
||||
}
|
||||
trigger_else = { always = yes }
|
||||
}
|
||||
trigger_else = { always = yes }
|
||||
}
|
||||
|
||||
#has_mediterranean_culture_trigger = {
|
||||
has_graphical_mediterranean_region_trigger = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
exists = capital_province
|
||||
}
|
||||
capital_province = {
|
||||
geographical_region = graphical_mediterranean
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
NOT = { exists = capital_province }
|
||||
}
|
||||
trigger_if = {
|
||||
limit = { exists = host.capital_province }
|
||||
host.capital_province = {
|
||||
geographical_region = graphical_mediterranean
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
exists = liege.capital_province
|
||||
}
|
||||
liege.capital_province = {
|
||||
geographical_region = graphical_mediterranean
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
exists = location.province_owner.capital_province
|
||||
}
|
||||
location.province_owner.capital_province = {
|
||||
geographical_region = graphical_mediterranean
|
||||
}
|
||||
}
|
||||
trigger_else = { always = yes }
|
||||
}
|
||||
trigger_else = { always = yes }
|
||||
}
|
||||
|
||||
#has_mena_culture_trigger = {
|
||||
has_graphical_mena_region_trigger = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
exists = capital_province
|
||||
}
|
||||
capital_province = {
|
||||
OR = {
|
||||
geographical_region = graphical_mena
|
||||
geographical_region = world_steppe_tarim
|
||||
geographical_region = world_steppe_central
|
||||
geographical_region = world_steppe_east
|
||||
AND = {
|
||||
prev = {
|
||||
government_has_flag = government_is_clan
|
||||
}
|
||||
OR = {
|
||||
geographical_region = world_steppe_west
|
||||
geographical_region = world_siberia
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
NOT = { exists = capital_province }
|
||||
}
|
||||
trigger_if = {
|
||||
limit = { exists = host.capital_province }
|
||||
host.capital_province = {
|
||||
OR = {
|
||||
geographical_region = graphical_mena
|
||||
geographical_region = world_steppe_tarim
|
||||
geographical_region = world_steppe_central
|
||||
geographical_region = world_steppe_east
|
||||
AND = {
|
||||
province_owner = {
|
||||
government_has_flag = government_is_clan
|
||||
}
|
||||
OR = {
|
||||
geographical_region = world_steppe_west
|
||||
geographical_region = world_siberia
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
exists = liege.capital_province
|
||||
}
|
||||
liege.capital_province = {
|
||||
OR = {
|
||||
geographical_region = graphical_mena
|
||||
geographical_region = world_steppe_tarim
|
||||
geographical_region = world_steppe_central
|
||||
geographical_region = world_steppe_east
|
||||
AND = {
|
||||
province_owner = {
|
||||
government_has_flag = government_is_clan
|
||||
}
|
||||
OR = {
|
||||
geographical_region = world_steppe_west
|
||||
geographical_region = world_siberia
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
exists = location.province_owner.capital_province
|
||||
}
|
||||
location.province_owner.capital_province = {
|
||||
OR = {
|
||||
geographical_region = graphical_mena
|
||||
geographical_region = world_steppe_tarim
|
||||
geographical_region = world_steppe_central
|
||||
geographical_region = world_steppe_east
|
||||
AND = {
|
||||
province_owner = {
|
||||
government_has_flag = government_is_clan
|
||||
}
|
||||
OR = {
|
||||
geographical_region = world_steppe_west
|
||||
geographical_region = world_siberia
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_else = { always = yes }
|
||||
}
|
||||
trigger_else = { always = yes }
|
||||
}
|
||||
|
||||
has_graphical_scandinavia_region_trigger = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
exists = capital_province
|
||||
}
|
||||
capital_province = {
|
||||
geographical_region = world_europe_north
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
NOT = { exists = capital_province }
|
||||
}
|
||||
trigger_if = {
|
||||
limit = { exists = host.capital_province }
|
||||
host.capital_province = {
|
||||
geographical_region = world_europe_north
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
exists = liege.capital_province
|
||||
}
|
||||
liege.capital_province = {
|
||||
geographical_region = world_europe_north
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
exists = location.province_owner.capital_province
|
||||
}
|
||||
location.province_owner.capital_province = {
|
||||
geographical_region = world_europe_north
|
||||
}
|
||||
}
|
||||
trigger_else = { always = yes }
|
||||
}
|
||||
trigger_else = { always = yes }
|
||||
}
|
||||
|
||||
#has_western_culture_trigger = {
|
||||
has_graphical_western_region_trigger = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
exists = capital_province
|
||||
}
|
||||
capital_province = {
|
||||
NOR = {
|
||||
geographical_region = graphical_india
|
||||
geographical_region = graphical_mediterranean
|
||||
geographical_region = graphical_mena
|
||||
geographical_region = world_steppe_tarim
|
||||
geographical_region = world_steppe_central
|
||||
geographical_region = world_steppe_east
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
NOT = { exists = capital_province }
|
||||
}
|
||||
|
||||
trigger_if = {
|
||||
limit = { exists = host.capital_province }
|
||||
host.capital_province = {
|
||||
NOR = {
|
||||
geographical_region = graphical_india
|
||||
geographical_region = graphical_mediterranean
|
||||
geographical_region = graphical_mena
|
||||
geographical_region = world_steppe_tarim
|
||||
geographical_region = world_steppe_central
|
||||
geographical_region = world_steppe_east
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
exists = liege.capital_province
|
||||
}
|
||||
liege.capital_province = {
|
||||
NOR = {
|
||||
geographical_region = graphical_india
|
||||
geographical_region = graphical_mediterranean
|
||||
geographical_region = graphical_mena
|
||||
geographical_region = world_steppe_tarim
|
||||
geographical_region = world_steppe_central
|
||||
geographical_region = world_steppe_east
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
exists = location.province_owner.capital_province
|
||||
}
|
||||
location.province_owner.capital_province = {
|
||||
NOR = {
|
||||
geographical_region = graphical_india
|
||||
geographical_region = graphical_mediterranean
|
||||
geographical_region = graphical_mena
|
||||
geographical_region = world_steppe_tarim
|
||||
geographical_region = world_steppe_central
|
||||
geographical_region = world_steppe_east
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_else = { always = yes }
|
||||
}
|
||||
trigger_else = { always = yes }
|
||||
}
|
||||
|
||||
#Has graphical region Iberia trigger
|
||||
has_graphical_iberia_region_trigger = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
exists = capital_province
|
||||
}
|
||||
capital_province = {
|
||||
geographical_region = world_europe_west_iberia
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
NOT = { exists = capital_province }
|
||||
}
|
||||
trigger_if = {
|
||||
limit = { exists = host.capital_province }
|
||||
host.capital_province = {
|
||||
geographical_region = world_europe_west_iberia
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
exists = liege.capital_province
|
||||
}
|
||||
liege.capital_province = {
|
||||
geographical_region = world_europe_west_iberia
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
exists = location.province_owner.capital_province
|
||||
}
|
||||
location.province_owner.capital_province = {
|
||||
geographical_region = world_europe_west_iberia
|
||||
}
|
||||
}
|
||||
trigger_else = { always = yes }
|
||||
}
|
||||
trigger_else = { always = yes }
|
||||
}
|
||||
|
||||
#Has graphical region Iran trigger
|
||||
has_graphical_iran_region_trigger = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
exists = capital_province
|
||||
}
|
||||
capital_province = {
|
||||
OR = {
|
||||
geographical_region = world_middle_east_persia
|
||||
geographical_region = world_steppe_tarim
|
||||
geographical_region = world_steppe_central
|
||||
geographical_region = world_steppe_east
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
NOT = { exists = capital_province }
|
||||
}
|
||||
trigger_if = {
|
||||
limit = { exists = host.capital_province }
|
||||
host.capital_province = {
|
||||
OR = {
|
||||
geographical_region = world_middle_east_persia
|
||||
geographical_region = world_steppe_tarim
|
||||
geographical_region = world_steppe_central
|
||||
geographical_region = world_steppe_east
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
exists = liege.capital_province
|
||||
}
|
||||
liege.capital_province = {
|
||||
OR = {
|
||||
geographical_region = world_middle_east_persia
|
||||
geographical_region = world_steppe_tarim
|
||||
geographical_region = world_steppe_central
|
||||
geographical_region = world_steppe_east
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
exists = location.province_owner.capital_province
|
||||
}
|
||||
location.province_owner.capital_province = {
|
||||
OR = {
|
||||
geographical_region = world_middle_east_persia
|
||||
geographical_region = world_steppe_tarim
|
||||
geographical_region = world_steppe_central
|
||||
geographical_region = world_steppe_east
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_else = { always = yes }
|
||||
}
|
||||
trigger_else = { always = yes }
|
||||
}
|
||||
|
||||
steppe_building_gfx_use_mena_trigger = {
|
||||
AND = {
|
||||
culture = { has_building_gfx = steppe_building_gfx }
|
||||
OR = {
|
||||
#western steppe should only be mena if you are clan
|
||||
NOR = {
|
||||
geographical_region = world_steppe_west
|
||||
geographical_region = world_europe
|
||||
geographical_region = world_asia_minor
|
||||
geographical_region = world_india
|
||||
geographical_region = world_burma
|
||||
geographical_region = world_tibet
|
||||
}
|
||||
AND = {
|
||||
faith.religion = religion:islam_religion
|
||||
OR = {
|
||||
geographical_region = world_steppe_west
|
||||
geographical_region = world_asia_minor
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
steppe_building_gfx_use_indian_trigger = {
|
||||
AND = {
|
||||
culture = { has_building_gfx = steppe_building_gfx }
|
||||
OR = {
|
||||
#western steppe should only be mena if you are clan
|
||||
geographical_region = world_india
|
||||
geographical_region = world_burma
|
||||
geographical_region = world_tibet
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
steppe_building_gfx_use_mediterranean_trigger = {
|
||||
AND = {
|
||||
culture = { has_building_gfx = steppe_building_gfx }
|
||||
OR = {
|
||||
geographical_region = world_europe_south_east
|
||||
geographical_region = world_europe_south_italy
|
||||
geographical_region = world_europe_west_iberia
|
||||
geographical_region = world_asia_minor
|
||||
}
|
||||
}
|
||||
}
|
||||
steppe_building_gfx_use_iranian_trigger = {
|
||||
AND = {
|
||||
OR = {
|
||||
geographical_region = world_steppe_east
|
||||
geographical_region = world_steppe_central
|
||||
geographical_region = world_middle_east_persia
|
||||
}
|
||||
culture = { has_building_gfx = steppe_building_gfx }
|
||||
}
|
||||
}
|
||||
steppe_building_gfx_use_western_trigger = {
|
||||
AND = {
|
||||
OR = {
|
||||
geographical_region = world_europe_north
|
||||
geographical_region = world_europe_west
|
||||
}
|
||||
culture = { has_building_gfx = steppe_building_gfx }
|
||||
}
|
||||
}
|
||||
|
|
@ -120,7 +120,7 @@ diarch_revocation_has_claim_check_trigger = {
|
|||
}
|
||||
|
||||
title_revocation_is_admin_governor_trigger = {
|
||||
has_government = administrative_government
|
||||
government_has_flag = government_is_administrative
|
||||
is_independent_ruler = yes
|
||||
save_temporary_scope_as = liege_temp
|
||||
$VASSAL$ = {
|
||||
|
|
@ -166,9 +166,9 @@ vassal_revocation_is_tyrannical_trigger = {
|
|||
NOR = {
|
||||
exists = scope:administrative_revocation
|
||||
AND = {
|
||||
has_government = administrative_government
|
||||
government_has_flag = government_is_administrative
|
||||
$VASSAL$ = {
|
||||
has_government = administrative_government
|
||||
government_has_flag = government_is_administrative
|
||||
}
|
||||
}
|
||||
has_revoke_title_reason = $VASSAL$
|
||||
|
|
|
|||
112
common/scripted_triggers/00_journey_triggers.txt
Normal file
112
common/scripted_triggers/00_journey_triggers.txt
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
journey_diplomacy_skill_monument_trigger = {
|
||||
OR = {
|
||||
has_building_with_flag = travel_point_of_interest_wonder
|
||||
has_building_with_flag = travel_point_of_interest_learning
|
||||
has_building_with_flag = travel_point_of_interest_diplomatic
|
||||
has_building_with_flag = travel_point_of_interest_natural_feature
|
||||
has_building_with_flag = travel_point_of_interest_religious
|
||||
NOR = {
|
||||
has_building_with_flag = travel_point_of_interest_wonder
|
||||
has_building_with_flag = travel_point_of_interest_diplomatic
|
||||
has_building_with_flag = travel_point_of_interest_natural_feature
|
||||
has_building_with_flag = travel_point_of_interest_martial
|
||||
has_building_with_flag = travel_point_of_interest_religious
|
||||
has_building_with_flag = travel_point_of_interest_learning
|
||||
has_building_with_flag = travel_point_of_interest_economic
|
||||
has_building_with_flag = travel_point_of_interest_martial_minor
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
journey_martial_skill_monument_trigger = {
|
||||
OR = {
|
||||
has_building_with_flag = travel_point_of_interest_martial
|
||||
has_building_with_flag = travel_point_of_interest_martial_minor
|
||||
has_building_with_flag = travel_point_of_interest_wonder
|
||||
has_building_with_flag = travel_point_of_interest_learning
|
||||
NOR = {
|
||||
has_building_with_flag = travel_point_of_interest_wonder
|
||||
has_building_with_flag = travel_point_of_interest_diplomatic
|
||||
has_building_with_flag = travel_point_of_interest_natural_feature
|
||||
has_building_with_flag = travel_point_of_interest_martial
|
||||
has_building_with_flag = travel_point_of_interest_religious
|
||||
has_building_with_flag = travel_point_of_interest_learning
|
||||
has_building_with_flag = travel_point_of_interest_economic
|
||||
has_building_with_flag = travel_point_of_interest_martial_minor
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
journey_learning_skill_monument_trigger = {
|
||||
OR = {
|
||||
has_building_with_flag = travel_point_of_interest_religious
|
||||
has_building_with_flag = travel_point_of_interest_learning
|
||||
NOR = {
|
||||
has_building_with_flag = travel_point_of_interest_wonder
|
||||
has_building_with_flag = travel_point_of_interest_diplomatic
|
||||
has_building_with_flag = travel_point_of_interest_natural_feature
|
||||
has_building_with_flag = travel_point_of_interest_martial
|
||||
has_building_with_flag = travel_point_of_interest_religious
|
||||
has_building_with_flag = travel_point_of_interest_learning
|
||||
has_building_with_flag = travel_point_of_interest_economic
|
||||
has_building_with_flag = travel_point_of_interest_martial_minor
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
journey_stewardship_skill_monument_trigger = {
|
||||
OR = {
|
||||
has_building_with_flag = travel_point_of_interest_economic
|
||||
NOR = {
|
||||
has_building_with_flag = travel_point_of_interest_wonder
|
||||
has_building_with_flag = travel_point_of_interest_diplomatic
|
||||
has_building_with_flag = travel_point_of_interest_natural_feature
|
||||
has_building_with_flag = travel_point_of_interest_martial
|
||||
has_building_with_flag = travel_point_of_interest_religious
|
||||
has_building_with_flag = travel_point_of_interest_learning
|
||||
has_building_with_flag = travel_point_of_interest_economic
|
||||
has_building_with_flag = travel_point_of_interest_martial_minor
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
journey_intrigue_skill_monument_trigger = {
|
||||
OR = {
|
||||
has_building_with_flag = travel_point_of_interest_martial
|
||||
has_building_with_flag = travel_point_of_interest_martial_minor
|
||||
has_building_with_flag = travel_point_of_interest_diplomatic
|
||||
has_building_with_flag = travel_point_of_interest_natural_feature
|
||||
has_building_with_flag = travel_point_of_interest_wonder
|
||||
has_building_with_flag = travel_point_of_interest_economic
|
||||
NOR = {
|
||||
has_building_with_flag = travel_point_of_interest_wonder
|
||||
has_building_with_flag = travel_point_of_interest_diplomatic
|
||||
has_building_with_flag = travel_point_of_interest_natural_feature
|
||||
has_building_with_flag = travel_point_of_interest_martial
|
||||
has_building_with_flag = travel_point_of_interest_religious
|
||||
has_building_with_flag = travel_point_of_interest_learning
|
||||
has_building_with_flag = travel_point_of_interest_economic
|
||||
has_building_with_flag = travel_point_of_interest_martial_minor
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inspired_journey_trigger = {
|
||||
scope:host = {
|
||||
NAND = {
|
||||
has_variable_list = extra_journey_target
|
||||
is_target_in_variable_list = {
|
||||
name = extra_journey_target
|
||||
target = root
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inspired_journey_value_trigger = {
|
||||
has_variable_list = extra_journey_target
|
||||
is_target_in_variable_list = {
|
||||
name = extra_journey_target
|
||||
target = scope:province
|
||||
}
|
||||
}
|
||||
935
common/scripted_triggers/00_laamp_triggers.txt
Normal file
935
common/scripted_triggers/00_laamp_triggers.txt
Normal file
|
|
@ -0,0 +1,935 @@
|
|||
##################################################
|
||||
# Landless Adventurer Camp Scripted Triggers
|
||||
##################################################
|
||||
|
||||
##################################################
|
||||
# Interaction Triggers
|
||||
|
||||
maa_regiments_valid_for_cheap_reinforcement_trigger = {
|
||||
maa_current_troops_count < maa_max_troops_count
|
||||
NOR = {
|
||||
is_unit_type = heavy_cavalry
|
||||
is_unit_type = camel_cavalry
|
||||
maa_regiments_cost_more_to_reinforce_per_soldier_trigger = yes
|
||||
}
|
||||
}
|
||||
|
||||
maa_regiments_cost_more_to_reinforce_per_soldier_trigger = {
|
||||
regiment_owner = { government_has_flag = government_is_landless_adventurer }
|
||||
OR = {
|
||||
is_unit_type = elephant_cavalry
|
||||
is_unit_type = siege_weapon
|
||||
}
|
||||
}
|
||||
|
||||
maa_regiments_valid_to_refill_trigger = {
|
||||
maa_current_troops_count < maa_max_troops_count
|
||||
trigger_if = {
|
||||
limit = {
|
||||
scope:actor = { government_has_flag = government_is_landless_adventurer }
|
||||
is_unit_type = elephant_cavalry
|
||||
}
|
||||
scope:actor.domicile ?= { has_domicile_parameter = camp_reinforce_elephant_regiments_anywhere }
|
||||
}
|
||||
}
|
||||
|
||||
any_laamp_portion_at_sea_trigger = {
|
||||
OR = {
|
||||
current_travel_plan ?= {
|
||||
is_travel_with_domicile = yes
|
||||
current_location = {
|
||||
OR = {
|
||||
is_sea_province = yes
|
||||
is_river_province = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
any_army = {
|
||||
location = {
|
||||
OR = {
|
||||
is_sea_province = yes
|
||||
is_river_province = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
character_is_valid_for_harrying_of_the_north_trigger = {
|
||||
title:k_england.holder ?= { owns_story_of_type = story_cycle_harrying_of_the_north }
|
||||
trigger_if = {
|
||||
limit = { is_ruler = yes }
|
||||
OR = {
|
||||
this = title:k_england.holder
|
||||
any_liege_or_above = { this = title:k_england.holder }
|
||||
}
|
||||
}
|
||||
trigger_else = {
|
||||
domicile ?= {
|
||||
domicile_location = {
|
||||
county ?= {
|
||||
holder = {
|
||||
OR = {
|
||||
this = title:k_england.holder
|
||||
any_liege_or_above = { this = title:k_england.holder }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
OR = {
|
||||
character_is_valid_anglo_saxon_for_harrying_of_the_north_trigger = yes
|
||||
character_is_valid_norman_for_harrying_of_the_north_trigger = yes
|
||||
}
|
||||
}
|
||||
|
||||
character_is_valid_anglo_saxon_for_harrying_of_the_north_trigger = {
|
||||
culture = {
|
||||
OR = {
|
||||
this = culture:anglo_saxon
|
||||
any_parent_culture_or_above = { this = culture:anglo_saxon }
|
||||
}
|
||||
NOR = {
|
||||
this = culture:norman
|
||||
any_parent_culture_or_above = { this = culture:norman }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
character_is_valid_norman_for_harrying_of_the_north_trigger = {
|
||||
culture = {
|
||||
OR = {
|
||||
this = culture:norman
|
||||
any_parent_culture_or_above = { this = culture:norman }
|
||||
}
|
||||
NOR = {
|
||||
this = culture:anglo_saxon
|
||||
any_parent_culture_or_above = { this = culture:anglo_saxon }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
disable_interaction_for_hereward_trigger = {
|
||||
trigger_if = {
|
||||
limit = { scope:recipient = character:90028 }
|
||||
custom_tooltip = {
|
||||
text = owns_a_story_trigger
|
||||
scope:actor = {
|
||||
NOR = {
|
||||
owns_story_of_type = story_cycle_harrying_of_the_north
|
||||
any_liege_or_above = { owns_story_of_type = story_cycle_harrying_of_the_north }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
disable_interaction_for_hasan_trigger = {
|
||||
trigger_if = {
|
||||
limit = { scope:recipient = character:41702 }
|
||||
custom_tooltip = {
|
||||
text = owns_a_story_trigger
|
||||
scope:recipient = { owns_story_of_type = story_hasan }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
laamp_request_likely_marriable_woman_trigger = {
|
||||
is_female = yes
|
||||
is_adult = yes
|
||||
can_marry_trigger = yes
|
||||
}
|
||||
|
||||
laamp_request_likely_marriable_man_trigger = {
|
||||
is_male = yes
|
||||
is_adult = yes
|
||||
can_marry_trigger = yes
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Transition Triggers
|
||||
|
||||
is_valid_for_laampdom = {
|
||||
custom_tooltip = {
|
||||
text = adventurer_not_nf_head_trigger_tt
|
||||
NOT = {
|
||||
any_held_title = { is_noble_family_title = yes }
|
||||
}
|
||||
}
|
||||
save_temporary_scope_as = potential_laamp_temp
|
||||
is_landless_ruler = no # Admin gov vassals should not become laamps
|
||||
trigger_if = {
|
||||
limit = { is_ai = yes }
|
||||
trigger_if = {
|
||||
limit = {
|
||||
NOT = { exists = scope:allow_imprisoned_landless }
|
||||
}
|
||||
is_imprisoned = no # Must be free
|
||||
}
|
||||
is_adult = yes # Old enough to venture forth
|
||||
age < 60 # Young enough to venture forth
|
||||
health >= fine_health # Healthy enough to venture forth
|
||||
OR = {
|
||||
highest_skill_value >= decent_skill_rating
|
||||
prowess >= decent_skill_rating
|
||||
}
|
||||
# Can't be completely unwilling to go outside.
|
||||
OR = {
|
||||
ai_boldness >= low_negative_ai_value
|
||||
ai_energy >= low_negative_ai_value
|
||||
}
|
||||
NOR = {
|
||||
has_trait = content # Too chill to adventure
|
||||
has_trait = craven # Too scared to adventure
|
||||
has_trait = lazy # Too lazy to adventure
|
||||
}
|
||||
# Block admin members of noble families
|
||||
NOT = {
|
||||
house ?= {
|
||||
any_house_member = {
|
||||
any_held_title = { is_noble_family_title = yes }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ep3_laamp_interesting_enough_to_be_a_laamp_trigger = {
|
||||
OR = {
|
||||
has_trait_rank = { # Prettier
|
||||
trait = beauty_good
|
||||
character > $COMPARISON$
|
||||
}
|
||||
has_trait_rank = { # Cleverer
|
||||
trait = intellect_good
|
||||
character > $COMPARISON$
|
||||
}
|
||||
has_trait_rank = { # Dencher
|
||||
trait = physique_good
|
||||
character > $COMPARISON$
|
||||
}
|
||||
AND = { # Strong people are just more interesting
|
||||
has_trait = strong
|
||||
NOT = {
|
||||
$COMPARISON$ = { has_trait = strong }
|
||||
}
|
||||
}
|
||||
sum_of_all_skills_value > $COMPARISON$.sum_of_all_skills_value # Skillful people are interesting
|
||||
prowess >= high_skill_rating # Good fighters are interesting
|
||||
prestige_level > $COMPARISON$.prestige_level # Famous people are interesting
|
||||
piety_level > $COMPARISON$.piety_level # Religious people are interesting
|
||||
AND = { # People with nicknames are just more interesting
|
||||
has_any_nickname = yes
|
||||
$COMPARISON$ = { has_any_nickname = no }
|
||||
}
|
||||
has_character_modifier = bp2_tool_of_fate_modifier # Destiny's child is interesting
|
||||
has_trait = reincarnation # Reincarnies are interesting
|
||||
has_trait = immortal
|
||||
is_twin_of = $COMPARISON$ # Twins are interesting
|
||||
}
|
||||
}
|
||||
|
||||
playable_relative_trigger = {
|
||||
is_playable_character = yes
|
||||
is_ai = yes
|
||||
house = root.house
|
||||
}
|
||||
|
||||
ep3_laamp_interesting_sibling_trigger = {
|
||||
is_ai = yes # Not already played
|
||||
is_landed = no # Landless enough to venture forth
|
||||
NOT = {
|
||||
any_consort = {
|
||||
is_ruler = yes
|
||||
}
|
||||
}
|
||||
is_playable_character = no # Not already playable
|
||||
is_valid_for_laampdom = yes # Age, health, personality
|
||||
ep3_laamp_interesting_enough_to_be_a_laamp_trigger = { COMPARISON = $COMPARISON$ }
|
||||
}
|
||||
|
||||
ep3_purchase_land_valid_county_trigger = {
|
||||
holder.top_liege = scope:recipient
|
||||
NOR = {
|
||||
scope:recipient.capital_county ?= this
|
||||
scope:recipient.primary_title ?= this
|
||||
}
|
||||
}
|
||||
|
||||
ep3_negotiate_settlement_valid_county_trigger = {
|
||||
OR = {
|
||||
holder = scope:actor
|
||||
trigger_if = {
|
||||
limit = {
|
||||
scope:actor = { government_has_flag = government_is_administrative }
|
||||
}
|
||||
holder = { target_is_liege_or_above = scope:actor }
|
||||
}
|
||||
}
|
||||
NOR = {
|
||||
holder.capital_county ?= this
|
||||
holder.primary_title ?= this
|
||||
}
|
||||
}
|
||||
|
||||
ep3_adventurer_invasion_allowed_for_character_trigger = {
|
||||
has_ep3_dlc_trigger = yes
|
||||
government_has_flag = government_is_landless_adventurer
|
||||
is_landed = no
|
||||
}
|
||||
|
||||
ep3_adventurer_invasion_allowed_for_character_display_regardless_trigger = {
|
||||
has_ep3_dlc_trigger = yes
|
||||
is_at_war = no
|
||||
}
|
||||
|
||||
ep3_adventurer_landless_allowed_against_character_trigger = {
|
||||
is_landed = yes
|
||||
# Players vs. AI filtering.
|
||||
OR = {
|
||||
# Can always target the AI.
|
||||
is_ai = yes
|
||||
# Cannot target a player unless they completely control at least two duchies.
|
||||
any_sub_realm_duchy = {
|
||||
count >= 2
|
||||
save_temporary_scope_as = player_controlled_duchy
|
||||
# Custom description to suppress errors.
|
||||
custom_description = {
|
||||
text = SUPPRESS
|
||||
scope:defender = { completely_controls = scope:player_controlled_duchy }
|
||||
}
|
||||
}
|
||||
}
|
||||
# Scope:defender cannot be liege of attacker.
|
||||
scope:defender = {
|
||||
NOT = { this = scope:attacker.liege }
|
||||
}
|
||||
}
|
||||
|
||||
ep3_adventurer_invasion_sponsorship_applies_trigger = {
|
||||
var:adventurer_invasion_supporter ?= { ep3_adventurer_sponsorship_valid_trigger = yes }
|
||||
var:adventurer_invasion_target ?= scope:defender
|
||||
}
|
||||
|
||||
ep3_adventurer_landless_should_invalidate_trigger = {
|
||||
OR = {
|
||||
NOT = {
|
||||
any_in_list = {
|
||||
list = target_titles
|
||||
any_in_de_jure_hierarchy = {
|
||||
tier = tier_county
|
||||
holder = {
|
||||
target_is_same_character_or_above = scope:defender
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
scope:attacker = { is_landed = yes }
|
||||
}
|
||||
}
|
||||
|
||||
ep3_adventurer_sponsorship_valid_trigger = {
|
||||
scope:attacker.var:adventurer_invasion_supporter ?= {
|
||||
var:adventurer_invasion_target ?= scope:defender
|
||||
NOR = {
|
||||
this = scope:defender
|
||||
top_liege = scope:defender.top_liege
|
||||
is_allied_to = scope:defender
|
||||
is_spouse_of = scope:defender
|
||||
AND = {
|
||||
is_close_family_of = scope:defender
|
||||
opinion = {
|
||||
target = scope:defender
|
||||
value >= -25
|
||||
}
|
||||
}
|
||||
has_relation_friend = scope:defender
|
||||
has_relation_lover = scope:defender
|
||||
any_character_war = {
|
||||
primary_attacker = scope:attacker.var:adventurer_invasion_supporter
|
||||
primary_defender = scope:defender
|
||||
}
|
||||
}
|
||||
in_diplomatic_range = scope:defender
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Contract Triggers
|
||||
|
||||
# Can this employer ever offer this contract?
|
||||
## This is basically an is_valid_showing_failures_only, so we deliberately break out into lots of unnecessarily small sections for nicer tooltipping.
|
||||
valid_laamp_basic_trigger = {
|
||||
custom_description = {
|
||||
text = adventurer_not_famous_or_patron_trigger_tt
|
||||
object = $EMPLOYER$
|
||||
value = $EMPLOYER$.highest_held_title_tier
|
||||
OR = {
|
||||
$EMPLOYER$.highest_held_title_tier <= tier_county
|
||||
AND = {
|
||||
$EMPLOYER$.highest_held_title_tier <= tier_duchy
|
||||
$EMPLOYER$ = { government_has_flag = government_is_nomadic }
|
||||
}
|
||||
$EMPLOYER$.highest_held_title_tier <= $LAAMP$.prestige_level
|
||||
$EMPLOYER$ = { is_contact_of = $LAAMP$ }
|
||||
}
|
||||
}
|
||||
$EMPLOYER$ = {
|
||||
# Players shouldn't get tangled up in contracts, ever.
|
||||
is_ai = yes
|
||||
# Plus some standard stuff.
|
||||
is_alive = yes
|
||||
is_adult = yes
|
||||
NOT = { government_has_flag = government_is_herder }
|
||||
}
|
||||
$EMPLOYER$ = { is_incapable = no }
|
||||
# Laamps shouldn't offer contracts in their local area, ever.
|
||||
$EMPLOYER$ = {
|
||||
OR = {
|
||||
employer = $LAAMP$
|
||||
NOT = { government_has_flag = government_is_landless_adventurer }
|
||||
}
|
||||
}
|
||||
# Don't offer to work with those who've wronged us.
|
||||
## No one we're at war with.
|
||||
$EMPLOYER$ = {
|
||||
NOT = { is_at_war_with = $LAAMP$ }
|
||||
}
|
||||
## Rivals are cheap to avoid.
|
||||
$EMPLOYER$ = {
|
||||
NOT = { has_relation_rival = $LAAMP$ }
|
||||
}
|
||||
## Expulsion
|
||||
$EMPLOYER$ = {
|
||||
custom_tooltip = {
|
||||
text = adventurer_expelled_trigger_tt
|
||||
NOR = {
|
||||
reverse_has_opinion_modifier = {
|
||||
target = $LAAMP$
|
||||
modifier = demanded_eviction_opinion
|
||||
}
|
||||
any_liege_or_above = {
|
||||
reverse_has_opinion_modifier = {
|
||||
target = $LAAMP$
|
||||
modifier = demanded_eviction_opinion
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$LAAMP$ = { government_has_flag = government_is_landless_adventurer }
|
||||
$LAAMP$ = {
|
||||
trigger_if = {
|
||||
limit = { is_at_war = no }
|
||||
is_commanding_army = no
|
||||
}
|
||||
}
|
||||
# If we're looking at the player, make sure there's no uhh... weird legacies between us.
|
||||
$LAAMP$ = {
|
||||
trigger_if = {
|
||||
limit = { is_ai = no }
|
||||
NOR = {
|
||||
has_any_major_negative_opinion_against_character_trigger = { CHARACTER = $EMPLOYER$ }
|
||||
$EMPLOYER$ = {
|
||||
has_any_major_negative_opinion_against_character_trigger = { CHARACTER = $LAAMP$ }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# triggers that prevent you from only accepting the contract
|
||||
valid_laamp_basic_accept_only_trigger = {
|
||||
is_imprisoned = no
|
||||
}
|
||||
|
||||
# Should this employer be putting this out for tender?
|
||||
## Naturally, if they're being becrimed, we don't care about this.
|
||||
employer_has_treasury_to_offer_job_trigger = {
|
||||
trigger_if = {
|
||||
limit = { is_ai = no }
|
||||
scope:employer.gold >= 50
|
||||
}
|
||||
}
|
||||
|
||||
# Does it make sense that this employer offers this contract to start with?
|
||||
## So we don't penalise you if their circumstances change beyond your control, but _also_ so that there aren't local job listings going up in Middlesex for someone currently pilgrimaging in Jerusalem.
|
||||
valid_laamp_sensible_start_trigger = {
|
||||
scope:employer = {
|
||||
is_travelling = no
|
||||
is_in_army = no
|
||||
is_imprisoned = no
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
any_character_task_contract = {
|
||||
count >= 1
|
||||
task_contract_employer = scope:employer
|
||||
}
|
||||
}
|
||||
always = no
|
||||
}
|
||||
}
|
||||
|
||||
# Prevent inappropriate characters, like the Byzantine Emperor or the Sunni Caliph, from giving contracts that'd seem beneath them.
|
||||
## This isn't a comment on whether they _would_ (or even did) put out such things, more just trying to preserve verisimilitude.
|
||||
rule_out_dramatic_laamp_employers_trigger = {
|
||||
scope:employer = {
|
||||
NOR = {
|
||||
faith.religious_head ?= this
|
||||
highest_held_title_tier >= tier_empire
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# We do not spawn contracts in the Sahara without the right CulTrad.
|
||||
lock_contracts_from_spawning_in_sahara_trigger = {
|
||||
OR = {
|
||||
NOT = {
|
||||
location = { geographical_region = custom_sahara_proper }
|
||||
}
|
||||
culture = { has_cultural_tradition = tradition_saharan_nomads }
|
||||
}
|
||||
}
|
||||
|
||||
# How far do we have to travel (or to where) before we start spawning more contracts to play with?
|
||||
player_adventurer_sufficient_distance_for_contract_spawn_trigger = {
|
||||
is_ai = no
|
||||
save_temporary_scope_as = char_temp
|
||||
OR = {
|
||||
# Either we've moved to a neighbouring kingdom that we've not been to recently.
|
||||
AND = {
|
||||
location.kingdom = { save_temporary_scope_as = kingdom_temp }
|
||||
NOT = {
|
||||
is_target_in_variable_list = {
|
||||
name = laamp_recently_visited_kingdoms
|
||||
target = scope:kingdom_temp
|
||||
}
|
||||
}
|
||||
}
|
||||
# Or we've travelled some distance.
|
||||
trigger_if = {
|
||||
limit = { exists = scope:char_temp.current_travel_plan }
|
||||
"location.squared_distance(scope:char_temp.current_travel_plan.departure_location)" >= squared_distance_medium
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Would this employer have some trait that means they don't want to see/don't trust strangers?
|
||||
laamp_task_contract_employer_not_antisocial_trigger = {
|
||||
scope:employer = {
|
||||
NOR = {
|
||||
has_trait = shy
|
||||
has_trait = paranoid
|
||||
has_trait = cynical
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Would this employer have someone executed or hurt without (what passes for in-period as) a fair trial?
|
||||
laamp_task_contract_employer_would_resort_to_violence_trigger = {
|
||||
scope:employer = {
|
||||
NOT = { has_trait = compassionate }
|
||||
}
|
||||
}
|
||||
|
||||
# Would this employer happily tell a lie or manipulate someone if they at least had a good reason?
|
||||
laamp_task_contract_employer_would_resort_to_deceit_trigger = {
|
||||
scope:employer = {
|
||||
NOT = { has_trait = honest }
|
||||
}
|
||||
}
|
||||
|
||||
# Would this employer go grubbing for money they're owed?
|
||||
laamp_task_contract_employer_would_chase_money_trigger = {
|
||||
scope:employer = {
|
||||
NOR = {
|
||||
has_trait = generous
|
||||
has_trait = improvident
|
||||
# Compassionates avoid this unless they're also greedy.
|
||||
AND = {
|
||||
has_trait = compassionate
|
||||
NOT = { has_trait = greedy }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Check to see if it's appropriate to apply a county modifier — basically, don't let barons putting out contracts apply modifiers to players.
|
||||
contract_employer_can_apply_county_modifier_trigger = {
|
||||
OR = {
|
||||
highest_held_title_tier >= tier_county
|
||||
liege = { is_ai = yes }
|
||||
}
|
||||
}
|
||||
|
||||
# Could this potential rival be removed without unexpectedly affecting a player?
|
||||
laamp_base_0011_valid_potential_rival_trigger = {
|
||||
# Exempt players.
|
||||
NOT = {
|
||||
this = { is_ai = no }
|
||||
}
|
||||
}
|
||||
|
||||
# Search for counties that could be affected by the modifiers we apply at the conclusion of the contract.
|
||||
laamp_base_1001_valid_neighbouring_county_trigger = {
|
||||
holder = root.task_contract_employer
|
||||
county_control < full_county_control
|
||||
}
|
||||
|
||||
laamp_base_2001_valid_mayor_trigger = {
|
||||
highest_held_title_tier = tier_barony
|
||||
government_has_flag = government_is_special_republic
|
||||
NOT = { is_close_or_extended_family_of = scope:employer }
|
||||
}
|
||||
|
||||
laamp_base_3001_valid_neighbours_trigger = {
|
||||
NOR = {
|
||||
# Don't collect intelligence on people we trust.
|
||||
has_any_moderate_good_relationship_with_character_trigger = { CHARACTER = $EMPLOYER$ }
|
||||
is_allied_to = $EMPLOYER$
|
||||
# Or on people we're currently at war with — it's a little late for court whispers.
|
||||
is_at_war_with = $EMPLOYER$
|
||||
}
|
||||
is_adult = yes
|
||||
is_incapable = no
|
||||
is_imprisoned = no
|
||||
}
|
||||
|
||||
# used in task contracts triggered from council tasks to check if employer and their liege or councillor are valid to issue a contract for you
|
||||
# COUNCILLOR_TYPE = councillor type name
|
||||
# COUNCIL_TASK_TYPE = council task type name
|
||||
council_task_contract_valid_employer_trigger = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
NOT = { exists = scope:laamp }
|
||||
}
|
||||
save_temporary_scope_as = laamp
|
||||
}
|
||||
valid_laamp_basic_trigger = {
|
||||
EMPLOYER = scope:employer
|
||||
LAAMP = scope:laamp
|
||||
}
|
||||
custom_tooltip = {
|
||||
text = councillor_leaving_court_message_title
|
||||
scope:employer = {
|
||||
OR = {
|
||||
AND = {
|
||||
cp:$COUNCILLOR_TYPE$ ?= {
|
||||
is_performing_council_task = $COUNCIL_TASK_TYPE$
|
||||
}
|
||||
valid_laamp_basic_trigger = {
|
||||
EMPLOYER = scope:employer.cp:$COUNCILLOR_TYPE$
|
||||
LAAMP = scope:laamp
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
is_performing_council_task = $COUNCIL_TASK_TYPE$
|
||||
valid_laamp_basic_trigger = {
|
||||
EMPLOYER = scope:employer.liege
|
||||
LAAMP = scope:laamp
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Travel Triggers
|
||||
|
||||
is_laamp_exiled_from_province_trigger = {
|
||||
$PROVINCE$.county.holder = {
|
||||
is_laamp_exiled_from_holder_or_liege_trigger = { LAAMP = $LAAMP$ }
|
||||
}
|
||||
}
|
||||
|
||||
is_laamp_exiled_from_holder_or_liege_trigger = {
|
||||
OR = {
|
||||
AND = {
|
||||
save_temporary_scope_as = char_temp
|
||||
$LAAMP$ = {
|
||||
has_opinion_modifier = {
|
||||
target = scope:char_temp
|
||||
modifier = demanded_eviction_opinion
|
||||
}
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
any_liege_or_above = {
|
||||
save_temporary_scope_as = char_temp
|
||||
$LAAMP$ = {
|
||||
has_opinion_modifier = {
|
||||
target = scope:char_temp
|
||||
modifier = demanded_eviction_opinion
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Event Triggers
|
||||
|
||||
# Do we want this character to occur in events around camp more frequently?
|
||||
is_valid_active_event_recurrer_trigger = {
|
||||
is_ai = yes
|
||||
is_courtier_of = $LIEGE$
|
||||
is_healthy = yes
|
||||
OR = {
|
||||
has_any_court_position = yes
|
||||
is_close_or_extended_family_of = $LIEGE$
|
||||
is_consort_of = $LIEGE$
|
||||
has_important_relationship_with_character_trigger = { CHARACTER = $LIEGE$ }
|
||||
}
|
||||
}
|
||||
|
||||
valid_laamp_contract_foe_trigger = {
|
||||
# Make sure they're at home if possible.
|
||||
NOR = {
|
||||
is_travelling = yes
|
||||
is_commanding_army = yes
|
||||
is_imprisoned = no
|
||||
}
|
||||
# Good sensible restrictions on mutual relationships.
|
||||
OR = {
|
||||
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:employer_ref }
|
||||
# Ensure a bit of mild dislike.
|
||||
reverse_opinion = {
|
||||
target = scope:employer_ref
|
||||
value <= -25
|
||||
}
|
||||
opinion = {
|
||||
target = scope:employer_ref
|
||||
value <= -25
|
||||
}
|
||||
}
|
||||
NOR = {
|
||||
# Filter out anything that might look odd.
|
||||
has_any_good_relationship_with_character_trigger = { CHARACTER = scope:employer_ref }
|
||||
# Plus don't include anything connected to a player.
|
||||
save_temporary_scope_as = char_temp
|
||||
any_player = {
|
||||
OR = {
|
||||
this = scope:char_temp
|
||||
is_close_or_extended_family_of = scope:char_temp
|
||||
is_consort_of = scope:char_temp
|
||||
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:char_temp }
|
||||
has_any_good_relationship_with_character_trigger = { CHARACTER = scope:char_temp }
|
||||
}
|
||||
}
|
||||
}
|
||||
# And check their location is valid.
|
||||
location = {
|
||||
# Which means making sure that they're not located too far away from our contractor.
|
||||
"squared_distance(root.task_contract_taker.location)" <= squared_distance_large
|
||||
# And that they're not located in the exact same province, else travel logic'll break.
|
||||
NOT = { this = scope:employer_ref.location }
|
||||
}
|
||||
}
|
||||
|
||||
has_any_landed_title_trigger = {
|
||||
any_held_title = {
|
||||
NOR = {
|
||||
is_noble_family_title = yes
|
||||
is_landless_type_title = yes
|
||||
has_variable = adventurer_creation_reason
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Toggle on tally logging for laamp events, so we can see how often they're firing for a single run test.
|
||||
enable_debug_laamp_event_logging_toggle_trigger = { always = no }
|
||||
|
||||
# Can the AI create a new laamp without threatening performance?
|
||||
## Beware of expanding this past the soft-cap figure of around ~200: code estimations were made with this number in mind, so the more we let slip the net, the more they'll start to degrade performance.
|
||||
### YOU HAVE BEEN WARNED.
|
||||
ai_can_valid_to_create_laamp_trigger = {
|
||||
save_temporary_scope_as = char_temp
|
||||
OR = {
|
||||
# General checking.
|
||||
NOT = { has_global_variable_list = laamps_tally }
|
||||
global_variable_list_size = {
|
||||
name = laamps_tally
|
||||
value < max_desired_laamps_value
|
||||
}
|
||||
# Player-relevant.
|
||||
any_player = {
|
||||
OR = {
|
||||
is_close_or_extended_family_of = scope:char_temp
|
||||
is_consort_of = scope:char_temp
|
||||
has_important_relationship_with_character_trigger = { CHARACTER = scope:char_temp }
|
||||
is_allied_in_war = scope:char_temp
|
||||
is_allied_to = scope:char_temp
|
||||
is_at_war_with = scope:char_temp
|
||||
}
|
||||
}
|
||||
# Encourage legitimists.
|
||||
AND = {
|
||||
any_claim = { tier >= tier_kingdom }
|
||||
global_variable_list_size = {
|
||||
name = laamps_tally
|
||||
value < {
|
||||
value = max_desired_laamps_value
|
||||
multiply = 1.25
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Decisions Triggers
|
||||
|
||||
# We want to refer to this in two places, is_shown and is_valid, within its decision so that we can explain where it's come from.
|
||||
can_access_reject_inheritance_decision_trigger = {
|
||||
OR = {
|
||||
has_trait = content
|
||||
has_perk = carefree_perk
|
||||
is_landless_adventurer = yes
|
||||
}
|
||||
}
|
||||
|
||||
# Would this character lose opinion with you if you declared "screw that" to your family's titular duties?
|
||||
would_judge_new_gallivanters_trigger = {
|
||||
NOR = {
|
||||
# Traits that innately get it.
|
||||
has_trait = gallivanter
|
||||
has_trait = content
|
||||
# Traits that probably get it if the situation merits it.
|
||||
calc_true_if = {
|
||||
amount >= 2
|
||||
has_trait = compassionate
|
||||
has_trait = lazy
|
||||
has_trait = humble
|
||||
has_trait = eccentric
|
||||
}
|
||||
}
|
||||
is_adult = yes
|
||||
}
|
||||
|
||||
butcher_animals_decision_available_dogs_trigger = {
|
||||
OR = {
|
||||
custom_tooltip = {
|
||||
text = butcher_animals_decision.tt.dog.you
|
||||
has_character_modifier = dog_story_modifier
|
||||
}
|
||||
custom_tooltip = {
|
||||
text = butcher_animals_decision.tt.dog.courtier
|
||||
any_courtier = { has_character_modifier = dog_story_modifier }
|
||||
}
|
||||
domicile = { has_domicile_building = baggage_train_kennel }
|
||||
}
|
||||
# Only show the cooldown flag if we already have it, so make our tooltips neater.
|
||||
trigger_if = {
|
||||
limit = { has_character_flag = recently_ate_dogs }
|
||||
custom_tooltip = {
|
||||
text = butcher_animals_decision.tt.recently_ate_dogs
|
||||
NOT = { has_character_flag = recently_ate_dogs }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
butcher_animals_decision_available_cats_trigger = {
|
||||
OR = {
|
||||
custom_tooltip = {
|
||||
text = butcher_animals_decision.tt.cat.you
|
||||
has_character_modifier = cat_story_modifier
|
||||
}
|
||||
custom_tooltip = {
|
||||
text = butcher_animals_decision.tt.cat.courtier
|
||||
any_courtier = { has_character_modifier = cat_story_modifier }
|
||||
}
|
||||
}
|
||||
# Only show the cooldown flag if we already have it, so make our tooltips neater.
|
||||
trigger_if = {
|
||||
limit = { has_character_flag = recently_ate_cats }
|
||||
custom_tooltip = {
|
||||
text = butcher_animals_decision.tt.recently_ate_cats
|
||||
NOT = { has_character_flag = recently_ate_cats }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
butcher_animals_decision_available_horses_trigger = {
|
||||
OR = {
|
||||
custom_tooltip = {
|
||||
text = butcher_animals_decision.tt.horse.you
|
||||
has_character_modifier = horse_story_modifier
|
||||
}
|
||||
domicile = { has_domicile_building = baggage_train_ample_steeds }
|
||||
}
|
||||
# Only show the cooldown flag if we already have it, so make our tooltips neater.
|
||||
trigger_if = {
|
||||
limit = { has_character_flag = recently_ate_horses }
|
||||
custom_tooltip = {
|
||||
text = butcher_animals_decision.tt.recently_ate_horses
|
||||
NOT = { has_character_flag = recently_ate_horses }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
butcher_animals_decision_available_elephants_trigger = {
|
||||
domicile = { has_domicile_building = proving_grounds_elephantry_reserve }
|
||||
# Only show the cooldown flag if we already have it, so make our tooltips neater.
|
||||
trigger_if = {
|
||||
limit = { has_character_flag = recently_ate_elephants }
|
||||
custom_tooltip = {
|
||||
text = butcher_animals_decision.tt.recently_ate_elephants
|
||||
NOT = { has_character_flag = recently_ate_elephants }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
laamp_youth_cultural_tradition_trigger = {
|
||||
has_global_variable_list = laamps_tally
|
||||
global_variable_list_size = {
|
||||
name = laamps_tally
|
||||
value < {
|
||||
value = max_desired_laamps_value
|
||||
add = 10
|
||||
}
|
||||
}
|
||||
culture = {
|
||||
OR = {
|
||||
has_cultural_parameter = much_more_likely_to_be_laamps
|
||||
has_cultural_parameter = more_likely_to_be_laamps
|
||||
}
|
||||
}
|
||||
any_close_or_extended_family_member = {
|
||||
is_ruler = yes
|
||||
}
|
||||
is_lowborn = no
|
||||
is_ruler = no
|
||||
is_ai = yes
|
||||
OR = {
|
||||
AND = {
|
||||
exists = liege
|
||||
can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = liege }
|
||||
}
|
||||
AND = {
|
||||
is_male = yes
|
||||
faith_dominant_gender_male_or_equal = yes
|
||||
}
|
||||
AND = {
|
||||
is_female = yes
|
||||
faith_dominant_gender_female_or_equal = yes
|
||||
}
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
exists = liege
|
||||
}
|
||||
liege = {
|
||||
is_landless_adventurer = no
|
||||
is_ai = yes
|
||||
}
|
||||
}
|
||||
NOT = {
|
||||
any_heir_title = {
|
||||
count >= 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -66,6 +66,7 @@ realm_law_use_crown_authority = {
|
|||
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 = {
|
||||
|
|
@ -77,7 +78,11 @@ realm_law_use_camp_purpose = {
|
|||
}
|
||||
|
||||
realm_law_use_imperial_bureaucracy = {
|
||||
has_government = administrative_government
|
||||
government_has_flag = government_is_administrative
|
||||
}
|
||||
|
||||
realm_law_use_nomadic_authority = {
|
||||
government_has_flag = government_is_nomadic
|
||||
}
|
||||
|
||||
can_have_confederate_partition_succession_law_trigger = {
|
||||
|
|
@ -158,9 +163,7 @@ can_have_high_partition_succession_law_trigger = {
|
|||
}
|
||||
custom_description = {
|
||||
text = succession_laws_must_have_organised_government_tooltip
|
||||
OR = {
|
||||
government_has_flag = government_is_feudal
|
||||
}
|
||||
government_has_flag = government_is_feudal
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -183,14 +186,34 @@ can_have_single_heir_succession_law_trigger = {
|
|||
has_innovation = innovation_primogeniture
|
||||
}
|
||||
# Non-tribals only
|
||||
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 = { # 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
|
||||
}
|
||||
}
|
||||
}
|
||||
NOT = { has_government = administrative_government }
|
||||
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 = {
|
||||
|
|
@ -211,14 +234,34 @@ can_have_single_heir_youngest_succession_law_trigger = {
|
|||
has_innovation = innovation_primogeniture
|
||||
}
|
||||
# Non-tribals only
|
||||
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 = { # 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
|
||||
}
|
||||
}
|
||||
}
|
||||
NOT = { has_government = administrative_government }
|
||||
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 = {
|
||||
|
|
@ -261,7 +304,7 @@ can_have_single_heir_dynasty_house_trigger = {
|
|||
government_has_flag = government_is_clan
|
||||
}
|
||||
}
|
||||
NOT = { has_government = administrative_government }
|
||||
NOT = { government_has_flag = government_is_administrative }
|
||||
}
|
||||
|
||||
can_have_bishop_theocratic_succession_law_trigger = {
|
||||
|
|
@ -290,28 +333,26 @@ can_have_mercenary_succession_law_trigger = {
|
|||
}
|
||||
|
||||
can_have_city_succession_law_trigger = {
|
||||
government_has_flag = government_is_republic
|
||||
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 = {
|
||||
OR = {
|
||||
AND = {
|
||||
holder ?= {
|
||||
OR = {
|
||||
has_realm_law = single_heir_succession_law
|
||||
holder = {
|
||||
can_have_high_partition_succession_law_trigger = yes
|
||||
}
|
||||
can_have_high_partition_succession_law_trigger = yes
|
||||
}
|
||||
AND = {
|
||||
OR = {
|
||||
has_realm_law = high_partition_succession_law
|
||||
holder = {
|
||||
can_have_high_partition_succession_law_trigger = yes
|
||||
}
|
||||
can_have_high_partition_succession_law_trigger = yes
|
||||
}
|
||||
AND = {
|
||||
OR = {
|
||||
has_realm_law = partition_succession_law
|
||||
holder = {
|
||||
can_have_confederate_partition_succession_law_trigger = yes
|
||||
}
|
||||
can_have_confederate_partition_succession_law_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -330,7 +371,7 @@ can_pass_law_ca3_trigger = {
|
|||
|
||||
can_have_acclamation_succession_law_trigger = {
|
||||
has_ep3_dlc_trigger = yes
|
||||
has_government = administrative_government
|
||||
government_has_flag = government_is_administrative
|
||||
is_independent_ruler = yes
|
||||
}
|
||||
|
||||
|
|
@ -342,7 +383,7 @@ can_keep_acclamation_succession_law_trigger = {
|
|||
}
|
||||
OR = {
|
||||
can_have_acclamation_succession_law_trigger = yes
|
||||
has_title = title:e_britannia
|
||||
has_title = title:e_byzantium
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -350,3 +391,23 @@ can_keep_acclamation_succession_law_trigger = {
|
|||
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
|
||||
}
|
||||
|
|
|
|||
129
common/scripted_triggers/00_legal_triggers.txt
Normal file
129
common/scripted_triggers/00_legal_triggers.txt
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
|
||||
### Legal trigger list
|
||||
|
||||
opposes_succession_law_change_trigger = {
|
||||
is_imprisoned = no
|
||||
opinion = {
|
||||
target = liege
|
||||
value < 0
|
||||
}
|
||||
custom_description = {
|
||||
text = law_change_approval_is_cowed
|
||||
has_dread_level_towards = {
|
||||
target = liege
|
||||
level < 2
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
can_change_succession_laws_realm_flag_trigger = {
|
||||
trigger_if = {
|
||||
limit = { realm_law_use_tribal_authority = yes }
|
||||
custom_description = {
|
||||
text = "has_tribal_law_allowing_succession_law_change"
|
||||
has_realm_law_flag = can_change_succession_laws
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = { realm_law_use_imperial_bureaucracy = yes }
|
||||
custom_description = {
|
||||
text = has_imperial_bureaucracy_law_allowing_succession_law_change
|
||||
has_realm_law_flag = can_change_succession_laws
|
||||
}
|
||||
}
|
||||
trigger_else = {
|
||||
custom_description = {
|
||||
text = "has_crown_law_allowing_succession_law_change"
|
||||
has_realm_law_flag = can_change_succession_laws
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
can_change_succession_law_trigger = {
|
||||
can_change_succession_laws_realm_flag_trigger = yes
|
||||
custom_description = {
|
||||
text = "no_powerful_vassal_with_negative_opinion"
|
||||
NOT = {
|
||||
any_vassal = {
|
||||
is_powerful_vassal = yes
|
||||
opposes_succession_law_change_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
can_change_single_heir_dynasty_house_succession_law_trigger = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
culture = { has_cultural_pillar = heritage_west_slavic }
|
||||
NOT = {
|
||||
has_realm_law_flag = can_change_succession_laws
|
||||
}
|
||||
}
|
||||
culture = {
|
||||
has_innovation = innovation_table_of_princes
|
||||
}
|
||||
}
|
||||
can_change_succession_laws_realm_flag_trigger = yes
|
||||
custom_description = {
|
||||
text = "no_powerful_vassal_with_negative_opinion"
|
||||
NOT = {
|
||||
any_vassal = {
|
||||
is_powerful_vassal = yes
|
||||
opposes_succession_law_change_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
can_change_to_equal_succession_law_trigger = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
NOT = { has_realm_law_flag = can_change_succession_laws }
|
||||
}
|
||||
OR = {
|
||||
culture = { has_cultural_parameter = gender_equal_inheritance }
|
||||
faith = { has_doctrine = doctrine_gender_equal }
|
||||
}
|
||||
}
|
||||
can_change_succession_laws_realm_flag_trigger = yes
|
||||
custom_description = {
|
||||
text = "no_powerful_vassal_with_negative_opinion"
|
||||
NOT = {
|
||||
any_vassal = {
|
||||
is_powerful_vassal = yes
|
||||
opposes_succession_law_change_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
can_change_partition_succession_law_trigger = {
|
||||
custom_description = {
|
||||
text = "has_law_allowing_partition_succession_law_change"
|
||||
OR = {
|
||||
has_realm_law_flag = can_change_partition_succession_laws
|
||||
has_realm_law_flag = can_change_succession_laws
|
||||
}
|
||||
}
|
||||
custom_description = {
|
||||
text = "no_powerful_vassal_with_negative_opinion"
|
||||
NOT = {
|
||||
any_vassal = {
|
||||
is_powerful_vassal = yes
|
||||
opposes_succession_law_change_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
can_designate_heir_trigger = {
|
||||
custom_description = {
|
||||
text = "has_law_allowing_designate_heir"
|
||||
has_realm_law_flag = can_designate_heirs
|
||||
}
|
||||
}
|
||||
|
||||
can_change_title_law_trigger = {
|
||||
is_at_war = no
|
||||
}
|
||||
87
common/scripted_triggers/00_lifestyle_perk_triggers.txt
Normal file
87
common/scripted_triggers/00_lifestyle_perk_triggers.txt
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
|
||||
# Triggers used in events and actions caused by Lifestyle Perks
|
||||
|
||||
|
||||
# extortion_powerful_vassal_trigger: Is this powerful vassal available for extortion?
|
||||
# extortion_county_trigger: Is this County available for extortion?
|
||||
# extortion_theocratic_vassal_trigger: Is this Theocratic Vassal available for extortion?
|
||||
|
||||
extortion_powerful_vassal_trigger = {
|
||||
is_available_ai_adult = yes
|
||||
NOR = {
|
||||
has_variable = was_recently_extorted
|
||||
has_opinion_modifier = {
|
||||
target = root
|
||||
modifier = extorted_me_opinion
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extortion_county_trigger = {
|
||||
tier = tier_county
|
||||
NOT = { this = root.capital_county }
|
||||
county_control >= medium_county_control
|
||||
NOR = {
|
||||
has_county_modifier = county_extorted_modifier
|
||||
has_variable = was_recently_extorted
|
||||
}
|
||||
}
|
||||
|
||||
extortion_theocratic_vassal_trigger = {
|
||||
is_available_ai_adult = yes
|
||||
government_has_flag = government_is_theocracy
|
||||
NOR = {
|
||||
has_variable = was_recently_extorted
|
||||
has_opinion_modifier = {
|
||||
target = root
|
||||
modifier = extorted_me_opinion
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extortion_vassal_at_large_trigger = {
|
||||
is_available_ai_adult = yes
|
||||
NOR = {
|
||||
has_variable = was_recently_extorted
|
||||
has_opinion_modifier = {
|
||||
target = root
|
||||
modifier = extorted_me_opinion
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extortion_courtier_representative_trigger = {
|
||||
is_available_ai_adult = yes
|
||||
NOR = {
|
||||
is_close_family_of = root
|
||||
has_variable = was_recently_extorted
|
||||
has_opinion_modifier = {
|
||||
target = root
|
||||
modifier = extorted_me_opinion
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# We use a trigger so this can be enabled elsewhere easily.
|
||||
can_challenge_rival_to_single_combat_trigger = {
|
||||
# Enabling perks.
|
||||
OR = {
|
||||
has_perk = stalwart_leader_perk
|
||||
culture = { has_cultural_parameter = can_duel_rivals }
|
||||
government_has_flag = government_is_nomadic
|
||||
}
|
||||
}
|
||||
|
||||
rival_single_combat_shown_and_not_invalid_trigger = {
|
||||
# Scope:actor must be able to fight personally.
|
||||
scope:actor = { can_start_single_combat_trigger = yes }
|
||||
# Scope:actor cannot challenge someone they have a ceasefire against.
|
||||
scope:actor = {
|
||||
NOT = { has_truce = scope:recipient }
|
||||
}
|
||||
# Scope:actor *definitely* cannot challenge someone they're at war with.
|
||||
scope:actor = {
|
||||
NOT = { is_at_war_with = scope:recipient }
|
||||
}
|
||||
}
|
||||
413
common/scripted_triggers/00_lifestyle_triggers.txt
Normal file
413
common/scripted_triggers/00_lifestyle_triggers.txt
Normal file
|
|
@ -0,0 +1,413 @@
|
|||
# can_start_new_lifestyle_tree_trigger
|
||||
# lifestyle_friend_trigger
|
||||
|
||||
|
||||
can_start_new_lifestyle_tree_trigger = {
|
||||
OR = {
|
||||
NOR = {
|
||||
has_perk = benevolent_intent_perk
|
||||
has_perk = firm_hand_perk
|
||||
}
|
||||
has_perk = august_perk
|
||||
has_focus_diplomacy = no
|
||||
}
|
||||
OR = {
|
||||
NOR = {
|
||||
has_perk = befriend_perk
|
||||
has_perk = familial_familiar_perk
|
||||
}
|
||||
has_perk = family_man_perk
|
||||
has_focus_diplomacy = no
|
||||
}
|
||||
OR = {
|
||||
NOT = { has_perk = thoughtful_perk }
|
||||
has_perk = diplomat_perk
|
||||
has_focus_diplomacy = no
|
||||
}
|
||||
OR = {
|
||||
NOR = {
|
||||
has_perk = dark_insights_perk
|
||||
has_perk = dreadful_perk
|
||||
}
|
||||
has_perk = torturer_perk
|
||||
has_focus_intrigue = no
|
||||
}
|
||||
OR = {
|
||||
NOT = { has_perk = truth_is_relative_perk }
|
||||
has_perk = schemer_perk
|
||||
has_focus_intrigue = no
|
||||
}
|
||||
OR = {
|
||||
NOR = {
|
||||
has_perk = like_weed_in_a_garden_perk
|
||||
has_perk = enticing_opportunity_perk
|
||||
}
|
||||
has_perk = seducer_perk
|
||||
has_focus_intrigue = no
|
||||
}
|
||||
OR = {
|
||||
NOT = { has_perk = anatomical_studies_perk }
|
||||
has_perk = whole_of_body_perk
|
||||
has_focus_learning = no
|
||||
}
|
||||
OR = {
|
||||
NOR = {
|
||||
has_perk = pedagogy_perk
|
||||
has_perk = scientific_perk
|
||||
}
|
||||
has_perk = scholar_perk
|
||||
has_focus_learning = no
|
||||
}
|
||||
OR = {
|
||||
NOT = { has_perk = faithful_perk }
|
||||
has_perk = theologian_perk
|
||||
has_focus_learning = no
|
||||
}
|
||||
OR = {
|
||||
NOT = { has_perk = stalwart_leader_perk }
|
||||
has_perk = gallant_perk
|
||||
has_focus_martial = no
|
||||
}
|
||||
OR = {
|
||||
NOT = { has_perk = serve_the_crown_perk }
|
||||
has_perk = overseer_perk
|
||||
has_focus_martial = no
|
||||
}
|
||||
OR = {
|
||||
NOT = { has_perk = bellum_justum_perk }
|
||||
has_perk = strategist_perk
|
||||
has_focus_martial = no
|
||||
}
|
||||
OR = {
|
||||
NOR = {
|
||||
has_perk = tax_man_perk
|
||||
has_perk = cutting_corners_perk
|
||||
}
|
||||
has_perk = architect_perk
|
||||
has_focus_stewardship = no
|
||||
}
|
||||
OR = {
|
||||
NOT = { has_perk = meritocracy_perk }
|
||||
has_perk = administrator_perk
|
||||
has_focus_stewardship = no
|
||||
}
|
||||
OR = {
|
||||
NOT = { has_perk = golden_obligations_perk }
|
||||
has_perk = avaricious_perk
|
||||
has_focus_stewardship = no
|
||||
}
|
||||
OR = {
|
||||
NOT = { has_perk = mustering_the_troops_perk }
|
||||
has_perk = surveyor_perk
|
||||
has_focus_wanderer = no
|
||||
}
|
||||
OR = {
|
||||
NOT = { has_perk = well_prepared_perk }
|
||||
has_perk = wayfarer_perk
|
||||
has_focus_wanderer = no
|
||||
}
|
||||
OR = {
|
||||
NOR = {
|
||||
has_perk = power_at_home_perk
|
||||
has_perk = mercenary_contacts_perk
|
||||
}
|
||||
has_perk = voyager_perk
|
||||
has_focus_wanderer = no
|
||||
}
|
||||
}
|
||||
|
||||
has_completed_current_lifestyle_trigger = {
|
||||
OR = {
|
||||
AND = {
|
||||
OR = {
|
||||
has_focus = diplomacy_foreign_affairs_focus
|
||||
has_focus = diplomacy_majesty_focus
|
||||
has_focus = diplomacy_family_focus
|
||||
}
|
||||
has_perk = august_perk
|
||||
has_perk = family_man_perk
|
||||
has_perk = diplomat_perk
|
||||
}
|
||||
AND = {
|
||||
OR = {
|
||||
has_focus = intrigue_skulduggery_focus
|
||||
has_focus = intrigue_temptation_focus
|
||||
has_focus = intrigue_intimidation_focus
|
||||
}
|
||||
has_perk = torturer_perk
|
||||
has_perk = schemer_perk
|
||||
has_perk = seducer_perk
|
||||
}
|
||||
AND = {
|
||||
OR = {
|
||||
has_focus = learning_medicine_focus
|
||||
has_focus = learning_scholarship_focus
|
||||
has_focus = learning_theology_focus
|
||||
}
|
||||
has_perk = whole_of_body_perk
|
||||
has_perk = scholar_perk
|
||||
has_perk = theologian_perk
|
||||
}
|
||||
AND = {
|
||||
OR = {
|
||||
has_focus = martial_strategy_focus
|
||||
has_focus = martial_authority_focus
|
||||
has_focus = martial_chivalry_focus
|
||||
}
|
||||
has_perk = gallant_perk
|
||||
has_perk = overseer_perk
|
||||
has_perk = strategist_perk
|
||||
}
|
||||
AND = {
|
||||
OR = {
|
||||
has_focus = stewardship_wealth_focus
|
||||
has_focus = stewardship_domain_focus
|
||||
has_focus = stewardship_duty_focus
|
||||
}
|
||||
has_perk = architect_perk
|
||||
has_perk = administrator_perk
|
||||
has_perk = avaricious_perk
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
has_completed_one_tree_in_current_lifestyle_trigger = {
|
||||
OR = {
|
||||
AND = {
|
||||
OR = {
|
||||
has_focus = diplomacy_foreign_affairs_focus
|
||||
has_focus = diplomacy_majesty_focus
|
||||
has_focus = diplomacy_family_focus
|
||||
}
|
||||
OR = {
|
||||
has_perk = august_perk
|
||||
has_perk = family_man_perk
|
||||
has_perk = diplomat_perk
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
OR = {
|
||||
has_focus = intrigue_skulduggery_focus
|
||||
has_focus = intrigue_temptation_focus
|
||||
has_focus = intrigue_intimidation_focus
|
||||
}
|
||||
OR = {
|
||||
has_perk = torturer_perk
|
||||
has_perk = schemer_perk
|
||||
has_perk = seducer_perk
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
OR = {
|
||||
has_focus = learning_medicine_focus
|
||||
has_focus = learning_scholarship_focus
|
||||
has_focus = learning_theology_focus
|
||||
}
|
||||
OR = {
|
||||
has_perk = whole_of_body_perk
|
||||
has_perk = scholar_perk
|
||||
has_perk = theologian_perk
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
OR = {
|
||||
has_focus = martial_strategy_focus
|
||||
has_focus = martial_authority_focus
|
||||
has_focus = martial_chivalry_focus
|
||||
}
|
||||
OR = {
|
||||
has_perk = gallant_perk
|
||||
has_perk = overseer_perk
|
||||
has_perk = strategist_perk
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
OR = {
|
||||
has_focus = stewardship_wealth_focus
|
||||
has_focus = stewardship_domain_focus
|
||||
has_focus = stewardship_duty_focus
|
||||
}
|
||||
OR = {
|
||||
has_perk = architect_perk
|
||||
has_perk = administrator_perk
|
||||
has_perk = avaricious_perk
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
##############################
|
||||
# LIFESTYLE FRIEND TRIGGERS
|
||||
##############################
|
||||
|
||||
#Trigger to check if a friend is a lifestyle friend
|
||||
lifestyle_friend_trigger = {
|
||||
trigger_if = {
|
||||
limit = { $CHARACTER$ = { is_ai = yes } }
|
||||
OR = {
|
||||
has_focus = $FOCUS$
|
||||
is_ruler = no
|
||||
}
|
||||
}
|
||||
#If a player, check the friend points
|
||||
trigger_else = {
|
||||
$FOCUS$_friend_points > 0
|
||||
}
|
||||
}
|
||||
|
||||
#Is the character available as a potential lifestyle friend for CHARACTER
|
||||
potential_lifestyle_friend_availability_trigger = {
|
||||
lifestyle_friend_trigger = { CHARACTER = $CHARACTER$ FOCUS = $FOCUS$ }
|
||||
basic_is_available_ai = yes
|
||||
NOR = {
|
||||
has_relation_friend = $CHARACTER$
|
||||
has_relation_rival = $CHARACTER$
|
||||
is_at_war_with = $CHARACTER$
|
||||
}
|
||||
is_adult = yes
|
||||
opinion = {
|
||||
target = $CHARACTER$
|
||||
value >= low_negative_opinion
|
||||
}
|
||||
save_temporary_scope_value_as = {
|
||||
name = trigger_focus
|
||||
value = flag:$FOCUS$
|
||||
}
|
||||
trigger_if = {
|
||||
limit = { scope:trigger_focus = flag:intrigue_temptation_focus }
|
||||
NOT = {
|
||||
dislikes_partner_cheating_trigger = { PARTNER = $CHARACTER$ }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
has_focus_martial = {
|
||||
OR = {
|
||||
has_focus = martial_chivalry_focus
|
||||
has_focus = martial_authority_focus
|
||||
has_focus = martial_strategy_focus
|
||||
has_focus = martial_adventurer_focus
|
||||
}
|
||||
}
|
||||
|
||||
has_focus_learning = {
|
||||
OR = {
|
||||
has_focus = learning_theology_focus
|
||||
has_focus = learning_scholarship_focus
|
||||
has_focus = learning_medicine_focus
|
||||
has_focus = learning_adventurer_focus
|
||||
}
|
||||
}
|
||||
|
||||
has_focus_intrigue = {
|
||||
OR = {
|
||||
has_focus = intrigue_intimidation_focus
|
||||
has_focus = intrigue_temptation_focus
|
||||
has_focus = intrigue_skulduggery_focus
|
||||
has_focus = intrigue_adventurer_focus
|
||||
}
|
||||
}
|
||||
|
||||
has_focus_diplomacy = {
|
||||
OR = {
|
||||
has_focus = diplomacy_family_focus
|
||||
has_focus = diplomacy_majesty_focus
|
||||
has_focus = diplomacy_foreign_affairs_focus
|
||||
has_focus = diplomacy_adventurer_focus
|
||||
}
|
||||
}
|
||||
|
||||
has_focus_stewardship = {
|
||||
OR = {
|
||||
has_focus = stewardship_domain_focus
|
||||
has_focus = stewardship_wealth_focus
|
||||
has_focus = stewardship_duty_focus
|
||||
has_focus = stewardship_adventurer_focus
|
||||
}
|
||||
}
|
||||
|
||||
has_focus_wanderer = {
|
||||
OR = {
|
||||
has_focus = wanderer_internal_affairs_focus
|
||||
has_focus = wanderer_journey_focus
|
||||
has_focus = wanderer_destination_focus
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#######################
|
||||
# misc
|
||||
#######################
|
||||
|
||||
has_focus_or_focus_trait_trigger = {
|
||||
save_temporary_scope_value_as = {
|
||||
name = trigger_focus
|
||||
value = flag:$FOCUS$
|
||||
}
|
||||
OR = {
|
||||
has_focus = $FOCUS$
|
||||
trigger_if = {
|
||||
limit = { scope:trigger_focus = flag:diplomacy_foreign_affairs_focus }
|
||||
has_trait = diplomat
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = { scope:trigger_focus = flag:diplomacy_majesty_focus }
|
||||
has_trait = august
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = { scope:trigger_focus = flag:diplomacy_family_focus }
|
||||
has_trait = family_first
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = { scope:trigger_focus = flag:martial_strategy_focus }
|
||||
has_trait = strategist
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = { scope:trigger_focus = flag:martial_authority_focus }
|
||||
has_trait = overseer
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = { scope:trigger_focus = flag:martial_chivalry_focus }
|
||||
has_trait = gallant
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = { scope:trigger_focus = flag:stewardship_wealth_focus }
|
||||
has_trait = avaricious
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = { scope:trigger_focus = flag:stewardship_domain_focus }
|
||||
has_trait = architect
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = { scope:trigger_focus = flag:stewardship_duty_focus }
|
||||
has_trait = administrator
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = { scope:trigger_focus = flag:intrigue_skulduggery_focus }
|
||||
has_trait = schemer
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = { scope:trigger_focus = flag:intrigue_temptation_focus }
|
||||
has_trait = seducer
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = { scope:trigger_focus = flag:intrigue_intimidation_focus }
|
||||
has_trait = torturer
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = { scope:trigger_focus = flag:learning_medicine_focus }
|
||||
has_trait = whole_of_body
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = { scope:trigger_focus = flag:learning_scholarship_focus }
|
||||
has_trait = scholar
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = { scope:trigger_focus = flag:learning_theology_focus }
|
||||
has_trait = theologian
|
||||
}
|
||||
trigger_else = {
|
||||
always = no
|
||||
}
|
||||
}
|
||||
}
|
||||
226
common/scripted_triggers/00_major_decision_triggers.txt
Normal file
226
common/scripted_triggers/00_major_decision_triggers.txt
Normal file
|
|
@ -0,0 +1,226 @@
|
|||
###Accuse the Krstjani of Heresy
|
||||
accuse_krstjani_of_heresy_decision_suitable_krstjani_realm_owner_trigger = {
|
||||
faith = faith:bosnian_church
|
||||
realm_size >= 8
|
||||
primary_title.tier >= tier_duchy
|
||||
}
|
||||
|
||||
###Launch the Hungarian Migration
|
||||
launch_hungarian_migration_ducal_processing_trigger = {
|
||||
#We're currently processing dukes.
|
||||
highest_held_title_tier = tier_duchy
|
||||
#Doesn't hold a valid duchy-tier title in Pannonia.
|
||||
NOT = {
|
||||
any_held_title = {
|
||||
title_capital_county.title_province = { geographical_region = custom_hungary }
|
||||
tier = tier_duchy
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
launch_hungarian_migration_count_processing_trigger = {
|
||||
#Doesn't hold a valid county-tier title in Pannonia.
|
||||
NOT = {
|
||||
any_held_title = {
|
||||
tier = tier_county
|
||||
title_province = { geographical_region = custom_hungary }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
launch_hungarian_migration_sub_vassal_liege_pairing_trigger = {
|
||||
tier = tier_county
|
||||
#Liege should be a suitable duke within Pannonia.
|
||||
holder = scope:receiving_vassal.liege
|
||||
#Double-check that the duke can afford to give a title away.
|
||||
scope:receiving_vassal.liege = {
|
||||
any_held_title = {
|
||||
count >= 2
|
||||
tier = tier_county
|
||||
title_province = { geographical_region = custom_hungary }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
launch_hungarian_migration_direct_vassal_requirements_trigger = {
|
||||
tier = tier_county
|
||||
holder = $INVADER$
|
||||
}
|
||||
|
||||
launch_hungarian_migration_county_is_within_custom_hungary_trigger = {
|
||||
tier = tier_county
|
||||
title_province = { geographical_region = custom_hungary }
|
||||
}
|
||||
|
||||
launch_hungarian_migration_misplaced_count_suitable_liege_trigger = {
|
||||
launch_hungarian_migration_county_is_within_custom_hungary_trigger = yes
|
||||
duchy = {
|
||||
exists = holder
|
||||
holder = {
|
||||
NOT = { this = $INVADER$ }
|
||||
liege = $INVADER$
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Danelaw Triggers
|
||||
|
||||
## Colonial Sides
|
||||
### The decision requires one lowland British party & one colonial Norse party.
|
||||
negotiate_the_danelaw_british_side_trigger = {
|
||||
OR = {
|
||||
culture = { has_cultural_pillar = heritage_west_germanic }
|
||||
culture = { has_cultural_pillar = heritage_brythonic }
|
||||
}
|
||||
NOT = { religion = religion:germanic_religion }
|
||||
}
|
||||
negotiate_the_danelaw_norse_side_trigger = {
|
||||
OR = {
|
||||
culture = { has_cultural_pillar = heritage_north_germanic }
|
||||
culture = culture:norman
|
||||
religion = religion:germanic_religion
|
||||
}
|
||||
}
|
||||
|
||||
## Standard Filters
|
||||
### Does this character meet the basic eligibility requirements?
|
||||
negotiate_the_danelaw_basic_filter_trigger = {
|
||||
# Standard filter checks.
|
||||
is_playable_character = yes
|
||||
exists = dynasty
|
||||
OR = {
|
||||
government_has_flag = government_is_tribal
|
||||
government_has_flag = government_is_feudal
|
||||
government_has_flag = government_is_clan
|
||||
}
|
||||
# Must be one of the two valid sides.
|
||||
OR = {
|
||||
negotiate_the_danelaw_british_side_trigger = yes
|
||||
negotiate_the_danelaw_norse_side_trigger = yes
|
||||
}
|
||||
}
|
||||
negotiate_the_danelaw_additional_filter_trigger = {
|
||||
# Independent only, please.
|
||||
is_independent_ruler = yes
|
||||
# Kings & Emperors are too high a rank to make concessions.
|
||||
highest_held_title_tier <= tier_duchy
|
||||
# Plus, a capital inside title:k_england. Not strictly necessary, but removes *so* many edge-cases.
|
||||
capital_county.kingdom = title:k_england
|
||||
}
|
||||
negotiate_the_danelaw_standard_filter_trigger = {
|
||||
negotiate_the_danelaw_basic_filter_trigger = yes
|
||||
negotiate_the_danelaw_additional_filter_trigger = yes
|
||||
}
|
||||
|
||||
## Valid Opponent
|
||||
### Assuming that we have a character who can take the decision (which has stricter requirements), do they have an opponent to negotiate with?
|
||||
negotiate_the_danelaw_valid_danelaw_opponent_trigger = {
|
||||
# Standard filter checks.
|
||||
negotiate_the_danelaw_standard_filter_trigger = yes
|
||||
# Ensure they match the opposing side.
|
||||
trigger_if = {
|
||||
limit = {
|
||||
root = { negotiate_the_danelaw_british_side_trigger = yes }
|
||||
}
|
||||
negotiate_the_danelaw_norse_side_trigger = yes
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
root = { negotiate_the_danelaw_norse_side_trigger = yes }
|
||||
}
|
||||
negotiate_the_danelaw_british_side_trigger = yes
|
||||
}
|
||||
# Holds a certain amount of de jure counties within k_england.
|
||||
save_temporary_scope_as = valid_opponent
|
||||
title:k_england = {
|
||||
any_in_de_jure_hierarchy = {
|
||||
count >= 10
|
||||
tier = tier_county
|
||||
holder = {
|
||||
OR = {
|
||||
this = scope:valid_opponent
|
||||
any_liege_or_above = { this = scope:valid_opponent }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Favour the Countryside Basques Triggers
|
||||
|
||||
favour_the_countryside_basques_counts_as_basque_trigger = {
|
||||
culture = {
|
||||
OR = {
|
||||
this = culture:basque
|
||||
any_parent_culture = { this = culture:basque }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
## We keep these isolated so that we can maintain easy parity between the decision rationales & the event desc rationales.
|
||||
favour_the_countryside_basques_rationale_negative_piety_level_trigger = {
|
||||
piety_level < low_piety_level
|
||||
}
|
||||
|
||||
favour_the_countryside_basques_rationale_sinful_traits_trigger = {
|
||||
num_sinful_traits >= 2
|
||||
}
|
||||
|
||||
favour_the_countryside_basques_rationale_virtuous_basque_pagan_traits_trigger = {
|
||||
num_virtuous_traits = {
|
||||
value >= favour_the_countryside_basques_decision_basque_pagan_virtues_tally_value
|
||||
faith = faith:basque_pagan
|
||||
}
|
||||
}
|
||||
|
||||
favour_the_countryside_basques_rationale_excommunicated_trigger = {
|
||||
has_trait = excommunicated
|
||||
}
|
||||
|
||||
favour_the_countryside_basques_rationale_naked_cynicism_trigger = {
|
||||
trigger_if = {
|
||||
limit = { is_ai = no }
|
||||
has_trait = cynical
|
||||
}
|
||||
}
|
||||
|
||||
favour_the_countryside_basques_rationale_hof_rivalry_trigger = {
|
||||
AND = {
|
||||
exists = faith.religious_head
|
||||
has_relation_rival = faith.religious_head
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Rebuke Roman Revanchism Triggers
|
||||
|
||||
rebuke_roman_revanchism_counties_controlled_trigger = {
|
||||
holder = {
|
||||
OR = {
|
||||
this = root
|
||||
top_liege = root
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rebuke_roman_revanchism_counties_controlled_by_ere_trigger = {
|
||||
exists = title:e_byzantium.holder
|
||||
holder = {
|
||||
OR = {
|
||||
this = title:e_byzantium.holder
|
||||
top_liege = title:e_byzantium.holder
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rebuke_roman_revanchism_sicily_controls_unlisted_empire_trigger = {
|
||||
highest_held_title_tier >= tier_empire
|
||||
primary_title = {
|
||||
NOR = {
|
||||
this = title:e_italy
|
||||
this = title:e_maghreb
|
||||
}
|
||||
}
|
||||
}
|
||||
612
common/scripted_triggers/00_marriage_triggers.txt
Normal file
612
common/scripted_triggers/00_marriage_triggers.txt
Normal file
|
|
@ -0,0 +1,612 @@
|
|||
####MARRIAGE TRIGGER LIST###
|
||||
|
||||
#GENERAL MARRIAGE TRIGGERS
|
||||
#can_marry_common_trigger
|
||||
#can_marry_trigger
|
||||
#could_marry_character_trigger
|
||||
#can_marry_character_trigger
|
||||
#marriage_between_characters_unlocks_alliance_of_min_tier_trigger
|
||||
#can_become_concubine
|
||||
|
||||
#MARRIAGE INTERACTION TRIGGERS
|
||||
|
||||
#############################
|
||||
# GENERAL MARRIAGE TRIGGERS #
|
||||
#############################
|
||||
|
||||
# Is allowed to marry (current marriage/concubine status ignored)
|
||||
can_marry_common_trigger = {
|
||||
is_alive = yes
|
||||
NOT = { has_trait_with_flag = can_not_marry }
|
||||
|
||||
trigger_if = {
|
||||
limit = {
|
||||
exists = primary_title
|
||||
}
|
||||
NOR = {
|
||||
# Block Mercenaries from marrying or showing up in marriage interactions
|
||||
primary_title = {
|
||||
is_mercenary_company = yes
|
||||
}
|
||||
is_leading_faction_type = peasant_faction
|
||||
is_leading_faction_type = populist_faction
|
||||
government_has_flag = government_is_herder
|
||||
}
|
||||
}
|
||||
|
||||
# Clergy cannot marry if their faith disallows it
|
||||
trigger_if = {
|
||||
limit = {
|
||||
is_clergy = yes
|
||||
}
|
||||
faith = {
|
||||
has_doctrine_parameter = clergy_can_marry
|
||||
}
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
exists = liege.involved_activity.var:tournament_marriage_prize
|
||||
this = liege.involved_activity.var:tournament_marriage_prize
|
||||
}
|
||||
exists = scope:contest_winner
|
||||
}
|
||||
}
|
||||
|
||||
#Can marry right now
|
||||
can_marry_trigger = {
|
||||
can_marry_common_trigger = yes
|
||||
allowed_more_spouses = yes
|
||||
#To account for a person marrying their concubines please use can_marry_character_trigger
|
||||
}
|
||||
|
||||
allowed_to_marry_same_sex_trigger = {
|
||||
has_game_rule = accepted_same_sex_marriage
|
||||
faith = {
|
||||
NOR = {
|
||||
has_doctrine_parameter = homosexuality_shunned
|
||||
has_doctrine_parameter = homosexuality_illegal
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
can_have_children_with = {
|
||||
sex_opposite_of = $CHARACTER$ # Only opposite sex since for now
|
||||
}
|
||||
|
||||
allowed_to_marry_character_gender_trigger = {
|
||||
OR = {
|
||||
AND = {
|
||||
allowed_to_marry_same_sex_trigger = yes
|
||||
sex_same_as = $CHARACTER$
|
||||
}
|
||||
sex_opposite_of = $CHARACTER$
|
||||
}
|
||||
}
|
||||
|
||||
#two characters could potentially marry (does NOT check that they're unmarried)
|
||||
could_marry_character_trigger = {
|
||||
save_temporary_scope_as = can_marry_check
|
||||
can_marry_common_trigger = yes
|
||||
$CHARACTER$ = { can_marry_common_trigger = yes }
|
||||
#Opposite genders if you don't have accepted same-sex marriage game rule enabled and your faith supports it
|
||||
trigger_if = {
|
||||
limit = {
|
||||
$CHARACTER$ = { allowed_to_marry_same_sex_trigger = no }
|
||||
}
|
||||
sex_opposite_of = $CHARACTER$
|
||||
}
|
||||
#Have you recently divorced this character?
|
||||
NOT = {
|
||||
has_opinion_modifier = {
|
||||
modifier = divorced_me_opinion
|
||||
target = $CHARACTER$
|
||||
}
|
||||
}
|
||||
#Faith hostility & consanguinity
|
||||
trigger_if = {
|
||||
limit = { NOT = { is_courtier_of = $CHARACTER$ } } #If you're someone's courtier, your liege can marry you anyway
|
||||
faith = {
|
||||
faith_allows_marriage_consanguinity_trigger = {
|
||||
CHARACTER_1 = scope:can_marry_check
|
||||
CHARACTER_2 = $CHARACTER$
|
||||
}
|
||||
#faith_hostility_level = {
|
||||
# target = $CHARACTER$.faith
|
||||
# value < faith_hostility_prevents_marriage_level
|
||||
#}
|
||||
}
|
||||
}
|
||||
trigger_if = {
|
||||
limit = { $CHARACTER$ = { NOT = { is_courtier_of = scope:can_marry_check } } } #If you're someone's courtier, your liege can marry you anyway
|
||||
$CHARACTER$.faith = {
|
||||
faith_allows_marriage_consanguinity_trigger = {
|
||||
CHARACTER_1 = scope:can_marry_check
|
||||
CHARACTER_2 = $CHARACTER$
|
||||
}
|
||||
#faith_hostility_level = {
|
||||
# target = scope:can_marry_check.faith
|
||||
# value < faith_hostility_prevents_marriage_level
|
||||
#}
|
||||
}
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
any_close_or_extended_family_member = {
|
||||
any_spouse = { this = $CHARACTER$ }
|
||||
}
|
||||
}
|
||||
faith = { has_doctrine = doctrine_consanguinity_unrestricted }
|
||||
$CHARACTER$ = {
|
||||
faith = { has_doctrine = doctrine_consanguinity_unrestricted }
|
||||
NOT = {
|
||||
any_spouse = {
|
||||
is_close_or_extended_family_of = scope:can_marry_check
|
||||
NOT = {
|
||||
faith = { has_doctrine = doctrine_consanguinity_unrestricted }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
# Cannot marry self
|
||||
NOT = {
|
||||
scope:can_marry_check = { is_spouse_of = $CHARACTER$ }
|
||||
}
|
||||
}
|
||||
|
||||
# Same trigger as above with the exception of the recent divorce trigger
|
||||
can_take_as_concubine_character_trigger = {
|
||||
save_temporary_scope_as = can_marry_check
|
||||
can_marry_common_trigger = yes
|
||||
$CHARACTER$ = { can_marry_common_trigger = yes }
|
||||
#Opposite genders if you don't have accepted same-sex marriage game rule enabled and your faith supports it
|
||||
trigger_if = {
|
||||
limit = {
|
||||
$CHARACTER$ = { allowed_to_marry_same_sex_trigger = no }
|
||||
}
|
||||
sex_opposite_of = $CHARACTER$
|
||||
}
|
||||
#Faith hostility & consanguinity
|
||||
trigger_if = {
|
||||
limit = { NOT = { is_courtier_of = $CHARACTER$ } } #If you're someone's courtier, your liege can marry you anyway
|
||||
faith = {
|
||||
faith_allows_marriage_consanguinity_trigger = {
|
||||
CHARACTER_1 = scope:can_marry_check
|
||||
CHARACTER_2 = $CHARACTER$
|
||||
}
|
||||
#faith_hostility_level = {
|
||||
# target = $CHARACTER$.faith
|
||||
# value < faith_hostility_prevents_marriage_level
|
||||
#}
|
||||
}
|
||||
}
|
||||
trigger_if = {
|
||||
limit = { $CHARACTER$ = { NOT = { is_courtier_of = scope:can_marry_check } } } #If you're someone's courtier, your liege can marry you anyway
|
||||
$CHARACTER$.faith = {
|
||||
faith_allows_marriage_consanguinity_trigger = {
|
||||
CHARACTER_1 = scope:can_marry_check
|
||||
CHARACTER_2 = $CHARACTER$
|
||||
}
|
||||
#faith_hostility_level = {
|
||||
# target = scope:can_marry_check.faith
|
||||
# value < faith_hostility_prevents_marriage_level
|
||||
#}
|
||||
}
|
||||
}
|
||||
NOT = {
|
||||
scope:can_marry_check = { is_spouse_of = $CHARACTER$ }
|
||||
}
|
||||
}
|
||||
|
||||
#Two characters are able to marry right now
|
||||
can_marry_character_trigger = {
|
||||
save_temporary_scope_as = can_marry_char_check
|
||||
OR = {
|
||||
AND = {
|
||||
is_betrothed = yes
|
||||
betrothed = $CHARACTER$
|
||||
}
|
||||
AND = {
|
||||
can_marry_trigger = yes
|
||||
$CHARACTER$ = { can_marry_trigger = yes }
|
||||
}
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
$CHARACTER$ = { is_concubine = yes }
|
||||
}
|
||||
$CHARACTER$ = { is_concubine_of = scope:can_marry_char_check }
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
is_concubine = yes
|
||||
}
|
||||
is_concubine_of = $CHARACTER$
|
||||
$CHARACTER$ = { could_marry_character_trigger = { CHARACTER = scope:can_marry_char_check } } #Gender, recent divorce, allowed to marry, no illegal incest etc.} If they're your concubine you're rules are the ones looked at
|
||||
}
|
||||
trigger_else = {
|
||||
could_marry_character_trigger = { CHARACTER = $CHARACTER$ } #Gender, recent divorce, allowed to marry, no illegal incest etc.
|
||||
}
|
||||
}
|
||||
|
||||
#A marriage between MY_CHARACTER and THEIR_CHARACTER would give alliance/would unlock renegotiate alliance for current scope where current scope's ally would be at least TIER
|
||||
marriage_between_characters_unlocks_alliance_of_min_tier_trigger = {
|
||||
save_temporary_scope_as = alliance_unlocker
|
||||
$MY_CHARACTER$ = {
|
||||
OR = {
|
||||
this = scope:alliance_unlocker
|
||||
is_close_family_of = scope:alliance_unlocker
|
||||
}
|
||||
}
|
||||
#todo shouldn't this use yields_alliance trigger
|
||||
$THEIR_CHARACTER$ = {
|
||||
OR = {
|
||||
AND = {
|
||||
is_ruler = yes
|
||||
highest_held_title_tier >= $TIER$
|
||||
}
|
||||
any_close_family_member = {
|
||||
is_ruler = yes
|
||||
highest_held_title_tier >= $TIER$
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
can_become_concubine_of_character_trigger = {
|
||||
is_hostage = no
|
||||
trigger_if = {
|
||||
limit = {
|
||||
NOT = { is_imprisoned_by = $CHARACTER$ }
|
||||
}
|
||||
is_married = no
|
||||
is_betrothed = no
|
||||
is_concubine = no
|
||||
number_of_concubines = 0
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
is_imprisoned_by = $CHARACTER$
|
||||
is_married = yes
|
||||
}
|
||||
NOT = { is_spouse_of = $CHARACTER$ }
|
||||
}
|
||||
NOR = {
|
||||
is_concubine_of = $CHARACTER$
|
||||
has_character_flag = has_been_offered_as_concubine
|
||||
}
|
||||
is_ruler = no
|
||||
is_playable_character = no
|
||||
is_adult = yes
|
||||
could_marry_character_trigger = { CHARACTER = $CHARACTER$ } #Gender, recent divorce, allowed to marry, no illegal incest etc.
|
||||
}
|
||||
|
||||
# Same as above, switching out could_marry_character_trigger for can_take_as_concubine_character_trigger, in order to better inform the player that they cannot take their ex-spouse as a concubine
|
||||
can_become_concubine_of_character_valid_trigger = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
NOT = { is_imprisoned_by = $CHARACTER$ }
|
||||
}
|
||||
is_married = no
|
||||
is_betrothed = no
|
||||
is_concubine = no
|
||||
number_of_concubines = 0
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
is_imprisoned_by = $CHARACTER$
|
||||
is_married = yes
|
||||
}
|
||||
NOT = { is_spouse_of = $CHARACTER$ }
|
||||
}
|
||||
NOR = {
|
||||
is_concubine_of = $CHARACTER$
|
||||
has_character_flag = has_been_offered_as_concubine
|
||||
}
|
||||
is_ruler = no
|
||||
is_playable_character = no
|
||||
is_adult = yes
|
||||
can_take_as_concubine_character_trigger = { CHARACTER = $CHARACTER$ } #Gender, allowed to marry, no illegal incest etc.
|
||||
}
|
||||
|
||||
can_be_offered_as_concubine_to_character_trigger = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
NOT = { is_imprisoned_by = $GIVER$ }
|
||||
}
|
||||
is_married = no
|
||||
is_betrothed = no
|
||||
OR = {
|
||||
is_concubine = no
|
||||
is_concubine_of = $GIVER$
|
||||
}
|
||||
number_of_concubines = 0
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
is_imprisoned_by = $GIVER$
|
||||
is_married = yes
|
||||
}
|
||||
NOR = {
|
||||
is_spouse_of = $CHARACTER$
|
||||
is_spouse_of = $GIVER$
|
||||
}
|
||||
}
|
||||
NOR = {
|
||||
is_concubine_of = $CHARACTER$
|
||||
has_character_flag = has_been_offered_as_concubine
|
||||
}
|
||||
is_ruler = no
|
||||
is_playable_character = no
|
||||
is_adult = yes
|
||||
NOT = {
|
||||
is_theocratic_lessee = yes
|
||||
}
|
||||
could_marry_character_trigger = { CHARACTER = $CHARACTER$ } #Gender, recent divorce, allowed to marry, no illegal incest etc.
|
||||
}
|
||||
|
||||
ready_to_marry_betrothed_trigger = {
|
||||
trigger_if = {
|
||||
limit = { exists = betrothed }
|
||||
is_adult = yes
|
||||
betrothed = { is_adult = yes }
|
||||
}
|
||||
trigger_else = {
|
||||
always = no
|
||||
}
|
||||
}
|
||||
|
||||
#################################
|
||||
# MARRIAGE INTERACTION TRIGGERS #
|
||||
#################################
|
||||
|
||||
marriage_interaction_can_be_picked_trigger = {
|
||||
can_marry_trigger = yes
|
||||
is_imprisoned = no
|
||||
is_hostage = no
|
||||
}
|
||||
|
||||
marriage_interaction_valid_target_trigger = {
|
||||
# Clergy cannot marry if their faith doesn't allow it
|
||||
trigger_if = {
|
||||
limit = {
|
||||
scope:secondary_actor = {
|
||||
is_clergy = yes
|
||||
NOT = {
|
||||
faith = {
|
||||
has_doctrine_parameter = clergy_can_marry
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
custom_description = {
|
||||
text = character_is_clergy_and_cannot_marry
|
||||
subject = scope:secondary_actor
|
||||
object = scope:secondary_recipient
|
||||
scope:secondary_actor = {
|
||||
is_clergy = no
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
scope:secondary_recipient = {
|
||||
is_clergy = yes
|
||||
NOT = {
|
||||
faith = {
|
||||
has_doctrine_parameter = clergy_can_marry
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
custom_description = {
|
||||
text = character_is_clergy_and_cannot_marry
|
||||
subject = scope:secondary_recipient
|
||||
object = scope:secondary_actor
|
||||
scope:secondary_recipient = {
|
||||
is_clergy = no
|
||||
}
|
||||
}
|
||||
}
|
||||
#Marriage
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
scope:secondary_actor = { is_adult = yes }
|
||||
scope:secondary_recipient = { is_adult = yes }
|
||||
}
|
||||
scope:secondary_actor = {
|
||||
custom_description = {
|
||||
text = "can_marry_check_secondary_actor"
|
||||
subject = scope:secondary_actor
|
||||
object = scope:secondary_recipient
|
||||
can_marry_character_trigger = { CHARACTER = scope:secondary_recipient } #Checks marriage status, betrothed, gender, consanguinity, faith hostility etc.
|
||||
}
|
||||
}
|
||||
}
|
||||
#Betrothal
|
||||
trigger_else = {
|
||||
scope:secondary_actor = {
|
||||
custom_description = {
|
||||
text = "can_betroth_check_secondary_actor"
|
||||
subject = scope:secondary_actor
|
||||
object = scope:secondary_recipient
|
||||
can_marry_character_trigger = { CHARACTER = scope:secondary_recipient } #Checks marriage status, betrothed, gender, consanguinity, faith hostility etc.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# If the actor is ai they will not pick a character already considered for concubinage
|
||||
trigger_if = {
|
||||
limit = {
|
||||
scope:actor = { is_ai = yes }
|
||||
}
|
||||
NOR = {
|
||||
scope:secondary_actor = { has_character_flag = has_been_offered_as_concubine }
|
||||
scope:secondary_recipient = { has_character_flag = has_been_offered_as_concubine }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
marriage_interaction_auto_accept_trigger = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
exists = scope:secondary_actor.betrothed
|
||||
scope:secondary_actor = {
|
||||
has_been_promised_grand_wedding = yes
|
||||
}
|
||||
}
|
||||
always = no
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
exists = scope:secondary_actor.betrothed
|
||||
}
|
||||
custom_description = {
|
||||
text = is_betrothed_auto_accept
|
||||
subject = scope:secondary_actor
|
||||
object = scope:secondary_recipient
|
||||
scope:secondary_actor.betrothed = scope:secondary_recipient
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
scope:hook = yes
|
||||
}
|
||||
#Strong hook = 100% accept (unless marrying 1st or 2nd player heir or the ruler and asking for matrilineal/partrilineal resulting in no dynasty children for them)
|
||||
custom_description = {
|
||||
text = "spending_hook"
|
||||
subject = scope:actor
|
||||
object = scope:recipient
|
||||
scope:actor = { has_strong_hook = scope:recipient }
|
||||
scope:recipient = {
|
||||
NAND = {
|
||||
#Secondary recipient can't be recipient or 1st/2nd heir...
|
||||
OR = {
|
||||
this = scope:secondary_recipient
|
||||
player_heir_position = {
|
||||
target = scope:secondary_recipient
|
||||
value <= 2
|
||||
}
|
||||
}
|
||||
#...if the marriage (matrilineal/patrilineal) does not match their gender
|
||||
OR = {
|
||||
scope:secondary_recipient = {
|
||||
is_female = yes
|
||||
NOT = { always = scope:matrilineal }
|
||||
}
|
||||
scope:secondary_recipient = {
|
||||
is_male = yes
|
||||
always = scope:matrilineal
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_else = {
|
||||
always = no
|
||||
}
|
||||
}
|
||||
|
||||
make_concubine_is_shown_trigger = {
|
||||
scope:actor = {
|
||||
allowed_concubines = yes
|
||||
is_adult = yes
|
||||
}
|
||||
scope:recipient = {
|
||||
OR = {
|
||||
is_courtier_of = scope:actor
|
||||
is_imprisoned_by = scope:actor
|
||||
}
|
||||
can_become_concubine_of_character_valid_trigger = { CHARACTER = scope:actor }
|
||||
}
|
||||
}
|
||||
|
||||
make_concubine_is_valid_trigger = {
|
||||
custom_description = {
|
||||
text = take_concubine_allowed_more
|
||||
object = scope:recipient
|
||||
scope:actor = {
|
||||
allowed_more_concubines = yes
|
||||
}
|
||||
}
|
||||
scope:recipient = {
|
||||
custom_tooltip = {
|
||||
text = take_concubine_ex_spouse
|
||||
NOT = {
|
||||
has_opinion_modifier = {
|
||||
modifier = divorced_me_opinion
|
||||
target = scope:actor
|
||||
}
|
||||
}
|
||||
}
|
||||
is_busy_in_events_localised = yes
|
||||
OR = {
|
||||
AND = {
|
||||
is_imprisoned_by = scope:actor
|
||||
is_married = yes
|
||||
}
|
||||
is_married = no
|
||||
}
|
||||
is_hostage = no
|
||||
}
|
||||
}
|
||||
|
||||
marriage_interaction_non_loyal_diarchs_refuse_secondary_marriage_trigger = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
scope:$TARGET$ ?= {
|
||||
is_diarch = yes
|
||||
# We're only concerned about landed rulers, those who might be married out of their own court.
|
||||
is_ruler = no
|
||||
}
|
||||
}
|
||||
custom_tooltip = {
|
||||
text = arrange_marriage_interaction.tt.non_loyal_regents_refuse_to_be_married_off.$TARGET$
|
||||
scope:$TARGET$ = { diarch_loyalty >= diarch_loyalty_visibly_loyal_threshold }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
wants_very_young_wife = {
|
||||
is_female = no
|
||||
is_adult = no
|
||||
}
|
||||
|
||||
wants_young_wife = {
|
||||
is_female = no
|
||||
is_adult = yes
|
||||
age < 30
|
||||
NOT = {
|
||||
any_child = {
|
||||
count >= 2
|
||||
is_alive = yes
|
||||
NOT = { has_trait = bastard }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
will_not_be_very_young_wife = {
|
||||
is_female = yes
|
||||
is_very_young_character = no
|
||||
}
|
||||
|
||||
will_not_be_young_wife = {
|
||||
is_female = yes
|
||||
is_young_character = no
|
||||
}
|
||||
|
||||
will_not_be_fertile_wife = {
|
||||
is_female = yes
|
||||
is_aging_character = yes
|
||||
}
|
||||
|
||||
is_ruler_or_close_family = {
|
||||
OR = {
|
||||
is_ruler = yes
|
||||
any_close_family_member = {
|
||||
even_if_dead = yes
|
||||
is_ruler = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
30
common/scripted_triggers/00_military_triggers.txt
Normal file
30
common/scripted_triggers/00_military_triggers.txt
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
#Triggers handling questions of military and warfare
|
||||
|
||||
#Checks whether scope character has greater military strength than the ratio specified
|
||||
military_strength_greater_than_ratio_trigger = {
|
||||
save_temporary_scope_value_as = {
|
||||
name = ratio
|
||||
|
||||
value = {
|
||||
value = max_military_strength
|
||||
divide = $TARGET$.max_military_strength
|
||||
}
|
||||
}
|
||||
|
||||
scope:ratio > $RATIO$
|
||||
}
|
||||
|
||||
valid_for_maa_trigger = {
|
||||
OR = {
|
||||
AND = {
|
||||
is_landless_adventurer = yes
|
||||
has_perk = planned_cultivation_perk
|
||||
location.county.culture ?= { has_cultural_parameter = $PARAMETER$ }
|
||||
}
|
||||
culture = { has_cultural_parameter = $PARAMETER$ }
|
||||
}
|
||||
}
|
||||
|
||||
valid_for_nomadic_riders_trigger = {
|
||||
government_has_flag = government_is_nomadic
|
||||
}
|
||||
338
common/scripted_triggers/00_opinion_scripted_triggers.txt
Normal file
338
common/scripted_triggers/00_opinion_scripted_triggers.txt
Normal file
|
|
@ -0,0 +1,338 @@
|
|||
##################################################
|
||||
# Positive Opinion Triggers
|
||||
has_good_opinion_of_character_trigger = {
|
||||
opinion = {
|
||||
value >= 25
|
||||
target = $CHARACTER$
|
||||
}
|
||||
}
|
||||
|
||||
has_good_opinion_of_root_trigger = {
|
||||
opinion = {
|
||||
value >= 25
|
||||
target = root
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Negative Opinion Triggers
|
||||
|
||||
has_bad_opinion_of_character_trigger = {
|
||||
opinion = {
|
||||
value <= -25
|
||||
target = $CHARACTER$
|
||||
}
|
||||
}
|
||||
|
||||
has_bad_opinion_of_root_trigger = {
|
||||
opinion = {
|
||||
value <= -25
|
||||
target = root
|
||||
}
|
||||
}
|
||||
|
||||
has_moderate_bad_opinion_of_character_trigger = {
|
||||
opinion = {
|
||||
value <= -50
|
||||
target = $CHARACTER$
|
||||
}
|
||||
}
|
||||
|
||||
has_moderate_bad_opinion_of_root_trigger = {
|
||||
opinion = {
|
||||
value <= -50
|
||||
target = root
|
||||
}
|
||||
}
|
||||
|
||||
has_really_bad_opinion_of_character_trigger = {
|
||||
opinion = {
|
||||
value <= -75
|
||||
target = $CHARACTER$
|
||||
}
|
||||
}
|
||||
|
||||
has_really_bad_opinion_of_root_trigger = {
|
||||
opinion = {
|
||||
value <= -75
|
||||
target = root
|
||||
}
|
||||
}
|
||||
|
||||
# Do I have any prior quarrel with this character?
|
||||
has_any_major_negative_opinion_against_character_trigger = {
|
||||
OR = {
|
||||
has_any_war_opinion_against_character_trigger = { CHARACTER = $CHARACTER$ }
|
||||
has_any_major_revenge_opinion_against_character_trigger = { CHARACTER = $CHARACTER$ }
|
||||
}
|
||||
}
|
||||
|
||||
# Has this character declared war on me close enough that I remember it?
|
||||
has_any_war_opinion_against_character_trigger = {
|
||||
OR = {
|
||||
has_opinion_modifier = {
|
||||
modifier = declared_war
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = declared_war_on_son_daughter
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = vassal_lost_faction_revolt_war
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = vassal_wp_faction_revolt_war
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = peasant_revolt_opinion
|
||||
target = $CHARACTER$
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Did this character do something awful to me or my family?
|
||||
has_any_major_revenge_opinion_against_character_trigger = {
|
||||
OR = {
|
||||
has_opinion_modifier = {
|
||||
modifier = imprisoned_me
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = banished_me
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = demanded_taking_vows
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = killed_my_child
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = treachery_opinion
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = treasonous_revoke_refusal
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = treasonous_imprison_refusal
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = treasonous_disobeyed_diarch
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = abductor_opinion
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = attempted_murder_opinion
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = botched_my_treatment_crime_opinion
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = botched_treatment_of_kin_crime_opinion
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = failed_to_treat_me_crime_opinion
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = failed_to_treat_kin_crime_opinion
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = theft_opinion
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = embezzled_opinion
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = attempted_arrest_opinion
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = attempted_imprisonment_opinion
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = rebellious_vassal_opinion
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = plotting_against_liege_opinion
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = spying_on_liege_opinion
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = abducted_me_opinion
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = attempted_abduction_opinion
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = elopement_opinion
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = attempted_elopement_opinion
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = murdered_close_family_crime
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = attempted_murder_close_family_crime
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = attempted_murder_me_crime
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = murdered_close_relation_opinion
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = murdered_someone_close_to_me_crime
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = hurt_someone_close_to_me_crime
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = murdered_my_vassal_crime
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = executed_close_family
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = executed_close_family_crime
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = executed_dynasty_member
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = executed_close_relation_opinion
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = executed_family_sun_trial_modifier
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = executed_my_countryman_modifier
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = tortured_family_member
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = tortured_me
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = blinded_family_member
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = blinded_me
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = castrated_family_member
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = castrated_me
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = attempted_to_steal_artifact_from_me
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = stole_artifact_from_me
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = slept_with_spouse_discovered_opinion
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = slept_with_spouse_exposed_opinion
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = unfaithful_spouse_discovered_opinion
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = unfaithful_spouse_exposed_opinion
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = refused_to_renounce_lover_opinion
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = betrayed_our_promise
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = loved_one_dungeon_death
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = reason_child_died
|
||||
target = $CHARACTER$
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Did this character do something irksome to me or my family?
|
||||
has_any_petty_revenge_opinion_against_character_trigger = {
|
||||
OR = {
|
||||
has_opinion_modifier = {
|
||||
modifier = insulted_opinion
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = smeared_opinion
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = mocked_me_in_time_of_need
|
||||
target = $CHARACTER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = abandoned_me_opinion
|
||||
target = $CHARACTER$
|
||||
}
|
||||
}
|
||||
}
|
||||
192
common/scripted_triggers/00_personality_trait_triggers.txt
Normal file
192
common/scripted_triggers/00_personality_trait_triggers.txt
Normal file
|
|
@ -0,0 +1,192 @@
|
|||
##########################################################################################################################
|
||||
#
|
||||
# These triggers all check for character flags which can be applied by the effects in '00_personality_trait_effects.txt'
|
||||
# Used to determine if those effects successfully ran, and if they are still valid.
|
||||
|
||||
personality_has_any_trait_flag_trigger = {
|
||||
OR = {
|
||||
scope:has_opposing_trait = flag:arrogant
|
||||
scope:has_opposing_trait = flag:humble
|
||||
scope:has_opposing_trait = flag:lustful
|
||||
scope:has_opposing_trait = flag:chaste
|
||||
scope:has_opposing_trait = flag:gregarious
|
||||
scope:has_opposing_trait = flag:shy
|
||||
scope:has_opposing_trait = flag:generous
|
||||
scope:has_opposing_trait = flag:greedy
|
||||
scope:has_opposing_trait = flag:ambitious
|
||||
scope:has_opposing_trait = flag:content
|
||||
scope:has_opposing_trait = flag:impatient
|
||||
scope:has_opposing_trait = flag:patient
|
||||
scope:has_opposing_trait = flag:temperate
|
||||
scope:has_opposing_trait = flag:gluttonous
|
||||
scope:has_opposing_trait = flag:diligent
|
||||
scope:has_opposing_trait = flag:lazy
|
||||
scope:has_opposing_trait = flag:wrathful
|
||||
scope:has_opposing_trait = flag:calm
|
||||
scope:has_opposing_trait = flag:deceitful
|
||||
scope:has_opposing_trait = flag:honest
|
||||
scope:has_opposing_trait = flag:craven
|
||||
scope:has_opposing_trait = flag:brave
|
||||
scope:has_opposing_trait = flag:arbitrary
|
||||
scope:has_opposing_trait = flag:just
|
||||
scope:has_opposing_trait = flag:cynical
|
||||
scope:has_opposing_trait = flag:zealous
|
||||
scope:has_opposing_trait = flag:paranoid
|
||||
scope:has_opposing_trait = flag:trusting
|
||||
scope:has_opposing_trait = flag:compassionate
|
||||
scope:has_opposing_trait = flag:callous
|
||||
scope:has_opposing_trait = flag:sadistic
|
||||
scope:has_opposing_trait = flag:forgiving
|
||||
scope:has_opposing_trait = flag:vengeful
|
||||
scope:has_opposing_trait = flag:stubborn
|
||||
scope:has_opposing_trait = flag:fickle
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
#Checks if we can safely run the
|
||||
personality_can_trait_shift = {
|
||||
OR = {
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:arrogant
|
||||
has_trait = arrogant
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:humble
|
||||
has_trait = humble
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:lustful
|
||||
has_trait = lustful
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:chaste
|
||||
has_trait = chaste
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:gregarious
|
||||
has_trait = gregarious
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:shy
|
||||
has_trait = shy
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:generous
|
||||
has_trait = generous
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:greedy
|
||||
has_trait = greedy
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:ambitious
|
||||
has_trait = ambitious
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:content
|
||||
has_trait = content
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:impatient
|
||||
has_trait = impatient
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:patient
|
||||
has_trait = patient
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:temperate
|
||||
has_trait = temperate
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:gluttonous
|
||||
has_trait = gluttonous
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:diligent
|
||||
has_trait = diligent
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:lazy
|
||||
has_trait = lazy
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:wrathful
|
||||
has_trait = wrathful
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:calm
|
||||
has_trait = calm
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:deceitful
|
||||
has_trait = deceitful
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:honest
|
||||
has_trait = honest
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:craven
|
||||
has_trait = craven
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:brave
|
||||
has_trait = brave
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:arbitrary
|
||||
has_trait = arbitrary
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:just
|
||||
has_trait = just
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:cynical
|
||||
has_trait = cynical
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:zealous
|
||||
has_trait = zealous
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:paranoid
|
||||
has_trait = paranoid
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:trusting
|
||||
has_trait = trusting
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:compassionate
|
||||
has_trait = compassionate
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:callous
|
||||
has_trait = callous
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:sadistic
|
||||
has_trait = sadistic
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:forgiving
|
||||
has_trait = forgiving
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:vengeful
|
||||
has_trait = vengeful
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:stubborn
|
||||
has_trait = stubborn
|
||||
}
|
||||
AND = {
|
||||
scope:has_opposing_trait = flag:fickle
|
||||
has_trait = fickle
|
||||
}
|
||||
}
|
||||
}
|
||||
245
common/scripted_triggers/00_personality_triggers.txt
Normal file
245
common/scripted_triggers/00_personality_triggers.txt
Normal file
|
|
@ -0,0 +1,245 @@
|
|||
|
||||
###PERSONALITY TRIGGER LIST
|
||||
|
||||
# has_personality_malicious_trigger - someone who is deceitful/uncaring/selfish/doesn't mind hurting others
|
||||
# has_personality_benevolent_trigger - a kind soul who is likely to be helpful
|
||||
# has_personality_dominant_trigger - someone with high confidence who is in control (or wants to be)
|
||||
# has_personality_submissive_trigger - someone with low confidence or who is fine with obeying others
|
||||
# has_personality_extroverted_trigger - someone who likes to interact with others
|
||||
# has_personality_introverted_trigger - someone who is shy/chaste/scared
|
||||
# has_personality_emotional_trigger - someone whose actions are easily swayed by their emotions
|
||||
# has_personality_levelheaded_trigger - someone who is always in control or is indifferent
|
||||
# has_personality_annoying_trigger - someone who gossips, meddles, disturbs etc.
|
||||
# probably_intelligent_trigger
|
||||
# probably_unintelligent_trigger
|
||||
|
||||
|
||||
#############################
|
||||
#SUPPORTING TRAITS TRIGGERS
|
||||
############################
|
||||
|
||||
has_trait_malicious_trigger = {
|
||||
OR = {
|
||||
has_trait = deceitful
|
||||
has_trait = arbitrary
|
||||
has_trait = callous
|
||||
has_trait = sadistic
|
||||
has_trait = vengeful
|
||||
has_trait = rowdy
|
||||
}
|
||||
}
|
||||
|
||||
has_trait_benevolent_trigger = {
|
||||
OR = {
|
||||
has_trait = generous
|
||||
has_trait = just
|
||||
has_trait = compassionate
|
||||
has_trait = forgiving
|
||||
}
|
||||
}
|
||||
|
||||
has_trait_dominant_trigger = {
|
||||
OR = {
|
||||
has_trait = arrogant
|
||||
has_trait = brave
|
||||
has_trait = ambitious
|
||||
has_trait = stubborn
|
||||
has_trait = bossy
|
||||
has_trait = rowdy
|
||||
}
|
||||
}
|
||||
|
||||
has_trait_submissive_trigger = {
|
||||
OR = {
|
||||
has_trait = craven
|
||||
has_trait = humble
|
||||
has_trait = content
|
||||
has_trait = fickle
|
||||
}
|
||||
}
|
||||
|
||||
has_trait_extroverted_trigger = {
|
||||
OR = {
|
||||
has_diplomacy_lifestyle_trait_trigger = yes
|
||||
has_trait = seducer
|
||||
has_trait = lustful
|
||||
has_trait = gregarious
|
||||
has_trait = curious
|
||||
has_trait = charming
|
||||
}
|
||||
}
|
||||
|
||||
has_trait_introverted_trigger = {
|
||||
OR = {
|
||||
has_trait = celibate
|
||||
has_trait = chaste
|
||||
has_trait = craven
|
||||
has_trait = shy
|
||||
has_trait = pensive
|
||||
}
|
||||
}
|
||||
|
||||
has_trait_emotional_trigger = {
|
||||
OR = {
|
||||
has_trait = wrathful
|
||||
has_trait = impatient
|
||||
has_trait = paranoid
|
||||
has_trait = compassionate
|
||||
has_trait = vengeful
|
||||
has_trait = drunkard
|
||||
has_trait = depressed
|
||||
has_trait = lunatic
|
||||
has_trait = possessed
|
||||
}
|
||||
}
|
||||
|
||||
has_trait_levelheaded_trigger = {
|
||||
OR = {
|
||||
has_trait = temperate
|
||||
has_trait = calm
|
||||
has_trait = patient
|
||||
has_trait = callous
|
||||
has_trait = pensive
|
||||
}
|
||||
}
|
||||
|
||||
has_trait_schemy_trigger = {
|
||||
OR = {
|
||||
has_trait = deceitful
|
||||
has_trait = callous
|
||||
has_trait = ambitious
|
||||
has_trait = vengeful
|
||||
has_trait = disloyal
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#########################
|
||||
#PERSONALITY TRIGGERS
|
||||
##########################
|
||||
|
||||
has_personality_malicious_trigger = {
|
||||
has_trait_malicious_trigger = yes
|
||||
has_trait_benevolent_trigger = no
|
||||
}
|
||||
|
||||
|
||||
has_personality_benevolent_trigger = {
|
||||
has_trait_benevolent_trigger = yes
|
||||
has_trait_malicious_trigger = no
|
||||
}
|
||||
|
||||
has_personality_dominant_trigger = {
|
||||
has_trait_dominant_trigger = yes
|
||||
has_trait_submissive_trigger = no
|
||||
}
|
||||
|
||||
has_personality_submissive_trigger = {
|
||||
has_trait_submissive_trigger = yes
|
||||
has_trait_dominant_trigger = no
|
||||
}
|
||||
|
||||
has_personality_extroverted_trigger = {
|
||||
has_trait_extroverted_trigger = yes
|
||||
has_trait_introverted_trigger = no
|
||||
}
|
||||
|
||||
has_personality_introverted_trigger = {
|
||||
has_trait_introverted_trigger = yes
|
||||
has_trait_extroverted_trigger = no
|
||||
}
|
||||
|
||||
has_personality_emotional_trigger = {
|
||||
has_trait_emotional_trigger = yes
|
||||
has_trait_levelheaded_trigger = no
|
||||
}
|
||||
|
||||
has_personality_levelheaded_trigger = {
|
||||
has_trait_levelheaded_trigger = yes
|
||||
has_trait_emotional_trigger = no
|
||||
}
|
||||
|
||||
has_personality_annoying_trigger = {
|
||||
OR = {
|
||||
has_trait = gluttonous
|
||||
has_trait = lazy
|
||||
has_trait = arrogant
|
||||
has_trait = drunkard
|
||||
has_trait = stubborn
|
||||
has_trait = paranoid
|
||||
has_trait = lunatic
|
||||
has_trait = possessed
|
||||
has_trait = curious
|
||||
has_trait = rowdy
|
||||
}
|
||||
}
|
||||
|
||||
#Intelligence estimations
|
||||
probably_intelligent_trigger = {
|
||||
OR = {
|
||||
has_trait_rank = {
|
||||
trait = intellect_good
|
||||
rank > 0
|
||||
}
|
||||
has_trait = shrewd
|
||||
}
|
||||
}
|
||||
|
||||
probably_unintelligent_trigger = {
|
||||
OR = {
|
||||
has_trait_rank = {
|
||||
trait = intellect_bad
|
||||
rank > 0
|
||||
}
|
||||
has_trait = dull
|
||||
has_trait = inbred
|
||||
}
|
||||
}
|
||||
|
||||
# Other personality checks
|
||||
untrustworthy_trigger = {
|
||||
OR = {
|
||||
has_trait = deceitful
|
||||
has_trait = arbitrary
|
||||
has_trait = disloyal
|
||||
}
|
||||
}
|
||||
|
||||
loves_food_trigger = {
|
||||
NOR = {
|
||||
has_trait = inappetetic
|
||||
has_trait = temperate
|
||||
}
|
||||
OR = {
|
||||
has_trait = comfort_eater
|
||||
has_trait = gluttonous
|
||||
has_court_position = food_taster_court_position
|
||||
}
|
||||
}
|
||||
|
||||
probably_superstitious = {
|
||||
OR = {
|
||||
learning <= mediocre_skill_rating
|
||||
has_trait = intellect_bad
|
||||
has_trait = dull
|
||||
has_trait = eccentric
|
||||
has_trait = paranoid
|
||||
has_trait = lifestyle_herbalist
|
||||
is_witch_trigger = yes
|
||||
has_character_modifier = bp1_superstition_modifier
|
||||
}
|
||||
}
|
||||
|
||||
probably_anti_superstitious = {
|
||||
probably_superstitious = no
|
||||
OR = {
|
||||
learning >= high_skill_rating
|
||||
has_trait = intellect_good
|
||||
has_trait = shrewd
|
||||
has_trait = cynical
|
||||
has_trait = zealous
|
||||
has_trait = theologian
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
116
common/scripted_triggers/00_pet_triggers.txt
Normal file
116
common/scripted_triggers/00_pet_triggers.txt
Normal file
|
|
@ -0,0 +1,116 @@
|
|||
|
||||
#Triggers revolving around pets
|
||||
|
||||
has_cat_or_dog_trigger = {
|
||||
OR = {
|
||||
has_cat_trigger = yes
|
||||
has_dog_trigger = yes
|
||||
}
|
||||
}
|
||||
|
||||
has_named_cat_or_dog_trigger = {
|
||||
OR = {
|
||||
has_named_cat_trigger = yes
|
||||
has_named_dog_trigger = yes
|
||||
}
|
||||
}
|
||||
|
||||
has_cat_trigger = {
|
||||
any_owned_story = {
|
||||
story_type = story_cycle_pet_cat
|
||||
}
|
||||
}
|
||||
|
||||
has_named_cat_trigger = {
|
||||
any_owned_story = {
|
||||
story_type = story_cycle_pet_cat
|
||||
}
|
||||
exists = var:story_cycle_cat_name
|
||||
}
|
||||
|
||||
has_dog_trigger = {
|
||||
any_owned_story = {
|
||||
story_type = story_cycle_pet_dog
|
||||
}
|
||||
}
|
||||
|
||||
has_eagle_trigger = {
|
||||
any_owned_story = {
|
||||
story_type = story_cycle_pet_eagle
|
||||
}
|
||||
}
|
||||
|
||||
has_available_eagle_trigger = {
|
||||
any_owned_story = {
|
||||
story_type = story_cycle_pet_eagle
|
||||
}
|
||||
NOR = {
|
||||
has_character_flag = eagle_is_missing
|
||||
has_character_flag = eagle_is_dying
|
||||
}
|
||||
}
|
||||
|
||||
eagle_is_old_trigger = {
|
||||
has_eagle_trigger = yes
|
||||
exists = var:eagle_age_variable
|
||||
var:eagle_age_variable >= 15
|
||||
}
|
||||
|
||||
has_named_eagle_trigger = {
|
||||
any_owned_story = {
|
||||
story_type = story_cycle_pet_eagle
|
||||
}
|
||||
exists = var:story_cycle_eagle_name
|
||||
}
|
||||
|
||||
has_named_dog_trigger = {
|
||||
any_owned_story = {
|
||||
story_type = story_cycle_pet_dog
|
||||
}
|
||||
exists = var:story_cycle_dog_name
|
||||
}
|
||||
|
||||
has_alive_pet_trigger = {
|
||||
OR = {
|
||||
has_named_cat_trigger = yes
|
||||
has_named_dog_trigger = yes
|
||||
has_named_eagle_trigger = yes
|
||||
has_character_modifier = exotic_pet_wolf
|
||||
has_character_modifier = exotic_pet_bear
|
||||
has_character_modifier = exotic_pet_lion
|
||||
has_character_modifier = exotic_pet_tiger
|
||||
}
|
||||
}
|
||||
|
||||
has_exotic_pet_trigger = {
|
||||
OR = {
|
||||
has_character_modifier = exotic_pet_wolf
|
||||
has_character_modifier = exotic_pet_bear
|
||||
has_character_modifier = exotic_pet_lion
|
||||
has_character_modifier = exotic_pet_tiger
|
||||
}
|
||||
}
|
||||
|
||||
has_eagle_personality_trait_trigger = {
|
||||
OR = {
|
||||
has_character_modifier = brave_eagle_story_modifier
|
||||
has_character_modifier = curious_eagle_story_modifier
|
||||
has_character_modifier = loyal_eagle_story_modifier
|
||||
has_character_modifier = calm_eagle_story_modifier
|
||||
has_character_modifier = wise_eagle_story_modifier
|
||||
has_character_modifier = cunning_eagle_story_modifier
|
||||
}
|
||||
}
|
||||
|
||||
has_secondary_eagle_personality_trait_trigger = {
|
||||
has_variable = eagle_personality_trait_2
|
||||
}
|
||||
|
||||
can_laamp_sell_eagle_trigger = {
|
||||
location = { has_holding_type = nomad_holding }
|
||||
has_available_eagle_trigger = yes
|
||||
NOT = { scope:laamp_artifact_peddler = { has_eagle_trigger = yes } }
|
||||
NOT = { has_character_flag = cant_sell_eagle } # Cooldown or somewhat healthy eagle
|
||||
NOT = { exists = scope:1020_second_artifact_to_sell } # Should only have one artifact to sell
|
||||
short_term_gold <= minor_gold_laamps_value # Out of desperation
|
||||
}
|
||||
41
common/scripted_triggers/00_physical_appearance_triggers.txt
Normal file
41
common/scripted_triggers/00_physical_appearance_triggers.txt
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
|
||||
##TRIGGER LIST
|
||||
# has_conventionally_attractive_trigger
|
||||
# has_conventionally_ugly_trigger
|
||||
# has_permanent_physical_injury - checks if you have some permanent injury
|
||||
#
|
||||
|
||||
has_conventionally_attractive_trigger = {
|
||||
OR = {
|
||||
has_trait = beauty_good
|
||||
AND = {
|
||||
has_trait = strong
|
||||
NOT = { has_trait = beauty_bad }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
has_conventionally_ugly_trigger = {
|
||||
OR = {
|
||||
has_trait = beauty_bad
|
||||
has_trait = hunchbacked
|
||||
has_trait = one_legged
|
||||
has_trait = scarred
|
||||
has_trait = one_eyed
|
||||
has_trait = scaly
|
||||
has_trait = great_pox
|
||||
has_trait = dwarf
|
||||
has_trait = albino
|
||||
}
|
||||
}
|
||||
|
||||
has_permanent_physical_injury = {
|
||||
OR = {
|
||||
has_trait = one_legged
|
||||
has_trait = one_eyed
|
||||
has_trait = scarred
|
||||
has_trait = maimed
|
||||
is_eunuch_trigger = yes
|
||||
has_trait = blind
|
||||
}
|
||||
}
|
||||
115
common/scripted_triggers/00_pilgrimage_triggers.txt
Normal file
115
common/scripted_triggers/00_pilgrimage_triggers.txt
Normal file
|
|
@ -0,0 +1,115 @@
|
|||
|
||||
is_on_a_pilgrimage_trigger = {
|
||||
exists = involved_activity
|
||||
involved_activity = { has_activity_type = activity_pilgrimage }
|
||||
#No more pilgrimage events if you're on your way home :colbert:
|
||||
exists = capital_province
|
||||
NOT = {
|
||||
current_travel_plan = {
|
||||
next_destination_province = root.capital_province
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
is_on_a_hajj_trigger = {
|
||||
exists = involved_activity
|
||||
involved_activity = {
|
||||
has_activity_option = {
|
||||
category = special_type
|
||||
option = pilgrimage_type_hajj
|
||||
}
|
||||
}
|
||||
involved_activity.activity_location.barony = title:b_makka
|
||||
#No more Hajj events if you're on your way home :colbert:
|
||||
exists = capital_province
|
||||
NOT = {
|
||||
current_travel_plan = {
|
||||
next_destination_province = root.capital_province
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
short_pilgrimage_trigger = {
|
||||
root.involved_activity ?= {
|
||||
exists = var:pilgrimage_distance
|
||||
var:pilgrimage_distance = flag:short_pilgrimage_var
|
||||
}
|
||||
}
|
||||
|
||||
medium_pilgrimage_trigger = {
|
||||
root.involved_activity ?= {
|
||||
exists = var:pilgrimage_distance
|
||||
var:pilgrimage_distance = flag:medium_pilgrimage_var
|
||||
}
|
||||
}
|
||||
|
||||
long_pilgrimage_trigger = {
|
||||
root.involved_activity ?= {
|
||||
exists = var:pilgrimage_distance
|
||||
var:pilgrimage_distance = flag:long_pilgrimage_var
|
||||
}
|
||||
}
|
||||
|
||||
very_long_pilgrimage_trigger = {
|
||||
root.involved_activity ?= {
|
||||
exists = var:pilgrimage_distance
|
||||
var:pilgrimage_distance = flag:very_long_pilgrimage_var
|
||||
}
|
||||
}
|
||||
|
||||
has_pious_pilgrimage_type_trigger = {
|
||||
involved_activity ?= {
|
||||
has_activity_type = activity_pilgrimage
|
||||
has_activity_option = {
|
||||
category = special_type
|
||||
option = pilgrimage_type_pious
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
has_worldly_pilgrimage_type_trigger = {
|
||||
involved_activity ?= {
|
||||
has_activity_type = activity_pilgrimage
|
||||
has_activity_option = {
|
||||
category = special_type
|
||||
option = pilgrimage_type_worldly
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
has_hajj_pilgrimage_type_trigger = {
|
||||
involved_activity ?= {
|
||||
has_activity_type = activity_pilgrimage
|
||||
has_activity_option = {
|
||||
category = special_type
|
||||
option = pilgrimage_type_hajj
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#Assumes activity-scope
|
||||
activity_has_pious_pilgrimage_type_trigger = {
|
||||
has_activity_type = activity_pilgrimage
|
||||
has_activity_option = {
|
||||
category = special_type
|
||||
option = pilgrimage_type_pious
|
||||
}
|
||||
}
|
||||
|
||||
#Assumes activity-scope
|
||||
activity_has_worldly_pilgrimage_type_trigger = {
|
||||
has_activity_type = activity_pilgrimage
|
||||
has_activity_option = {
|
||||
category = special_type
|
||||
option = pilgrimage_type_worldly
|
||||
}
|
||||
}
|
||||
|
||||
#Assumes activity-scope
|
||||
activity_has_hajj_pilgrimage_type_trigger = {
|
||||
has_activity_type = activity_pilgrimage
|
||||
has_activity_option = {
|
||||
category = special_type
|
||||
option = pilgrimage_type_hajj
|
||||
}
|
||||
}
|
||||
16
common/scripted_triggers/00_playdate_activity_triggers.txt
Normal file
16
common/scripted_triggers/00_playdate_activity_triggers.txt
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
|
||||
|
||||
playdate_default_participant_trigger = {
|
||||
is_ai = yes
|
||||
NOT = { this = root }
|
||||
is_alive = yes
|
||||
is_imprisoned = no
|
||||
is_incapable = no
|
||||
}
|
||||
|
||||
|
||||
playdate_potential_guest_check_trigger = {
|
||||
NOT = { this = scope:activity.activity_host }
|
||||
is_available_for_child_activity_trigger = yes
|
||||
NOT = { is_in_list = potential_guests }
|
||||
}
|
||||
3
common/scripted_triggers/00_province_triggers.txt
Normal file
3
common/scripted_triggers/00_province_triggers.txt
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
has_province_owner = {
|
||||
exists = province_owner
|
||||
}
|
||||
1191
common/scripted_triggers/00_relation_triggers.txt
Normal file
1191
common/scripted_triggers/00_relation_triggers.txt
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -175,7 +175,10 @@ can_be_combatant_based_on_gender_trigger = {
|
|||
has_trait = shieldmaiden
|
||||
}
|
||||
# Event-based special exceptions
|
||||
has_character_modifier = ignores_gender_army_rules
|
||||
OR = {
|
||||
has_character_modifier = ignores_gender_army_rules
|
||||
has_character_modifier = mpo_destined_leader_modifier
|
||||
}
|
||||
AND = {
|
||||
$ARMY_OWNER$ = { culture = { has_cultural_parameter = high_prowess_ignores_knight_restrictions } }
|
||||
NOT = { $ARMY_OWNER$ = { culture = { has_cultural_parameter = minimum_prowess_for_knights } } }
|
||||
|
|
@ -1255,6 +1258,12 @@ valid_demand_conversion_conditions_trigger = {
|
|||
}
|
||||
}
|
||||
}
|
||||
scope:actor = {
|
||||
NAND = {
|
||||
has_trait = nomadic_philosophy
|
||||
has_trait = zealous
|
||||
}
|
||||
}
|
||||
|
||||
custom_description = {
|
||||
text = "is_head_of_religion"
|
||||
|
|
@ -1376,6 +1385,25 @@ is_reincarnation_trigger = {
|
|||
|
||||
# Used in faith scope, COUNT is number of faiths to at least have and CHARACTER is who must own them
|
||||
num_realm_holy_sites_faithful_holders = {
|
||||
$CHARACTER$ = { save_temporary_scope_as = root_scope }
|
||||
trigger_if = {
|
||||
limit = {
|
||||
exists = $CHARACTER$.confederation
|
||||
}
|
||||
custom_description = {
|
||||
text = direct_realm_holy_sites_held_by_faithful_confederation
|
||||
subject = $CHARACTER$
|
||||
object = this
|
||||
value = 1
|
||||
any_holy_site = {
|
||||
county = {
|
||||
save_temporary_scope_as = current_holy_site
|
||||
is_holy_site_controlled_by = $CHARACTER$
|
||||
holder.faith = $CHARACTER$.faith
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
custom_description = {
|
||||
text = number_realm_holy_sites_held_by_faithful
|
||||
subject = $CHARACTER$
|
||||
|
|
@ -1384,7 +1412,17 @@ num_realm_holy_sites_faithful_holders = {
|
|||
any_holy_site = {
|
||||
count >= $COUNT$
|
||||
county = {
|
||||
is_holy_site_controlled_by = $CHARACTER$
|
||||
save_temporary_scope_as = current_holy_site
|
||||
OR = {
|
||||
is_holy_site_controlled_by = $CHARACTER$
|
||||
$CHARACTER$.confederation ?= {
|
||||
any_confederation_member = {
|
||||
scope:current_holy_site = {
|
||||
is_holy_site_controlled_by = prev
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
holder.faith = $CHARACTER$.faith
|
||||
}
|
||||
}
|
||||
|
|
@ -1410,15 +1448,19 @@ can_create_temporal_head_of_faith_title_trigger = {
|
|||
}
|
||||
|
||||
can_create_spiritual_head_of_faith_title_trigger = {
|
||||
num_realm_holy_sites_faithful_holders = {
|
||||
COUNT = holy_sites_to_create_spiritual_head_of_faith
|
||||
CHARACTER = ROOT
|
||||
}
|
||||
root = { piety_level >= medium_piety_level }
|
||||
trigger_if = {
|
||||
limit = { has_doctrine = special_doctrine_not_allowed_to_hof }
|
||||
NOT = { has_doctrine = special_doctrine_not_allowed_to_hof }
|
||||
}
|
||||
num_realm_holy_sites_faithful_holders = {
|
||||
COUNT = holy_sites_to_create_spiritual_head_of_faith
|
||||
CHARACTER = ROOT
|
||||
}
|
||||
root = { piety_level >= medium_piety_level }
|
||||
trigger_if = {
|
||||
limit = { has_doctrine = special_doctrine_not_allowed_to_hof }
|
||||
NOT = { has_doctrine = special_doctrine_not_allowed_to_hof }
|
||||
}
|
||||
NAND = {
|
||||
exists = religious_head
|
||||
has_doctrine_parameter = maintains_head_of_faith_on_creation
|
||||
}
|
||||
}
|
||||
|
||||
# this = Person trying to create the title
|
||||
|
|
@ -1705,6 +1747,7 @@ has_tolerant_faith_or_culture_trigger = {
|
|||
OR = {
|
||||
faith = { has_doctrine = doctrine_pluralism_pluralistic }
|
||||
culture = { has_cultural_parameter = less_likely_to_force_conversion }
|
||||
has_trait = nomadic_philosophy
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1829,8 +1872,21 @@ has_holy_building = {
|
|||
has_building_or_higher = holy_site_great_mosque_of_djenne_01
|
||||
has_building_or_higher = holy_site_great_mosque_of_samarra_01
|
||||
has_building_or_higher = holy_site_prophetic_mosque_01
|
||||
has_building_or_higher = brihadeeswarar_temple_01
|
||||
has_building_or_higher = shwedagon_pagoda_01
|
||||
has_building_or_higher = ananda_temple_01
|
||||
has_building_or_higher = the_friday_mosque_01
|
||||
has_building_or_higher = dome_of_the_rock_01
|
||||
has_building_or_higher = temple_in_jerusalem_01
|
||||
has_building_or_higher = cluny_abbey_01
|
||||
has_building_or_higher = damascus_mosque_01
|
||||
has_building_or_higher = jokhang_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 = konark_temple_01
|
||||
has_building_or_higher = wawel_cathedral_01
|
||||
has_building_or_higher = vatapi_caves_01
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
18
common/scripted_triggers/00_rich_presence_triggers.txt
Normal file
18
common/scripted_triggers/00_rich_presence_triggers.txt
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
is_murder_activity_trigger = {
|
||||
OR = {
|
||||
AND = {
|
||||
has_activity_type = activity_wedding
|
||||
has_activity_option = {
|
||||
category = special_type
|
||||
option = wedding_type_bloody
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
has_activity_type = activity_feast
|
||||
has_activity_option = {
|
||||
category = special_type
|
||||
option = feast_type_murder
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
88
common/scripted_triggers/00_roaming_activity_triggers.txt
Normal file
88
common/scripted_triggers/00_roaming_activity_triggers.txt
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
roaming_activity_intro_base_trigger = {
|
||||
terrain = $TERRAIN$
|
||||
roaming_activity_winter_trigger = no
|
||||
roaming_activity_monsoon_trigger = no
|
||||
}
|
||||
|
||||
roaming_activity_intro_base_two_trigger = {
|
||||
OR = {
|
||||
terrain = $TERRAIN$
|
||||
terrain = $TERRAIN_2$
|
||||
}
|
||||
roaming_activity_winter_trigger = no
|
||||
roaming_activity_monsoon_trigger = no
|
||||
}
|
||||
|
||||
roaming_activity_intro_base_three_trigger = {
|
||||
OR = {
|
||||
terrain = $TERRAIN$
|
||||
terrain = $TERRAIN_2$
|
||||
terrain = $TERRAIN_3$
|
||||
}
|
||||
roaming_activity_winter_trigger = no
|
||||
roaming_activity_monsoon_trigger = no
|
||||
}
|
||||
|
||||
roaming_activity_intro_winter_trigger = {
|
||||
terrain = $TERRAIN$
|
||||
roaming_activity_winter_trigger = yes
|
||||
}
|
||||
|
||||
roaming_activity_intro_winter_two_trigger = {
|
||||
OR = {
|
||||
terrain = $TERRAIN$
|
||||
terrain = $TERRAIN_2$
|
||||
}
|
||||
roaming_activity_winter_trigger = yes
|
||||
}
|
||||
|
||||
roaming_activity_winter_trigger = {
|
||||
has_winter_trigger = yes
|
||||
NOR = {
|
||||
terrain = desert
|
||||
terrain = desert_mountains
|
||||
terrain = drylands
|
||||
terrain = oasis
|
||||
terrain = floodplains
|
||||
}
|
||||
}
|
||||
|
||||
roaming_activity_intro_monsoon_trigger = {
|
||||
terrain = $TERRAIN$
|
||||
roaming_activity_monsoon_trigger = yes
|
||||
}
|
||||
|
||||
roaming_activity_intro_monsoon_two_trigger = {
|
||||
OR = {
|
||||
terrain = $TERRAIN$
|
||||
terrain = $TERRAIN_2$
|
||||
}
|
||||
roaming_activity_monsoon_trigger = yes
|
||||
}
|
||||
|
||||
roaming_activity_monsoon_trigger = {
|
||||
tropical_seasons_region_trigger = yes
|
||||
middle_of_year_season_trigger = yes
|
||||
NOR = {
|
||||
terrain = taiga
|
||||
terrain = steppe
|
||||
}
|
||||
}
|
||||
|
||||
roaming_activity_special_guest_trigger = {
|
||||
NOT = { this = scope:host }
|
||||
court_owner ?= scope:host
|
||||
is_healthy = yes
|
||||
is_available = yes
|
||||
age >= 12
|
||||
is_ai = yes
|
||||
OR = {
|
||||
is_close_family_of = scope:host
|
||||
is_spouse_of = scope:host
|
||||
has_relation_friend = scope:host
|
||||
has_relation_best_friend = scope:host
|
||||
has_relation_lover = scope:host
|
||||
is_knight_of = scope:host
|
||||
}
|
||||
}
|
||||
|
||||
768
common/scripted_triggers/00_romance_and_seduction_triggers.txt
Normal file
768
common/scripted_triggers/00_romance_and_seduction_triggers.txt
Normal file
|
|
@ -0,0 +1,768 @@
|
|||
|
||||
###TRIGGER LIST
|
||||
|
||||
###SEDUCE SCHEME##
|
||||
# use_seduce_secrecy_trigger
|
||||
|
||||
|
||||
###SEXUAL ORITENTATION###
|
||||
# attracted_to_same_gender_trigger_trigger
|
||||
# attracted_to_opposite_gender_trigger_trigger
|
||||
# attracted_to_all_genders_trigger
|
||||
# matching_gender_and_sexuality_trigger
|
||||
|
||||
###INCEST###
|
||||
# accepts_incest_with_trigger
|
||||
# accepts_incest_with_each_other_trigger
|
||||
# likely_to_commit_incest_trigger
|
||||
# likely_to_commit_incest_with_trigger
|
||||
|
||||
###ATTRACTION###
|
||||
# possibly_interested_in_root_trigger
|
||||
# possible_mutual_interest_trigger
|
||||
# object_of_importance_exist_trigger
|
||||
|
||||
### CHEATING ####
|
||||
# might_cheat_on_partner_trigger - If scope would at all be willing to cheat, baseline that must be passed
|
||||
# might_cheat_on_every_partner_trigger - checks might_cheat_on_partner_trigger on every partner
|
||||
# dislikes_partner_cheating_trigger
|
||||
|
||||
|
||||
### PREGNANCY & STDs ###
|
||||
# possible_pregnancy_after_sex_with_character_trigger - requries root and other character
|
||||
|
||||
|
||||
###SEDUCE SCHEME TRIGGERS###
|
||||
|
||||
use_seduce_secrecy_trigger = {
|
||||
#TODO_CD_EP3_ERCC; this is breaking in a confusing way, with the secrecy no longer showing in the scheme start widget. Original version preserved below, not sure why it doesn't work.
|
||||
$TARGET$ = {
|
||||
NOR = {
|
||||
is_consort_of = $OWNER$
|
||||
is_courtier_of = $OWNER$
|
||||
}
|
||||
}
|
||||
#$TARGET$ = {
|
||||
#NOR = {
|
||||
#is_consort_of = $OWNER$
|
||||
#is_courtier_of = $OWNER$
|
||||
#is_ruler = yes
|
||||
#}
|
||||
#exists = liege
|
||||
#OR = {
|
||||
#is_consort_of = $TARGET$.liege
|
||||
#is_close_family_of = $TARGET$.liege
|
||||
#house = $TARGET$.house
|
||||
#}
|
||||
#}
|
||||
}
|
||||
|
||||
|
||||
court_allow_owner_opt_out_trigger = {
|
||||
NAND = {
|
||||
is_ai = yes
|
||||
scope:target = { is_ai = no }
|
||||
}
|
||||
}
|
||||
|
||||
###SEXUAL ORIENTATION TRIGGERS###
|
||||
has_sexual_orientation_trigger = {
|
||||
OR = {
|
||||
has_sexuality = heterosexual
|
||||
has_sexuality = bisexual
|
||||
has_sexuality = homosexual
|
||||
has_sexuality = asexual
|
||||
}
|
||||
}
|
||||
|
||||
attracted_to_same_gender_trigger = {
|
||||
OR = {
|
||||
has_sexuality = bisexual
|
||||
has_sexuality = homosexual
|
||||
}
|
||||
}
|
||||
|
||||
attracted_to_opposite_gender_trigger = {
|
||||
OR = {
|
||||
has_sexuality = bisexual
|
||||
has_sexuality = heterosexual
|
||||
}
|
||||
}
|
||||
|
||||
attracted_to_all_genders_trigger = {
|
||||
has_sexuality = bisexual
|
||||
}
|
||||
|
||||
|
||||
#Needs CHARACTER_1 and CHARACTER_2
|
||||
matching_gender_and_sexuality_trigger = {
|
||||
$CHARACTER_1$ = { is_attracted_to_gender_of = $CHARACTER_2$ }
|
||||
$CHARACTER_2$ = { is_attracted_to_gender_of = $CHARACTER_1$ }
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
###ATTRACTION###
|
||||
|
||||
possibly_interested_in_root_trigger = {
|
||||
OR = {
|
||||
AND = { #Is not related to Root, or has an indicator that they would be interested anyways
|
||||
NOR = {
|
||||
any_sibling = {
|
||||
this = root
|
||||
}
|
||||
any_parent = {
|
||||
this = root
|
||||
}
|
||||
any_child = {
|
||||
this = root
|
||||
}
|
||||
}
|
||||
OR = {
|
||||
has_relation_crush = root
|
||||
has_relation_lover = root
|
||||
has_relation_potential_lover = root
|
||||
AND = {
|
||||
is_attracted_to_men = yes
|
||||
root = { is_male = yes }
|
||||
}
|
||||
AND = {
|
||||
is_attracted_to_women = yes
|
||||
root = { is_female = yes }
|
||||
}
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
OR = {
|
||||
any_sibling = {
|
||||
this = root
|
||||
}
|
||||
any_parent = {
|
||||
this = root
|
||||
}
|
||||
any_child = {
|
||||
this = root
|
||||
}
|
||||
}
|
||||
OR = {
|
||||
has_relation_crush = root
|
||||
has_relation_lover = root
|
||||
has_relation_potential_lover = root
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
possibly_interested_in_character_trigger = {
|
||||
OR = {
|
||||
AND = { #Is not related to Root, or has an indicator that they would be interested anyways
|
||||
NOR = {
|
||||
any_sibling = {
|
||||
this = $CHARACTER$
|
||||
}
|
||||
any_parent = {
|
||||
this = $CHARACTER$
|
||||
}
|
||||
any_child = {
|
||||
this = $CHARACTER$
|
||||
}
|
||||
}
|
||||
OR = {
|
||||
has_relation_crush = $CHARACTER$
|
||||
has_relation_lover = $CHARACTER$
|
||||
has_relation_potential_lover = $CHARACTER$
|
||||
AND = {
|
||||
is_attracted_to_men = yes
|
||||
$CHARACTER$ = { is_male = yes }
|
||||
}
|
||||
AND = {
|
||||
is_attracted_to_women = yes
|
||||
$CHARACTER$ = { is_female = yes }
|
||||
}
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
OR = {
|
||||
any_sibling = {
|
||||
this = $CHARACTER$
|
||||
}
|
||||
any_parent = {
|
||||
this = $CHARACTER$
|
||||
}
|
||||
any_child = {
|
||||
this = $CHARACTER$
|
||||
}
|
||||
}
|
||||
OR = {
|
||||
has_relation_crush = $CHARACTER$
|
||||
has_relation_lover = $CHARACTER$
|
||||
has_relation_potential_lover = $CHARACTER$
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
possible_mutual_interest_trigger = {
|
||||
NOT ={ $CHARACTER_1$ = $CHARACTER_2$ } #Cannot be an event target for yourself
|
||||
$CHARACTER_1$ = {
|
||||
OR = { #Not related etc.
|
||||
AND = {
|
||||
NOT = {
|
||||
any_sibling = {
|
||||
this = $CHARACTER_2$
|
||||
}
|
||||
}
|
||||
NOT = {
|
||||
any_parent = {
|
||||
this = $CHARACTER_2$
|
||||
}
|
||||
}
|
||||
NOT = {
|
||||
any_child = {
|
||||
this = $CHARACTER_2$
|
||||
}
|
||||
}
|
||||
}
|
||||
has_relation_crush = $CHARACTER_2$
|
||||
has_relation_lover = $CHARACTER_2$
|
||||
has_opinion_modifier = {
|
||||
modifier = love_opinion
|
||||
target = $CHARACTER_2$
|
||||
}
|
||||
}
|
||||
}
|
||||
$CHARACTER_2$ = {
|
||||
OR = {
|
||||
AND = { #Not related etc.
|
||||
NOT = {
|
||||
any_sibling = {
|
||||
this = $CHARACTER_1$
|
||||
}
|
||||
}
|
||||
NOT = {
|
||||
any_parent = {
|
||||
this = $CHARACTER_1$
|
||||
}
|
||||
}
|
||||
NOT = {
|
||||
any_child = {
|
||||
this = $CHARACTER_1$
|
||||
}
|
||||
}
|
||||
}
|
||||
has_relation_crush = $CHARACTER_1$
|
||||
has_relation_lover = $CHARACTER_1$
|
||||
has_opinion_modifier = {
|
||||
modifier = love_opinion
|
||||
target = $CHARACTER_1$
|
||||
}
|
||||
}
|
||||
}
|
||||
$CHARACTER_1$ = {
|
||||
OR = {
|
||||
AND = {
|
||||
is_attracted_to_men = yes
|
||||
$CHARACTER_2$ = { is_male = yes }
|
||||
}
|
||||
AND = {
|
||||
is_attracted_to_women = yes
|
||||
$CHARACTER_2$ = { is_female = yes }
|
||||
}
|
||||
}
|
||||
}
|
||||
$CHARACTER_2$ = {
|
||||
OR = {
|
||||
AND = {
|
||||
is_attracted_to_men = yes
|
||||
$CHARACTER_1$ = { is_male = yes }
|
||||
}
|
||||
AND = {
|
||||
is_attracted_to_women = yes
|
||||
$CHARACTER_1$ = { is_female = yes }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#To check if either of two lovers have a object of importance saved
|
||||
#Use LOVER to slot in the non-scope character!
|
||||
object_of_importance_exist_trigger = {
|
||||
save_temporary_scope_as = original_scope
|
||||
OR = {
|
||||
AND = {
|
||||
has_variable_list = lover_object_of_importance
|
||||
variable_list_size = {
|
||||
name = lover_object_of_importance
|
||||
value = 2
|
||||
}
|
||||
is_target_in_variable_list = {
|
||||
name = lover_object_of_importance
|
||||
target = $LOVER$
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
has_variable_list = lover_object_of_importance_2
|
||||
variable_list_size = {
|
||||
name = lover_object_of_importance_2
|
||||
value = 2
|
||||
}
|
||||
is_target_in_variable_list = {
|
||||
name = lover_object_of_importance_2
|
||||
target = $LOVER$
|
||||
}
|
||||
}
|
||||
$LOVER$ = {
|
||||
has_variable_list = lover_object_of_importance
|
||||
variable_list_size = {
|
||||
name = lover_object_of_importance
|
||||
value = 2
|
||||
}
|
||||
is_target_in_variable_list = {
|
||||
name = lover_object_of_importance
|
||||
target = scope:original_scope
|
||||
}
|
||||
}
|
||||
$LOVER$ = {
|
||||
has_variable_list = lover_object_of_importance_2
|
||||
variable_list_size = {
|
||||
name = lover_object_of_importance_2
|
||||
value = 2
|
||||
}
|
||||
is_target_in_variable_list = {
|
||||
name = lover_object_of_importance_2
|
||||
target = scope:original_scope
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
might_cheat_on_partner_trigger = {
|
||||
NOT = { has_trait = celibate }
|
||||
is_eunuch_trigger = no
|
||||
trigger_if = {
|
||||
limit = { is_ai = no }
|
||||
# Players always have the option to cheat - we check this here so that we don't constantly need to OR it when using might_cheat_on_every_partner_trigger.
|
||||
always = yes
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
$PARTNER$ = {
|
||||
government_has_flag = government_is_nomadic
|
||||
}
|
||||
}
|
||||
NOT = {
|
||||
$PARTNER$ = {
|
||||
domicile ?= {
|
||||
has_domicile_parameter = nomad_yurt_spouse_will_not_cheat
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
# If $PARTNER$ isn't actually my partner, it's not cheating!
|
||||
OR = {
|
||||
has_relation_lover = $PARTNER$
|
||||
is_consort_of = $PARTNER$ # Includes both spouses and concubines
|
||||
}
|
||||
|
||||
# Additionally, in faiths with the Polyamory doctrine, extramarital relationships aren't considered to be cheating on partners.
|
||||
NOT = { faith = { has_doctrine_parameter = no_unfaithfulness_penalty_active } }
|
||||
}
|
||||
|
||||
NOT = { has_trait = loyal } # Loyal people never cheat
|
||||
|
||||
# Soulmates never cheat, unless they're Lustful/Seducer and have low Honor
|
||||
trigger_if = {
|
||||
limit = { has_relation_soulmate = $PARTNER$ }
|
||||
ai_honor <= medium_negative_ai_value
|
||||
calc_true_if = {
|
||||
amount >= 2
|
||||
has_trait = lustful
|
||||
has_trait = seducer
|
||||
has_focus = intrigue_temptation_focus
|
||||
}
|
||||
}
|
||||
# Non-soulmates have slightly more complex criteria
|
||||
trigger_else = {
|
||||
OR = {
|
||||
# Having one of these things that makes characters always willing to cheat:
|
||||
OR = {
|
||||
has_trait = lustful
|
||||
has_trait = seducer
|
||||
has_focus = intrigue_temptation_focus
|
||||
# Dishonorable and callous enough to not care about current partners (regardless of opinion).
|
||||
AND = {
|
||||
ai_compassion <= high_negative_ai_value
|
||||
ai_honor <= high_negative_ai_value
|
||||
}
|
||||
# Needs aren't getting met.
|
||||
AND = {
|
||||
is_deviant_trigger = yes
|
||||
$PARTNER$ = { is_deviant_trigger = no }
|
||||
}
|
||||
# Rakish character that's about to have a mental breakdown.
|
||||
AND = {
|
||||
has_trait = rakish
|
||||
stress_level >= 2
|
||||
}
|
||||
}
|
||||
|
||||
# Calc for honour.
|
||||
## Characters with really lacking honour might cheat even at decently opinion positive levels.
|
||||
trigger_if = {
|
||||
limit = { ai_honor <= high_negative_ai_value }
|
||||
# Consorts (spouses, concubines).
|
||||
trigger_if = {
|
||||
limit = { is_consort_of = $PARTNER$ }
|
||||
opinion = {
|
||||
target = $PARTNER$
|
||||
value <= medium_positive_opinion
|
||||
}
|
||||
}
|
||||
# Lovers.
|
||||
trigger_else = {
|
||||
opinion = {
|
||||
target = $PARTNER$
|
||||
value <= high_positive_opinion
|
||||
}
|
||||
}
|
||||
}
|
||||
## Characters with at least some honour require much less happy relationships.
|
||||
trigger_else_if = {
|
||||
limit = { ai_honor <= medium_positive_ai_value }
|
||||
# Consorts (spouses, concubines).
|
||||
trigger_if = {
|
||||
limit = { is_consort_of = $PARTNER$ }
|
||||
# Consorts (spouses, concubines)
|
||||
opinion = {
|
||||
target = $PARTNER$
|
||||
value <= neutral_opinion
|
||||
}
|
||||
}
|
||||
# Lovers.
|
||||
trigger_else = {
|
||||
opinion = {
|
||||
target = $PARTNER$
|
||||
value <= low_positive_opinion # 80 for lovers
|
||||
}
|
||||
}
|
||||
}
|
||||
## Finally, characters might also cheat if they just dislike their partner enough, regardless of honor.
|
||||
trigger_else = {
|
||||
opinion = {
|
||||
target = $PARTNER$
|
||||
value <= high_negative_opinion
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
# Having an extramarital relationship with someone else would not count as cheating on this person.
|
||||
trigger_else = { always = yes }
|
||||
}
|
||||
|
||||
might_cheat_on_every_partner_trigger = {
|
||||
save_temporary_scope_as = potential_cheater
|
||||
is_eunuch_trigger = no
|
||||
NOT = { has_trait = celibate }
|
||||
any_spouse = {
|
||||
count = all
|
||||
save_temporary_scope_as = partner2
|
||||
scope:potential_cheater = { might_cheat_on_partner_trigger = { PARTNER = scope:partner2 } }
|
||||
}
|
||||
any_relation = {
|
||||
type = lover
|
||||
count = all
|
||||
save_temporary_scope_as = partner3
|
||||
scope:potential_cheater = { might_cheat_on_partner_trigger = { PARTNER = scope:partner3 } }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
dislikes_partner_cheating_trigger = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
OR = {
|
||||
has_relation_lover = $PARTNER$
|
||||
is_consort_of = $PARTNER$
|
||||
}
|
||||
}
|
||||
$PARTNER$ = { save_temporary_scope_as = cheating_trigger_partner }
|
||||
save_temporary_scope_as = cheating_trigger_root
|
||||
OR = {
|
||||
AND = {
|
||||
has_relation_soulmate = $PARTNER$ # Soulmates are exclusive
|
||||
NOT = { faith = { has_doctrine_parameter = no_unfaithfulness_penalty_active } }
|
||||
}
|
||||
AND = { # Feels slighted
|
||||
is_consort_of = $PARTNER$
|
||||
trait_is_shunned_or_criminal_in_faith_trigger = {
|
||||
TRAIT = adulterer
|
||||
FAITH = scope:cheating_trigger_root.faith
|
||||
GENDER_CHARACTER = scope:cheating_trigger_partner
|
||||
}
|
||||
OR = {
|
||||
ai_honor >= 0
|
||||
ai_zeal >= 0
|
||||
has_trait = arrogant
|
||||
ai_vengefulness <= 0
|
||||
}
|
||||
}
|
||||
opinion = { # Loves partner
|
||||
target = $PARTNER$
|
||||
value >= high_positive_opinion
|
||||
}
|
||||
}
|
||||
NAND = { # Sexually liberal characters don't mind, unless you're exclusive
|
||||
sexually_liberal_trigger = yes
|
||||
NOT = { has_relation_soulmate = $PARTNER$ }
|
||||
}
|
||||
}
|
||||
trigger_else = { always = no } # Partner isn't my partner, so I don't care
|
||||
}
|
||||
|
||||
#Would a soulmate expect you to be exclusively with them?
|
||||
soulmate_relation_is_exclusive_trigger = {
|
||||
NOT = { faith = { has_doctrine_parameter = no_unfaithfulness_penalty_active } }
|
||||
}
|
||||
|
||||
sexually_liberal_trigger = {
|
||||
OR = {
|
||||
is_deviant_trigger = yes
|
||||
has_trait = lustful
|
||||
has_trait = seducer
|
||||
faith = { trait_is_virtue = lustful }
|
||||
AND = {
|
||||
exists = scope:activity
|
||||
has_activity_intent = lechery_intent
|
||||
}
|
||||
}
|
||||
NOR = {
|
||||
has_trait = chaste
|
||||
has_trait = celibate
|
||||
}
|
||||
}
|
||||
|
||||
has_lustful_adjacent_trait_trigger = {
|
||||
OR = {
|
||||
is_deviant_trigger = yes
|
||||
has_trait = lustful
|
||||
has_trait = seducer
|
||||
has_trait = rakish
|
||||
faith = { trait_is_virtue = lustful }
|
||||
AND = {
|
||||
exists = scope:activity
|
||||
has_activity_intent = lechery_intent
|
||||
}
|
||||
}
|
||||
NOR = {
|
||||
has_trait = chaste
|
||||
has_trait = celibate
|
||||
}
|
||||
}
|
||||
|
||||
#Can this character ever have an affair? Counts both inability and whether sex outside marriage is counted as religiously problematic for them.
|
||||
eligible_for_affairs_trigger = {
|
||||
NOR = {
|
||||
has_trait = celibate
|
||||
#Technically (and, historically, frequently) eunuchs can still have affairs, they just aren't able to impregnate.
|
||||
OR = {
|
||||
faith = { has_doctrine_parameter = no_unfaithfulness_penalty_active }
|
||||
trait_is_shunned_or_criminal_in_faith_trigger = {
|
||||
TRAIT = adulterer
|
||||
FAITH = root.faith
|
||||
GENDER_CHARACTER = root
|
||||
}
|
||||
trait_is_shunned_or_criminal_in_faith_trigger = {
|
||||
TRAIT = fornicator
|
||||
FAITH = root.faith
|
||||
GENDER_CHARACTER = root
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
freely_accepts_sodomy_with_trigger = { #Will ignore sodomy consequences (because there are none or they have done this before)
|
||||
OR = {
|
||||
NOT = { relation_with_character_is_sodomy_in_my_or_lieges_faith_trigger = { CHARACTER = $CHARACTER$ } }
|
||||
has_trait = deviant
|
||||
has_trait = sodomite
|
||||
any_secret = { secret_type = secret_homosexual }
|
||||
}
|
||||
}
|
||||
|
||||
# 100% fine with incest with CHARACTER. Important: There are also other factors to attraction! This isn't 100% acceptance of romantic/sexual relationship.
|
||||
accepts_incest_with_trigger = {
|
||||
OR = {
|
||||
NOT = { is_close_or_extended_family_of = $CHARACTER$ } #Actually no incest here!
|
||||
is_incestuous_trigger = yes
|
||||
has_relation_potential_lover = $CHARACTER$
|
||||
has_relation_lover = $CHARACTER$
|
||||
}
|
||||
save_temporary_scope_as = incest_evaluation
|
||||
NOT = { #under 20 trigger is a HARD limit
|
||||
guaranteed_under_20_incest_rejection_trigger = {
|
||||
TARGET = scope:incest_evaluation
|
||||
SEDUCER = $CHARACTER$
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
accepts_incest_with_each_other_trigger = {
|
||||
$CHARACTER_2$ = {
|
||||
accepts_incest_with_trigger = {
|
||||
CHARACTER = $CHARACTER_1$
|
||||
}
|
||||
}
|
||||
$CHARACTER_1$ = {
|
||||
accepts_incest_with_trigger = {
|
||||
CHARACTER = $CHARACTER_2$
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#Is likely to be okay with incest broadly
|
||||
likely_to_commit_incest_trigger = {
|
||||
OR = {
|
||||
AND = {
|
||||
sexually_liberal_trigger = yes
|
||||
OR = {
|
||||
# Doesn't care much about social taboo
|
||||
has_trait = callous
|
||||
has_trait = cynical
|
||||
has_trait = eccentric
|
||||
# Lack of contact with other members of their attracted sex
|
||||
has_trait = reclusive
|
||||
has_trait = shy
|
||||
# They think they can get away with it
|
||||
has_trait = deceitful
|
||||
}
|
||||
}
|
||||
# A bit of a weirdo
|
||||
is_deviant_trigger = yes
|
||||
# I've incested before, I will incest again!
|
||||
is_incestuous_trigger = yes
|
||||
# Trauma
|
||||
stress_level >= 2
|
||||
}
|
||||
save_temporary_scope_as = incest_evaluation
|
||||
NOT = { #under 20 trigger is a HARD limit
|
||||
guaranteed_under_20_incest_rejection_trigger = {
|
||||
TARGET = scope:incest_evaluation
|
||||
SEDUCER = $CHARACTER$
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
likely_to_commit_incest_with_trigger = {
|
||||
OR = {
|
||||
NOT = { # Not incest
|
||||
$CHARACTER_1$ = {
|
||||
relation_with_character_is_incestuous_in_my_faith_trigger = { CHARACTER = $CHARACTER_2$ }
|
||||
}
|
||||
}
|
||||
$CHARACTER_1$ = {
|
||||
OR = {
|
||||
AND = {
|
||||
sexually_liberal_trigger = yes
|
||||
OR = {
|
||||
# Doesn't care much about social taboo
|
||||
has_trait = callous
|
||||
has_trait = cynical
|
||||
has_trait = eccentric
|
||||
# Lack of contact with other members of their attracted sex
|
||||
has_trait = reclusive
|
||||
has_trait = shy
|
||||
# They think they can get away with it
|
||||
has_trait = deceitful
|
||||
}
|
||||
# Only if the other character is also likely to accept in this case
|
||||
$CHARACTER_2$ = {
|
||||
sexually_liberal_trigger = yes
|
||||
OR = {
|
||||
# Doesn't care much about social taboo
|
||||
has_trait = callous
|
||||
has_trait = cynical
|
||||
has_trait = eccentric
|
||||
# Lack of contact with other members of their attracted sex
|
||||
has_trait = reclusive
|
||||
has_trait = shy
|
||||
# Deceitful trigger not present here because CHARACTER_1 is assumed to be the instigator, CHARACTER_2 doesn't necessarily actively want this, so getting away with it wouldn't motivate them into doing it
|
||||
is_incestuous_trigger = yes
|
||||
is_deviant_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
# A bit of a weirdo
|
||||
is_deviant_trigger = yes
|
||||
# I've incested before, I will incest again!
|
||||
is_incestuous_trigger = yes
|
||||
# Shared trauma
|
||||
AND = {
|
||||
any_relation = {
|
||||
type = rival
|
||||
has_relation_rival = $CHARACTER_2$
|
||||
}
|
||||
stress_level >= 1
|
||||
}
|
||||
}
|
||||
save_temporary_scope_as = incest_evaluation
|
||||
NOT = { #under 20 trigger is a HARD limit
|
||||
guaranteed_under_20_incest_rejection_trigger = {
|
||||
TARGET = scope:incest_evaluation
|
||||
SEDUCER = $CHARACTER_1$
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
guaranteed_under_20_incest_rejection_trigger = {
|
||||
$TARGET$ = {
|
||||
NOT = { is_consort_of = $SEDUCER$ }
|
||||
is_close_or_extended_family_of = $SEDUCER$
|
||||
age < 20
|
||||
age < $SEDUCER$.age
|
||||
is_ai = yes #Players are allowed to choose
|
||||
}
|
||||
}
|
||||
|
||||
### PREGNANCY & STDs ###
|
||||
possible_pregnancy_after_sex_with_character_trigger = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
is_male = yes
|
||||
$CHARACTER$ = { is_female = yes }
|
||||
}
|
||||
is_visibly_fertile = yes
|
||||
fertility >= 0.1
|
||||
|
||||
$CHARACTER$ ={
|
||||
is_visibly_fertile = yes
|
||||
fertility >= 0.1
|
||||
is_pregnant = no
|
||||
}
|
||||
}
|
||||
|
||||
trigger_if = {
|
||||
limit = {
|
||||
is_female = yes
|
||||
$CHARACTER$ = { is_male = yes }
|
||||
}
|
||||
is_visibly_fertile = yes
|
||||
fertility >= 0.1
|
||||
is_pregnant = no
|
||||
|
||||
$CHARACTER$ = {
|
||||
is_visibly_fertile = yes
|
||||
fertility >= 0.1
|
||||
}
|
||||
}
|
||||
}
|
||||
52
common/scripted_triggers/00_scheme_befriend_triggers.txt
Normal file
52
common/scripted_triggers/00_scheme_befriend_triggers.txt
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
#Scripted triggers relating to the Befriend Scheme
|
||||
|
||||
#####################################################################
|
||||
# TRIGGER LIST
|
||||
#####################################################################
|
||||
# !!! Remember to add all new triggers with a short description here !!!
|
||||
|
||||
#befriend_target_is_close_to_owner_trigger <-Indicates someone is close to you already
|
||||
|
||||
######################################################################
|
||||
# TRIGGERS
|
||||
######################################################################
|
||||
|
||||
befriend_target_is_close_to_owner_trigger = {
|
||||
OR = {
|
||||
is_close_or_extended_family_of = scope:target
|
||||
is_consort_of = scope:target
|
||||
is_employer_of = scope:target
|
||||
}
|
||||
}
|
||||
|
||||
befriend_owner_is_close_to_target_trigger = {
|
||||
OR = {
|
||||
is_close_or_extended_family_of = scope:owner
|
||||
is_consort_of = scope:owner
|
||||
court_owner = scope:owner
|
||||
}
|
||||
}
|
||||
|
||||
befriend_scope_is_close_to_target_trigger = {
|
||||
OR = {
|
||||
is_close_or_extended_family_of = scope:target
|
||||
is_consort_of = scope:target
|
||||
has_relation_friend = scope:target
|
||||
AND = {
|
||||
OR = {
|
||||
court_owner = scope:target
|
||||
AND = {
|
||||
exists = liege
|
||||
liege = scope:target
|
||||
}
|
||||
any_vassal = {
|
||||
this = scope:target
|
||||
}
|
||||
}
|
||||
reverse_opinion = {
|
||||
target = scope:target
|
||||
value > 30
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
931
common/scripted_triggers/00_scheme_triggers.txt
Normal file
931
common/scripted_triggers/00_scheme_triggers.txt
Normal file
|
|
@ -0,0 +1,931 @@
|
|||
|
||||
diplomacy_scheme_trigger = {
|
||||
OR = {
|
||||
scheme_type = befriend
|
||||
scheme_type = sway
|
||||
scheme_type = courting
|
||||
}
|
||||
}
|
||||
|
||||
intrigue_scheme_trigger = {
|
||||
OR = {
|
||||
scheme_type = murder
|
||||
scheme_type = abduct
|
||||
scheme_type = fabricate_hook
|
||||
scheme_type = steal_back_artifact
|
||||
}
|
||||
}
|
||||
|
||||
# Should be synced with the schemes listed in can_start_hostile_scheme_against_trigger.
|
||||
hostile_scheme_trigger = {
|
||||
OR = {
|
||||
scheme_type = murder
|
||||
scheme_type = abduct
|
||||
scheme_type = claim_throne
|
||||
scheme_type = fabricate_hook
|
||||
scheme_type = steal_back_artifact
|
||||
}
|
||||
}
|
||||
|
||||
friendly_scheme_trigger = {
|
||||
OR = {
|
||||
scheme_type = seduce
|
||||
scheme_type = befriend
|
||||
scheme_type = sway
|
||||
scheme_type = courting
|
||||
}
|
||||
}
|
||||
|
||||
# Should be synced with the schemes listed in hostile_scheme_trigger.
|
||||
can_start_hostile_scheme_against_trigger = {
|
||||
OR = {
|
||||
can_start_scheme = {
|
||||
type = murder
|
||||
target_character = $TARGET$
|
||||
}
|
||||
can_start_scheme = {
|
||||
type = abduct
|
||||
target_character = $TARGET$
|
||||
}
|
||||
can_start_scheme = {
|
||||
type = claim_throne
|
||||
target_character = $TARGET$
|
||||
}
|
||||
can_start_scheme = {
|
||||
type = fabricate_hook
|
||||
target_character = $TARGET$
|
||||
}
|
||||
can_start_scheme = {
|
||||
type = steal_back_artifact
|
||||
target_character = $TARGET$
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
agent_valid_to_be_discovered_by_spymaster = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
exists = scope:target.court_owner.cp:councillor_spymaster
|
||||
}
|
||||
NOT = {
|
||||
this = scope:target.court_owner.cp:councillor_spymaster
|
||||
}
|
||||
}
|
||||
NOT = {
|
||||
has_character_flag = free_to_scheme
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
exists = scope:target.court_owner
|
||||
}
|
||||
NOR = {
|
||||
reverse_has_opinion_modifier = {
|
||||
target = scope:target.court_owner
|
||||
modifier = scheming_against_me
|
||||
}
|
||||
reverse_has_opinion_modifier = {
|
||||
target = scope:target.court_owner
|
||||
modifier = schemed_against_me
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
personal_scheme_should_not_evaluate_tier_differences_trigger = {
|
||||
# Your spouse doesn't care if you're a different rank than them.
|
||||
scope:owner = {
|
||||
NOT = { is_consort_of = scope:target }
|
||||
}
|
||||
# And laamps are never bothered either way.
|
||||
scope:owner = { is_landless_adventurer = no }
|
||||
scope:target = { is_landless_adventurer = no }
|
||||
}
|
||||
|
||||
personal_scheme_success_compare_target_liege_tier_trigger = {
|
||||
is_landed_or_landless_administrative = no
|
||||
exists = liege
|
||||
OR = {
|
||||
is_spouse_of = liege
|
||||
is_close_family_of = liege
|
||||
dynasty = liege.dynasty
|
||||
}
|
||||
}
|
||||
|
||||
is_good_familial_murder_target_trigger = {
|
||||
root = {
|
||||
can_start_scheme = {
|
||||
target_character = prev
|
||||
type = murder
|
||||
}
|
||||
OR = {
|
||||
AND = { # Psychopaths ignore opinion...
|
||||
ai_greed >= very_high_positive_ai_value
|
||||
ai_compassion <= very_high_negative_ai_value
|
||||
has_trait = sadistic # Make sadistic people able to murder their own children
|
||||
}
|
||||
AND = { # Very greedy and non-compassionate characters almost ignore opinion...
|
||||
ai_greed >= very_high_positive_ai_value
|
||||
ai_compassion <= high_negative_ai_value
|
||||
opinion = {
|
||||
target = prev
|
||||
value <= medium_positive_opinion
|
||||
}
|
||||
}
|
||||
AND = { # Significantly greedy and non-compassionate characters can murder even at positive opinion
|
||||
ai_greed >= high_positive_ai_value
|
||||
ai_compassion < 0
|
||||
opinion = {
|
||||
target = prev
|
||||
value <= low_positive_opinion
|
||||
}
|
||||
}
|
||||
AND = { # Somewhat greedy characters can murder people they just barely dislike...
|
||||
ai_greed >= medium_positive_ai_value
|
||||
opinion = {
|
||||
target = prev
|
||||
value <= low_negative_opinion
|
||||
}
|
||||
}
|
||||
AND = { # Otherwise, their opinion must be rather poor...
|
||||
opinion = {
|
||||
target = prev
|
||||
value <= medium_negative_opinion
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
NOR = {
|
||||
has_opinion_modifier = {
|
||||
modifier = received_title_county
|
||||
target = root
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = received_title_duchy
|
||||
target = root
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = received_title_kingdom
|
||||
target = root
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = received_title_empire
|
||||
target = root
|
||||
}
|
||||
}
|
||||
#is a valid murder target if scheme owner is in line of succession to any of target's titles or at least 3rd in line of succession to any titles the target is 1st to inherit
|
||||
OR = {
|
||||
any_held_title = {
|
||||
tier >= root.highest_held_title_tier
|
||||
place_in_line_of_succession = {
|
||||
target = root
|
||||
value <= {
|
||||
value = 2
|
||||
if = {
|
||||
limit = { root.highest_held_title_tier > tier_barony }
|
||||
add = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
any_heir_title = {
|
||||
NOT = { holder = root }
|
||||
tier >= root.highest_held_title_tier
|
||||
place_in_line_of_succession = {
|
||||
target = root
|
||||
value <= {
|
||||
value = 2
|
||||
if = {
|
||||
limit = { root.highest_held_title_tier > tier_barony }
|
||||
add = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# This trigger is a bit contrived in some way to ensure absolutely everyone gets evaluated without any early-outing
|
||||
# It should always return true
|
||||
# We use "count = all" and trigger_ifs to ensure that all have to be evaluated, and that all return
|
||||
build_murder_targets_trigger = {
|
||||
any_relation = { # Rivals are good targets for murder schemes
|
||||
type = rival
|
||||
count = all
|
||||
trigger_if = {
|
||||
limit = {
|
||||
root = {
|
||||
ai_honor <= low_positive_ai_value
|
||||
can_start_scheme = {
|
||||
target_character = prev
|
||||
type = murder
|
||||
}
|
||||
}
|
||||
}
|
||||
add_to_temporary_list = murder_targets
|
||||
}
|
||||
}
|
||||
any_relation = { # Same with nemeses
|
||||
type = nemesis
|
||||
count = all
|
||||
trigger_if = {
|
||||
limit = {
|
||||
root = {
|
||||
ai_honor <= medium_positive_ai_value
|
||||
can_start_scheme = {
|
||||
target_character = prev
|
||||
type = murder
|
||||
}
|
||||
}
|
||||
}
|
||||
add_to_temporary_list = murder_targets
|
||||
}
|
||||
}
|
||||
trigger_if = { # Greedy people have no qualms murdering their way up the succession...
|
||||
limit = {
|
||||
ai_greed >= low_positive_ai_value
|
||||
exists = dynasty
|
||||
}
|
||||
dynasty = {
|
||||
any_dynasty_member = {
|
||||
count = all
|
||||
trigger_if = {
|
||||
limit = {
|
||||
is_good_familial_murder_target_trigger = yes
|
||||
}
|
||||
add_to_temporary_list = murder_targets
|
||||
}
|
||||
}
|
||||
}
|
||||
any_close_or_extended_family_member = {
|
||||
count = all
|
||||
trigger_if = {
|
||||
limit = {
|
||||
NOT = { is_in_list = murder_targets }
|
||||
is_good_familial_murder_target_trigger = yes
|
||||
}
|
||||
add_to_temporary_list = murder_targets
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_if = { # Greedy people want to murder their liege's high aptitude tax collector...
|
||||
limit = {
|
||||
ai_greed >= low_positive_ai_value
|
||||
is_independent_ruler = no
|
||||
exists = liege
|
||||
liege = {
|
||||
any_tax_collector = {
|
||||
any_tax_collector_vassal = {
|
||||
this = root
|
||||
}
|
||||
check_tax_collector_aptitude = {
|
||||
CHARACTER = this
|
||||
VALUE >= 4
|
||||
}
|
||||
add_to_temporary_list = murder_targets
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_if = { # Some Clan members want to murder Extolled people out of pure spite and malice
|
||||
limit = {
|
||||
ai_greed >= 0
|
||||
ai_vengefulness >= 0
|
||||
ai_compassion <= medium_negative_ai_value
|
||||
house.house_head ?= {
|
||||
is_ruler = yes
|
||||
government_has_flag = government_is_clan
|
||||
}
|
||||
ai_wants_low_unity = yes
|
||||
}
|
||||
house = {
|
||||
any_house_member = {
|
||||
has_trait = extolled
|
||||
add_to_temporary_list = murder_targets
|
||||
}
|
||||
}
|
||||
}
|
||||
any_consort = { # Unfaithful spouses
|
||||
trigger_if = {
|
||||
limit = {
|
||||
root = {
|
||||
ai_compassion <= 0
|
||||
can_start_scheme = {
|
||||
target_character = prev
|
||||
type = murder
|
||||
}
|
||||
}
|
||||
exposed_cheating_on_spouse_trigger = { SPOUSE = root }
|
||||
add_to_temporary_list = murder_targets
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_if = { # Certain vassals will plot against their liege under certain conditions
|
||||
limit = {
|
||||
highest_held_title_tier > tier_barony
|
||||
exists = liege
|
||||
liege = {
|
||||
tyranny >= medium_tyranny
|
||||
}
|
||||
opinion = {
|
||||
target = liege
|
||||
value <= high_negative_opinion
|
||||
}
|
||||
ai_rationality >= medium_positive_ai_value
|
||||
}
|
||||
liege = {
|
||||
add_to_temporary_list = murder_targets
|
||||
}
|
||||
}
|
||||
trigger_if = { # Murdering troublesome claimants is something you want to do...
|
||||
limit = {
|
||||
is_playable_character = yes
|
||||
primary_title.tier >= tier_duchy
|
||||
any_targeting_faction = {
|
||||
faction_is_type = claimant_faction
|
||||
special_character = {
|
||||
add_to_temporary_list = murder_targets
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_if = { # Paranoid characters want to murder claimants to their titles
|
||||
limit = {
|
||||
has_trait = paranoid
|
||||
ai_compassion <= low_negative_ai_value
|
||||
ai_rationality <= 0
|
||||
is_playable_character = yes
|
||||
primary_title.tier >= tier_duchy
|
||||
any_held_title = {
|
||||
any_claimant = {
|
||||
add_to_temporary_list = murder_targets
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
any_spouse = { # Murder infertile spouses if you've yet to have an heir (and you're heartless...)
|
||||
trigger_if = {
|
||||
limit = {
|
||||
root = {
|
||||
is_playable_character = yes
|
||||
ai_compassion <= 0
|
||||
ai_honor <= 0
|
||||
fertility > 0.1
|
||||
NOT = {
|
||||
any_child = {
|
||||
is_heir_of = root
|
||||
}
|
||||
}
|
||||
can_start_scheme = {
|
||||
target_character = prev
|
||||
type = murder
|
||||
}
|
||||
}
|
||||
is_ai = yes
|
||||
fertility < 0.1
|
||||
add_to_temporary_list = murder_targets
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
scheme_is_still_valid_trigger = {
|
||||
scope:target = {
|
||||
OR = {
|
||||
exists = location
|
||||
in_diplomatic_range = scope:owner
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
can_use_befriend_scheme_trigger = {
|
||||
OR = {
|
||||
has_perk = befriend_perk
|
||||
AND = {
|
||||
exists = dynasty
|
||||
dynasty = {
|
||||
has_dynasty_perk = fp1_adventure_legacy_5
|
||||
}
|
||||
target_is_vassal_or_below = $TARGET$
|
||||
}
|
||||
culture = { has_cultural_parameter = automatic_befriend_access }
|
||||
any_character_struggle = {
|
||||
involvement = involved
|
||||
has_struggle_phase_parameter = struggle_unlocks_befriend_schemes_for_everyone
|
||||
}
|
||||
AND = {
|
||||
government_has_flag = government_is_clan
|
||||
is_in_same_clan_as_trigger = { CHARACTER = $TARGET$ }
|
||||
house = { has_house_unity_stage = harmonious }
|
||||
}
|
||||
government_has_flag = government_is_nomadic
|
||||
}
|
||||
}
|
||||
|
||||
# Need to separate travel triggers from rest
|
||||
can_seduce_scheme_trigger = {
|
||||
$OWNER$ = {
|
||||
is_adult = yes
|
||||
is_imprisoned = no
|
||||
OR = {
|
||||
is_ai = no #Players may override their character's sexuality for the purposes of cynical seductions.
|
||||
is_attracted_to_gender_of = $TARGET$
|
||||
}
|
||||
is_below_ai_lover_soft_cap_trigger = yes
|
||||
NOR = {
|
||||
has_trait = celibate
|
||||
has_character_flag = is_party_baron
|
||||
has_relation_lover = $TARGET$
|
||||
guaranteed_under_20_incest_rejection_trigger = {
|
||||
TARGET = $TARGET$
|
||||
SEDUCER = $OWNER$
|
||||
}
|
||||
AND = {
|
||||
has_character_modifier = rejected_from_marriage_bed_modifier
|
||||
is_spouse_of = $TARGET$
|
||||
}
|
||||
}
|
||||
}
|
||||
$TARGET$ = {
|
||||
is_adult = yes
|
||||
is_imprisoned = no
|
||||
is_attracted_to_gender_of = $OWNER$
|
||||
NOR = {
|
||||
has_character_flag = block_seduce_attempts
|
||||
has_trait = intellect_bad_3
|
||||
has_trait = incapable
|
||||
has_trait = celibate
|
||||
has_opinion_modifier = {
|
||||
modifier = seduce_permanent_blocker_opinion
|
||||
target = $OWNER$
|
||||
}
|
||||
has_opinion_modifier = {
|
||||
modifier = seduce_regular_cooldown_opinion
|
||||
target = $OWNER$
|
||||
}
|
||||
}
|
||||
OR = {
|
||||
exists = location
|
||||
in_diplomatic_range = $OWNER$
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
$OWNER$ = { is_ai = yes }
|
||||
}
|
||||
is_below_ai_lover_soft_cap_trigger = yes
|
||||
trigger_if = { # Block AI from seducing lowborn nobodies in the players court
|
||||
limit = {
|
||||
liege ?= { is_ai = no }
|
||||
NOR = {
|
||||
is_courtier_of = $OWNER$
|
||||
is_foreign_court_or_pool_guest_of = $OWNER$
|
||||
}
|
||||
}
|
||||
OR = {
|
||||
is_lowborn = no
|
||||
is_playable_character = yes
|
||||
}
|
||||
}
|
||||
trigger_if = { #So players don't get spammed by AI seduction
|
||||
limit = { is_ai = no }
|
||||
NOT = {
|
||||
any_targeting_scheme = { scheme_type = seduce }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Scheme Ending Triggers
|
||||
|
||||
# Is this a scheme to kill someone who could be conceivably saved by something unexpected?
|
||||
is_savable_murder_scheme_trigger = {
|
||||
OR = {
|
||||
scheme_type = murder
|
||||
scheme_type = laamp_base_3011_contract_scheme
|
||||
}
|
||||
}
|
||||
|
||||
# Could & would this lover of $TARGET$
|
||||
available_lover_to_sacrifice_in_murder_trigger = {
|
||||
is_ruler = no
|
||||
is_available_ai_adult = yes
|
||||
# Filter out lovers that don't actually like you at all.
|
||||
NOT = { has_trait = disloyal }
|
||||
OR = {
|
||||
has_trait = loyal
|
||||
opinion = {
|
||||
target = $TARGET$
|
||||
# And frankly this is being generous.
|
||||
value >= 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Murder Intercept Triggers
|
||||
|
||||
# Would this character slack off from their task of guarding scope:target?
|
||||
bodyguard_will_actually_do_job_trigger = {
|
||||
# Basically functional.
|
||||
is_ruler = no
|
||||
is_physically_able_ai_adult = yes
|
||||
# Can't hate their charge.
|
||||
save_temporary_scope_as = char_temp
|
||||
NOR = {
|
||||
# Require that they don't hate their liege.
|
||||
has_relation_rival = scope:target
|
||||
opinion = {
|
||||
target = scope:target
|
||||
value <= high_negative_opinion
|
||||
}
|
||||
# Can't be directly involved with the scheme either.
|
||||
scope:scheme = {
|
||||
any_scheme_agent_character = { this = scope:char_temp }
|
||||
}
|
||||
scope:owner = scope:char_temp
|
||||
}
|
||||
}
|
||||
foodtaster_will_actually_do_job_trigger = {
|
||||
# Basically functional.
|
||||
is_ruler = no
|
||||
is_physically_able_ai_adult = yes
|
||||
# Can't be directly involved with the scheme.
|
||||
## We're a bit pickier here, since food tasters can't just slack off from their duties like bodyguards or cupbearers arguably can.
|
||||
### You eat the food or you don't, so if you don't, you really must've planned ahead to look like you did.
|
||||
save_temporary_scope_as = char_temp
|
||||
NOR = {
|
||||
scope:scheme = {
|
||||
any_scheme_agent_character = { this = scope:char_temp }
|
||||
}
|
||||
scope:owner = scope:char_temp
|
||||
}
|
||||
}
|
||||
cupbearer_will_actually_do_job_trigger = {
|
||||
# Basically functional.
|
||||
is_physically_able_ai_adult = yes
|
||||
# Can't hate their charge.
|
||||
save_temporary_scope_as = char_temp
|
||||
NOR = {
|
||||
# Require that they don't hate their liege.
|
||||
has_relation_rival = scope:target
|
||||
opinion = {
|
||||
target = scope:target
|
||||
value <= high_negative_opinion
|
||||
}
|
||||
# Can't be directly involved with the scheme either.
|
||||
scope:scheme = {
|
||||
any_scheme_agent_character = { this = scope:char_temp }
|
||||
}
|
||||
scope:owner = scope:char_temp
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Scheme Animation Triggers
|
||||
|
||||
should_use_amorous_scheme_animation_trigger = {
|
||||
OR = {
|
||||
scheme_type = seduce
|
||||
scheme_type = elope
|
||||
scheme_type = courting
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Agent Invite Triggers
|
||||
|
||||
would_agent_accept_petty_bribes_against_target_trigger = {
|
||||
exists = scope:scheme
|
||||
trigger_if = {
|
||||
limit = {
|
||||
exists = scope:scheme.scheme_target_character
|
||||
}
|
||||
NOT = {
|
||||
scope:recipient = { is_parent_of = scope:scheme.scheme_target_character }
|
||||
}
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
exists = scope:scheme.scheme_target_title
|
||||
}
|
||||
NOT = {
|
||||
scope:recipient = { is_parent_of = scope:scheme.scheme_target_title.holder }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
would_actor_consider_dramatic_enticement_trigger = {
|
||||
scope:actor = {
|
||||
OR = {
|
||||
is_ai = no
|
||||
has_trait = humble
|
||||
has_trait = content
|
||||
has_trait = profligate
|
||||
AND = {
|
||||
has_trait = vengeful
|
||||
has_relation_rival = scope:recipient
|
||||
}
|
||||
AND = {
|
||||
has_trait = impatient
|
||||
NOR = {
|
||||
has_trait = arrogant
|
||||
has_trait = ambitious
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
actor_has_valid_de_jure_enticement_county_trigger = {
|
||||
holder = scope:actor
|
||||
tier = tier_county
|
||||
NOT = { this = scope:actor.capital_county }
|
||||
}
|
||||
|
||||
actor_has_valid_claimed_enticement_county_trigger = {
|
||||
holder = scope:actor
|
||||
tier = tier_county
|
||||
NOT = { this = scope:actor.capital_county }
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Can Add Agent to Scheme Triggers
|
||||
|
||||
is_valid_agent_standard_trigger = {
|
||||
# The usual standard restrictions.
|
||||
is_adult = yes
|
||||
is_imprisoned = no
|
||||
# Can't be an existing agent in any scheme.
|
||||
save_temporary_scope_as = char_temp
|
||||
scope:owner = {
|
||||
NOT = {
|
||||
any_scheme = {
|
||||
any_scheme_agent_character = { this = scope:char_temp }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
char_can_fit_into_scheme_trigger = {
|
||||
save_temporary_scope_as = char_temp
|
||||
$SCHEME$ = {
|
||||
any_scheme_agent_slot = {
|
||||
is_filled = no
|
||||
save_temporary_scope_as = slot_temp
|
||||
}
|
||||
scope:char_temp = { is_valid_as_agent_in_slot = scope:slot_temp }
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Scheme APA Triggers
|
||||
|
||||
scheme_apa_apply_modifier_plus_secrecy_trigger = {
|
||||
#TODO_CD_EP3_ERCC; ask for scheme secrecy trigger.
|
||||
scheme_apa_apply_modifier_trigger = { MODIFIER = $MODIFIER$ }
|
||||
}
|
||||
|
||||
scheme_apa_apply_modifier_trigger = {
|
||||
NOR = {
|
||||
has_variable = scheme_pulse_action_on_cooldown
|
||||
has_scheme_modifier = $MODIFIER$
|
||||
}
|
||||
}
|
||||
|
||||
scheme_apa_apply_positive_progress_trigger = {
|
||||
NOT = { has_variable = scheme_pulse_action_on_cooldown }
|
||||
# How many days in before we want to allow progress gains?
|
||||
scheme_duration_days >= 365
|
||||
}
|
||||
|
||||
scheme_apa_apply_negative_progress_trigger = {
|
||||
NOT = { has_variable = scheme_pulse_action_on_cooldown }
|
||||
save_temporary_scope_as = scheme
|
||||
scheme_progress > scheme_progress_33
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Agent Availability Triggers
|
||||
|
||||
can_have_agent_hitman_trigger = { always = yes }
|
||||
can_have_agent_assassin_trigger = { always = yes }
|
||||
can_have_agent_lookout_trigger = { always = yes }
|
||||
can_have_agent_infiltrator_trigger = { always = yes }
|
||||
can_have_agent_footpad_trigger = { always = yes }
|
||||
can_have_agent_alibi_trigger = { always = yes }
|
||||
can_have_agent_thug_trigger = { always = yes }
|
||||
can_have_agent_comrade_in_arms_trigger = { always = yes }
|
||||
can_have_agent_socialite_trigger = { always = yes }
|
||||
can_have_agent_musician_trigger = { always = yes }
|
||||
can_have_agent_tumbler_trigger = { always = yes }
|
||||
can_have_agent_poet_trigger = { always = yes }
|
||||
can_have_agent_gabbler_trigger = { always = yes }
|
||||
can_have_agent_shill_trigger = { always = yes }
|
||||
can_have_agent_diplomat_trigger = { always = yes }
|
||||
can_have_agent_justiciar_trigger = { always = yes }
|
||||
can_have_agent_justiciar_speed_trigger = { always = yes }
|
||||
can_have_agent_scribe_trigger = { always = yes }
|
||||
can_have_agent_cleric_trigger = { always = yes }
|
||||
can_have_agent_theologian_trigger = { always = yes }
|
||||
can_have_agent_herald_trigger = { always = yes }
|
||||
can_have_agent_wolf_hunter_trigger = { always = yes }
|
||||
can_have_agent_thief_trigger = { always = yes }
|
||||
can_have_agent_tutor_trigger = { always = yes }
|
||||
can_have_agent_poisoner_trigger = {
|
||||
domicile ?= { has_domicile_parameter = camp_unlocks_poisoner_scheme_agents }
|
||||
}
|
||||
can_have_agent_muscle_trigger = { always = yes }
|
||||
can_have_agent_drillmaster_trigger = { always = yes }
|
||||
can_have_agent_tracker_trigger = { always = yes }
|
||||
can_have_agent_physic_trigger = { always = yes }
|
||||
can_have_agent_smith_trigger = { always = yes }
|
||||
can_have_agent_ambusher_trigger = { always = yes }
|
||||
can_have_agent_bodyguard_trigger = { always = yes }
|
||||
can_have_agent_scout_trigger = { always = yes }
|
||||
can_have_agent_outrider_trigger = { always = yes }
|
||||
can_have_agent_bookkeeper_trigger = { always = yes }
|
||||
can_have_agent_bailiff_trigger = { always = yes }
|
||||
can_have_agent_draughtsman_trigger = { always = yes }
|
||||
can_have_agent_planner_trigger = { always = yes }
|
||||
can_have_agent_supplier_trigger = { always = yes }
|
||||
can_have_agent_outcast_trigger = { always = yes }
|
||||
can_have_agent_wrangler_trigger = { always = yes }
|
||||
can_have_agent_decoy_trigger = { always = yes }
|
||||
can_have_agent_eunuch_trigger = { always = yes }
|
||||
can_have_agent_wrangler_speed_trigger = { always = yes }
|
||||
can_have_agent_theologian_success_trigger = { always = yes }
|
||||
can_have_agent_cleric_success_trigger = { always = yes }
|
||||
can_have_agent_lookout_success_trigger = { always = yes }
|
||||
can_have_agent_lookout_speed_trigger = { always = yes }
|
||||
|
||||
##################################################
|
||||
# Countermeasure Triggers
|
||||
|
||||
# Does a specific countermeasure apply to you?
|
||||
countermeasure_parametre_applies_againt_char_trigger = {
|
||||
$SCHEME_TARGET$.host ?= {
|
||||
has_scheme_countermeasure_parameter = $PARAMETER$
|
||||
# Don't apply countermeasures vs. ourselves.
|
||||
NOT = { this = $SCHEME_OWNER$ }
|
||||
# And if the countermeasure only affects the host, then restrict it.
|
||||
trigger_if = {
|
||||
limit = { has_scheme_countermeasure_parameter = countermeasure_only_affects_court_holder }
|
||||
this = $SCHEME_TARGET$
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Can a character adopt defensive measures against hostile schemes?
|
||||
can_set_own_countermeasures_trigger = {
|
||||
custom_tooltip = {
|
||||
OR = {
|
||||
# You can only set them for your home court.
|
||||
host = prev
|
||||
# And then we use this in here so we can valid
|
||||
## ... valid what, Ewan? _What can we valid_? You never finished your sentence and now we will never know.
|
||||
is_ruler = no
|
||||
}
|
||||
text = can_set_own_countermeasures_trigger.tt
|
||||
}
|
||||
}
|
||||
|
||||
# Used in scripted modifiers to determine if the AI should be deploying countermeasures that reduce secrecy or generally affect success chance.
|
||||
should_ai_take_preemptive_countermeasures_trigger = {
|
||||
# Don't do this if we've already deployed countermeasures.
|
||||
NOT = { has_scheme_countermeasure_parameter = has_any_countermeasure_active }
|
||||
any_targeting_scheme = {
|
||||
# Make sure we'd need to do this at all.
|
||||
has_variable = apply_countermeasures
|
||||
# And we don't want to face schemes that're already at a later stage.
|
||||
is_scheme_exposed = no
|
||||
# Buuuut also give them their grace period to get started.
|
||||
has_variable = secrecy_grace_period
|
||||
var:secrecy_grace_period <= 0
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Countermeasure Access Triggers
|
||||
|
||||
# This trigger means that a character will only ever have access to the best version of a given countermeasure.
|
||||
## Please note that some tiers may be inaccessible: they're set up so they can be hooked in to stuff, but we haven't assigned them all out straight away.
|
||||
## Use them if you want them but don't feel obligated, basically.
|
||||
scheme_countermeasure_access_select_best_tier_trigger = {
|
||||
save_temporary_scope_value_as = {
|
||||
name = checked_tier
|
||||
value = $TIER$
|
||||
}
|
||||
trigger_if = {
|
||||
limit = { scheme_countermeasure_access_t4_$COUNTERMEASURE$_trigger = yes }
|
||||
scope:checked_tier = 4
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = { scheme_countermeasure_access_t3_$COUNTERMEASURE$_trigger = yes }
|
||||
scope:checked_tier = 3
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = { scheme_countermeasure_access_t2_$COUNTERMEASURE$_trigger = yes }
|
||||
scope:checked_tier = 2
|
||||
}
|
||||
trigger_else = { scope:checked_tier = 1 }
|
||||
}
|
||||
|
||||
# Can this character access the higher tiers of the Bounties for Whispers countermeasure?
|
||||
scheme_countermeasure_access_t2_bounties_for_whispers_trigger = {
|
||||
OR = {
|
||||
has_trait_with_flag = trait_unlocks_t2_countermeasures
|
||||
culture = { has_cultural_parameter = cultrad_unlocks_t2_countermeasures }
|
||||
}
|
||||
}
|
||||
scheme_countermeasure_access_t3_bounties_for_whispers_trigger = {
|
||||
always = no
|
||||
}
|
||||
scheme_countermeasure_access_t4_bounties_for_whispers_trigger = {
|
||||
OR = {
|
||||
culture = { has_cultural_parameter = cultrad_unlocks_t4_bounties_for_whispers }
|
||||
faith = { has_doctrine_parameter = tenet_unlocks_t4_bounties_for_whispers }
|
||||
}
|
||||
}
|
||||
|
||||
# Can this character access the higher tiers of the Arbitrary Arrests countermeasure?
|
||||
scheme_countermeasure_access_t2_arbitrary_arrests_trigger = {
|
||||
OR = {
|
||||
has_trait_with_flag = trait_unlocks_t2_countermeasures
|
||||
has_trait_with_flag = trait_unlocks_t2_arbitrary_arrests
|
||||
culture = { has_cultural_parameter = cultrad_unlocks_t2_countermeasures }
|
||||
}
|
||||
}
|
||||
scheme_countermeasure_access_t3_arbitrary_arrests_trigger = {
|
||||
culture = { has_cultural_parameter = cultrad_unlocks_t3_arbitrary_arrests }
|
||||
}
|
||||
scheme_countermeasure_access_t4_arbitrary_arrests_trigger = {
|
||||
always = no
|
||||
}
|
||||
|
||||
# Can this character access the higher tiers of the Strengthen Sentries countermeasure?
|
||||
scheme_countermeasure_access_t2_strengthen_sentries_trigger = {
|
||||
OR = {
|
||||
has_trait_with_flag = trait_unlocks_t2_countermeasures
|
||||
culture = { has_cultural_parameter = cultrad_unlocks_t2_countermeasures }
|
||||
}
|
||||
}
|
||||
scheme_countermeasure_access_t3_strengthen_sentries_trigger = {
|
||||
culture = { has_cultural_parameter = cultrad_unlocks_t3_strengthen_sentries }
|
||||
}
|
||||
scheme_countermeasure_access_t4_strengthen_sentries_trigger = {
|
||||
always = no
|
||||
}
|
||||
|
||||
# Can this character access the higher tiers of the Redouble Guards countermeasure?
|
||||
scheme_countermeasure_access_t2_redouble_guards_trigger = {
|
||||
OR = {
|
||||
has_trait_with_flag = trait_unlocks_t2_countermeasures
|
||||
culture = {
|
||||
OR = {
|
||||
has_cultural_parameter = cultrad_unlocks_t2_countermeasures
|
||||
has_cultural_parameter = cultrad_unlocks_t2_redouble_guards
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
scheme_countermeasure_access_t3_redouble_guards_trigger = {
|
||||
culture = { has_cultural_parameter = cultrad_unlocks_t3_redouble_guards }
|
||||
}
|
||||
scheme_countermeasure_access_t4_redouble_guards_trigger = {
|
||||
always = no
|
||||
}
|
||||
|
||||
# Can this character access the higher tiers of the Withdraw from View countermeasure?
|
||||
scheme_countermeasure_access_t2_withdraw_from_view_trigger = {
|
||||
OR = {
|
||||
OR = {
|
||||
has_trait_with_flag = trait_unlocks_t2_countermeasures
|
||||
culture = { has_cultural_parameter = cultrad_unlocks_t2_countermeasures }
|
||||
}
|
||||
has_trait_with_flag = trait_unlocks_t2_withdraw_from_view
|
||||
}
|
||||
}
|
||||
scheme_countermeasure_access_t3_withdraw_from_view_trigger = {
|
||||
OR = {
|
||||
has_trait_with_flag = trait_unlocks_t3_withdraw_from_view
|
||||
faith = { has_doctrine_parameter = tenet_unlocks_t3_withdraw_from_view }
|
||||
}
|
||||
}
|
||||
scheme_countermeasure_access_t4_withdraw_from_view_trigger = {
|
||||
has_trait_with_flag = trait_unlocks_t4_withdraw_from_view
|
||||
}
|
||||
|
||||
scheme_generic_ai_blocker_trigger = {
|
||||
any_scheme = {
|
||||
OR = {
|
||||
scheme_type = befriend
|
||||
scheme_type = sway
|
||||
scheme_type = seduce
|
||||
scheme_type = courting
|
||||
scheme_type = elope
|
||||
scheme_type = learn_language
|
||||
scheme_type = teach_governor
|
||||
}
|
||||
}
|
||||
}
|
||||
134
common/scripted_triggers/00_scripted_rule_triggers.txt
Normal file
134
common/scripted_triggers/00_scripted_rule_triggers.txt
Normal file
|
|
@ -0,0 +1,134 @@
|
|||
#Controls the can_raid rule.
|
||||
can_raid_trigger = {
|
||||
OR = {
|
||||
# Government logic.
|
||||
government_has_flag = government_can_raid_rule
|
||||
## Admin - Frontier themes
|
||||
vassal_contract_has_flag = admin_theme_can_raid
|
||||
## Clan - Ghazi
|
||||
vassal_contract_has_flag = vassal_contract_allow_raiding
|
||||
# Faith Logic.
|
||||
faith = { has_doctrine_parameter = faith_can_raid }
|
||||
# Dynasty logic.
|
||||
dynasty ?= {
|
||||
OR = {
|
||||
can_raid_dynasty_modifiers_that_enable_raiding_overseas_list_trigger = yes
|
||||
can_raid_dynasty_modifiers_that_enable_raiding_overland_list_trigger = yes
|
||||
}
|
||||
}
|
||||
# House logic.
|
||||
house ?= {
|
||||
OR = {
|
||||
can_raid_house_modifiers_that_enable_raiding_overseas_list_trigger = yes
|
||||
can_raid_house_modifiers_that_enable_raiding_overland_list_trigger = yes
|
||||
}
|
||||
}
|
||||
# Cultural logic.
|
||||
## With restrictions.
|
||||
AND = {
|
||||
can_raid_cultural_parameter_requirements_for_non_tribals_trigger = yes
|
||||
culture = {
|
||||
OR = {
|
||||
has_cultural_parameter = culture_can_raid_at_sea_even_if_feudal
|
||||
has_cultural_parameter = culture_can_raid_over_land_even_if_feudal
|
||||
}
|
||||
}
|
||||
}
|
||||
## Without restrictions.
|
||||
culture = {
|
||||
OR = {
|
||||
has_cultural_parameter = culture_can_raid_at_sea_even_if_feudal_no_restrictions
|
||||
has_cultural_parameter = culture_can_raid_over_land_even_if_feudal_no_restrictions
|
||||
}
|
||||
}
|
||||
# Trait logics.
|
||||
## With restrictions.
|
||||
AND = {
|
||||
can_raid_trait_flag_standard_requirements_trigger = yes
|
||||
has_trait_with_flag = trait_enable_raiding_per_standard_restrictions
|
||||
}
|
||||
## Without restrictions.
|
||||
has_trait_with_flag = trait_enable_raiding_without_restrictions
|
||||
}
|
||||
# Some faiths prohibit this.
|
||||
OR = {
|
||||
NOR = {
|
||||
faith = { has_doctrine_parameter = holy_wars_forbidden }
|
||||
government_has_flag = government_is_landless_adventurer
|
||||
}
|
||||
# But not for Nomads
|
||||
government_has_flag = government_is_nomadic
|
||||
}
|
||||
}
|
||||
|
||||
# Here so that you can plug in whatever dynasty modifiers you want without overwriting the whole scripted rule trigger.
|
||||
can_raid_dynasty_modifiers_that_enable_raiding_overseas_list_trigger = {
|
||||
OR = {
|
||||
# Yes, I realise the OR is redundant till someone else puts something in here. Shoosh.
|
||||
has_dynasty_modifier = fp1_legacy_of_piracy_modifier
|
||||
}
|
||||
}
|
||||
can_raid_dynasty_modifiers_that_enable_raiding_overland_list_trigger = {
|
||||
OR = {
|
||||
# Yes, I realise the OR is redundant till someone else puts something in here. Shoosh.
|
||||
# Always = no because we have no vanilla use-case atm — the assumption is that modders'll overwrite it.
|
||||
always = no
|
||||
}
|
||||
}
|
||||
|
||||
# Here so that you can plug in whatever house modifiers you want without overwriting the whole scripted rule trigger.
|
||||
can_raid_house_modifiers_that_enable_raiding_overseas_list_trigger = {
|
||||
OR = {
|
||||
# Yes, I realise the OR is redundant till someone else puts something in here. Shoosh.
|
||||
# Always = no because we have no vanilla use-case atm — the assumption is that modders'll overwrite it.
|
||||
always = no
|
||||
}
|
||||
}
|
||||
can_raid_house_modifiers_that_enable_raiding_overland_list_trigger = {
|
||||
OR = {
|
||||
# Yes, I realise the OR is redundant till someone else puts something in here. Shoosh.
|
||||
# Always = no because we have no vanilla use-case atm — the assumption is that modders'll overwrite it.
|
||||
always = no
|
||||
}
|
||||
}
|
||||
|
||||
# Here so that you can tweak the rules on how non-tribals raid via CulTrad without overriding the whole scripted rule trigger.
|
||||
can_raid_cultural_parameter_requirements_for_non_tribals_trigger = {
|
||||
OR = {
|
||||
highest_held_title_tier <= tier_duchy
|
||||
realm_size <= minor_realm_size
|
||||
}
|
||||
}
|
||||
|
||||
# Here so that you can tweak the rules on which innovations allow raiding without overriding the whole scripted rule trigger.
|
||||
can_ran_raid_overseas_cultural_innovations_trigger = {
|
||||
OR = {
|
||||
has_innovation = innovation_longboats
|
||||
has_innovation = innovation_african_canoes
|
||||
}
|
||||
}
|
||||
|
||||
# Here so that you can tweak the rules on characters with a trait that lets them raid under certain circumstances raid without overriding the whole scripted rule trigger.
|
||||
can_raid_trait_flag_standard_requirements_trigger = {
|
||||
# We don't use this in vanilla, so we don't have any actual requirements atm.
|
||||
always = yes
|
||||
}
|
||||
|
||||
can_raid_across_water_trigger = {
|
||||
OR = {
|
||||
# Culture logic.
|
||||
culture = {
|
||||
OR = {
|
||||
can_ran_raid_overseas_cultural_innovations_trigger = yes
|
||||
has_cultural_parameter = culture_can_raid_at_sea_even_if_feudal
|
||||
has_cultural_parameter = culture_can_raid_at_sea_even_if_feudal_no_restrictions
|
||||
}
|
||||
}
|
||||
# Dynasty logic.
|
||||
dynasty ?= { can_raid_dynasty_modifiers_that_enable_raiding_overseas_list_trigger = yes }
|
||||
# House logic.
|
||||
house ?= { can_raid_house_modifiers_that_enable_raiding_overseas_list_trigger = yes }
|
||||
#Is Hereward.
|
||||
has_trait = the_wake
|
||||
}
|
||||
}
|
||||
|
|
@ -292,7 +292,7 @@ can_be_granted_titles_by = { #This is set up with trigger-ifs to allow for nice
|
|||
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$ = { government_has_flag = government_is_administrative } }
|
||||
NOT = {
|
||||
$RULER$.faith = {
|
||||
has_dominant_ruling_gender = scope:title_grantee
|
||||
|
|
@ -318,7 +318,7 @@ can_be_granted_titles_by = { #This is set up with trigger-ifs to allow for nice
|
|||
is_ruler = no #Rulers can always get additional titles
|
||||
is_theocratic_lessee = no #Theocratic lessees use other gender checks
|
||||
$RULER$ = {
|
||||
has_government = administrative_government
|
||||
government_has_flag = government_is_administrative
|
||||
NOT = { has_realm_law = equal_law }
|
||||
}
|
||||
}
|
||||
|
|
@ -373,8 +373,9 @@ activate_disease_data_tracking_trigger = {
|
|||
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
|
||||
is_vassal_of = liege # To ensure we are actually a vassal and not a tributary
|
||||
subject_contract_has_modifiable_obligations = yes
|
||||
subject_contract_is_blocked_from_modification = no
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
595
common/scripted_triggers/00_secret_triggers.txt
Normal file
595
common/scripted_triggers/00_secret_triggers.txt
Normal file
|
|
@ -0,0 +1,595 @@
|
|||
|
||||
#Triggers revolving around secrets
|
||||
|
||||
#has_secret_unknown_by_root_trigger
|
||||
#Being_blackmailed_by_root_trigger
|
||||
#is_blackmailable_secret_trigger
|
||||
#secret_is_always_interesting_trigger
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
has_secret_unknown_by_root_trigger = {
|
||||
any_secret = {
|
||||
NOT = {
|
||||
is_known_by = root
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
being_blackmailed_by_root_trigger = {
|
||||
root = {
|
||||
OR = {
|
||||
has_hook_of_type = {
|
||||
target = prev
|
||||
type = weak_blackmail_hook
|
||||
}
|
||||
has_hook_of_type = {
|
||||
target = prev
|
||||
type = strong_blackmail_hook
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
is_blackmailable_secret_trigger = { #Should not include is known
|
||||
$PARTICIPANT$ = { save_temporary_scope_as = is_blackmailable_secret_participant }
|
||||
$BLACKMAILER$ = { save_temporary_scope_as = is_blackmailable_secret_blackmailer }
|
||||
is_shunned_or_criminal_for = scope:is_blackmailable_secret_participant
|
||||
can_be_exposed_by = scope:is_blackmailable_secret_blackmailer
|
||||
#Can we actually add a hook of the correct type
|
||||
trigger_if = {
|
||||
limit = { is_shunned_for = scope:is_blackmailable_secret_participant }
|
||||
custom_description = {
|
||||
text = "already_has_a_superior_hook"
|
||||
subject = scope:is_blackmailable_secret_blackmailer
|
||||
object = scope:is_blackmailable_secret_participant
|
||||
scope:is_blackmailable_secret_blackmailer = {
|
||||
can_add_hook = {
|
||||
type = weak_blackmail_hook
|
||||
target = scope:is_blackmailable_secret_participant
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_if = {
|
||||
limit = { is_criminal_for = scope:is_blackmailable_secret_participant }
|
||||
custom_description = {
|
||||
text = "already_has_a_superior_hook"
|
||||
subject = scope:is_blackmailable_secret_blackmailer
|
||||
object = scope:is_blackmailable_secret_participant
|
||||
scope:is_blackmailable_secret_blackmailer = {
|
||||
can_add_hook = {
|
||||
type = strong_blackmail_hook
|
||||
target = scope:is_blackmailable_secret_participant
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#If an AI promised not to reveal a secret they have to be very dishonest to do it
|
||||
trigger_if = {
|
||||
limit = { exists = var:promised_not_to_reveal}
|
||||
custom_description = {
|
||||
text = "promised_not_to_reveal_secret"
|
||||
var:promised_not_to_reveal = scope:is_blackmailable_secret_blackmailer
|
||||
scope:is_blackmailable_secret_blackmailer = {
|
||||
is_ai = yes
|
||||
ai_honor <= medium_negative_ai_value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#Some things you can't blackmail others about
|
||||
custom_description = {
|
||||
text = "cant_blackmail_another_witch"
|
||||
subject = scope:is_blackmailable_secret_blackmailer
|
||||
NAND = {
|
||||
secret_type = secret_witch
|
||||
scope:is_blackmailable_secret_blackmailer = { is_witch_trigger = yes }
|
||||
}
|
||||
}
|
||||
# Can't blackmail a crypto-religionist of the same faith
|
||||
trigger_if = {
|
||||
limit = { secret_type = secret_crypto_religionist }
|
||||
custom_description = {
|
||||
text = cannot_blackmail_crypto_religionist_of_same_faith
|
||||
scope:is_blackmailable_secret_blackmailer = {
|
||||
NOR = {
|
||||
exists = secret_faith
|
||||
secret_faith ?= scope:is_blackmailable_secret_participant.secret_faith
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_if = {
|
||||
limit = { secret_type = secret_lover }
|
||||
custom_description = {
|
||||
text = cannot_blackmail_own_lover_secret
|
||||
NOT = { secret_target = scope:is_blackmailable_secret_blackmailer }
|
||||
}
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
secret_type = secret_unmarried_illegitimate_child
|
||||
}
|
||||
custom_description = {
|
||||
text = cannot_blackmail_over_own_bastard
|
||||
secret_target = {
|
||||
NOR = {
|
||||
mother = scope:is_blackmailable_secret_blackmailer
|
||||
real_father = scope:is_blackmailable_secret_blackmailer
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
secret_type = secret_disputed_heritage
|
||||
}
|
||||
custom_description = {
|
||||
text = cannot_blackmail_over_own_bastard
|
||||
NOT = {
|
||||
secret_target = {
|
||||
OR = {
|
||||
mother = scope:is_blackmailable_secret_blackmailer
|
||||
real_father = scope:is_blackmailable_secret_blackmailer
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
secret_is_always_interesting_trigger = { #Even if they can't be used for blackmail
|
||||
OR = {
|
||||
secret_type = secret_lover
|
||||
secret_type = secret_murder
|
||||
secret_type = secret_murder_attempt
|
||||
secret_type = secret_disputed_heritage
|
||||
secret_type = secret_unmarried_illegitimate_child
|
||||
secret_type = secret_crypto_religionist
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#Checks whether a secret would incriminate its secret target if known
|
||||
#Parameters:
|
||||
# TARGET
|
||||
secret_is_incriminating_trigger = {
|
||||
OR = {
|
||||
exists = secret_target
|
||||
any_secret_participant = {
|
||||
count >= 1
|
||||
}
|
||||
}
|
||||
OR = {
|
||||
AND = {
|
||||
secret_type = secret_lover
|
||||
secret_target = $TARGET$
|
||||
}
|
||||
AND = {
|
||||
secret_type = secret_disputed_heritage
|
||||
OR = {
|
||||
secret_target = $TARGET$
|
||||
secret_target.mother = $TARGET$
|
||||
any_secret_participant = {
|
||||
this = $TARGET$
|
||||
}
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
secret_type = secret_unmarried_illegitimate_child
|
||||
OR = {
|
||||
secret_target = $TARGET$
|
||||
secret_target.mother = $TARGET$
|
||||
any_secret_participant = {
|
||||
this = $TARGET$
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
###Expose secret triggers###
|
||||
|
||||
block_exposed_secret_general_notifications = { #Because you're already getting your own, special event
|
||||
OR = {
|
||||
#Is one of the involved parties
|
||||
this = scope:secret_exposer
|
||||
this = scope:exposed_secret_character
|
||||
this = scope:exposed_secret_owner
|
||||
AND = {
|
||||
exists = scope:exposed_secret_target
|
||||
this = scope:exposed_secret_target
|
||||
}
|
||||
#For lover secret: No events for spouses or lovers, they get infidelity_confrontation.1000 instead
|
||||
trigger_if = {
|
||||
limit = { scope:secret = { secret_type = secret_lover } }
|
||||
OR = {
|
||||
is_spouse_of = scope:exposed_secret_owner
|
||||
has_relation_lover = scope:exposed_secret_owner
|
||||
is_spouse_of = scope:exposed_secret_target
|
||||
has_relation_lover = scope:exposed_secret_target
|
||||
}
|
||||
}
|
||||
#For bastard secrets: No events for child mother and real father
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
scope:secret = {
|
||||
OR = {
|
||||
secret_type = secret_disputed_heritage
|
||||
secret_type = secret_unmarried_illegitimate_child
|
||||
}
|
||||
}
|
||||
}
|
||||
OR = {
|
||||
scope:exposed_secret_target.mother = scope:show_me #mother
|
||||
scope:exposed_secret_target.real_father = scope:show_me #real father
|
||||
}
|
||||
}
|
||||
trigger_else = { } #Just to avoid errors
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
show_me_exposed_secret_event_trigger = {
|
||||
expose_secret_scope_saving_trigger = { SECRET = $SECRET$ CHARACTER = $CHARACTER$ } #Saves show_me, exposed_secret_character, exposed_secret_owner & exposed_secret_target
|
||||
block_exposed_secret_general_notifications = no #Isn't the owner/target/exposer or other involved character
|
||||
#Is someone who cares
|
||||
OR = {
|
||||
is_spouse_of_even_if_dead = scope:exposed_secret_character
|
||||
is_close_family_of = scope:exposed_secret_character
|
||||
AND = {
|
||||
exists = scope:exposed_secret_character.player_heir
|
||||
scope:exposed_secret_character = { player_heir = scope:show_me }
|
||||
}
|
||||
AND = {
|
||||
scope:exposed_secret_character = { exists = liege }
|
||||
scope:exposed_secret_character = { liege = scope:show_me }
|
||||
}
|
||||
AND = { #For bastards, fathers also care
|
||||
$SECRET$ = { secret_type = secret_disputed_heritage }
|
||||
exists = scope:father
|
||||
this = scope:father
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
show_me_exposed_secret_feed_message_trigger = {
|
||||
expose_secret_scope_saving_trigger = { SECRET = $SECRET$ CHARACTER = $CHARACTER$ } #Saves show_me, exposed_secret_character, exposed_secret_owner & exposed_secret_target
|
||||
block_exposed_secret_general_notifications = no #Isn't the owner/target/exposer or other involved character
|
||||
NOT = { show_me_exposed_secret_event_trigger = { SECRET = $SECRET$ CHARACTER = $CHARACTER$ } } #I.e. hasn't already been notified
|
||||
}
|
||||
|
||||
expose_secret_scope_saving_trigger = { #Because we save the same scopes in two triggers that need to be the same
|
||||
save_temporary_scope_as = show_me
|
||||
$CHARACTER$ = {
|
||||
save_temporary_scope_as = exposed_secret_character #Most of the time this is owner, but for secrets with targets/other involved parties it can also be them
|
||||
}
|
||||
$SECRET$ = {
|
||||
secret_owner = { save_temporary_scope_as = exposed_secret_owner }
|
||||
trigger_if = {
|
||||
limit = { exists = secret_target }
|
||||
secret_target = { save_temporary_scope_as = exposed_secret_target }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
###Triggers for give_random_likely_secret_effect
|
||||
|
||||
give_random_likely_secret_murder_attempt_victim_trigger = {
|
||||
is_ai = yes
|
||||
save_temporary_scope_as = victim
|
||||
scope:murderer = {
|
||||
NOT = {
|
||||
any_secret = {
|
||||
secret_type = secret_murder_attempt
|
||||
secret_target = scope:victim
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
give_random_likely_secret_lover_trigger = {
|
||||
is_adult = yes
|
||||
is_ai = yes
|
||||
NOT = { any_relation = { type = lover this = scope:lover_1 } }
|
||||
NOT = { is_spouse_of = scope:lover_1 }
|
||||
NOT = { has_trait = celibate }
|
||||
opinion = {
|
||||
target = scope:lover_1
|
||||
value >= 20
|
||||
}
|
||||
reverse_opinion = {
|
||||
target = scope:lover_1
|
||||
value >= 20
|
||||
}
|
||||
save_temporary_scope_as = lover_2
|
||||
possible_mutual_interest_trigger = { CHARACTER_1 = scope:lover_1 CHARACTER_2 = scope:lover_2 }
|
||||
}
|
||||
|
||||
give_random_likely_secret_incestous_lover_trigger = {
|
||||
is_adult = yes
|
||||
is_ai = yes
|
||||
NOT = { any_relation = { type = lover this = scope:lover_1 } }
|
||||
NOT = { is_spouse_of = scope:lover_1 }
|
||||
OR = {
|
||||
save_temporary_scope_as = lover_2
|
||||
possible_mutual_interest_trigger = { CHARACTER_1 = scope:lover_1 CHARACTER_2 = scope:lover_2 }
|
||||
AND = {
|
||||
matching_gender_and_sexuality_trigger = { CHARACTER_1 = scope:lover_1 CHARACTER_2 = scope:lover_2 }
|
||||
opinion = {
|
||||
target = scope:lover_1
|
||||
value >= 40
|
||||
}
|
||||
reverse_opinion = {
|
||||
target = scope:lover_1
|
||||
value >= 40
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#Simple Check if a given Secret Type is blackmailable
|
||||
# NOTE THAT THIS CAN ONLY EVER CORRECTLY EVALUATE SECRETS THAT THE TARGET DOES NOT ALREADY HAVE
|
||||
# ALSO NOTE THAT IT WILL ONLY EVER RETURN TRUE FOR SECRETS THAT ARE NOT RELIANT ON HAVING A VALID TARGET
|
||||
secret_type_is_blackmailable_simple_trigger = {
|
||||
# TYPE
|
||||
# TARGET
|
||||
|
||||
save_temporary_scope_value_as = {
|
||||
name = type_flag
|
||||
value = flag:$TYPE$
|
||||
}
|
||||
|
||||
trigger_if = {
|
||||
limit = {
|
||||
scope:type_flag = flag:secret_deviant
|
||||
}
|
||||
secret_deviant_is_valid_trigger = {
|
||||
OWNER = $TARGET$
|
||||
}
|
||||
OR = {
|
||||
secret_deviant_is_shunned_trigger = {
|
||||
OWNER = $TARGET$
|
||||
}
|
||||
secret_deviant_is_criminal_trigger = {
|
||||
OWNER = $TARGET$
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
scope:type_flag = flag:secret_homosexual
|
||||
}
|
||||
secret_homosexual_is_valid_trigger = {
|
||||
OWNER = $TARGET$
|
||||
}
|
||||
OR = {
|
||||
secret_homosexual_is_shunned_trigger = {
|
||||
OWNER = $TARGET$
|
||||
}
|
||||
secret_homosexual_is_criminal_trigger = {
|
||||
OWNER = $TARGET$
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
scope:type_flag = flag:secret_cannibal
|
||||
}
|
||||
secret_cannibal_is_valid_trigger = {
|
||||
OWNER = $TARGET$
|
||||
}
|
||||
OR = {
|
||||
secret_cannibal_is_shunned_trigger = {
|
||||
OWNER = $TARGET$
|
||||
}
|
||||
secret_cannibal_is_criminal_trigger = {
|
||||
OWNER = $TARGET$
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
scope:type_flag = flag:secret_non_believer
|
||||
}
|
||||
secret_non_believer_is_valid_trigger = {
|
||||
OWNER = $TARGET$
|
||||
}
|
||||
OR = {
|
||||
secret_non_believer_is_shunned_trigger = {
|
||||
OWNER = $TARGET$
|
||||
}
|
||||
secret_non_believer_is_criminal_trigger = {
|
||||
OWNER = $TARGET$
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
scope:type_flag = flag:secret_incest
|
||||
}
|
||||
secret_incest_is_valid_trigger = {
|
||||
OWNER = $TARGET$
|
||||
}
|
||||
OR = {
|
||||
secret_incest_is_shunned_trigger = {
|
||||
OWNER = $TARGET$
|
||||
}
|
||||
secret_incest_is_criminal_trigger = {
|
||||
OWNER = $TARGET$
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
scope:type_flag = flag:secret_witch
|
||||
}
|
||||
secret_witch_is_valid_trigger = {
|
||||
OWNER = $TARGET$
|
||||
}
|
||||
OR = {
|
||||
secret_witch_is_shunned_trigger = {
|
||||
OWNER = $TARGET$
|
||||
}
|
||||
secret_witch_is_criminal_trigger = {
|
||||
OWNER = $TARGET$
|
||||
}
|
||||
}
|
||||
NOT = {
|
||||
$BLACKMAILER$ = { is_witch_trigger = yes }
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
scope:type_flag = flag:secret_crypto_religionist
|
||||
}
|
||||
secret_crypto_religionist_is_valid_trigger = {
|
||||
OWNER = $TARGET$
|
||||
}
|
||||
OR = {
|
||||
secret_crypto_religionist_is_shunned_trigger = {
|
||||
OWNER = $TARGET$
|
||||
}
|
||||
secret_crypto_religionist_is_criminal_trigger = {
|
||||
OWNER = $TARGET$
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_else = { #Murder stuff, Bastard secrets, etc.
|
||||
always = no
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
random_blackmailable_secret_can_be_added_simple_trigger = {
|
||||
$TARGET$ = { save_temporary_scope_as = target }
|
||||
OR = {
|
||||
AND = {
|
||||
secret_type_is_blackmailable_simple_trigger = {
|
||||
TYPE = secret_deviant
|
||||
TARGET = scope:target
|
||||
BLACKMAILER = $BLACKMAILER$
|
||||
}
|
||||
scope:target = {
|
||||
NOT = {
|
||||
any_secret = {
|
||||
secret_type = secret_deviant
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
secret_type_is_blackmailable_simple_trigger = {
|
||||
TYPE = secret_homosexual
|
||||
TARGET = scope:target
|
||||
BLACKMAILER = $BLACKMAILER$
|
||||
}
|
||||
scope:target = {
|
||||
NOT = {
|
||||
any_secret = {
|
||||
secret_type = secret_homosexual
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
secret_type_is_blackmailable_simple_trigger = {
|
||||
TYPE = secret_cannibal
|
||||
TARGET = scope:target
|
||||
BLACKMAILER = $BLACKMAILER$
|
||||
}
|
||||
scope:target = {
|
||||
NOT = {
|
||||
any_secret = {
|
||||
secret_type = secret_cannibal
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
secret_type_is_blackmailable_simple_trigger = {
|
||||
TYPE = secret_non_believer
|
||||
TARGET = scope:target
|
||||
BLACKMAILER = $BLACKMAILER$
|
||||
}
|
||||
scope:target = {
|
||||
NOT = {
|
||||
any_secret = {
|
||||
secret_type = secret_non_believer
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
secret_type_is_blackmailable_simple_trigger = {
|
||||
TYPE = secret_incest
|
||||
TARGET = scope:target
|
||||
BLACKMAILER = $BLACKMAILER$
|
||||
}
|
||||
scope:target = {
|
||||
NOT = {
|
||||
any_secret = {
|
||||
secret_type = secret_incest
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
secret_type_is_blackmailable_simple_trigger = {
|
||||
TYPE = secret_witch
|
||||
TARGET = scope:target
|
||||
BLACKMAILER = $BLACKMAILER$
|
||||
}
|
||||
scope:target = {
|
||||
NOT = {
|
||||
any_secret = {
|
||||
secret_type = secret_witch
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
secret_type_is_blackmailable_simple_trigger = {
|
||||
TYPE = secret_crypto_religionist
|
||||
TARGET = scope:target
|
||||
BLACKMAILER = $BLACKMAILER$
|
||||
}
|
||||
scope:target = {
|
||||
NOT = {
|
||||
any_secret = {
|
||||
secret_type = secret_crypto_religionist
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# If during the council task find secret's the spymaster can fabricate a hook on the target
|
||||
spymaster_task_courtier_valid_for_hook_fabrication_trigger = {
|
||||
is_available_ai_adult = yes
|
||||
save_temporary_scope_as = target_check
|
||||
NOR = {
|
||||
this = scope:councillor
|
||||
root = {
|
||||
has_hook = scope:target_check
|
||||
}
|
||||
root = {
|
||||
any_scheme = {
|
||||
scheme_target_character = scope:target_character
|
||||
scheme_is_character_agent = scope:target_check
|
||||
}
|
||||
}
|
||||
any_secret = { # Should prioritise actually finding Secrets
|
||||
is_known_by = root
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -5,6 +5,7 @@
|
|||
# SECRET DEVIANT
|
||||
secret_deviant_is_valid_trigger = {
|
||||
$OWNER$ = {
|
||||
is_adult = yes
|
||||
NOT = {
|
||||
has_trait = deviant
|
||||
}
|
||||
|
|
@ -33,6 +34,7 @@ secret_deviant_is_criminal_trigger = {
|
|||
# SECRET HOMOSEXUAL
|
||||
secret_homosexual_is_valid_trigger = {
|
||||
$OWNER$ = {
|
||||
is_adult = yes
|
||||
NOT = {
|
||||
has_trait = sodomite
|
||||
}
|
||||
|
|
@ -323,6 +325,7 @@ secret_non_believer_is_criminal_trigger = {
|
|||
# SECRET INCEST
|
||||
secret_incest_is_valid_trigger = {
|
||||
$OWNER$ = {
|
||||
is_adult = yes
|
||||
NOT = {
|
||||
has_trait = incestuous
|
||||
}
|
||||
|
|
@ -424,8 +427,8 @@ 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 }
|
||||
$OWNER$ = { government_has_flag = government_is_administrative }
|
||||
$TARGET$ = { government_has_flag = government_is_administrative }
|
||||
}
|
||||
|
||||
secret_coup_plotter_is_criminal_trigger = {
|
||||
|
|
|
|||
18
common/scripted_triggers/00_sibling_triggers.txt
Normal file
18
common/scripted_triggers/00_sibling_triggers.txt
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
|
||||
###TRIGGER LIST
|
||||
|
||||
# has_adult_friendly_unlanded_sibling_trigger
|
||||
|
||||
|
||||
has_adult_friendly_unlanded_sibling_trigger = {
|
||||
any_sibling = {
|
||||
is_landed_or_landless_administrative = no
|
||||
is_adult = yes
|
||||
opinion = {
|
||||
target = root
|
||||
value > 30
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,79 @@
|
|||
|
||||
##################################################
|
||||
# GENERIC TRIGGERS
|
||||
|
||||
# Note: this is a very stripped down trigger set. It's expected that it'll be parsed through something that parses out more typically unsuitable candidates (e.g., prisoners under most circumstances).
|
||||
can_start_single_combat_trigger = {
|
||||
# Check for the usual stuff.
|
||||
can_start_single_combat_eligibility_checks_trigger = yes
|
||||
# And filter out those who can never be in single combat.
|
||||
can_start_single_combat_banned_checks_trigger = no
|
||||
}
|
||||
|
||||
can_start_single_combat_eligibility_checks_trigger = {
|
||||
# Remove children and the cripplingly-old.
|
||||
is_adult = yes
|
||||
custom_description = {
|
||||
text = banned_from_combat_old_and_frail
|
||||
NOT = {
|
||||
AND = {
|
||||
age >= 70
|
||||
prowess < 10
|
||||
}
|
||||
}
|
||||
}
|
||||
# Filter out traits.
|
||||
NOR = {
|
||||
has_trait = pregnant
|
||||
has_trait = incapable
|
||||
has_trait = blind
|
||||
}
|
||||
# Check other scripted triggers
|
||||
has_contagious_deadly_disease_trigger = no
|
||||
}
|
||||
|
||||
can_start_single_combat_banned_checks_trigger = {
|
||||
# Currently, we just *always* filter anyone who's already in a bout.
|
||||
exists = var:engaged_in_single_combat
|
||||
}
|
||||
|
||||
# Does the character have a trait with a notably beneficial special combat move?
|
||||
has_relevant_special_single_combat_trait_trigger = {
|
||||
OR = {
|
||||
has_trait = lifestyle_blademaster
|
||||
has_trait = lifestyle_hunter
|
||||
has_trait = berserker
|
||||
has_trait = shieldmaiden
|
||||
has_trait = varangian
|
||||
has_trait = deviant
|
||||
has_trait = viking
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# MOVE TRIGGERS
|
||||
|
||||
single_combat_location_has_crocodilians_trigger = {
|
||||
scope:sc_defender.location = {
|
||||
# First, we look at supra regions.
|
||||
OR = {
|
||||
geographical_region = world_africa_west
|
||||
geographical_region = world_africa_east
|
||||
geographical_region = world_middle_east_persia
|
||||
geographical_region = world_burma
|
||||
geographical_region = world_india
|
||||
}
|
||||
# Then, if any of those apply, drill down.
|
||||
OR = {
|
||||
# Either coastal.
|
||||
is_coastal = yes
|
||||
is_riverside_province = yes
|
||||
# Or has a suitable terrain.
|
||||
terrain = oasis
|
||||
terrain = jungle
|
||||
terrain = wetlands
|
||||
terrain = floodplains
|
||||
terrain = farmlands
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
respected_liege_0002_bad_traits_trigger = {
|
||||
OR = {
|
||||
has_trait = arbitrary
|
||||
has_trait = shy
|
||||
has_trait = greedy
|
||||
has_trait = sadistic
|
||||
has_trait = callous
|
||||
}
|
||||
}
|
||||
|
||||
321
common/scripted_triggers/00_stress_triggers.txt
Normal file
321
common/scripted_triggers/00_stress_triggers.txt
Normal file
|
|
@ -0,0 +1,321 @@
|
|||
|
||||
# This trigger is used when offering the player a choice between two stress outlets for a stress threshold event.
|
||||
# The stress threshold event will add character flags from this list, based on a character's personality and relevance to the event, until two have been selected.
|
||||
has_two_stress_threshold_options = {
|
||||
calc_true_if = {
|
||||
amount >= 2
|
||||
|
||||
has_character_flag = stress_threshold_option_drunkard
|
||||
has_character_flag = stress_threshold_option_hashishiyah
|
||||
has_character_flag = stress_threshold_option_rakish
|
||||
has_character_flag = stress_threshold_option_reclusive
|
||||
has_character_flag = stress_threshold_option_irritable
|
||||
has_character_flag = stress_threshold_option_flagellant
|
||||
has_character_flag = stress_threshold_option_profligate
|
||||
has_character_flag = stress_threshold_option_improvident
|
||||
has_character_flag = stress_threshold_option_contrite
|
||||
has_character_flag = stress_threshold_option_comfort_eater
|
||||
has_character_flag = stress_threshold_option_inappetetic
|
||||
has_character_flag = stress_threshold_option_journaller
|
||||
has_character_flag = stress_threshold_option_confider
|
||||
has_character_flag = stress_threshold_option_athletic
|
||||
has_character_flag = stress_threshold_option_conversion
|
||||
has_character_flag = stress_threshold_option_depression
|
||||
}
|
||||
}
|
||||
|
||||
# Check if the player already has two stress coping traits ( we don't want to give any more than that! )
|
||||
has_two_stress_coping_traits_trigger = {
|
||||
calc_true_if = {
|
||||
amount >= 2
|
||||
has_trait = drunkard
|
||||
has_trait = hashishiyah
|
||||
has_trait = rakish
|
||||
has_trait = reclusive
|
||||
has_trait = irritable
|
||||
has_trait = flagellant
|
||||
has_trait = profligate
|
||||
has_trait = improvident
|
||||
has_trait = contrite
|
||||
has_trait = comfort_eater
|
||||
has_trait = inappetetic
|
||||
has_trait = journaller
|
||||
has_trait = confider
|
||||
has_trait = athletic
|
||||
}
|
||||
}
|
||||
|
||||
has_a_stress_coping_trait_trigger = {
|
||||
OR = {
|
||||
has_trait = drunkard
|
||||
has_trait = hashishiyah
|
||||
has_trait = rakish
|
||||
has_trait = reclusive
|
||||
has_trait = irritable
|
||||
has_trait = flagellant
|
||||
has_trait = profligate
|
||||
has_trait = improvident
|
||||
has_trait = contrite
|
||||
has_trait = comfort_eater
|
||||
has_trait = inappetetic
|
||||
has_trait = journaller
|
||||
has_trait = confider
|
||||
has_trait = athletic
|
||||
}
|
||||
}
|
||||
|
||||
has_a_bad_stress_coping_trait_trigger = {
|
||||
OR = {
|
||||
has_trait = drunkard
|
||||
has_trait = hashishiyah
|
||||
has_trait = rakish
|
||||
has_trait = irritable
|
||||
has_trait = flagellant
|
||||
has_trait = profligate
|
||||
has_trait = contrite
|
||||
has_trait = comfort_eater
|
||||
has_trait = inappetetic
|
||||
}
|
||||
}
|
||||
|
||||
can_be_drunkard = {
|
||||
is_adult = yes
|
||||
NOR = { # Cannot be Temperate or already have a Substance Abuse trait.
|
||||
has_trait = drunkard
|
||||
has_trait = hashishiyah
|
||||
has_trait = temperate
|
||||
}
|
||||
faith = { # Cannot be Muslim ( some Muslims did actually drink, but ideally we want Muslims to be Hashishiyahs instead of Drunkards because it is more thematic).
|
||||
NOT = {
|
||||
religion_tag = islam_religion
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
can_be_hashishiyah = {
|
||||
is_adult = yes
|
||||
NOR = { # Cannot be Temperate or already have a Substance Abuse trait.
|
||||
has_trait = drunkard
|
||||
has_trait = hashishiyah
|
||||
has_trait = temperate
|
||||
}
|
||||
|
||||
OR = {
|
||||
# Muslims always have access to Hashish...
|
||||
faith = {
|
||||
religion_tag = islam_religion
|
||||
}
|
||||
# Otherwise you must not be located in Europe (where Hashish was relatively unknown until modern times.)
|
||||
AND = {
|
||||
OR = {
|
||||
AND = {
|
||||
exists = capital_province
|
||||
capital_province = {
|
||||
save_temporary_scope_as = my_home_province
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
exists = liege
|
||||
exists = liege.capital_province
|
||||
liege = {
|
||||
capital_province = {
|
||||
save_temporary_scope_as = my_home_province
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
scope:my_home_province = {
|
||||
NOT = {
|
||||
geographical_region = world_europe
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
can_be_rakish = { # Must have a fitting personality or lifestyle
|
||||
is_adult = yes
|
||||
NOR = {
|
||||
has_trait = rakish
|
||||
has_sexuality = asexual
|
||||
has_trait = celibate
|
||||
has_trait = chaste
|
||||
}
|
||||
OR = {
|
||||
has_trait = lustful
|
||||
has_trait = arrogant
|
||||
has_trait = deceitful
|
||||
has_trait = gallant
|
||||
has_trait = seducer
|
||||
}
|
||||
}
|
||||
|
||||
can_be_reclusive = { # Must have a fitting personality or lifestyle
|
||||
NOT = { has_trait = reclusive }
|
||||
OR = {
|
||||
has_trait = shy
|
||||
has_trait = lazy
|
||||
has_trait = paranoid
|
||||
has_trait = craven
|
||||
has_trait = cynical
|
||||
has_trait = just # Does this make sense here?
|
||||
}
|
||||
}
|
||||
|
||||
can_be_irritable = { # Must have a fitting personality or lifestyle
|
||||
NOT = { has_trait = irritable }
|
||||
OR = {
|
||||
has_trait = wrathful
|
||||
has_trait = impatient
|
||||
has_trait = arrogant
|
||||
has_trait = stubborn
|
||||
has_trait = vengeful
|
||||
has_trait = callous
|
||||
}
|
||||
}
|
||||
|
||||
can_be_flagellant = { # Must have a fitting personality or lifestyle
|
||||
NOT = { has_trait = flagellant }
|
||||
OR = {
|
||||
has_trait = zealous
|
||||
has_trait = chaste
|
||||
has_trait = temperate
|
||||
has_trait = humble
|
||||
has_trait = lifestyle_mystic
|
||||
}
|
||||
}
|
||||
|
||||
can_be_profligate = { # Must have a fitting personality or lifestyle
|
||||
NOT = { has_trait = profligate }
|
||||
OR = {
|
||||
has_trait = greedy
|
||||
has_trait = ambitious
|
||||
has_trait = arbitrary
|
||||
has_trait = gregarious
|
||||
has_trait = cynical
|
||||
}
|
||||
}
|
||||
|
||||
can_be_improvident = { # Must have a fitting personality or lifestyle
|
||||
NOT = { has_trait = improvident }
|
||||
OR = {
|
||||
has_trait = generous
|
||||
has_trait = forgiving
|
||||
has_trait = compassionate
|
||||
has_trait = just
|
||||
has_trait = content
|
||||
}
|
||||
}
|
||||
|
||||
can_be_contrite = {
|
||||
NOT = { has_trait = contrite }
|
||||
OR = { # Must have a fitting personality or lifestyle
|
||||
has_trait = deceitful
|
||||
has_trait = schemer
|
||||
has_trait = honest
|
||||
has_trait = trusting
|
||||
has_trait = humble
|
||||
}
|
||||
OR = { # Must have something to feel guilty about / confess to.
|
||||
num_sinful_traits >= 1
|
||||
any_secret = {
|
||||
exists = this
|
||||
can_be_exposed_by = root
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
can_be_comfort_eater = { # Must have a fitting personality.
|
||||
NOR = {
|
||||
has_trait = comfort_eater
|
||||
has_trait = inappetetic
|
||||
has_trait = temperate
|
||||
}
|
||||
OR = {
|
||||
has_trait = gluttonous
|
||||
has_trait = fickle
|
||||
has_trait = arbitrary
|
||||
has_trait = impatient
|
||||
has_trait = calm
|
||||
}
|
||||
}
|
||||
|
||||
can_be_inappetetic = { # Must have a fitting personality.
|
||||
NOR = {
|
||||
has_trait = comfort_eater
|
||||
has_trait = inappetetic
|
||||
has_trait = gluttonous
|
||||
}
|
||||
OR = {
|
||||
has_trait = temperate
|
||||
has_trait = content
|
||||
has_trait = arbitrary
|
||||
has_trait = patient
|
||||
has_trait = diligent
|
||||
}
|
||||
}
|
||||
|
||||
can_be_journaller = { # Must be a learned character with the scholarship lifestyle.
|
||||
NOT = { has_trait = journaller }
|
||||
learning >= high_skill_rating
|
||||
OR = {
|
||||
has_trait = scholar
|
||||
has_trait = theologian
|
||||
}
|
||||
}
|
||||
|
||||
can_be_confider = { # Must have a close friend they can confide in (and be willing to confide in!)
|
||||
NOR = {
|
||||
has_trait = confider
|
||||
has_trait = shy
|
||||
has_trait = arrogant
|
||||
has_trait = paranoid
|
||||
}
|
||||
any_relation = {
|
||||
type = friend
|
||||
is_available_ai_adult = yes
|
||||
}
|
||||
}
|
||||
|
||||
can_be_athletic = { # Must be willing and interested in getting out and exercising.
|
||||
has_traits_that_negate_athletic_trigger = no #Are we already athletic or does any of our traits contradict athletic?
|
||||
OR = {
|
||||
has_trait = brave
|
||||
has_trait = diligent
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
can_do_lustful_stress_conversion = {
|
||||
is_ai = no # AI picks this way too often and makes the map predominantly Paulician/Orthodox/Karite
|
||||
is_adult = yes
|
||||
|
||||
# So you don't end up with Sapmi or African pagans or Indian kings going "Yeah let's worship Jesus now!" and everyone else goes "Who is Jesus?"
|
||||
religion = { is_in_family = rf_abrahamic }
|
||||
|
||||
# So the Caliph doesn't just convert after a bad day
|
||||
NOT = { this = faith.religious_head }
|
||||
}
|
||||
|
||||
can_inflict_torture = {
|
||||
OR = {
|
||||
has_trait = sadistic
|
||||
has_trait = vengeful
|
||||
has_trait = torturer
|
||||
has_trait = lifestyle_hunter
|
||||
has_trait = lifestyle_blademaster
|
||||
}
|
||||
}
|
||||
|
||||
can_be_eccentric = {
|
||||
NOR = {
|
||||
has_trait = fickle
|
||||
has_trait = stubborn
|
||||
has_trait = eccentric
|
||||
}
|
||||
}
|
||||
|
||||
has_witnessed_stress_coping_trait = {
|
||||
NOT = { has_trait = $TRAIT$ }
|
||||
var:witnessed_trait ?= flag:$TRAIT$
|
||||
}
|
||||
|
|
@ -34,13 +34,14 @@ historical_succession_access_single_heir_succession_law_trigger = {
|
|||
target = flag:flag_reformed_carolingian_empire
|
||||
}
|
||||
}
|
||||
has_title = title:e_hindustan
|
||||
#Add any subsequent exceptions here.
|
||||
}
|
||||
NOT = { has_government = administrative_government }
|
||||
NOT = { government_has_flag = government_is_administrative }
|
||||
}
|
||||
|
||||
historical_succession_access_single_heir_succession_law_youngest_trigger = {
|
||||
NOT = { has_government = administrative_government }
|
||||
NOT = { government_has_flag = government_is_administrative }
|
||||
OR = {
|
||||
#has_title = title:e_byzantium
|
||||
#Add any subsequent exceptions here.
|
||||
|
|
@ -48,7 +49,7 @@ historical_succession_access_single_heir_succession_law_youngest_trigger = {
|
|||
}
|
||||
|
||||
historical_succession_access_single_heir_dynasty_house_trigger = {
|
||||
NOT = { has_government = administrative_government }
|
||||
NOT = { government_has_flag = government_is_administrative }
|
||||
AND = {
|
||||
has_title = title:d_bohemia
|
||||
culture = { has_innovation = innovation_table_of_princes }
|
||||
|
|
|
|||
268
common/scripted_triggers/00_task_contract_triggers.txt
Normal file
268
common/scripted_triggers/00_task_contract_triggers.txt
Normal file
|
|
@ -0,0 +1,268 @@
|
|||
|
||||
#This should list _ALL_ laamp_contracts_criminal_group-contracts
|
||||
can_create_criminal_contract_trigger = {
|
||||
$LAAMP$ = {
|
||||
OR = {
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_base_0041
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_base_1041
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_base_5031
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_base_5051
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_base_2041
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_base_3011
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_base_3031
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_base_3041
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_base_4041
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#This should list _ALL_ laamp_contracts_diplomacy_group-contracts
|
||||
can_create_diplomacy_contract_trigger = {
|
||||
$LAAMP$ = {
|
||||
OR = {
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_base_0001
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_base_0011
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_base_0021
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_base_0031
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_cultural_minority_contract
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_religious_minority_contract
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_boost_legitimacy_contract
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#This should list _ALL_ laamp_contracts_hireling_group-contracts. Martial are also stashed here.
|
||||
can_create_hireling_contract_trigger = {
|
||||
$LAAMP$ = {
|
||||
OR = {
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_base_1011
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_base_2001
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_help_train_commanders_contract
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_rid_councillor_contract
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_gain_wanderer_contract
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#This should list _ALL_ laamp_contracts_justicar_group-contracts
|
||||
can_create_justicar_contract_trigger = {
|
||||
$LAAMP$ = {
|
||||
OR = {
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_base_6001
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_base_6011
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_base_6021
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_base_6031
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#This should list _ALL_ laamp_contracts_learning_group-contracts
|
||||
can_create_learning_contract_trigger = {
|
||||
$LAAMP$ = {
|
||||
OR = {
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_base_4001
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_base_4011
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_base_4021
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_base_4031
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_base_4100
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_help_faith_conversion_contract
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_fight_faith_conversion_contract
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#This should list _ALL_ laamp_contracts_intrigue_group-contracts
|
||||
can_create_intrigue_contract_trigger = {
|
||||
$LAAMP$ = {
|
||||
OR = {
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_base_3001
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_prison_break_contract
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_help_find_secrets_contract
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_help_fabricate_claim_contract
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_help_increase_control_contract
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_find_secret_contract
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_eliminate_heir_contract
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#This should list _ALL_ laamp_contracts_stewardship_group-contracts
|
||||
can_create_stewardship_contract_trigger = {
|
||||
$LAAMP$ = {
|
||||
OR = {
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_base_2011
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_base_2021
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_base_2031
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#This should list _ALL_ laamp_contracts_transport_group-contracts
|
||||
can_create_transport_contract_trigger = {
|
||||
$LAAMP$ = {
|
||||
OR = {
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_construction_contract
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_treasure_hunting_contract
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_transport_vip
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_transport_artifact
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_transport_gold
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_transport_ward
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_transport_explorer
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_transport_animal
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
can_create_task_contract = {
|
||||
type_name = laamp_transport_explorer
|
||||
employer = $EMPLOYER$
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
87
common/scripted_triggers/00_terrain_triggers.txt
Normal file
87
common/scripted_triggers/00_terrain_triggers.txt
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
|
||||
#########################
|
||||
# Triggers for Province Terrain
|
||||
#########################
|
||||
is_wooded_trigger = {
|
||||
OR = {
|
||||
terrain = forest
|
||||
terrain = jungle
|
||||
terrain = taiga
|
||||
}
|
||||
}
|
||||
|
||||
is_mountainous_trigger = {
|
||||
OR = {
|
||||
terrain = mountains
|
||||
terrain = desert_mountains
|
||||
}
|
||||
}
|
||||
|
||||
is_mountainous_or_hilly_trigger = {
|
||||
OR = {
|
||||
terrain = mountains
|
||||
terrain = desert_mountains
|
||||
terrain = hills
|
||||
}
|
||||
}
|
||||
|
||||
is_drylands_trigger = {
|
||||
OR = {
|
||||
terrain = drylands
|
||||
terrain = steppe
|
||||
}
|
||||
}
|
||||
|
||||
is_desert_trigger = {
|
||||
OR = {
|
||||
terrain = desert
|
||||
terrain = desert_mountains
|
||||
terrain = oasis
|
||||
}
|
||||
}
|
||||
|
||||
is_drylands_or_desert_trigger = {
|
||||
OR = {
|
||||
terrain = drylands
|
||||
terrain = steppe
|
||||
terrain = desert
|
||||
terrain = desert_mountains
|
||||
terrain = oasis
|
||||
}
|
||||
}
|
||||
|
||||
is_wetland_trigger = {
|
||||
OR = {
|
||||
terrain = wetlands
|
||||
terrain = floodplains
|
||||
terrain = oasis
|
||||
}
|
||||
}
|
||||
|
||||
is_flatlands_trigger = {
|
||||
OR = {
|
||||
terrain = steppe
|
||||
terrain = plains
|
||||
terrain = farmlands
|
||||
}
|
||||
}
|
||||
|
||||
is_likely_to_contain_trees_trigger = {
|
||||
OR = {
|
||||
is_wooded_trigger = yes
|
||||
is_wetland_trigger = yes
|
||||
is_flatlands_trigger = yes
|
||||
terrain = hills
|
||||
}
|
||||
}
|
||||
|
||||
holds_county_with_water_trigger = {
|
||||
any_held_county = {
|
||||
any_county_province = {
|
||||
NOR = {
|
||||
terrain = desert
|
||||
terrain = desert_mountains
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
159
common/scripted_triggers/00_title_triggers.txt
Normal file
159
common/scripted_triggers/00_title_triggers.txt
Normal file
|
|
@ -0,0 +1,159 @@
|
|||
|
||||
#########################
|
||||
# Triggers for Titles
|
||||
#########################
|
||||
|
||||
# has_mythical_founder_trigger - Does the title have a mythical or semi-mythical founder?
|
||||
|
||||
|
||||
has_mythical_founder_trigger = {
|
||||
OR = {
|
||||
AND = { # Charles Martell (?)
|
||||
OR = {
|
||||
this = title:k_france
|
||||
this = title:e_france
|
||||
}
|
||||
current_date > 1000.1.1
|
||||
}
|
||||
OR = { # Alexander
|
||||
this = title:k_thessalonika
|
||||
this = title:k_hellas
|
||||
this = title:k_egypt
|
||||
AND = {
|
||||
OR = {
|
||||
this = title:k_persia
|
||||
this = title:e_persia
|
||||
}
|
||||
NOR = {
|
||||
root.faith.religion = religion:islam_religion
|
||||
root.faith.religion = religion:zoroastrianism_religion
|
||||
}
|
||||
}
|
||||
this = title:k_anatolia
|
||||
}
|
||||
this = title:k_poland # Lech
|
||||
this = title:k_bohemia # Czech
|
||||
OR = { # Rus
|
||||
this = title:k_white_rus
|
||||
this = title:k_ruthenia
|
||||
this = title:e_russia
|
||||
}
|
||||
OR = { # Arthur
|
||||
this = title:k_england
|
||||
this = title:e_britannia
|
||||
}
|
||||
AND = {
|
||||
OR = { # Belisarius
|
||||
this = title:k_italy
|
||||
this = title:k_romagna
|
||||
this = title:k_sardinia
|
||||
this = title:k_naples
|
||||
this = title:e_italy
|
||||
}
|
||||
root.faith = faith:orthodox
|
||||
}
|
||||
OR = { # Romulus
|
||||
this = title:k_italy
|
||||
this = title:k_romagna
|
||||
this = title:k_sardinia
|
||||
this = title:e_italy
|
||||
this = title:e_roman_empire
|
||||
}
|
||||
OR = { # Ardashir
|
||||
this = title:k_persia
|
||||
this = title:e_persia
|
||||
}
|
||||
AND = { # Pharaohs
|
||||
this = title:k_egypt
|
||||
NOT = { root.faith.religion = religion:islam_religion }
|
||||
}
|
||||
AND = { # Visigothic Kings
|
||||
OR = {
|
||||
this = title:k_castille
|
||||
this = title:k_aragon
|
||||
this = title:k_navarra
|
||||
this = title:k_andalusia
|
||||
this = title:k_portugal
|
||||
this = title:e_spain
|
||||
}
|
||||
NOT = { root.faith.religion = religion:islam_religion }
|
||||
}
|
||||
AND = { # Abd al-Rahman
|
||||
OR = {
|
||||
this = title:k_castille
|
||||
this = title:k_aragon
|
||||
this = title:k_navarra
|
||||
this = title:k_andalusia
|
||||
this = title:k_portugal
|
||||
this = title:e_spain
|
||||
}
|
||||
root.faith.religion = religion:islam_religion
|
||||
}
|
||||
AND = { # Zenobia
|
||||
OR = {
|
||||
this = title:k_syria
|
||||
this = title:k_mesopotamia
|
||||
}
|
||||
NOT = { root.faith.religion = religion:islam_religion }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
has_too_many_held_duchies_trigger = {
|
||||
highest_held_title_tier >= tier_kingdom
|
||||
any_held_title = {
|
||||
count >= 3
|
||||
title_counts_towards_too_many_duchies_trigger = yes
|
||||
}
|
||||
}
|
||||
|
||||
title_counts_towards_too_many_duchies_trigger = {
|
||||
tier = tier_duchy
|
||||
is_titular = no
|
||||
}
|
||||
|
||||
# this = title
|
||||
# VASSAL = Vassal to check tier against
|
||||
# LIEGE = Liege of vassal
|
||||
title_lost_from_realm_on_foreign_ruler_succession_trigger = {
|
||||
tier > $VASSAL$.highest_held_title_tier
|
||||
exists = holder # Ignoring titles that will be created by confederate partition, cause that be magic and unlikely to make a warning anyway
|
||||
holder = {
|
||||
NOR = {
|
||||
this = $LIEGE$
|
||||
target_is_liege_or_above = $LIEGE$
|
||||
government_has_flag = government_is_administrative # Ignoring because admin counts do not take it with them, but immediately resign it when they inherit a governorship
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Would this character ever be travelling outside of their palace walls at random for the purposes of events?
|
||||
## We don't care about personality, only whether it'd be immersion breaking in principle to run into this person at random/to have an event trigger where you are randomly wandering.
|
||||
character_title_allows_off_screen_wandering_trigger = {
|
||||
NOR = {
|
||||
# No administrative or clan emperors.
|
||||
AND = {
|
||||
highest_held_title_tier >= tier_empire
|
||||
OR = {
|
||||
government_has_flag = government_is_administrative
|
||||
government_has_flag = government_is_clan
|
||||
}
|
||||
}
|
||||
# No administrative kings.
|
||||
AND = {
|
||||
highest_held_title_tier = tier_kingdom
|
||||
government_has_flag = government_is_administrative
|
||||
}
|
||||
# No religious heads.
|
||||
faith.religious_head ?= this
|
||||
}
|
||||
}
|
||||
|
||||
county_held_or_vassal_to_target_trigger = {
|
||||
holder ?= {
|
||||
OR = {
|
||||
this = $TARGET$
|
||||
target_is_liege_or_above = $TARGET$
|
||||
}
|
||||
}
|
||||
}
|
||||
256
common/scripted_triggers/00_travel_triggers.txt
Normal file
256
common/scripted_triggers/00_travel_triggers.txt
Normal file
|
|
@ -0,0 +1,256 @@
|
|||
is_location_valid_for_travel_event_on_land = {
|
||||
location = {
|
||||
exists = county #This will exclude sea provinces, impassable provinces, river provinces, etc
|
||||
}
|
||||
}
|
||||
|
||||
is_guard_type_character_trigger = {
|
||||
OR = {
|
||||
has_court_position = bodyguard_court_position
|
||||
has_court_position = akolouthos_court_position
|
||||
is_knight_of = root
|
||||
has_council_position = councillor_marshal
|
||||
save_temporary_scope_as = guard_check
|
||||
AND = {
|
||||
root.current_travel_plan = {
|
||||
scope:guard_check = { is_travel_entourage_character = yes }
|
||||
}
|
||||
is_available_travelling_adult = yes
|
||||
is_healthy = yes
|
||||
prowess > low_skill_rating
|
||||
can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = root }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
is_character_not_specialized_in_terrain = { #Used in character scope
|
||||
save_temporary_scope_as = character_in_terrain
|
||||
is_location_valid_for_travel_event_on_land = yes
|
||||
location = { #Is it reasonable for us to get lost, etc in this type of terrain?
|
||||
switch = {
|
||||
trigger = terrain
|
||||
jungle = {
|
||||
scope:character_in_terrain = {
|
||||
NOT = { has_trait = jungle_stalker }
|
||||
current_travel_plan.travel_leader ?= {
|
||||
NOT = { has_trait = jungle_stalker }
|
||||
}
|
||||
}
|
||||
}
|
||||
desert = {
|
||||
scope:character_in_terrain = {
|
||||
NOT = { has_trait = desert_warrior }
|
||||
current_travel_plan.travel_leader ?= {
|
||||
NOT = { has_trait = desert_warrior }
|
||||
}
|
||||
}
|
||||
}
|
||||
drylands = {
|
||||
scope:character_in_terrain = {
|
||||
NOT = { has_trait = desert_warrior }
|
||||
current_travel_plan.travel_leader ?= {
|
||||
NOT = { has_trait = desert_warrior }
|
||||
}
|
||||
}
|
||||
}
|
||||
desert_mountains = {
|
||||
scope:character_in_terrain = {
|
||||
NOT = { has_trait = desert_warrior }
|
||||
current_travel_plan.travel_leader ?= {
|
||||
NOT = { has_trait = desert_warrior }
|
||||
}
|
||||
}
|
||||
}
|
||||
oasis = {
|
||||
scope:character_in_terrain = {
|
||||
NOT = { has_trait = desert_warrior }
|
||||
current_travel_plan.travel_leader ?= {
|
||||
NOT = { has_trait = desert_warrior }
|
||||
}
|
||||
}
|
||||
}
|
||||
mountains = {
|
||||
scope:character_in_terrain = {
|
||||
NOT = { has_trait = desert_warrior }
|
||||
current_travel_plan.travel_leader ?= {
|
||||
NOT = { has_trait = desert_warrior }
|
||||
}
|
||||
}
|
||||
}
|
||||
wetlands = {
|
||||
scope:character_in_terrain = {
|
||||
NOT = { has_trait = desert_warrior }
|
||||
current_travel_plan.travel_leader ?= {
|
||||
NOT = { has_trait = desert_warrior }
|
||||
}
|
||||
}
|
||||
}
|
||||
hills = {
|
||||
scope:character_in_terrain = {
|
||||
NOT = { has_trait = desert_warrior }
|
||||
current_travel_plan.travel_leader ?= {
|
||||
NOT = { has_trait = desert_warrior }
|
||||
}
|
||||
}
|
||||
}
|
||||
farmlands = {
|
||||
scope:character_in_terrain = {
|
||||
NOT = { has_trait = open_terrain_expert }
|
||||
current_travel_plan.travel_leader ?= {
|
||||
NOT = { has_trait = open_terrain_expert }
|
||||
}
|
||||
}
|
||||
}
|
||||
plains = {
|
||||
scope:character_in_terrain = {
|
||||
NOT = { has_trait = open_terrain_expert }
|
||||
current_travel_plan.travel_leader ?= {
|
||||
NOT = { has_trait = open_terrain_expert }
|
||||
}
|
||||
}
|
||||
}
|
||||
steppe = {
|
||||
scope:character_in_terrain = {
|
||||
NOT = { has_trait = open_terrain_expert }
|
||||
current_travel_plan.travel_leader ?= {
|
||||
NOT = { has_trait = open_terrain_expert }
|
||||
}
|
||||
}
|
||||
}
|
||||
forest = {
|
||||
scope:character_in_terrain = {
|
||||
NOT = { has_trait = forest_fighter }
|
||||
current_travel_plan.travel_leader ?= {
|
||||
NOT = { has_trait = forest_fighter }
|
||||
}
|
||||
}
|
||||
}
|
||||
taiga = {
|
||||
scope:character_in_terrain = {
|
||||
NOT = { has_trait = forest_fighter }
|
||||
current_travel_plan.travel_leader ?= {
|
||||
NOT = { has_trait = forest_fighter }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
has_sea_danger_type = {
|
||||
is_sea_province = yes
|
||||
OR = {
|
||||
travel_danger_type = {
|
||||
travel_plan = $TRAVEL$
|
||||
terrain = sea
|
||||
}
|
||||
travel_danger_type = {
|
||||
travel_plan = $TRAVEL$
|
||||
terrain = coastal_sea
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
has_terrain_danger_type = {
|
||||
OR = {
|
||||
travel_danger_type = {
|
||||
travel_plan = $TRAVEL$
|
||||
terrain = hills
|
||||
}
|
||||
travel_danger_type = {
|
||||
travel_plan = $TRAVEL$
|
||||
terrain = forest
|
||||
}
|
||||
travel_danger_type = {
|
||||
travel_plan = $TRAVEL$
|
||||
terrain = mountains
|
||||
}
|
||||
travel_danger_type = {
|
||||
travel_plan = $TRAVEL$
|
||||
terrain = desert_mountains
|
||||
}
|
||||
travel_danger_type = {
|
||||
travel_plan = $TRAVEL$
|
||||
terrain = wetlands
|
||||
}
|
||||
travel_danger_type = {
|
||||
travel_plan = $TRAVEL$
|
||||
terrain = floodplains
|
||||
}
|
||||
travel_danger_type = {
|
||||
travel_plan = $TRAVEL$
|
||||
terrain = drylands
|
||||
}
|
||||
travel_danger_type = {
|
||||
travel_plan = $TRAVEL$
|
||||
terrain = desert
|
||||
}
|
||||
travel_danger_type = {
|
||||
travel_plan = $TRAVEL$
|
||||
terrain = jungle
|
||||
}
|
||||
travel_danger_type = {
|
||||
travel_plan = $TRAVEL$
|
||||
terrain = steppe
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
is_nomadic_location_trigger = {
|
||||
geographical_region = world_steppe
|
||||
culture = {
|
||||
OR = {
|
||||
has_cultural_pillar = heritage_mongolic
|
||||
has_cultural_pillar = heritage_turkic
|
||||
has_cultural_pillar = heritage_ugro_permian
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
is_snowy_rural_scandinavia_location_trigger = {
|
||||
location = {
|
||||
OR = {
|
||||
has_holding = no
|
||||
has_holding_type = tribal_holding
|
||||
}
|
||||
geographical_region = world_europe_north
|
||||
}
|
||||
location_has_winter_trigger = yes
|
||||
}
|
||||
|
||||
### EP2 BACKGROUND TRIGGERS
|
||||
|
||||
# Checks that a character is traveling to or from an activity and is not currently participating in an activity
|
||||
is_travelling_not_at_activity = {
|
||||
is_travelling = yes
|
||||
trigger_if = {
|
||||
limit = { exists = involved_activity }
|
||||
has_activity_state = travel
|
||||
}
|
||||
}
|
||||
|
||||
# Checks that a character is traveling, but currently at an activity and not actually moving around the map
|
||||
is_travelling_at_activity = {
|
||||
is_travelling = yes
|
||||
trigger_if = {
|
||||
limit = { exists = involved_activity }
|
||||
NOT = { has_activity_state = travel }
|
||||
}
|
||||
}
|
||||
|
||||
#update this if a new travel point of interest is added to the game, although currently it's only used in 1 laamp task contract
|
||||
has_any_travel_poi_trigger = {
|
||||
OR = {
|
||||
has_travel_point_of_interest = poi_capitals
|
||||
has_travel_point_of_interest = poi_special_buildings_martial
|
||||
has_travel_point_of_interest = poi_special_buildings_learning
|
||||
has_travel_point_of_interest = poi_special_buildings_religious
|
||||
has_travel_point_of_interest = poi_special_buildings_diplomatic
|
||||
has_travel_point_of_interest = poi_grand_city
|
||||
has_travel_point_of_interest = poi_special_buildings_wonder
|
||||
has_travel_point_of_interest = poi_special_buildings_economic
|
||||
has_travel_point_of_interest = poi_mausoleum_at_halicarnassus
|
||||
has_travel_point_of_interest = poi_lighthouse_of_alexandria
|
||||
has_travel_point_of_interest = poi_natural_feature
|
||||
}
|
||||
}
|
||||
16
common/scripted_triggers/00_tutorial_triggers.txt
Normal file
16
common/scripted_triggers/00_tutorial_triggers.txt
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
should_show_tutorial_alert = {
|
||||
OR= {
|
||||
can_start_tutorial_lesson = $LESSON$
|
||||
is_tutorial_lesson_active = $LESSON$
|
||||
}
|
||||
}
|
||||
|
||||
valid_raid_target_trigger = {
|
||||
NOR = {
|
||||
has_raid_immunity_against = root
|
||||
is_allied_to = root
|
||||
has_truce = root
|
||||
target_is_vassal_or_below = root
|
||||
top_liege = root.top_liege
|
||||
}
|
||||
}
|
||||
|
|
@ -19,6 +19,7 @@ has_same_vassal_stance_as_trigger = {
|
|||
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 } }
|
||||
belligerent = { scope:vassal_temp = { has_vassal_stance = belligerent } }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -38,7 +39,7 @@ vassal_follows_directive_valid_trigger = {
|
|||
scope:directive_vassal = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
scope:directive_liege = { has_government = administrative_government }
|
||||
scope:directive_liege = { government_has_flag = government_is_administrative }
|
||||
}
|
||||
is_vassal_of = scope:directive_liege
|
||||
}
|
||||
|
|
@ -62,7 +63,7 @@ vassal_follows_directive_trigger = {
|
|||
}
|
||||
custom_tooltip = {
|
||||
text = has_admin_gov
|
||||
has_government = administrative_government
|
||||
government_has_flag = government_is_administrative
|
||||
}
|
||||
}
|
||||
opinion = {
|
||||
|
|
|
|||
|
|
@ -107,7 +107,7 @@ joiner_not_already_in_another_war_with_any_target_war_participants_trigger = {
|
|||
subject = $JOINER$
|
||||
NOT = {
|
||||
any_war_enemy = {
|
||||
OR = {
|
||||
OR = {
|
||||
AND = {
|
||||
scope:target = { primary_defender = $WARRIOR$ }
|
||||
is_defender_in_war = scope:target
|
||||
|
|
@ -170,8 +170,18 @@ can_potentially_call_ally_trigger = {
|
|||
$JOINER$ = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
# Diarchs can join against other vassals.
|
||||
NOT = { this ?= $WARRIOR$.diarch }
|
||||
NOT = {
|
||||
# Diarchs can join against other vassals.
|
||||
this ?= $WARRIOR$.diarch
|
||||
# Confederation members can join the confederation leader's defensive wars
|
||||
AND = {
|
||||
is_confederation_member = yes
|
||||
$WARRIOR$ = {
|
||||
is_member_of_confederation = $JOINER$.confederation
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
NOT = {
|
||||
target_is_liege_or_above = $WARRIOR$
|
||||
|
|
@ -180,12 +190,31 @@ can_potentially_call_ally_trigger = {
|
|||
}
|
||||
}
|
||||
|
||||
# Can never call your liege to your own wars (they protect you only from foreign invaders, by being the war target instead of you)
|
||||
# Can never call your liege to your own wars (they protect you only from foreign invaders, by being the war target instead of you) -- Unless you have the Nomadic Contract Right
|
||||
custom_description = {
|
||||
text = cannot_call_liege_to_war
|
||||
$JOINER$ = {
|
||||
NOT = {
|
||||
target_is_vassal_or_below = $WARRIOR$
|
||||
trigger_if = {
|
||||
limit = {
|
||||
target_is_vassal_or_below = $WARRIOR$
|
||||
$WARRIOR$ = {
|
||||
vassal_contract_has_flag = vassal_contract_liege_forced_war_override
|
||||
}
|
||||
}
|
||||
always = yes
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
$JOINER$ = {
|
||||
NOT = {
|
||||
target_is_vassal_or_below = $WARRIOR$
|
||||
}
|
||||
}
|
||||
}
|
||||
always = yes
|
||||
}
|
||||
trigger_else = {
|
||||
always = no
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -199,8 +228,8 @@ war_declarer_needs_hook_on_liege = {
|
|||
liege = scope:recipient.liege
|
||||
NOT = { liege = scope:recipient }
|
||||
NAND = {
|
||||
has_government = administrative_government
|
||||
liege = { has_government = administrative_government }
|
||||
government_has_flag = government_is_administrative
|
||||
liege = { government_has_flag = government_is_administrative }
|
||||
}
|
||||
liege = { has_realm_law_flag = vassal_internal_wars_banned }
|
||||
NOT = {
|
||||
|
|
@ -214,8 +243,8 @@ war_declarer_needs_hook_on_liege = {
|
|||
is_independent_ruler = no
|
||||
NOT = { liege = scope:recipient }
|
||||
NAND = {
|
||||
has_government = administrative_government
|
||||
liege = { has_government = administrative_government }
|
||||
government_has_flag = government_is_administrative
|
||||
liege = { government_has_flag = government_is_administrative }
|
||||
}
|
||||
liege = { has_realm_law_flag = vassal_all_wars_banned }
|
||||
NOT = {
|
||||
|
|
@ -244,6 +273,7 @@ can_use_conquest_cbs_trigger = {
|
|||
OR = {
|
||||
government_has_flag = government_is_tribal
|
||||
government_has_flag = government_is_clan
|
||||
government_has_flag = government_is_nomadic
|
||||
faith = { has_doctrine_parameter = conquest_cb_enabled }
|
||||
culture = { has_cultural_parameter = can_use_conquest_cbs }
|
||||
}
|
||||
|
|
@ -268,7 +298,7 @@ can_be_knight_trigger = {
|
|||
is_hostage = no
|
||||
trigger_if = { # Admin governors cannot be knights
|
||||
limit = {
|
||||
$ARMY_OWNER$ = { has_government = administrative_government }
|
||||
$ARMY_OWNER$ = { government_has_flag = government_is_administrative }
|
||||
is_courtier = no
|
||||
}
|
||||
primary_title ?= {
|
||||
|
|
@ -463,6 +493,7 @@ using_conquest_cb_trigger = {
|
|||
using_cb = ducal_conquest_cb
|
||||
using_cb = ireland_laudabiliter_conquest_cb
|
||||
using_cb = mongol_invasion_war
|
||||
using_cb = mpo_gok_onslaught_cb
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -839,30 +870,91 @@ religious_war_vassals_constraints = {
|
|||
}
|
||||
}
|
||||
|
||||
herders_and_tributary_constraints = {
|
||||
trigger_if = {
|
||||
limit = { exists = scope:defender }
|
||||
scope:defender = {
|
||||
save_temporary_scope_as = recipient # done for is_a_herder_defender_tt
|
||||
NOR = {
|
||||
custom_tooltip = {
|
||||
text = is_a_herder_defender_tt # herders can't fight
|
||||
government_has_flag = government_is_herder
|
||||
}
|
||||
is_tributary_of_suzerain_or_above = scope:attacker # can't fight your tributaries or your tributaries' tributaries
|
||||
}
|
||||
# You cannot attack your Confederation buddies tributaries
|
||||
trigger_if = {
|
||||
limit = {
|
||||
suzerain != this
|
||||
scope:attacker = { is_confederation_member = yes }
|
||||
suzerain = { is_confederation_member = yes }
|
||||
}
|
||||
NOT = { scope:attacker.confederation = suzerain.confederation }
|
||||
}
|
||||
}
|
||||
scope:attacker = { # Tributaries cannot attack their Suzerain or Suzerain's Confederation buddies
|
||||
NOR = {
|
||||
is_tributary_of_suzerain_or_above = scope:defender # can't attack your own suzerain
|
||||
trigger_if = {
|
||||
limit = {
|
||||
suzerain != this
|
||||
scope:defender = { is_confederation_member = yes }
|
||||
suzerain = { is_confederation_member = yes }
|
||||
}
|
||||
# if you have a suzerain who's part of a confederation, you may not attack any of its members
|
||||
scope:defender.confederation = suzerain.confederation
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
feudal_clan_tribal_conquest_constraints = {
|
||||
OR = {
|
||||
AND = {
|
||||
tier = tier_county
|
||||
any_county_province = {
|
||||
has_holding_type = tribal_holding
|
||||
title_province = {
|
||||
OR = {
|
||||
has_holding_type = tribal_holding
|
||||
has_holding_type = nomad_holding
|
||||
has_holding_type = herder_holding
|
||||
}
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
tier > tier_county
|
||||
any_in_de_jure_hierarchy = {
|
||||
tier = tier_county
|
||||
any_county_province = {
|
||||
has_holding_type = tribal_holding
|
||||
title_province = {
|
||||
OR = {
|
||||
has_holding_type = tribal_holding
|
||||
has_holding_type = nomad_holding
|
||||
has_holding_type = herder_holding
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
scope:attacker = {
|
||||
NOT = { government_has_flag = government_is_tribal }
|
||||
NOR = {
|
||||
government_has_flag = government_is_tribal
|
||||
government_has_flag = government_is_nomadic
|
||||
}
|
||||
gold < 200
|
||||
any_sub_realm_county = {
|
||||
any_county_province = {
|
||||
has_holding_type = tribal_holding
|
||||
OR = {
|
||||
AND = {
|
||||
government_has_flag = government_is_administrative
|
||||
gold < 700
|
||||
this != top_liege
|
||||
}
|
||||
any_sub_realm_county = {
|
||||
title_province = {
|
||||
OR = {
|
||||
has_holding_type = tribal_holding
|
||||
has_holding_type = nomad_holding
|
||||
has_holding_type = herder_holding
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
465
common/scripted_triggers/00_weather_triggers.txt
Normal file
465
common/scripted_triggers/00_weather_triggers.txt
Normal file
|
|
@ -0,0 +1,465 @@
|
|||
|
||||
##################################################
|
||||
# Winter Triggers
|
||||
county_has_winter_trigger = {
|
||||
title_province = {
|
||||
has_winter_trigger = yes
|
||||
}
|
||||
}
|
||||
|
||||
character_capital_has_winter_trigger = {
|
||||
capital_county = { county_has_winter_trigger = yes }
|
||||
}
|
||||
|
||||
culture_uses_frequent_winter_transportation_trigger = {
|
||||
culture = {
|
||||
OR = {
|
||||
has_cultural_pillar = heritage_balto_finnic
|
||||
has_cultural_pillar = heritage_north_germanic
|
||||
# We exclude Normans as being pretty distant from this part of their heritage.
|
||||
has_cultural_parameter = winter_trait_bonuses
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
location_has_harsh_winter_trigger = {
|
||||
location = { has_province_modifier = winter_harsh_modifier }
|
||||
}
|
||||
|
||||
location_has_normal_or_worse_winter_trigger = {
|
||||
location = {
|
||||
OR = {
|
||||
has_province_modifier = winter_normal_modifier
|
||||
has_province_modifier = winter_harsh_modifier
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
location_has_winter_trigger = {
|
||||
location = {
|
||||
has_winter_trigger = yes
|
||||
}
|
||||
}
|
||||
|
||||
has_winter_trigger = {
|
||||
OR = {
|
||||
has_province_modifier = winter_mild_modifier
|
||||
has_province_modifier = winter_normal_modifier
|
||||
has_province_modifier = winter_harsh_modifier
|
||||
root = { has_zud_season_in_county_trigger = { COUNTY = root.location.county } }
|
||||
}
|
||||
}
|
||||
|
||||
has_winter_combat_trigger = {
|
||||
OR = {
|
||||
has_province_modifier = winter_mild_modifier
|
||||
has_province_modifier = winter_normal_modifier
|
||||
has_province_modifier = winter_harsh_modifier
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Seasonal Triggers
|
||||
|
||||
middle_of_year_season_trigger = {
|
||||
current_month >= 4
|
||||
current_month <= 9
|
||||
}
|
||||
|
||||
end_of_year_season_trigger = {
|
||||
OR = {
|
||||
current_month >= 10
|
||||
current_month <= 3
|
||||
}
|
||||
}
|
||||
|
||||
temperate_seasons_trigger = {
|
||||
$LOCATION$ = {
|
||||
OR = {
|
||||
geographical_region = world_europe
|
||||
geographical_region = world_asia_minor
|
||||
geographical_region = world_middle_east
|
||||
geographical_region = world_india_rajastan
|
||||
geographical_region = world_india_bengal
|
||||
geographical_region = world_africa_north
|
||||
geographical_region = world_steppe
|
||||
geographical_region = world_tibet
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tropical_seasons_trigger = {
|
||||
$LOCATION$ = {
|
||||
tropical_seasons_region_trigger = yes
|
||||
}
|
||||
}
|
||||
|
||||
tropical_seasons_region_trigger = {
|
||||
OR = {
|
||||
geographical_region = world_africa_west
|
||||
geographical_region = world_africa_east
|
||||
geographical_region = world_india_deccan
|
||||
geographical_region = world_burma
|
||||
}
|
||||
}
|
||||
|
||||
is_nice_season_to_be_outside_trigger = {
|
||||
OR = {
|
||||
# Temperate zones like to be out in summer.
|
||||
AND = {
|
||||
temperate_seasons_trigger = { LOCATION = $LOCATION$ }
|
||||
middle_of_year_season_trigger = yes
|
||||
}
|
||||
# Tropical zones like to be out in winter.
|
||||
AND = {
|
||||
tropical_seasons_trigger = { LOCATION = $LOCATION$ }
|
||||
end_of_year_season_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
is_nice_season_to_be_inside_trigger = {
|
||||
OR = {
|
||||
# Temperate zones like to be inside in winter.
|
||||
AND = {
|
||||
temperate_seasons_trigger = { LOCATION = $LOCATION$ }
|
||||
end_of_year_season_trigger = yes
|
||||
}
|
||||
# Tropical zones like to be inside in summer.
|
||||
AND = {
|
||||
tropical_seasons_trigger = { LOCATION = $LOCATION$ }
|
||||
middle_of_year_season_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
#Season scripted trigger tied into custom loc, can be used for backgrounds and VFX
|
||||
#Format like current_season_winter = yes
|
||||
|
||||
current_season_trigger = {
|
||||
current_season_$SEASON$ = yes
|
||||
}
|
||||
|
||||
current_season_winter = {
|
||||
#southern region with rainy/dry seasons
|
||||
trigger_if = {
|
||||
limit = {
|
||||
location = {
|
||||
geographical_region = seasonal_region_deccan
|
||||
}
|
||||
}
|
||||
OR = {
|
||||
current_month >= 11
|
||||
current_month < 3
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
location = {
|
||||
geographical_region = seasonal_region_rajasthan
|
||||
}
|
||||
}
|
||||
OR = {
|
||||
current_month >= 12
|
||||
current_month < 4
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
location = {
|
||||
geographical_region = seasonal_region_bengal
|
||||
}
|
||||
}
|
||||
OR = {
|
||||
current_month >= 11
|
||||
current_month < 2
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
location = {
|
||||
geographical_region = seasonal_region_burma
|
||||
}
|
||||
}
|
||||
OR = {
|
||||
current_month >= 11
|
||||
current_month < 3
|
||||
}
|
||||
}
|
||||
trigger_else = {
|
||||
#Generic Northern Hemisphere
|
||||
OR = {
|
||||
current_month >= 12
|
||||
current_month < 3
|
||||
}
|
||||
#Not present/has different name in these regions
|
||||
location = {
|
||||
NOR = {
|
||||
geographical_region = seasonal_region_east_africa
|
||||
geographical_region = seasonal_region_west_africa
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
current_season_autumn = {
|
||||
#southern region with rainy/dry seasons
|
||||
trigger_if = {
|
||||
limit = {
|
||||
location = {
|
||||
geographical_region = seasonal_region_rajasthan
|
||||
}
|
||||
}
|
||||
current_month >= 10
|
||||
current_month < 12
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
location = {
|
||||
geographical_region = seasonal_region_bengal
|
||||
}
|
||||
}
|
||||
current_month >= 8
|
||||
current_month < 11
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
location = {
|
||||
geographical_region = seasonal_region_east_africa
|
||||
}
|
||||
}
|
||||
current_month >= 9
|
||||
current_month < 11
|
||||
}
|
||||
trigger_else = {
|
||||
#Generic Northern Hemisphere
|
||||
current_month >= 9
|
||||
current_month < 12
|
||||
#Not present/has different name in these regions
|
||||
location = {
|
||||
NOR = {
|
||||
geographical_region = seasonal_region_west_africa
|
||||
geographical_region = seasonal_region_deccan
|
||||
geographical_region = seasonal_region_burma
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
current_season_summer = {
|
||||
#southern region with rainy/dry seasons
|
||||
trigger_if = {
|
||||
limit = {
|
||||
location = {
|
||||
geographical_region = seasonal_region_deccan
|
||||
}
|
||||
}
|
||||
current_month >= 3
|
||||
current_month < 6
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
location = {
|
||||
geographical_region = seasonal_region_rajasthan
|
||||
}
|
||||
}
|
||||
current_month >= 4
|
||||
current_month < 7
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
location = {
|
||||
geographical_region = seasonal_region_bengal
|
||||
}
|
||||
}
|
||||
current_month >= 4
|
||||
current_month < 6
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
location = {
|
||||
geographical_region = seasonal_region_burma
|
||||
}
|
||||
}
|
||||
current_month >= 3
|
||||
current_month < 5
|
||||
}
|
||||
trigger_else = {
|
||||
#Generic Northern Hemisphere
|
||||
current_month >= 6
|
||||
current_month < 9
|
||||
#Not present/has different name in these regions
|
||||
location = {
|
||||
NOR = {
|
||||
geographical_region = seasonal_region_west_africa
|
||||
geographical_region = seasonal_region_east_africa
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
current_season_spring = {
|
||||
#southern region with rainy/dry seasons
|
||||
trigger_if = {
|
||||
limit = {
|
||||
location = {
|
||||
geographical_region = seasonal_region_bengal
|
||||
}
|
||||
}
|
||||
current_month >= 2
|
||||
current_month < 4
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
location = {
|
||||
geographical_region = seasonal_region_east_africa
|
||||
}
|
||||
}
|
||||
current_month >= 3
|
||||
current_month < 6
|
||||
}
|
||||
trigger_else = {
|
||||
#Generic Northern Hemisphere
|
||||
current_month >= 3
|
||||
current_month < 6
|
||||
#Not present/has different name in these regions
|
||||
location = {
|
||||
NOR = {
|
||||
geographical_region = seasonal_region_west_africa
|
||||
geographical_region = seasonal_region_rajasthan
|
||||
geographical_region = seasonal_region_deccan
|
||||
geographical_region = seasonal_region_burma
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
current_season_dry_season = {
|
||||
#southern region with rainy/dry seasons
|
||||
location = {
|
||||
OR = {
|
||||
geographical_region = seasonal_region_west_africa
|
||||
geographical_region = seasonal_region_east_africa
|
||||
}
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
location = { geographical_region = seasonal_region_west_africa }
|
||||
}
|
||||
OR = {
|
||||
current_month >= 11
|
||||
current_month < 5
|
||||
}
|
||||
}
|
||||
trigger_else = {
|
||||
location = {
|
||||
geographical_region = seasonal_region_east_africa
|
||||
}
|
||||
OR = {
|
||||
current_month >= 12
|
||||
current_month < 3
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
current_season_rainy_season = {
|
||||
#Jasons triggers here
|
||||
location = {
|
||||
OR = {
|
||||
geographical_region = seasonal_region_deccan
|
||||
geographical_region = seasonal_region_rajasthan
|
||||
geographical_region = seasonal_region_bengal
|
||||
geographical_region = seasonal_region_burma
|
||||
geographical_region = seasonal_region_west_africa
|
||||
geographical_region = seasonal_region_east_africa
|
||||
}
|
||||
}
|
||||
#southern region with rainy/dry seasons
|
||||
trigger_if = {
|
||||
limit = {
|
||||
location = {
|
||||
geographical_region = seasonal_region_deccan
|
||||
}
|
||||
}
|
||||
current_month >= 6
|
||||
current_month < 11
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
location = {
|
||||
geographical_region = seasonal_region_rajasthan
|
||||
}
|
||||
}
|
||||
current_month >= 7
|
||||
current_month < 10
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
location = {
|
||||
geographical_region = seasonal_region_bengal
|
||||
}
|
||||
}
|
||||
current_month >= 6
|
||||
current_month < 8
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
location = {
|
||||
geographical_region = seasonal_region_burma
|
||||
}
|
||||
}
|
||||
current_month >= 5
|
||||
current_month < 11
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
location = {
|
||||
geographical_region = seasonal_region_west_africa
|
||||
}
|
||||
}
|
||||
current_month >= 5
|
||||
current_month < 11
|
||||
}
|
||||
trigger_else = {
|
||||
location = {
|
||||
geographical_region = seasonal_region_east_africa
|
||||
}
|
||||
current_month >= 6
|
||||
current_month < 9
|
||||
}
|
||||
}
|
||||
|
||||
current_season_hot_season = {
|
||||
OR = {
|
||||
AND = {
|
||||
location = {
|
||||
OR = {
|
||||
geographical_region = seasonal_region_east_africa
|
||||
geographical_region = seasonal_region_west_africa
|
||||
}
|
||||
}
|
||||
current_season_rainy_season = yes
|
||||
}
|
||||
current_season_summer = yes
|
||||
}
|
||||
}
|
||||
current_season_cold_season = {
|
||||
OR = {
|
||||
current_season_winter = yes
|
||||
current_season_dry_season = yes
|
||||
}
|
||||
}
|
||||
current_season_wet = {
|
||||
OR = {
|
||||
current_season_spring = yes
|
||||
current_season_rainy_season = yes
|
||||
}
|
||||
}
|
||||
current_season_dry = {
|
||||
OR = {
|
||||
current_season_summer = yes
|
||||
current_season_dry_season = yes
|
||||
}
|
||||
}
|
||||
24
common/scripted_triggers/00_witch_triggers.txt
Normal file
24
common/scripted_triggers/00_witch_triggers.txt
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
use_convert_to_witchcraft_secrecy_trigger = {
|
||||
$OWNER$ = {
|
||||
any_secret = { secret_type = secret_witch }
|
||||
save_temporary_scope_as = witchract_secrecy_check
|
||||
trait_is_shunned_or_criminal_in_my_or_lieges_faith_trigger = { TRAIT = witch GENDER_CHARACTER = scope:witchract_secrecy_check }
|
||||
}
|
||||
}
|
||||
|
||||
knows_about_character_being_witch_trigger = {
|
||||
OR = {
|
||||
$CHARACTER$ = { has_trait = witch }
|
||||
any_known_secret = {
|
||||
secret_owner = $CHARACTER$
|
||||
secret_type = secret_witch
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
potential_witch_friend_trigger = {
|
||||
faith = $CHARACTER$.faith
|
||||
knows_about_character_being_witch_trigger = { CHARACTER = $CHARACTER$ }
|
||||
save_temporary_scope_as = trigger_witch_friend
|
||||
$CHARACTER$ = { knows_about_character_being_witch_trigger = { CHARACTER = scope:trigger_witch_friend } }
|
||||
}
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
|
||||
has_weak_hook_on_trigger = {
|
||||
OR = {
|
||||
has_hook_of_type = {
|
||||
target = $TARGET_CHARACTER$
|
||||
type = weak_blackmail_hook
|
||||
}
|
||||
has_hook_of_type = {
|
||||
target = $TARGET_CHARACTER$
|
||||
type = favor_hook
|
||||
}
|
||||
has_hook_of_type = {
|
||||
target = $TARGET_CHARACTER$
|
||||
type = obligation_hook
|
||||
}
|
||||
has_hook_of_type = {
|
||||
target = $TARGET_CHARACTER$
|
||||
type = indebted_hook
|
||||
}
|
||||
has_hook_of_type = {
|
||||
target = $TARGET_CHARACTER$
|
||||
type = threat_hook
|
||||
}
|
||||
has_hook_of_type = {
|
||||
target = $TARGET_CHARACTER$
|
||||
type = manipulation_hook
|
||||
}
|
||||
has_hook_of_type = {
|
||||
target = $TARGET_CHARACTER$
|
||||
type = house_head_hook
|
||||
}
|
||||
has_hook_of_type = {
|
||||
target = $TARGET_CHARACTER$
|
||||
type = trial_by_combat_hook
|
||||
}
|
||||
has_hook_of_type = {
|
||||
target = $TARGET_CHARACTER$
|
||||
type = sumptuary_crime_hook
|
||||
}
|
||||
}
|
||||
}
|
||||
26
common/scripted_triggers/01_building_upgrade_triggers.txt
Normal file
26
common/scripted_triggers/01_building_upgrade_triggers.txt
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
has_existing_farming_building_trigger = {
|
||||
trigger_if = {
|
||||
limit = { building_farm_estates_requirement_terrain = yes }
|
||||
OR = {
|
||||
has_building = farm_estates_01
|
||||
has_building = farm_estates_02
|
||||
has_building = farm_estates_03
|
||||
has_building = farm_estates_04
|
||||
has_building = farm_estates_05
|
||||
has_building = farm_estates_06
|
||||
has_building = farm_estates_07
|
||||
}
|
||||
}
|
||||
trigger_if = {
|
||||
limit = { building_farm_estates_requirement_terrain = yes }
|
||||
OR = {
|
||||
has_building = pastures_01
|
||||
has_building = pastures_02
|
||||
has_building = pastures_03
|
||||
has_building = pastures_04
|
||||
has_building = pastures_05
|
||||
has_building = pastures_06
|
||||
has_building = pastures_07
|
||||
}
|
||||
}
|
||||
}
|
||||
360
common/scripted_triggers/01_fp1_scripted_triggers.txt
Normal file
360
common/scripted_triggers/01_fp1_scripted_triggers.txt
Normal file
|
|
@ -0,0 +1,360 @@
|
|||
|
||||
##################################################
|
||||
# General Triggers
|
||||
|
||||
eligible_for_fp1_dynasty_legacies_trigger = {
|
||||
has_fp1_dlc_trigger = yes
|
||||
OR = {
|
||||
# Technically, we could hardscript this to North Germanics/Normans/Estonians, but eh.
|
||||
culture = { has_innovation = innovation_longboats }
|
||||
# Converts should also get a chance to get in on the fun.
|
||||
religion = religion:germanic_religion
|
||||
}
|
||||
}
|
||||
|
||||
fp1_can_raise_stele_trigger = {
|
||||
OR = {
|
||||
culture = { has_cultural_parameter = has_access_to_runestones }
|
||||
has_character_modifier = embraced_local_traditions_modifier
|
||||
}
|
||||
culture = {
|
||||
NOT = { has_cultural_era_or_later = culture_era_high_medieval }
|
||||
}
|
||||
}
|
||||
|
||||
fp1_can_raise_stele_title_scope_trigger = {
|
||||
culture = {
|
||||
has_cultural_pillar = heritage_north_germanic
|
||||
NOT = { has_cultural_era_or_later = culture_era_high_medieval }
|
||||
}
|
||||
}
|
||||
|
||||
fp1_county_has_stele_trigger = {
|
||||
OR = {
|
||||
has_county_modifier = fp1_stele_ancestors_strong
|
||||
has_county_modifier = fp1_stele_ancestors_weak
|
||||
has_county_modifier = fp1_stele_conquest_strong
|
||||
has_county_modifier = fp1_stele_conquest_weak
|
||||
has_county_modifier = fp1_stele_promotion_strong
|
||||
has_county_modifier = fp1_stele_promotion_weak
|
||||
}
|
||||
}
|
||||
|
||||
fp1_eligible_for_yearly_events_trigger = {
|
||||
has_fp1_dlc_trigger = yes
|
||||
OR = {
|
||||
culture = { has_cultural_pillar = heritage_north_germanic }
|
||||
religion = religion:germanic_religion
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Cultural & Regional Triggers
|
||||
|
||||
fp1_is_norse = {
|
||||
OR = {
|
||||
culture = { has_cultural_pillar = heritage_north_germanic }
|
||||
culture = culture:norman
|
||||
}
|
||||
}
|
||||
|
||||
fp1_is_norse_tribal = {
|
||||
fp1_is_norse = yes
|
||||
government_has_flag = government_is_tribal
|
||||
}
|
||||
|
||||
fp1_is_coastal_norse_tribal = {
|
||||
# Standard checks.
|
||||
fp1_is_norse_tribal = yes
|
||||
# Do you have a relevant coastal county somewhere?
|
||||
any_sub_realm_county = { is_coastal_county = yes }
|
||||
}
|
||||
|
||||
fp1_is_in_scandinavia = {
|
||||
capital_county.title_province = { geographical_region = world_europe_north }
|
||||
}
|
||||
|
||||
fp1_is_in_scandinavian_colonies = {
|
||||
capital_county.title_province = {
|
||||
OR = {
|
||||
geographical_region = world_europe_west_britannia
|
||||
geographical_region = dlc_fp1_region_colonial_eastern_europe
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fp1_is_in_scandinavia_or_colonies = {
|
||||
OR = {
|
||||
fp1_is_in_scandinavia = yes
|
||||
fp1_is_in_scandinavian_colonies = yes
|
||||
}
|
||||
}
|
||||
|
||||
fp1_remove_stele_new_holder_trigger = {
|
||||
# Is there a rogue stone around?
|
||||
$TITLE$ = { exists = var:stele_commissioner }
|
||||
# And would the new holder want to tear down the stele?
|
||||
$NEW_HOLDER$ = {
|
||||
OR = {
|
||||
AND = {
|
||||
exists = dynasty
|
||||
# E.g., because they're a different family and won't maintain it.
|
||||
NOT = { dynasty = $PREVIOUS_HOLDER$.dynasty }
|
||||
}
|
||||
# Or because they're a subject of the runestone, which means it's memorialising their defeat.
|
||||
## ... Unless they're a ghost. Damned proctors, I guess.
|
||||
AND = {
|
||||
exists = $TITLE$.var:stele_container
|
||||
exists = $TITLE$.var:stele_scope_type
|
||||
# Remember not to compare a character with a title.
|
||||
$TITLE$.var:stele_scope_type = flag:character
|
||||
this = $TITLE$.var:stele_container
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
is_vaguely_danish_bhakti_trigger = {
|
||||
OR = {
|
||||
has_culture = culture:danish
|
||||
culture = { has_name_list = name_list_danish }
|
||||
# We deliberately use the de jure rather than the geographical area to make this at least a *little* more fluid.
|
||||
AND = {
|
||||
is_playable_character = yes
|
||||
capital_county.kingdom = title:k_denmark
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Varangian Adventure Triggers
|
||||
|
||||
fp1_va_eligible_for_scandinavian_troops_trigger = {
|
||||
# We only give these to North Germanics. I realise we check this elsewhere, but it makes it a bit easier to hijack the CB for other cultures via modding without weirdness.
|
||||
culture = {
|
||||
OR = {
|
||||
has_cultural_pillar = heritage_north_germanic
|
||||
this = culture:estonian
|
||||
any_parent_culture_or_above = {
|
||||
this = culture:estonian #Estonian
|
||||
}
|
||||
}
|
||||
}
|
||||
# Who hold at least one county in the initial de jure of the mainland Norse kingdoms.
|
||||
any_sub_realm_county = {
|
||||
OR = {
|
||||
title_province = { geographical_region = dlc_fp1_region_core_mainland_scandinavia }
|
||||
title:k_esthonia = {
|
||||
is_de_jure_liege_or_above_target = prev
|
||||
}
|
||||
}
|
||||
culture = scope:attacker.culture
|
||||
faith = scope:attacker.faith
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Illustration Triggers
|
||||
|
||||
fp1_should_use_norse_graphics_trigger = {
|
||||
culture = { has_building_gfx = norse_building_gfx }
|
||||
}
|
||||
|
||||
fp1_should_use_extra_tribal_graphics_trigger = {
|
||||
should_use_tribal_realm_palace_graphics_trigger = yes
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Shieldmaiden Triggers
|
||||
|
||||
suitable_shieldmaiden_gaoler_trigger = {
|
||||
#Must be a shieldmaiden.
|
||||
has_trait = shieldmaiden
|
||||
NOR = {
|
||||
#Filter out prisoners that the shieldmaiden would want to see freed.
|
||||
has_friendly_relationship_trigger = { CHARACTER = root }
|
||||
#And require that they don't hate their liege.
|
||||
has_relation_rival = scope:imprisoner
|
||||
#Make sure they don't really like root, in which case they'd let the escape slide.
|
||||
opinion = {
|
||||
target = root
|
||||
value >= high_positive_opinion
|
||||
}
|
||||
#Aaaaand the inverse for actually really hating their host, in which case they don't care about escapees.
|
||||
opinion = {
|
||||
target = scope:imprisoner
|
||||
value <= high_negative_opinion
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Interaction Triggers
|
||||
|
||||
basic_can_have_trial_by_combat_trigger = {
|
||||
# This is referenced elsewhere, so we keep it separate in order to allow justification for TbCs outside of interactions.
|
||||
culture = { has_cultural_parameter = has_access_to_trials_by_combat }
|
||||
}
|
||||
|
||||
can_have_trial_by_combat_trigger = {
|
||||
# First, evaluate culture to trim down our potentials list.
|
||||
scope:actor = { basic_can_have_trial_by_combat_trigger = yes }
|
||||
scope:recipient = { basic_can_have_trial_by_combat_trigger = yes }
|
||||
}
|
||||
|
||||
eligible_knight_to_champion_trial_by_combat_trigger = {
|
||||
is_available_ai = yes
|
||||
can_start_single_combat_trigger = yes
|
||||
}
|
||||
|
||||
trial_by_combat_shown_and_not_invalid_trigger = {
|
||||
# Scope:actor must be able to fight personally.
|
||||
scope:actor = { can_start_single_combat_trigger = yes }
|
||||
# Scope:actor cannot challenge someone they have a ceasefire against.
|
||||
scope:actor = {
|
||||
NOT = { has_truce = scope:recipient }
|
||||
}
|
||||
# Scope:actor *definitely* cannot challenge someone they're at war with.
|
||||
scope:actor = {
|
||||
NOT = { is_at_war_with = scope:recipient }
|
||||
}
|
||||
}
|
||||
|
||||
trial_by_combat_is_valid_trigger = {
|
||||
# Calc some stuff that might invalidate elsewhere before the bout is sorted.
|
||||
trial_by_combat_shown_and_not_invalid_trigger = yes
|
||||
# Must have an imprisonment reason on the character.
|
||||
scope:actor = { has_imprisonment_reason = scope:recipient }
|
||||
# Scope:recipient must be able to fight or else have at least *one* designatable champion.
|
||||
scope:recipient = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
OR = {
|
||||
can_start_single_combat_eligibility_checks_trigger = no
|
||||
NOT = {
|
||||
can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:recipient }
|
||||
}
|
||||
}
|
||||
}
|
||||
custom_description = {
|
||||
text = "fp1_tbc_no_available_champions"
|
||||
OR = {
|
||||
any_knight = { eligible_knight_to_champion_trial_by_combat_trigger = yes }
|
||||
# Can use champion court position too if available
|
||||
AND = {
|
||||
employs_court_position = champion_court_position
|
||||
any_court_position_holder = {
|
||||
type = champion_court_position
|
||||
eligible_knight_to_champion_trial_by_combat_trigger = yes #trigger checks for prowess, and while its not mandatory that the champ has a high value, we don't want to trap them into having to use their prowess 3 champ to defend their life
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
# Scope:recipient must not be banned from single combat.
|
||||
scope:recipient = {
|
||||
custom_description = {
|
||||
text = "fp1_tbc_recipient_banned_from_combat"
|
||||
can_start_single_combat_banned_checks_trigger = no
|
||||
}
|
||||
}
|
||||
# Neither of the characters can be imprisoned.
|
||||
scope:actor = { is_imprisoned = no }
|
||||
scope:recipient = { is_imprisoned = no }
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Religious Triggers
|
||||
|
||||
gruesome_sacrifices_grand_blot_can_continue_trigger = {
|
||||
# Standard checks. Using a more lenient trigger here because we don't want to cancel the blot if you're in events or go on a hunt
|
||||
#is_available_at_peace_adult_lenient = yes
|
||||
scope:activity ?= {
|
||||
has_activity_type = activity_gruesome_festival
|
||||
}
|
||||
}
|
||||
|
||||
fp1_valid_norse_faith_for_jomsvikings_trigger = {
|
||||
religion = religion:germanic_religion
|
||||
has_doctrine_parameter = unreformed
|
||||
}
|
||||
|
||||
fp1_jomsvikings_have_not_existed_trigger = {
|
||||
# They've already been destroyed in 1066.
|
||||
game_start_date < 1000.1.1
|
||||
NOR = {
|
||||
# And otherwise can't currently be created.
|
||||
exists = global_var:jomsvikings_title
|
||||
# Nor should they have been made via decision or event.
|
||||
is_target_in_global_variable_list = {
|
||||
name = unavailable_unique_decisions
|
||||
target = flag:flag_forged_jomvikings
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fp1_valid_county_for_jomsvikings_trigger = {
|
||||
tier = tier_county
|
||||
is_coastal_county = yes
|
||||
custom_description = {
|
||||
text = forge_the_jomsvikings_decision.tt.is_in_correct_region
|
||||
title_province = { geographical_region = dlc_fp1_region_non_scandinavian_southern_baltic }
|
||||
}
|
||||
any_county_province = {
|
||||
custom_description = {
|
||||
text = forge_the_jomsvikings_decision.tt.empty_castle_or_city
|
||||
OR = {
|
||||
has_holding = no
|
||||
has_holding_type = castle_holding
|
||||
has_holding_type = city_holding
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Achievement Triggers
|
||||
|
||||
fp1_achievement_culture_norse_trigger = {
|
||||
OR = {
|
||||
culture = { has_cultural_pillar = heritage_north_germanic }
|
||||
culture = culture:norman
|
||||
}
|
||||
}
|
||||
|
||||
fp1_achievement_culture_norse_or_rus_trigger = {
|
||||
OR = {
|
||||
fp1_achievement_culture_norse_trigger = yes
|
||||
culture = culture:russian
|
||||
}
|
||||
}
|
||||
|
||||
fp1_achievement_religious_norse_trigger = {
|
||||
religion = religion:germanic_religion
|
||||
}
|
||||
|
||||
fp1_achievement_culture_plus_religion_norse_trigger = {
|
||||
fp1_achievement_culture_norse_trigger = yes
|
||||
fp1_achievement_religious_norse_trigger = yes
|
||||
}
|
||||
|
||||
###################################################
|
||||
# Jomsviking Triggers
|
||||
fp1_ruler_eligible_for_jomsviking_coup = {
|
||||
# We never want to coup realms with players who might be affected, so just flat-out ban them.
|
||||
NOR = {
|
||||
is_ai = no
|
||||
any_vassal_or_below = { is_ai = no }
|
||||
any_liege_or_above = { is_ai = no }
|
||||
}
|
||||
# And anyone that's close family to/married to a player.
|
||||
NOR = {
|
||||
any_spouse = { is_ai = no }
|
||||
any_close_or_extended_family_member = { is_ai = no }
|
||||
}
|
||||
# Veto anyone following the unreformed Norse pagan faith.
|
||||
NOT = { faith = faith:norse_pagan }
|
||||
# For simplicity, exclude wars.
|
||||
is_at_war = no
|
||||
}
|
||||
400
common/scripted_triggers/02_ep1_scripted_triggers.txt
Normal file
400
common/scripted_triggers/02_ep1_scripted_triggers.txt
Normal file
|
|
@ -0,0 +1,400 @@
|
|||
#################################################
|
||||
# TRIGGER LIST #
|
||||
#################################################
|
||||
# ep1_is_valid_character_for_inspiration_trigger - Is the character valid to be used within the inspiration system? Character movement may break if these conditions are not true.
|
||||
|
||||
ep1_is_valid_character_for_inspiration_trigger = {
|
||||
is_adult = yes
|
||||
is_imprisoned = no
|
||||
NOT = { exists = inspiration }
|
||||
|
||||
trigger_if = {
|
||||
limit = {
|
||||
OR = {
|
||||
is_pool_guest = yes
|
||||
is_in_pool_at = location
|
||||
}
|
||||
}
|
||||
# For simplicity, inspired characters travel solo for now.
|
||||
any_traveling_family_member = {
|
||||
count = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ep1_spare_courtier_trigger = { #Used for picking out courtiers in your own court.
|
||||
is_available_healthy_ai_adult = yes
|
||||
is_councillor = no
|
||||
NOR = {
|
||||
is_close_or_extended_family_of = root
|
||||
is_spouse_of = root
|
||||
}
|
||||
}
|
||||
|
||||
# Court type trait 1 is unlocked by court_grandeur_level 5
|
||||
ep1_courtier_valid_for_court_trait_1_trigger = {
|
||||
scope:cgv_value >= cgv_level_threshold_court_type_trait_1
|
||||
NOT = { has_trait = $TYPE$_court }
|
||||
is_adult = yes
|
||||
}
|
||||
|
||||
# Court type trait 2 is unlocked by court_grandeur_level 8
|
||||
ep1_courtier_valid_for_court_trait_2_trigger = {
|
||||
scope:cgv_value >= cgv_level_threshold_court_type_trait_2
|
||||
NOT = { has_trait = $TYPE$_court_2 }
|
||||
has_trait = $TYPE$_court_1
|
||||
is_adult = yes
|
||||
}
|
||||
|
||||
##############
|
||||
# INSPIRATION/ARTIFACT TRIGGERS
|
||||
##############
|
||||
|
||||
ep1_can_sponsor_inspiration_basic = {
|
||||
scope:inspiration_owner = {
|
||||
is_imprisoned = no
|
||||
}
|
||||
}
|
||||
|
||||
ep1_is_sponsor_valid_inspiration_basic = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
exists = scope:inspiration_sponsor
|
||||
}
|
||||
scope:inspiration_owner = {
|
||||
is_courtier_of = scope:inspiration_sponsor
|
||||
is_imprisoned = no
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ep1_character_had_or_has_inspiration_type_trigger = {
|
||||
OR = {
|
||||
AND = {
|
||||
exists = var:created_artifact_type
|
||||
var:created_artifact_type = flag:$TYPE$
|
||||
}
|
||||
AND = {
|
||||
exists = inspiration
|
||||
inspiration = { has_inspiration_type = $TYPE$_inspiration }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ep1_no_artifact_decorations_trigger = {
|
||||
OR = {
|
||||
scope:wealth < 40
|
||||
AND = {
|
||||
exists = scope:inspiration_owner
|
||||
scope:inspiration_owner = { has_trait = humble }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ep1_simple_artifact_decorations_trigger = {
|
||||
scope:wealth >= 5
|
||||
scope:wealth < 70
|
||||
}
|
||||
|
||||
ep1_advanced_artifact_decorations_trigger = {
|
||||
scope:wealth >= 40
|
||||
scope:wealth < 90
|
||||
}
|
||||
|
||||
ep1_extravagant_artifact_decorations_trigger = {
|
||||
scope:wealth >= 70
|
||||
}
|
||||
|
||||
ep1_artifact_durability_lower_equal_percent_trigger = {
|
||||
$PERCENT$ > {
|
||||
value = 0
|
||||
add = artifact_durability
|
||||
divide = artifact_max_durability
|
||||
}
|
||||
}
|
||||
|
||||
ep1_artifact_durability_higher_equal_percent_trigger = {
|
||||
$PERCENT$ < {
|
||||
value = 0
|
||||
add = artifact_durability
|
||||
divide = artifact_max_durability
|
||||
}
|
||||
}
|
||||
|
||||
ep1_character_has_court_artifact_trigger = {
|
||||
any_character_artifact = {
|
||||
ep1_artifact_is_court_artifact_trigger = yes
|
||||
}
|
||||
}
|
||||
|
||||
ep1_artifact_is_court_artifact_trigger = {
|
||||
OR = {
|
||||
artifact_slot_type = wall_big
|
||||
artifact_slot_type = wall_small
|
||||
artifact_slot_type = sculpture
|
||||
artifact_slot_type = book
|
||||
artifact_slot_type = throne
|
||||
artifact_slot_type = pedestal
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
##############
|
||||
# COURT POSITION TRIGGERS
|
||||
##############
|
||||
|
||||
#Used to see if the scoped character has ANY court position that CHARACTER can hold
|
||||
character_can_be_employed_in_a_court_position_trigger = {
|
||||
OR = {
|
||||
AND = {
|
||||
can_employ_court_position_type = court_physician_court_position
|
||||
$CHARACTER$ = { can_be_employed_as = court_physician_court_position }
|
||||
}
|
||||
AND = {
|
||||
can_employ_court_position_type = master_of_horse_court_position
|
||||
$CHARACTER$ = { can_be_employed_as = master_of_horse_court_position }
|
||||
}
|
||||
AND = {
|
||||
can_employ_court_position_type = master_of_hunt_court_position
|
||||
$CHARACTER$ = { can_be_employed_as = master_of_hunt_court_position }
|
||||
}
|
||||
AND = {
|
||||
can_employ_court_position_type = keeper_of_swans_court_position
|
||||
$CHARACTER$ = { can_be_employed_as = keeper_of_swans_court_position }
|
||||
}
|
||||
AND = {
|
||||
can_employ_court_position_type = travel_leader_court_position
|
||||
$CHARACTER$ = { can_be_employed_as = travel_leader_court_position }
|
||||
}
|
||||
AND = {
|
||||
can_employ_court_position_type = court_jester_court_position
|
||||
$CHARACTER$ = { can_be_employed_as = court_jester_court_position }
|
||||
}
|
||||
AND = {
|
||||
can_employ_court_position_type = high_almoner_court_position
|
||||
$CHARACTER$ = { can_be_employed_as = high_almoner_court_position }
|
||||
}
|
||||
AND = {
|
||||
can_employ_court_position_type = seneschal_court_position
|
||||
$CHARACTER$ = { can_be_employed_as = seneschal_court_position }
|
||||
}
|
||||
AND = {
|
||||
can_employ_court_position_type = court_tutor_court_position
|
||||
$CHARACTER$ = { can_be_employed_as = court_tutor_court_position }
|
||||
}
|
||||
AND = {
|
||||
can_employ_court_position_type = cupbearer_court_position
|
||||
$CHARACTER$ = { can_be_employed_as = cupbearer_court_position }
|
||||
}
|
||||
AND = {
|
||||
can_employ_court_position_type = chief_eunuch_court_position
|
||||
$CHARACTER$ = { can_be_employed_as = chief_eunuch_court_position }
|
||||
}
|
||||
AND = {
|
||||
can_employ_court_position_type = antiquarian_court_position
|
||||
$CHARACTER$ = { can_be_employed_as = antiquarian_court_position }
|
||||
}
|
||||
AND = {
|
||||
can_employ_court_position_type = royal_architect_court_position
|
||||
$CHARACTER$ = { can_be_employed_as = royal_architect_court_position }
|
||||
}
|
||||
AND = {
|
||||
can_employ_court_position_type = lady_in_waiting_court_position
|
||||
$CHARACTER$ = { can_be_employed_as = lady_in_waiting_court_position }
|
||||
}
|
||||
AND = {
|
||||
can_employ_court_position_type = court_poet_court_position
|
||||
$CHARACTER$ = { can_be_employed_as = court_poet_court_position }
|
||||
}
|
||||
AND = {
|
||||
can_employ_court_position_type = court_musician_court_position
|
||||
$CHARACTER$ = { can_be_employed_as = court_musician_court_position }
|
||||
}
|
||||
AND = {
|
||||
can_employ_court_position_type = bodyguard_court_position
|
||||
$CHARACTER$ = { can_be_employed_as = bodyguard_court_position }
|
||||
}
|
||||
AND = {
|
||||
can_employ_court_position_type = champion_court_position
|
||||
$CHARACTER$ = { can_be_employed_as = champion_court_position }
|
||||
}
|
||||
AND = {
|
||||
can_employ_court_position_type = food_taster_court_position
|
||||
$CHARACTER$ = { can_be_employed_as = food_taster_court_position }
|
||||
}
|
||||
AND = {
|
||||
can_employ_court_position_type = executioner_court_position
|
||||
$CHARACTER$ = { can_be_employed_as = executioner_court_position }
|
||||
}
|
||||
AND = {
|
||||
can_employ_court_position_type = garuda_court_position
|
||||
$CHARACTER$ = { can_be_employed_as = garuda_court_position }
|
||||
}
|
||||
AND = {
|
||||
can_employ_court_position_type = wet_nurse_court_position
|
||||
$CHARACTER$ = { can_be_employed_as = wet_nurse_court_position }
|
||||
}
|
||||
AND = {
|
||||
can_employ_court_position_type = akolouthos_court_position
|
||||
$CHARACTER$ = { can_be_employed_as = akolouthos_court_position }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#Used to check if the scoped character can hold any court position
|
||||
can_be_employed_in_any_court_position_trigger = {
|
||||
OR = {
|
||||
can_be_employed_as = court_physician_court_position
|
||||
can_be_employed_as = master_of_horse_court_position
|
||||
can_be_employed_as = master_of_hunt_court_position
|
||||
can_be_employed_as = keeper_of_swans_court_position
|
||||
can_be_employed_as = court_jester_court_position
|
||||
can_be_employed_as = high_almoner_court_position
|
||||
can_be_employed_as = seneschal_court_position
|
||||
can_be_employed_as = court_tutor_court_position
|
||||
can_be_employed_as = cupbearer_court_position
|
||||
can_be_employed_as = chief_eunuch_court_position
|
||||
can_be_employed_as = antiquarian_court_position
|
||||
can_be_employed_as = royal_architect_court_position
|
||||
can_be_employed_as = lady_in_waiting_court_position
|
||||
can_be_employed_as = court_poet_court_position
|
||||
can_be_employed_as = court_musician_court_position
|
||||
can_be_employed_as = bodyguard_court_position
|
||||
can_be_employed_as = champion_court_position
|
||||
can_be_employed_as = food_taster_court_position
|
||||
can_be_employed_as = executioner_court_position
|
||||
can_be_employed_as = garuda_court_position
|
||||
can_be_employed_as = travel_leader_court_position
|
||||
can_be_employed_as = wet_nurse_court_position
|
||||
can_be_employed_as = akolouthos_court_position
|
||||
}
|
||||
}
|
||||
|
||||
##### Hold court
|
||||
|
||||
hold_court_8010_county_trigger = {
|
||||
any_title_to_title_neighboring_county = {
|
||||
holder.top_liege = {
|
||||
NOR = {
|
||||
THIS = ROOT
|
||||
is_allied_to = ROOT
|
||||
is_at_war_with = ROOT
|
||||
is_close_or_extended_family_of = ROOT
|
||||
max_military_strength < hold_court_8010_75_strength_value # 75% of ROOT's soldiers
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
target_of_powerful_faction_trigger = {
|
||||
exists = yes
|
||||
OR = {
|
||||
faction_is_type = liberty_faction
|
||||
faction_is_type = claimant_faction
|
||||
}
|
||||
OR = {
|
||||
faction_power >= faction_power_threshold
|
||||
faction_is_at_war = yes
|
||||
}
|
||||
trigger_if = {
|
||||
limit = { exists = special_character }
|
||||
NOT = { special_character = faction_target.liege }
|
||||
}
|
||||
}
|
||||
|
||||
province_has_no_holding_trigger = { # province has no holding
|
||||
has_ongoing_construction = no
|
||||
NOR = {
|
||||
has_holding_type = castle_holding
|
||||
has_holding_type = tribal_holding
|
||||
has_holding_type = city_holding
|
||||
has_holding_type = church_holding
|
||||
has_holding_type = herder_holding
|
||||
has_holding_type = nomad_holding
|
||||
}
|
||||
}
|
||||
|
||||
county_has_all_holding_types = { # county has all three holding types
|
||||
any_county_province = { has_holding_type = castle_holding }
|
||||
any_county_province = { has_holding_type = city_holding }
|
||||
any_county_province = { has_holding_type = church_holding }
|
||||
}
|
||||
|
||||
county_has_empty_province_trigger = {
|
||||
tier = tier_county
|
||||
any_county_province = { province_has_no_holding_trigger = yes }
|
||||
}
|
||||
|
||||
county_has_no_city_trigger = { # No city in a county
|
||||
NOT = {
|
||||
any_county_province = { has_holding_type = city_holding }
|
||||
}
|
||||
}
|
||||
|
||||
county_has_no_church_trigger = { # No church in a county
|
||||
NOT = {
|
||||
any_county_province = { has_holding_type = church_holding }
|
||||
}
|
||||
}
|
||||
|
||||
##############
|
||||
# DECISION TRIGGERS
|
||||
##############
|
||||
|
||||
order_mass_eviction_decision_evictable_courtier_trigger = {
|
||||
NOR = {
|
||||
is_of_major_or_minor_interest_trigger = { CHARACTER = root }
|
||||
any_close_family_member = {
|
||||
host = root
|
||||
is_of_major_or_minor_interest_trigger = { CHARACTER = root }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# For technical reasons, this trigger can't be the same as ep1_decision_0111_list_builder_guts_trigger, but maintains (almost) technical parity with it.
|
||||
exoticise_a_grand_hall_decision_list_builder_guts_trigger = {
|
||||
# Is the title presently active?
|
||||
exists = holder
|
||||
# Can the two communicate?
|
||||
holder = {
|
||||
# Filter out anyone who has the right rank but lacks a mechanical royal court.
|
||||
has_royal_court = yes
|
||||
has_dlc_feature = royal_court
|
||||
# Can the two communicate?
|
||||
in_diplomatic_range = root
|
||||
}
|
||||
}
|
||||
|
||||
##############
|
||||
# CHARACTER INTERACTIONS TRIGGERS
|
||||
##############
|
||||
|
||||
indebt_guest_interaction_basic_checks_trigger = {
|
||||
$ACTOR$ = {
|
||||
# Gotta have a royal court.
|
||||
has_royal_court = yes
|
||||
has_dlc_feature = royal_court
|
||||
# Gotta have maxed servants to help.
|
||||
amenity_level = {
|
||||
type = court_servants
|
||||
value >= max_amenity_level
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
##############
|
||||
# BANNER TRIGGERS
|
||||
##############
|
||||
|
||||
artifact_house_not_owns_or_claims_trigger = {
|
||||
exists = scope:familial_banner
|
||||
NOR = {
|
||||
this = scope:familial_banner.artifact_owner.house
|
||||
has_house_artifact_claim = scope:familial_banner
|
||||
}
|
||||
trigger_if = {
|
||||
limit = { exists = scope:familial_banner.var:banner_dynasty }
|
||||
house_head.dynasty = scope:familial_banner.var:banner_dynasty
|
||||
}
|
||||
}
|
||||
315
common/scripted_triggers/03_bp1_scripted_triggers.txt
Normal file
315
common/scripted_triggers/03_bp1_scripted_triggers.txt
Normal file
|
|
@ -0,0 +1,315 @@
|
|||
##### FAMILY FEUD #####
|
||||
|
||||
# Story has variable with specified flag
|
||||
house_feud_story_flag_trigger = {
|
||||
story_type = story_cycle_house_feud
|
||||
exists = var:$VARIABLE$
|
||||
var:$VARIABLE$ = flag:$FLAG$
|
||||
}
|
||||
|
||||
# Feud story targets a specified House
|
||||
existing_feud_against_target_trigger = {
|
||||
OR = {
|
||||
house.house_head ?= {
|
||||
any_owned_story = {
|
||||
story_type = story_cycle_house_feud
|
||||
var:house_feud_house ?= $TARGET$.house
|
||||
}
|
||||
}
|
||||
exists = scope:return_feud_as_true_for_debug
|
||||
}
|
||||
}
|
||||
|
||||
# General checks house head can start a feud
|
||||
house_head_can_start_feud_trigger = {
|
||||
# Must be House Head
|
||||
is_house_head = yes
|
||||
# Stop unlanded AI going crazy with feuds
|
||||
is_playable_character = yes
|
||||
NOR = {
|
||||
# House must not have started a feud recently
|
||||
exists = house.var:house_feud_cooldown
|
||||
# Only one Feud can be started per House Head
|
||||
has_character_flag = had_house_feud_story
|
||||
# Cannot already be Feuding
|
||||
any_owned_story = { story_type = story_cycle_house_feud }
|
||||
}
|
||||
# Has not recently ended a Feud
|
||||
house_feud_house_any_end_modifier_trigger = no
|
||||
# House must be sufficiently large to support a Feud
|
||||
house = {
|
||||
any_house_member = {
|
||||
count >= 5
|
||||
is_alive = yes
|
||||
is_adult = yes
|
||||
}
|
||||
}
|
||||
# Save scopes for checking against
|
||||
save_temporary_scope_as = house_head_temp
|
||||
}
|
||||
|
||||
house_head_can_start_feud_against_trigger = {
|
||||
# General checks that house head can start a feud
|
||||
house_head_can_start_feud_trigger = yes
|
||||
# Victim House Head must exist
|
||||
exists = $TARGET$.house.house_head
|
||||
# Ensure target is 'equal'
|
||||
trigger_if = {
|
||||
limit = {
|
||||
is_landed = yes
|
||||
$TARGET$.house.house_head = { is_landed = yes }
|
||||
}
|
||||
tier_difference = {
|
||||
target = $TARGET$.house.house_head
|
||||
value >= -1
|
||||
}
|
||||
tier_difference = {
|
||||
target = $TARGET$.house.house_head
|
||||
value <= 1
|
||||
}
|
||||
}
|
||||
trigger_else = {
|
||||
NOR = {
|
||||
highest_held_title_tier > tier_duchy
|
||||
$TARGET$.house.house_head.highest_held_title_tier > tier_duchy
|
||||
}
|
||||
}
|
||||
NOR = {
|
||||
# Is not part of same family as target House Head
|
||||
is_close_family_of = $TARGET$.house.house_head
|
||||
# Is not friendly with target House Head
|
||||
has_any_good_relationship_with_character_trigger = { CHARACTER = $TARGET$.house.house_head }
|
||||
# Target House must be different
|
||||
house = $TARGET$.house
|
||||
}
|
||||
# Avoid starting Feuds between Vassals and Lieges, as they are not 'equals'
|
||||
trigger_if = {
|
||||
limit = { exists = $TARGET$.house.house_head.liege }
|
||||
NOR = {
|
||||
# Is not liege of target House Head
|
||||
this = $TARGET$.house.house_head.liege
|
||||
# Does not share house with target's liege
|
||||
this.house = $TARGET$.house.house_head.liege.house
|
||||
}
|
||||
}
|
||||
# Must be near target House Head
|
||||
in_diplomatic_range = $TARGET$.house.house_head
|
||||
# Save scopes for checking against
|
||||
save_temporary_scope_as = house_head_temp
|
||||
$TARGET$.house.house_head = { save_temporary_scope_as = target_house_head_temp }
|
||||
}
|
||||
|
||||
# Feud target house has living members
|
||||
house_feud_target_house_alive_trigger = {
|
||||
any_owned_story = {
|
||||
story_type = story_cycle_house_feud
|
||||
exists = var:house_feud_house
|
||||
var:house_feud_house.house_head = { is_alive = yes }
|
||||
}
|
||||
}
|
||||
|
||||
# House Head, and House is valid to be a Feud target
|
||||
house_feud_valid_feud_target_trigger = {
|
||||
exists = house
|
||||
this = this.house.house_head
|
||||
is_playable_character = yes
|
||||
NOR = {
|
||||
house = root.house
|
||||
is_close_family_of = root
|
||||
has_any_good_relationship_with_character_trigger = { CHARACTER = root }
|
||||
}
|
||||
save_temporary_scope_as = house_head_temp
|
||||
# House must not be too small (too easy to wipe out)
|
||||
house = {
|
||||
any_house_member = {
|
||||
count >= 3
|
||||
is_adult = yes
|
||||
can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:house_head_temp }
|
||||
}
|
||||
}
|
||||
# Must be interactable
|
||||
in_diplomatic_range = root
|
||||
}
|
||||
|
||||
# Valid to be a target of a murder scheme
|
||||
house_feud_scheme_target_trigger = {
|
||||
is_available_adult = yes
|
||||
save_temporary_scope_as = house_feud_scheme_target_temp
|
||||
NOR = {
|
||||
this = this.house.house_head
|
||||
root = {
|
||||
is_scheming_against = { target = scope:house_feud_scheme_target_temp }
|
||||
}
|
||||
is_in_list = house_feud_scheme_targets
|
||||
}
|
||||
root = {
|
||||
can_start_scheme = {
|
||||
type = murder
|
||||
target_character = scope:house_feud_scheme_target_temp
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Valid member of own house
|
||||
house_feud_member_trigger = {
|
||||
is_available_adult = yes
|
||||
house = root.house
|
||||
in_diplomatic_range = root
|
||||
NOT = {
|
||||
has_any_bad_relationship_with_character_trigger = { CHARACTER = root }
|
||||
}
|
||||
}
|
||||
|
||||
# House has no ongoing Fued modifiers or rewards
|
||||
house_feud_house_any_end_modifier_trigger = {
|
||||
OR = {
|
||||
exists = var:house_feud_swapped_house
|
||||
house = {
|
||||
OR = {
|
||||
has_house_modifier = house_feud_terrible_modifier
|
||||
has_house_modifier = house_feud_bad_modifier
|
||||
has_house_modifier = house_feud_even_modifier
|
||||
has_house_modifier = house_feud_good_modifier
|
||||
has_house_modifier = house_feud_excellent_modifier
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# House has no remaining members
|
||||
house_feud_wiped_out_trigger = {
|
||||
trigger_if = {
|
||||
limit = { exists = var:house_feud_first_rival.house }
|
||||
var:house_feud_first_rival.house = {
|
||||
NOT = { exists = house_head }
|
||||
NOT = {
|
||||
any_house_member = { is_alive = yes }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Sycophant Triggers
|
||||
|
||||
bp1_yearly_8100_sycophant_trigger = {
|
||||
is_available_ai_adult = yes
|
||||
liege = $LIEGE$
|
||||
reverse_opinion = {
|
||||
target = $LIEGE$
|
||||
value >= 25
|
||||
}
|
||||
NOT = { is_vassal_of = $LIEGE$ }
|
||||
trigger_if = {
|
||||
limit = { exists = $LIEGE$.cp:councillor_spouse }
|
||||
NOT = { this = $LIEGE$.cp:councillor_spouse }
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
$LIEGE$.faith = { has_doctrine = doctrine_clerical_succession_spiritual_fixed_appointment }
|
||||
exists = $LIEGE$.cp:councillor_court_chaplain
|
||||
}
|
||||
NOT = { this = $LIEGE$.cp:councillor_court_chaplain }
|
||||
}
|
||||
OR = {
|
||||
has_relation_lover = $LIEGE$
|
||||
has_relation_friend = $LIEGE$
|
||||
can_set_relation_friend_trigger = { CHARACTER = $LIEGE$ }
|
||||
any_secret = {
|
||||
secret_type = secret_lover
|
||||
secret_target = $LIEGE$
|
||||
}
|
||||
}
|
||||
NOT = { is_close_or_extended_family_of = $LIEGE$ }
|
||||
}
|
||||
|
||||
house_feud_ai_scheme_trigger = {
|
||||
is_adult = yes
|
||||
is_ai = yes
|
||||
ai_honor < medium_positive_ai_value
|
||||
any_scheme = { count < 1 }
|
||||
OR = {
|
||||
house_feud_ai_murder_join_trigger = yes
|
||||
house_feud_ai_murder_start_trigger = yes
|
||||
house_feud_ai_seduce_start_trigger = yes
|
||||
}
|
||||
}
|
||||
|
||||
house_feud_ai_murder_join_trigger = {
|
||||
house = {
|
||||
any_house_member = {
|
||||
any_scheme = {
|
||||
scheme_type = murder
|
||||
exists = scheme_target_character.house
|
||||
scheme_target_character.house = scope:story.var:house_feud_house
|
||||
save_temporary_scope_as = murder_scheme_temp
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_if = {
|
||||
limit = { exists = scope:murder_scheme_temp }
|
||||
char_can_fit_into_scheme_trigger = { SCHEME = scope:murder_scheme_temp }
|
||||
NOR = {
|
||||
is_scheming_against = { target = scope:murder_scheme_temp.scheme_target_character }
|
||||
has_any_good_relationship_with_character_trigger = { CHARACTER = scope:murder_scheme_temp.scheme_target_character }
|
||||
}
|
||||
}
|
||||
trigger_else = { always = no }
|
||||
}
|
||||
|
||||
house_feud_ai_murder_start_trigger = {
|
||||
scope:story.var:house_feud_house = {
|
||||
any_house_member = { save_temporary_scope_as = murder_victim_temp }
|
||||
}
|
||||
trigger_if = {
|
||||
limit = { exists = scope:murder_victim_temp }
|
||||
NOT = {
|
||||
has_any_good_relationship_with_character_trigger = { CHARACTER = scope:murder_victim_temp }
|
||||
}
|
||||
can_start_scheme = {
|
||||
type = murder
|
||||
target_character = scope:murder_victim_temp
|
||||
}
|
||||
}
|
||||
trigger_else = { always = no }
|
||||
}
|
||||
|
||||
house_feud_ai_seduce_start_trigger = {
|
||||
NOR = {
|
||||
has_trait = celibate
|
||||
has_trait = chaste
|
||||
}
|
||||
scope:story.var:house_feud_house = {
|
||||
any_house_member = {
|
||||
is_married = yes
|
||||
save_temporary_scope_as = seduce_victim_temp
|
||||
any_spouse = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
exists = house
|
||||
NOT = { house = scope:seduce_victim_temp.house }
|
||||
}
|
||||
}
|
||||
NOT = {
|
||||
has_any_good_relationship_with_character_trigger = { CHARACTER = scope:seduce_victim_temp }
|
||||
}
|
||||
save_temporary_scope_as = seduce_spouse_temp
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
exists = scope:seduce_victim_temp
|
||||
exists = scope:seduce_spouse_temp
|
||||
}
|
||||
NOR = {
|
||||
has_any_good_relationship_with_character_trigger = { CHARACTER = scope:seduce_victim_temp }
|
||||
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:seduce_spouse_temp }
|
||||
}
|
||||
can_start_scheme = {
|
||||
type = seduce
|
||||
target_character = scope:seduce_spouse_temp
|
||||
}
|
||||
}
|
||||
trigger_else = { always = no }
|
||||
}
|
||||
81
common/scripted_triggers/03_bp2_scripted_triggers.txt
Normal file
81
common/scripted_triggers/03_bp2_scripted_triggers.txt
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
# Scripted Triggers for BP2 related things
|
||||
|
||||
# Trigger to find a random appropriate educator for a child
|
||||
is_relevant_to_child = {
|
||||
is_available_ai_adult = yes
|
||||
#location = $CHILD$.location
|
||||
}
|
||||
|
||||
has_level_1_education_trait_trigger = {
|
||||
OR = {
|
||||
has_trait = education_diplomacy_1
|
||||
has_trait = education_martial_1
|
||||
has_trait = education_stewardship_1
|
||||
has_trait = education_intrigue_1
|
||||
has_trait = education_learning_1
|
||||
}
|
||||
}
|
||||
|
||||
has_level_2_education_trait_trigger = {
|
||||
OR = {
|
||||
has_trait = education_diplomacy_2
|
||||
has_trait = education_martial_2
|
||||
has_trait = education_stewardship_2
|
||||
has_trait = education_intrigue_2
|
||||
has_trait = education_learning_2
|
||||
}
|
||||
}
|
||||
|
||||
has_level_3_education_trait_trigger = {
|
||||
OR = {
|
||||
has_trait = education_diplomacy_3
|
||||
has_trait = education_martial_3
|
||||
has_trait = education_stewardship_3
|
||||
has_trait = education_intrigue_3
|
||||
has_trait = education_learning_3
|
||||
}
|
||||
}
|
||||
|
||||
has_level_4_education_trait_trigger = {
|
||||
OR = {
|
||||
has_trait = education_diplomacy_4
|
||||
has_trait = education_martial_4
|
||||
has_trait = education_stewardship_4
|
||||
has_trait = education_intrigue_4
|
||||
has_trait = education_learning_4
|
||||
}
|
||||
}
|
||||
|
||||
style_changing_reformer_trigger = {
|
||||
OR = {
|
||||
root.top_liege ?= { has_character_flag = $FLAG$ }
|
||||
AND = {
|
||||
has_variable = years_as_varangian
|
||||
has_character_flag = $FLAG$
|
||||
is_landed = no
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
hostage_oath_of_friendship_trigger = {
|
||||
AND = {
|
||||
OR = {
|
||||
has_relation_friend = scope:recipient
|
||||
has_relation_best_friend = scope:recipient
|
||||
}
|
||||
OR = {
|
||||
scope:actor = {
|
||||
any_memory = {
|
||||
has_memory_type = hostage_oath_of_friendship
|
||||
has_memory_participant = scope:recipient
|
||||
}
|
||||
}
|
||||
scope:recipient = {
|
||||
any_memory = {
|
||||
has_memory_type = hostage_oath_of_friendship
|
||||
has_memory_participant = scope:actor
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
744
common/scripted_triggers/03_fp2_scripted_triggers.txt
Normal file
744
common/scripted_triggers/03_fp2_scripted_triggers.txt
Normal file
|
|
@ -0,0 +1,744 @@
|
|||
|
||||
##################################################
|
||||
# General Triggers
|
||||
|
||||
fp2_should_use_iberian_graphics_trigger = {
|
||||
culture = { has_building_gfx = iberian_building_gfx }
|
||||
}
|
||||
|
||||
fp2_character_any_involvement_iberian_struggle_trigger = {
|
||||
has_fp2_dlc_trigger = yes
|
||||
OR = {
|
||||
fp2_character_involved_in_struggle_trigger = yes
|
||||
fp2_character_interloper_in_struggle_trigger = yes
|
||||
}
|
||||
}
|
||||
|
||||
fp2_character_involved_in_struggle_trigger = {
|
||||
has_fp2_dlc_trigger = yes
|
||||
any_character_struggle = {
|
||||
involvement = involved
|
||||
is_struggle_type = iberian_struggle
|
||||
}
|
||||
}
|
||||
|
||||
fp2_character_interloper_in_struggle_trigger = {
|
||||
has_fp2_dlc_trigger = yes
|
||||
any_character_struggle = {
|
||||
involvement = interloper
|
||||
is_struggle_type = iberian_struggle
|
||||
}
|
||||
}
|
||||
|
||||
fp2_character_uninvolved_in_struggle_trigger = {
|
||||
has_fp2_dlc_trigger = yes
|
||||
exists = struggle:iberian_struggle
|
||||
fp2_character_interloper_in_struggle_trigger = no
|
||||
fp2_character_involved_in_struggle_trigger = no
|
||||
}
|
||||
|
||||
eligible_for_fp2_dynasty_legacies_trigger = {
|
||||
has_fp2_dlc_trigger = yes
|
||||
dynasty = {
|
||||
OR = {
|
||||
dynast = {
|
||||
OR = {
|
||||
any_character_struggle = {
|
||||
involvement = involved
|
||||
is_struggle_type = iberian_struggle
|
||||
}
|
||||
culture = {
|
||||
has_cultural_pillar = heritage_iberian
|
||||
}
|
||||
AND = {
|
||||
exists = capital_province
|
||||
capital_province = {
|
||||
geographical_region = world_europe_west_iberia
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
is_toledo_ownership_valid_trigger = {
|
||||
title:c_toledo.holder = {
|
||||
OR = {
|
||||
this = root
|
||||
liege = root
|
||||
top_liege = root
|
||||
}
|
||||
faith = {
|
||||
portrait_religious_faith_or_foundational_trigger = { FAITH = faith:mozarabic_church }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Cultural & Regional Triggers
|
||||
|
||||
culture_valid_for_ritualised_best_friends_trigger = {
|
||||
culture = { has_cultural_parameter = strong_hooks_and_stress_effects_best_friends }
|
||||
}
|
||||
|
||||
valid_ritualised_best_friendship_two_way_trigger = {
|
||||
$ACTOR_FRIEND$ = {
|
||||
# Check that they have the appropriate cultural parameter...
|
||||
culture_valid_for_ritualised_best_friends_trigger = yes
|
||||
# ... and that they've still got a best friend...
|
||||
any_relation = {
|
||||
type = best_friend
|
||||
this = $RECIPIENT_FRIEND$
|
||||
# ... who also still has the cultural parameter.
|
||||
culture_valid_for_ritualised_best_friends_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
valid_ritualised_best_friendship_one_way_trigger = {
|
||||
$ACTOR_FRIEND$ = {
|
||||
# Check that they have the appropriate cultural parameter...
|
||||
culture_valid_for_ritualised_best_friends_trigger = yes
|
||||
# ... and that they've got a best friend...
|
||||
any_relation = {
|
||||
type = best_friend
|
||||
count >= 1
|
||||
# ... who also still has the cultural parameter.
|
||||
culture_valid_for_ritualised_best_friends_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Illustration Triggers
|
||||
|
||||
|
||||
|
||||
##################################################
|
||||
# Interaction Triggers
|
||||
|
||||
has_any_best_friend_synergy_bonus_modifier_trigger = {
|
||||
OR = {
|
||||
has_character_modifier = fp2_single_synergy_diplomacy_modifier
|
||||
has_character_modifier = fp2_single_synergy_martial_modifier
|
||||
has_character_modifier = fp2_single_synergy_stewardship_modifier
|
||||
has_character_modifier = fp2_single_synergy_intrigue_modifier
|
||||
has_character_modifier = fp2_single_synergy_learning_modifier
|
||||
has_character_modifier = fp2_double_synergy_diplomacy_diplomacy_modifier
|
||||
has_character_modifier = fp2_double_synergy_diplomacy_martial_modifier
|
||||
has_character_modifier = fp2_double_synergy_diplomacy_stewardship_modifier
|
||||
has_character_modifier = fp2_double_synergy_diplomacy_intrigue_modifier
|
||||
has_character_modifier = fp2_double_synergy_diplomacy_learning_modifier
|
||||
has_character_modifier = fp2_double_synergy_martial_diplomacy_modifier
|
||||
has_character_modifier = fp2_double_synergy_martial_martial_modifier
|
||||
has_character_modifier = fp2_double_synergy_martial_stewardship_modifier
|
||||
has_character_modifier = fp2_double_synergy_martial_intrigue_modifier
|
||||
has_character_modifier = fp2_double_synergy_martial_learning_modifier
|
||||
has_character_modifier = fp2_double_synergy_stewardship_diplomacy_modifier
|
||||
has_character_modifier = fp2_double_synergy_stewardship_martial_modifier
|
||||
has_character_modifier = fp2_double_synergy_stewardship_stewardship_modifier
|
||||
has_character_modifier = fp2_double_synergy_stewardship_intrigue_modifier
|
||||
has_character_modifier = fp2_double_synergy_stewardship_learning_modifier
|
||||
has_character_modifier = fp2_double_synergy_intrigue_diplomacy_modifier
|
||||
has_character_modifier = fp2_double_synergy_intrigue_martial_modifier
|
||||
has_character_modifier = fp2_double_synergy_intrigue_stewardship_modifier
|
||||
has_character_modifier = fp2_double_synergy_intrigue_intrigue_modifier
|
||||
has_character_modifier = fp2_double_synergy_intrigue_learning_modifier
|
||||
has_character_modifier = fp2_double_synergy_learning_diplomacy_modifier
|
||||
has_character_modifier = fp2_double_synergy_learning_martial_modifier
|
||||
has_character_modifier = fp2_double_synergy_learning_stewardship_modifier
|
||||
has_character_modifier = fp2_double_synergy_learning_intrigue_modifier
|
||||
has_character_modifier = fp2_double_synergy_learning_learning_modifier
|
||||
}
|
||||
}
|
||||
|
||||
purchase_truce_interaction_recipient_can_de_jure_war_actor_trigger = {
|
||||
scope:recipient = {
|
||||
OR = {
|
||||
has_cb_on = {
|
||||
target = scope:actor
|
||||
cb = de_jure_cb
|
||||
}
|
||||
has_cb_on = {
|
||||
target = scope:actor
|
||||
cb = individual_county_de_jure_cb
|
||||
}
|
||||
has_cb_on = {
|
||||
target = scope:actor
|
||||
cb = individual_duchy_de_jure_cb
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fp2_struggle_contract_assistance_war_winning_trigger = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
scope:recipient = { is_attacker_in_war = prev }
|
||||
}
|
||||
attacker_war_score >= offer_assistance_interaction_already_winning_value
|
||||
}
|
||||
trigger_else = { defender_war_score >= offer_assistance_interaction_already_winning_value }
|
||||
}
|
||||
|
||||
fp2_struggle_contract_assistance_war_losing_trigger = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
scope:recipient = { is_attacker_in_war = prev }
|
||||
}
|
||||
defender_war_score >= offer_assistance_interaction_already_losing_value
|
||||
}
|
||||
trigger_else = { attacker_war_score >= offer_assistance_interaction_already_losing_value }
|
||||
}
|
||||
|
||||
fp2_struggle_contract_assistance_war_outnumbering_trigger = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
scope:recipient = { is_attacker_in_war = prev }
|
||||
}
|
||||
war_attacker_total_strength_halved_value > war_defender_total_strength_value
|
||||
}
|
||||
trigger_else = { war_defender_total_strength_halved_value > war_attacker_total_strength_value }
|
||||
}
|
||||
|
||||
fp2_struggle_contract_assistance_war_outnumbered_trigger = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
scope:recipient = { is_attacker_in_war = prev }
|
||||
}
|
||||
war_defender_total_strength_halved_value > war_attacker_total_strength_value
|
||||
}
|
||||
trigger_else = { war_attacker_total_strength_halved_value > war_defender_total_strength_value }
|
||||
}
|
||||
|
||||
fp2_struggle_contract_assistance_war_outnumbered_minor_trigger = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
scope:recipient = { is_attacker_in_war = prev }
|
||||
}
|
||||
war_defender_total_strength_value > war_attacker_total_strength_value
|
||||
}
|
||||
trigger_else = { war_attacker_total_strength_value > war_defender_total_strength_value }
|
||||
}
|
||||
|
||||
fp2_struggle_contract_assistance_war_insufficient_trigger = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
scope:recipient = { is_attacker_in_war = prev }
|
||||
}
|
||||
scope:actor.max_military_strength < war_defender_total_strength_tenth_value
|
||||
}
|
||||
trigger_else = { scope:actor.max_military_strength < war_attacker_total_strength_tenth_value }
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Religious Triggers
|
||||
|
||||
|
||||
|
||||
##################################################
|
||||
# Achievement Triggers
|
||||
|
||||
##################################################
|
||||
# Decision Triggers
|
||||
|
||||
##### Struggle Ending #####
|
||||
|
||||
### Common
|
||||
|
||||
# Checks a de jure kingdom of Hispania is completely controlled
|
||||
fp2_struggle_ending_hold_de_jure_kingdom_trigger = {
|
||||
title:e_spain ?= {
|
||||
any_in_de_jure_hierarchy = {
|
||||
tier = tier_kingdom
|
||||
any_in_de_jure_hierarchy = {
|
||||
tier = tier_county
|
||||
}
|
||||
holder = root
|
||||
root = {
|
||||
completely_controls = prev
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Checks less than half of Iberia owned
|
||||
fp2_struggle_ending_percent_iberia_trigger = {
|
||||
any_county_in_region = {
|
||||
region = world_europe_west_iberia
|
||||
percent < fp2_struggle_compromise_owned_percent_decimal_value
|
||||
holder.top_liege = root
|
||||
}
|
||||
}
|
||||
|
||||
# Checks no more than half of Iberia is owned by another
|
||||
fp2_struggle_ending_other_percent_iberia_trigger = {
|
||||
struggle:iberian_struggle = {
|
||||
NOT = {
|
||||
any_involved_ruler = {
|
||||
exists = primary_title # Max figured out that is_independent_ruler causes errors if you are unlanded
|
||||
NOT = { this = root }
|
||||
is_independent_ruler = yes
|
||||
primary_title = { is_mercenary_company = no }
|
||||
any_county_in_region = {
|
||||
region = world_europe_west_iberia
|
||||
percent > fp2_struggle_compromise_involved_percent_decimal_value
|
||||
holder.top_liege = prev
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Checks duchy is held by an independent ruler who owns at least half of it
|
||||
fp2_struggle_ending_compromise_independent_duchy_trigger = {
|
||||
tier = tier_duchy
|
||||
# Is created
|
||||
exists = holder
|
||||
OR = {
|
||||
# Is not the heartland of an existing kingdom
|
||||
NOT = { title_capital_county = de_jure_liege.title_capital_county }
|
||||
# Capital duke doesn't control kingdom, edge case
|
||||
AND = {
|
||||
exists = de_jure_liege.holder
|
||||
NOT = { holder = de_jure_liege.holder }
|
||||
}
|
||||
}
|
||||
# Is ruled by an independent duke
|
||||
holder = {
|
||||
is_independent_ruler = yes
|
||||
save_temporary_scope_as = duchy_holder
|
||||
primary_title = {
|
||||
is_mercenary_company = no
|
||||
OR = {
|
||||
tier = tier_duchy
|
||||
tier = tier_kingdom
|
||||
}
|
||||
}
|
||||
}
|
||||
OR = {
|
||||
this = holder.primary_title
|
||||
holder.primary_title.tier = tier_kingdom
|
||||
}
|
||||
# Duke rules at least half the de jure duchy
|
||||
any_direct_de_jure_vassal_title = {
|
||||
percent >= 0.5
|
||||
holder.top_liege = scope:duchy_holder
|
||||
}
|
||||
}
|
||||
|
||||
# Checks duchy should be split from de jure kingdom
|
||||
fp2_struggle_ending_compromise_split_duchy_trigger = {
|
||||
tier = tier_duchy
|
||||
# Has not been tampered with already
|
||||
NOT = { is_in_list = duchy_kingdom }
|
||||
# Is not created
|
||||
NOT = { exists = holder }
|
||||
# Is not heartland of an existing kingdom
|
||||
NOT = { title_capital_county = de_jure_liege.title_capital_county }
|
||||
save_temporary_scope_as = duchy
|
||||
# Less than half is owned by de jure kingdom, if created
|
||||
trigger_if = {
|
||||
limit = { exists = scope:duchy.de_jure_liege.holder }
|
||||
any_direct_de_jure_vassal_title = {
|
||||
percent < 0.5
|
||||
holder.top_liege = scope:duchy.de_jure_liege.holder.top_liege
|
||||
}
|
||||
}
|
||||
trigger_else = { always = no }
|
||||
}
|
||||
|
||||
# Checks titular duchy should be made into de jure kingdom
|
||||
fp2_struggle_ending_compromise_titular_trigger = {
|
||||
# Has not been tampered with already
|
||||
NOT = { is_in_list = duchy_kingdom }
|
||||
# Is created
|
||||
exists = holder
|
||||
# Is ruled by an independent duke
|
||||
holder = {
|
||||
is_independent_ruler = yes
|
||||
primary_title = {
|
||||
is_mercenary_company = no
|
||||
tier = tier_duchy
|
||||
}
|
||||
}
|
||||
# Titular duke holds at least half of any de jure duchy of Hispania
|
||||
title:e_spain = {
|
||||
any_in_de_jure_hierarchy = {
|
||||
tier = tier_duchy
|
||||
any_direct_de_jure_vassal_title = {
|
||||
percent >= 0.5
|
||||
holder.top_liege = scope:special_duchy.holder
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Should title be created by ststus quo decision?
|
||||
fp2_struggle_ending_compromise_create_title_trigger = {
|
||||
NOR = {
|
||||
this = title:e_spain
|
||||
exists = holder
|
||||
is_in_list = assigned_title
|
||||
# Only if no other same rank rulers in title (e.g. multiple kings under empire)
|
||||
any_direct_de_jure_vassal_title = {
|
||||
exists = holder
|
||||
NOT = { holder = scope:new_owner_temp }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Checks two cultures were Involved in the struggle that ended in Conciliation
|
||||
fp2_struggle_conciliation_special_cultural_rules_trigger = {
|
||||
has_global_variable = fp2_struggle_conciliation_ending
|
||||
any_in_global_list = {
|
||||
variable = fp2_struggle_ending_culture_list
|
||||
this = $C1$.culture
|
||||
}
|
||||
any_in_global_list = {
|
||||
variable = fp2_struggle_ending_culture_list
|
||||
this = $C2$.culture
|
||||
}
|
||||
}
|
||||
|
||||
# Checks two faiths were Involved in the struggle that ended in Conciliation
|
||||
are_holy_wars_disabled_by_struggle_conciliation_trigger = {
|
||||
has_global_variable = fp2_struggle_conciliation_ending
|
||||
any_in_global_list = {
|
||||
variable = fp2_struggle_ending_faith_list
|
||||
this = scope:attacker.faith
|
||||
}
|
||||
any_in_global_list = {
|
||||
variable = fp2_struggle_ending_faith_list
|
||||
this = scope:defender.faith
|
||||
}
|
||||
}
|
||||
|
||||
# Checks if characters were both involved in struggle
|
||||
fp2_struggle_conciliation_recipient_actor_involved_trigger = {
|
||||
has_global_variable = fp2_struggle_conciliation_ending
|
||||
AND = {
|
||||
scope:actor.capital_province = { geographical_region = world_europe_west_iberia }
|
||||
scope:recipient.capital_province = { geographical_region = world_europe_west_iberia }
|
||||
# Offer comes from an Involved culture/faith character
|
||||
OR = {
|
||||
any_in_global_list = {
|
||||
variable = fp2_struggle_ending_faith_list
|
||||
this = scope:actor.faith
|
||||
}
|
||||
any_in_global_list = {
|
||||
variable = fp2_struggle_ending_culture_list
|
||||
this = scope:actor.culture
|
||||
}
|
||||
}
|
||||
# Recipient is from an Involved culture/faith
|
||||
OR = {
|
||||
any_in_global_list = {
|
||||
variable = fp2_struggle_ending_faith_list
|
||||
this = scope:recipient.faith
|
||||
}
|
||||
any_in_global_list = {
|
||||
variable = fp2_struggle_ending_culture_list
|
||||
this = scope:recipient.culture
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Checks if character was involved in struggle
|
||||
fp2_struggle_conciliation_scope_uninvolved_trigger = {
|
||||
has_global_variable = fp2_struggle_conciliation_ending
|
||||
OR = {
|
||||
NOR = {
|
||||
any_in_global_list = {
|
||||
variable = fp2_struggle_ending_faith_list
|
||||
this = $SCOPE$.faith
|
||||
}
|
||||
any_in_global_list = {
|
||||
variable = fp2_struggle_ending_culture_list
|
||||
this = $SCOPE$.culture
|
||||
}
|
||||
}
|
||||
NOT = {
|
||||
$SCOPE$.capital_province = { geographical_region = world_europe_west_iberia }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fp2_struggle_compromise_transfer_duchy_trigger = {
|
||||
tier = tier_duchy
|
||||
save_temporary_scope_as = transfer_duchy
|
||||
# Duchy is completely controlled by its capital's holder's top_liege
|
||||
exists = title_capital_county.holder.top_liege
|
||||
title_capital_county.holder.top_liege = { completely_controls = scope:transfer_duchy }
|
||||
# De jure liege does not control duchy
|
||||
trigger_if = {
|
||||
limit = { exists = kingdom.holder }
|
||||
NOT = { kingdom = scope:transfer_duchy.title_capital_county.holder.top_liege.capital_county.kingdom }
|
||||
}
|
||||
# Is controlled by a kingdom tier
|
||||
trigger_else = { title_capital_county.holder.top_liege.primary_title.tier >= tier_kingdom }
|
||||
# Duchy is connected de_jure to holders kingdom
|
||||
any_de_jure_county = {
|
||||
any_title_to_title_neighboring_and_across_water_county = {
|
||||
exists = kingdom.holder
|
||||
kingdom.holder = scope:transfer_duchy.title_capital_county.holder.top_liege
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fp2_struggle_council_toledo_attendee_trigger = {
|
||||
OR = {
|
||||
has_trait = education_learning_3
|
||||
has_trait = education_learning_4
|
||||
has_trait = education_learning_5
|
||||
}
|
||||
}
|
||||
|
||||
fp2_struggle_council_toledo_decision_trigger = {
|
||||
is_toledo_ownership_valid_trigger = yes
|
||||
is_at_war = no
|
||||
}
|
||||
|
||||
fp2_struggle_secure_iberian_foothold_iberian_kingdom_trigger = {
|
||||
tier = tier_kingdom
|
||||
de_jure_liege = title:e_spain
|
||||
root = { completely_controls = prev }
|
||||
save_temporary_scope_as = iberian_kingdom_temp
|
||||
}
|
||||
|
||||
fp2_struggle_secure_iberian_foothold_faith_trigger = {
|
||||
fp2_struggle_secure_iberian_foothold_faith_percent_value >= fp2_struggle_secure_iberian_foothold_faith_target_percent_value
|
||||
}
|
||||
|
||||
fp2_struggle_secure_iberian_foothold_outsider_kingdom_trigger = {
|
||||
any_de_jure_county = {
|
||||
any_title_to_title_neighboring_and_across_water_county = {
|
||||
NOT = { empire = title:e_spain }
|
||||
kingdom.holder = root
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fp2_struggle_iberian_reclamation_should_vassalize_trigger = {
|
||||
any_character_struggle = { is_struggle_type = iberian_struggle }
|
||||
any_held_title = { tier < scope:attacker.primary_title.tier }
|
||||
any_realm_county = {
|
||||
count = all
|
||||
duchy = { is_in_list = target_titles }
|
||||
any_county_struggle = { is_struggle_type = iberian_struggle }
|
||||
}
|
||||
}
|
||||
|
||||
fp2_struggle_any_realm_county_in_hispania_trigger = {
|
||||
any_realm_county = { target_is_de_jure_liege_or_above = title:e_spain }
|
||||
}
|
||||
|
||||
fp2_iberian_reclamation_vassalize_iberian_trigger = {
|
||||
tier = tier_county
|
||||
holder = {
|
||||
any_character_struggle = {
|
||||
involvement = involved
|
||||
is_struggle_type = iberian_struggle
|
||||
}
|
||||
liege = scope:defender
|
||||
NOT = { this = scope:defender }
|
||||
capital_county = {
|
||||
any_county_struggle = { is_struggle_type = iberian_struggle }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fp2_iberian_reclamation_involved_county_trigger = {
|
||||
any_realm_county = {
|
||||
any_county_struggle = { is_struggle_type = iberian_struggle }
|
||||
}
|
||||
}
|
||||
|
||||
fp2_iberian_reclamation_vassalize_vassal_trigger = {
|
||||
primary_title.tier >= tier_county
|
||||
primary_title.tier < scope:attacker.primary_title.tier
|
||||
any_character_struggle = { is_struggle_type = iberian_struggle }
|
||||
capital_county = {
|
||||
duchy = { is_in_list = target_titles }
|
||||
}
|
||||
any_sub_realm_county = {
|
||||
count = all
|
||||
duchy = { is_in_list = target_titles }
|
||||
any_county_struggle = { is_struggle_type = iberian_struggle }
|
||||
}
|
||||
}
|
||||
|
||||
fp2_struggle_enforce_truce_war_leader_trigger = {
|
||||
custom_tooltip = {
|
||||
text = fp2_enforce_truce_war_with_not_involved_tt
|
||||
any_character_struggle = {
|
||||
involvement = involved
|
||||
}
|
||||
}
|
||||
custom_tooltip = {
|
||||
text = fp2_enforce_truce_tier_difference_tt
|
||||
tier_difference = {
|
||||
target = scope:actor
|
||||
value <= 0
|
||||
}
|
||||
}
|
||||
NOR = {
|
||||
this = scope:recipient
|
||||
this = scope:actor
|
||||
}
|
||||
custom_tooltip = {
|
||||
text = fp2_enforce_truce_liege_or_independent_tt
|
||||
OR = {
|
||||
scope:recipient = { is_independent_ruler = yes }
|
||||
scope:recipient.top_liege = scope:actor.top_liege
|
||||
is_independent_ruler = yes
|
||||
top_liege = scope:actor.top_liege
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fp2_bargain_fealty_war_outnumbered_trigger = {
|
||||
war_attacker_total_strength_halved_value > scope:recipient.max_military_strength
|
||||
}
|
||||
|
||||
fp2_bargain_fealty_war_losing_trigger = {
|
||||
attacker_war_score >= fp2_bargain_fealty_interaction_already_losing_value
|
||||
}
|
||||
|
||||
# We use a hard trigger so that this can be easily adjusted without overwriting the rest of the fp2_interactions file by modders.
|
||||
struggle_can_access_unlocks_bargain_fealty_interaction_trigger = {
|
||||
# Just uhh, use an OR if you add something else.
|
||||
is_struggle_type = iberian_struggle
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Multi-File Event Triggers
|
||||
|
||||
fp2_lyonese_monk_0002_papal_hof_trigger = {
|
||||
religion = religion:christianity_religion
|
||||
exists = faith.religious_head
|
||||
faith.religious_head_title = title:k_papal_state
|
||||
}
|
||||
|
||||
fp2_lyonese_monk_0002_valid_character_configuration_trigger = {
|
||||
OR = {
|
||||
has_trait = scholar
|
||||
has_trait = theologian
|
||||
has_trait = lifestyle_mystic
|
||||
AND = {
|
||||
is_ai = no
|
||||
learning >= very_high_skill_rating
|
||||
has_lifestyle = learning_lifestyle
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fp2_lyonese_monk_0002_valid_court_trigger = {
|
||||
# Must have the Pope as a HoF.
|
||||
fp2_lyonese_monk_0002_papal_hof_trigger = yes
|
||||
# Filter out anyone not able to be at home when the monk comes a'knockin'.
|
||||
is_physically_able = yes
|
||||
# Must be into bookish discussions.
|
||||
## Narratively, this is what attracts them to your court.
|
||||
## Mechanically, this is how players can opt in for the chain so it's not completely random.
|
||||
fp2_lyonese_monk_0002_valid_character_configuration_trigger = yes
|
||||
# Remove non-playables.
|
||||
NOR = {
|
||||
government_has_flag = government_is_theocracy
|
||||
government_has_flag = government_is_special_republic
|
||||
}
|
||||
# Plus, for various reasons, we don't want Lyon _itself_.
|
||||
NOT = {
|
||||
any_held_title = { this = title:c_lyon }
|
||||
}
|
||||
}
|
||||
|
||||
fp2_lyonese_monk_0000_valid_for_events_trigger = {
|
||||
fp2_lyonese_monk_0000_out_of_realm_trigger = no
|
||||
fp2_lyonese_monk_0000_out_of_freedom_trigger = no
|
||||
fp2_lyonese_monk_0000_out_of_popes_trigger = no
|
||||
fp2_lyonese_monk_0000_out_of_faith_trigger = no
|
||||
}
|
||||
|
||||
fp2_lyonese_monk_0000_out_of_realm_trigger = {
|
||||
scope:acolyte = {
|
||||
OR = {
|
||||
is_alive = no
|
||||
is_imprisoned = yes
|
||||
AND = {
|
||||
is_landed_or_landless_administrative = no
|
||||
NOT = {
|
||||
host = scope:acolyte_host
|
||||
# Make an exception if you're in prison, since that should give a different event.
|
||||
scope:acolyte_host = { is_imprisoned = no }
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
is_landed_or_landless_administrative = yes
|
||||
NOT = {
|
||||
any_liege_or_above = { this = scope:acolyte_host }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fp2_lyonese_monk_0000_out_of_freedom_trigger = { is_imprisoned = yes }
|
||||
|
||||
fp2_lyonese_monk_0000_out_of_popes_trigger = {
|
||||
NOT = { exists = scope:story.var:base_faith.religious_head }
|
||||
}
|
||||
|
||||
fp2_lyonese_monk_0000_out_of_faith_trigger = {
|
||||
OR = {
|
||||
NOT = { scope:acolyte.faith.religious_head = scope:story.var:base_faith.religious_head }
|
||||
NOT = { scope:acolyte_host.faith.religious_head = scope:story.var:base_faith.religious_head }
|
||||
}
|
||||
}
|
||||
|
||||
fp2_does_this_player_care_about_the_fate_of_iberia = {
|
||||
NOT = { this = root }
|
||||
OR = {
|
||||
location = {
|
||||
OR = { # Is in region
|
||||
geographical_region = world_europe_west
|
||||
geographical_region = world_africa_north
|
||||
geographical_region = world_europe_south_italy
|
||||
}
|
||||
}
|
||||
struggle:iberian_struggle = { is_culture_involved_in_struggle = prev.culture }
|
||||
}
|
||||
}
|
||||
|
||||
fp2_eligible_for_yearly_events_trigger = {
|
||||
has_fp2_dlc_trigger = yes
|
||||
OR = {
|
||||
any_character_struggle = {
|
||||
involvement = involved
|
||||
}
|
||||
culture = {
|
||||
has_cultural_pillar = heritage_iberian
|
||||
}
|
||||
AND = {
|
||||
exists = capital_province
|
||||
capital_province = {
|
||||
geographical_region = world_europe_west_iberia
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fp2_purchase_truce_interaction_soft_requirements_trigger = {
|
||||
OR = {
|
||||
always = no
|
||||
any_character_struggle = {
|
||||
involvement = involved
|
||||
has_struggle_phase_parameter = unlocks_truce_purchasing_interaction
|
||||
}
|
||||
has_perk = defensive_negotiations_perk
|
||||
culture = { has_cultural_parameter = unlocks_purchase_truce }
|
||||
}
|
||||
}
|
||||
9
common/scripted_triggers/04_ep2_accolade_triggers.txt
Normal file
9
common/scripted_triggers/04_ep2_accolade_triggers.txt
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
# Triggers related to knights and accolades
|
||||
|
||||
ep2_can_be_accolade_successor_base_trigger = {
|
||||
is_acclaimed = no
|
||||
is_accolade_successor = no
|
||||
highest_held_title_tier <= tier_barony
|
||||
is_alive = yes
|
||||
is_adult = yes
|
||||
}
|
||||
79
common/scripted_triggers/04_ep2_tour_triggers.txt
Normal file
79
common/scripted_triggers/04_ep2_tour_triggers.txt
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
|
||||
##################################################
|
||||
# Triggers related to the tour activity
|
||||
|
||||
ep2_phase_general_location_checks = {
|
||||
# Don't localize all the other stuff if you have no province owner anyway
|
||||
trigger_if = {
|
||||
limit = { has_province_owner = yes }
|
||||
province_owner = {
|
||||
exists = liege
|
||||
liege = scope:host
|
||||
NOT = { this = scope:host }
|
||||
highest_held_title_tier >= tier_county
|
||||
exists = capital_province
|
||||
capital_province = root
|
||||
is_available = yes
|
||||
age >= 12
|
||||
}
|
||||
}
|
||||
trigger_else = {
|
||||
has_province_owner = yes
|
||||
}
|
||||
}
|
||||
|
||||
ep2_tour_phase_invalidation_check = {
|
||||
scope:activity = {
|
||||
# TODO_CD_EP2, make their heir visitable if they weren't landed before inheriting. Should be doable in an on_action by checking if the heir is currently in the vassals to visit list, and if not, add them to it.
|
||||
NOT = {
|
||||
any_activity_phase_location_past = {
|
||||
province_owner = scope:province.province_owner
|
||||
}
|
||||
}
|
||||
}
|
||||
scope:province = {
|
||||
NOT = { province_owner = scope:host }
|
||||
province_owner = {
|
||||
exists = liege
|
||||
liege = scope:host
|
||||
location = scope:province
|
||||
highest_held_title_tier >= tier_county
|
||||
#Checks mostly matching is_available:
|
||||
is_in_army = no
|
||||
is_travelling = no
|
||||
is_imprisoned = no
|
||||
has_contagious_deadly_disease_trigger = no
|
||||
NOT = { has_trait = incapable }
|
||||
# Variable set within the adventure inspiration events
|
||||
NOT = { has_variable = gone_adventuring }
|
||||
#We don't invalidate if it stopped being the capital province.
|
||||
is_at_war = no
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
travel_lifestyle_track_greater_equal_trigger = {
|
||||
has_trait = lifestyle_traveler
|
||||
has_trait_xp = {
|
||||
trait = lifestyle_traveler
|
||||
track = $TRACK$
|
||||
value >= $GREATER_EQUAL$
|
||||
}
|
||||
}
|
||||
|
||||
travel_lifestyle_track_less_trigger = {
|
||||
has_trait = lifestyle_traveler
|
||||
has_trait_xp = {
|
||||
trait = lifestyle_traveler
|
||||
track = $TRACK$
|
||||
value < $LESS_THAN$
|
||||
}
|
||||
}
|
||||
|
||||
is_being_visited_on_tour_strict = {
|
||||
has_character_flag = being_visited_on_tour
|
||||
# Extra sanity check to verify that our liege is actually still on a tour
|
||||
liege ?= {
|
||||
involved_activity ?= { has_activity_type = activity_tour }
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue