N3OW/common/scripted_triggers/00_scripted_triggers.txt
2025-02-20 11:52:45 +00:00

493 lines
11 KiB
Text

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