N3OW/common/scripted_triggers/20_health_triggers.txt

865 lines
22 KiB
Text

#############################
# STANDARD ILLNESS TRIGGERS #
#############################
has_any_illness = { #Checks the game for every disease
has_trait_with_flag = illness
}
has_any_debilitating_illness = { #Check for any illness that would warrant the sick animation
has_trait_with_flag = debilitating_illness
}
is_debilitating_illness_trait = { #Check for any illness that would warrant the sick animation
has_trait_flag = debilitating_illness
}
can_get_non_epidemic_disease_trigger = { #Diseases shouldn't stack. Don't add a non-epidemic disease if you have another, unless that disease is lover's pox
NOT = { has_trait_with_flag = blocks_getting_non_epidemic_disease }
}
##############################################
# SITUATIONAL EVENT CONTENT ILLNESS TRIGGERS #
##############################################
# Will this character suffer age-related health issues, factoring how healthy they actually are vs. what their age is?
age_ranked_health_vulnerability_threshold_trigger = {
OR = {
# If you're already having problems...
has_trait = infirm
# Otherwise, we check health crossed against age.
## Characters that are this old are vulnerable regardless of health.
age >= 80
## Else, the higher your health is, the older you need to be to suffer age-related health problems.
AND = {
health <= good_health
age >= 70
}
AND = {
health <= medium_health
age >= 60
}
AND = {
health <= fine_health
age >= 50
}
AND = {
health <= poor_health
age >= 40
}
AND = {
health <= dying_health
age >= 30
}
}
NOT = { has_trait = immortal }
}
# Might this character succumb to a stroke, aneurysm, or other blood pressure-related injury?
potential_victim_of_apoplexy_trigger = {
OR = {
has_trait = wrathful
# Impatient/irritable characters tend towards this when pushed out of their comfort zone.
AND = {
OR = {
has_trait = impatient
has_trait = irritable
}
stress >= low_stress
}
# Non-calm characters may be at risk if stressed.
AND = {
stress_level >= 1
NOT = { has_trait = calm }
}
# But everyone is vulnerable eventually.
stress_level >= 2
}
}
# Does the character have a trait that might shorten their life exptectancy, exacerbate unfortunate physical circumstances, or otherwise complicate medical conditions?
has_weak_physical_health_traits_trigger = {
# We discount these if you're in truly rude health.
health < excellent_health
OR = {
# General expected reduction in physical health.
has_trait = physique_bad
has_trait = weak
# Induces & exacerbates secondary physical complications.
has_trait = hunchbacked
has_trait = giant
has_trait = inbred
# Marfan's Syndrome can be medicated well in the modern day, but not in our period.
has_trait = spindly
# Haemophilia is both easier to medicate and easier to treat the consequences of in the modern day, but could really mess you up in the medieval period.
has_trait = bleeder
}
# Deliberately excluded:
## dwarf
### Unlike gigantism, dwarfism doesn't generally reduce life expectancy or induce complications except in that it can be more likely to occur if you have other conditions. For our purposes, those separate conditions are separate traits.
## scaly
### Ichthyosis does not reduce life expectancy & has a minimal effect on most (though not all) secondary conditions.
## albino
### Zero effect on life exptectancy.
## wheezing
### Asthma does reduce your life exptectancy, but not to the same degree as the other bad physical traits.
}
# Does this character have some physical feature that would be easily mocked?
## Remember to generally try and filter out compassionate characters from bullying people over their appearance & to take caution when using this in your narrative.
has_easily_mocked_physical_attribute_trigger = {
OR = {
# Weight.
current_weight > overweight_value
current_weight < underweight_value
# Genetic traits.
has_trait = beauty_bad
has_trait = clubfooted
has_trait = hunchbacked
has_trait = dwarf
has_trait = giant
has_trait = inbred
has_trait = spindly
has_trait = scaly
has_trait = albino
# Illness traits.
## Generally stuff with obvious, preferably permanent, outward physical symptoms.
has_trait = great_pox
has_trait = lovers_pox
has_trait = leper
has_trait = gout_ridden
# Physical traits.
has_trait = wounded
has_trait = maimed
has_trait = one_eyed
has_trait = one_legged
has_trait = disfigured
has_trait = blind
is_eunuch_trigger = yes
}
}
############################
# VARIOUS DISEASE TRIGGERS #
############################
#Takes argument disease
can_contract_disease_trigger = {
save_temporary_scope_as = sick_character_check
# Is not immune to disease
NOT = { has_character_flag = immune_to_disease }
#Doesn't already have the trait
NOT = { has_trait = $DISEASE$ }
#Only get measles once
trigger_if = {
limit = { trait:$DISEASE$ = trait:measles }
NOT = { has_character_flag = measles_immunity }
}
#Only get bubonic plague once
trigger_if = {
limit = { trait:$DISEASE$ = trait:bubonic_plague }
NOT = { has_character_flag = bubonic_immunity }
}
#Young characters do not get gout
trigger_if = {
limit = { trait:$DISEASE$ = trait:gout_ridden }
current_weight >= 50
is_young_character = no
}
save_temporary_scope_value_as = {
name = disease_type_for_trigger
value = flag:$DISEASE$
}
trigger_if = { #Lover's pox can only be contracted if you are sexually active
limit = {
scope:disease_type_for_trigger = flag:lovers_pox
is_imprisoned = yes
}
imprisoner = {
OR = {
AND = {
scope:sick_character_check = { is_in_prison_type = dungeon }
any_prisoner = {
OR = {
has_relation_lover = scope:sick_character_check
any_consort = {
this = scope:sick_character_check
}
}
}
}
AND = {
scope:sick_character_check = { is_in_prison_type = house_arrest }
OR = {
any_prisoner = {
OR = {
has_relation_lover = scope:sick_character_check
any_consort = {
this = scope:sick_character_check
}
}
}
any_courtier = {
OR = {
has_relation_lover = scope:sick_character_check
any_consort = {
this = scope:sick_character_check
}
}
}
}
}
}
}
}
# Check to see that there is someone for you to have sex with if you are traveling
trigger_if = {
limit = {
scope:disease_type_for_trigger = flag:lovers_pox
is_travelling = yes
# Do not block Goliardic Shenanigans!
involved_activity ?= {
NOT = { has_activity_type = activity_adult_education }
}
}
current_travel_plan = {
any_entourage_character = {
OR = {
has_relation_lover = scope:sick_character_check
any_consort = {
this = scope:sick_character_check
}
}
}
}
}
#Secondary requirements (mutually exclusive diseases or immunity)
OR = {
NOR = { #No secondary requirement
scope:disease_type_for_trigger = flag:ill
scope:disease_type_for_trigger = flag:smallpox
scope:disease_type_for_trigger = flag:bubonic_plague
}
AND = {
scope:disease_type_for_trigger = flag:ill
NOT = { has_trait = pneumonic }
}
AND = {
scope:disease_type_for_trigger = flag:smallpox
NOT = { has_character_flag = disease_immunity_smallpox }
}
AND = {
scope:disease_type_for_trigger = flag:measles
NOT = { has_character_flag = disease_immunity_measles }
}
AND = {
scope:disease_type_for_trigger = flag:bubonic_plague
NOT = { has_character_flag = disease_immunity_bubonic_plague }
}
}
#No disease stacking
OR = {
can_get_non_epidemic_disease_trigger = yes
OR = {
scope:disease_type_for_trigger = flag:bubonic_plague
scope:disease_type_for_trigger = flag:smallpox
}
AND = {
scope:disease_type_for_trigger = flag:pneumonic
has_trait = ill
}
}
#Cooldown is over
NOR = {
has_character_flag = contraction_cooldown_general #Haven't had a disease for 2 years
#No specific cooldowns:
#Ill, you can get it often
#Smallpox and bubonic plague, after one time you are immune
#Lover's pox and leper because you never recover
AND = {
has_character_flag = contraction_cooldown_pneumonic
scope:disease_type_for_trigger = flag:pneumonic
}
AND = {
has_character_flag = contraction_cooldown_gout_ridden
scope:disease_type_for_trigger = flag:gout_ridden
}
AND = {
has_character_flag = contraction_cooldown_typhus
scope:disease_type_for_trigger = flag:typhus
}
AND = {
has_character_flag = contraction_cooldown_consumption
scope:disease_type_for_trigger = flag:consumption
}
AND = {
has_character_flag = contraction_cooldown_cancer
scope:disease_type_for_trigger = flag:cancer
}
AND = {
has_character_flag = contraction_cooldown_great_pox
scope:disease_type_for_trigger = flag:great_pox
}
AND = {
has_character_flag = contraction_cooldown_dysentery
scope:disease_type_for_trigger = flag:dysentery
}
AND = {
has_character_flag = contraction_cooldown_ergotism
scope:disease_type_for_trigger = flag:ergotism
}
}
}
has_any_disease_trigger = {
OR = {
has_trait = ill
has_trait = lovers_pox
has_trait = great_pox
has_trait = early_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 = cancer
has_trait = pneumonic
has_trait = leper
has_trait = gout_ridden
}
}
has_std_trigger = {
OR = {
has_trait = lovers_pox
has_trait = great_pox
has_trait = early_great_pox
}
}
has_epidemic_disease_trigger = {
OR = {
has_trait = bubonic_plague
has_trait = smallpox
has_trait = measles
has_trait = ergotism
has_trait = dysentery
has_trait = consumption
has_trait = typhus
}
}
has_contagious_disease_trigger = { #Only diseases handled by the disease_outbreak_pulse and the disease_recovery_pulse
OR = {
has_std_trigger = yes
has_trait = bubonic_plague
has_trait = smallpox
has_trait = measles
has_trait = dysentery
has_trait = consumption
has_trait = typhus
}
}
has_yearly_recovery_disease_trigger = {
OR = {
has_trait = consumption
has_trait = cancer
has_trait = great_pox
has_trait = gout_ridden
}
}
has_quarterly_recovery_disease_trigger = {
OR = {
has_trait = ill
has_trait = pneumonic
has_trait = typhus
has_trait = smallpox
has_trait = bubonic_plague
}
}
has_short_disease_trigger = {
OR = {
has_trait = ill
has_trait = typhus
has_trait = smallpox
has_trait = bubonic_plague
has_trait = ergotism
has_trait = measles
has_trait = dysentery
}
}
has_serious_disease_trigger = {
OR = {
has_trait = bubonic_plague
has_trait = great_pox
has_trait = leper
has_trait = typhus
has_trait = smallpox
has_trait = cancer
has_trait = pneumonic
has_trait = consumption
has_trait = measles
has_trait = dysentery
has_trait = ergotism
}
}
has_insect_carried_disease_trigger = {
OR = {
has_trait = bubonic_plague
has_trait = typhus
}
}
############################
# COURT PHYSICIAN TRIGGERS #
############################
court_physician_available_trigger = {
exists = court_owner
court_owner = {
employs_court_position = court_physician_court_position
any_court_position_holder = {
type = court_physician_court_position
is_physically_able = yes
}
}
# If you're traveling, we check that there is a court physician with you
court_physician_available_when_traveling_trigger = yes
}
court_physician_available_when_traveling_trigger = {
trigger_if = {
limit = { is_travelling = yes }
current_travel_plan = {
any_entourage_character = {
has_court_position = court_physician_court_position
}
}
}
}
can_be_court_physician_of = {
is_courtier_of = $EMPLOYER$
is_adult = yes
basic_is_available_ai = yes
NOT = { has_trait = incapable }
}
can_punish_court_physician = {
save_temporary_scope_as = court_physician_punisher
$PHYSICIAN$ = {
is_alive = yes
target_is_liege_or_above = scope:court_physician_punisher
}
}
character_can_easily_self_treat_trigger = {
OR = {
# Understand medicine implicitly.
has_trait = lifestyle_physician
has_trait = lifestyle_herbalist
has_trait = devoted
## Truly, obscenely high learning means your general knowledge is good enough for anything even if you aren't specifically an expert on it.
learning >= 35
# Understands medicine if learning is high enough.
AND = {
learning >= high_skill_rating
OR = {
has_trait = lifestyle_gardener
has_trait = lifestyle_traveler
}
}
# Might understand medicine if learning is really, really high.
AND = {
learning >= very_high_skill_rating
OR = {
has_trait = intrigue_court_2
has_trait = scholarly_court_2
}
}
AND = {
learning >= extremely_high_skill_rating
OR = {
has_trait = intrigue_court_1
has_trait = scholarly_court_1
}
}
}
}
######################
# TREATMENT TRIGGERS #
######################
has_treatable_disease_trigger = {
OR = {
has_trait = consumption
has_trait = cancer
has_trait = great_pox
has_trait = gout_ridden
has_trait = ill
has_trait = pneumonic
has_trait = typhus
has_trait = smallpox
has_trait = bubonic_plague
has_trait = leper
has_trait = measles
has_trait = dysentery
has_trait = ergotism
}
}
has_wounds_trigger = {
OR = {
has_trait_rank = {
trait = wounded
rank >= 2
}
has_character_modifier = infected_wound_modifier
has_character_modifier = gangrene_modifier
}
}
has_good_disease_treatment_trigger = {
OR = {
has_character_modifier = safe_disease_treatment_success_high_modifier
has_character_modifier = safe_disease_treatment_success_low_modifier
has_character_modifier = risky_disease_treatment_success_high_modifier
has_character_modifier = risky_disease_treatment_success_low_modifier
}
}
has_recent_treatment_trigger = {
OR = {
has_character_modifier = safe_disease_treatment_success_high_modifier
has_character_modifier = safe_disease_treatment_success_low_modifier
has_character_modifier = safe_disease_treatment_failure_modifier
has_character_modifier = risky_disease_treatment_success_high_modifier
has_character_modifier = risky_disease_treatment_success_low_modifier
has_character_modifier = risky_disease_treatment_failure_modifier
}
}
has_recent_wound_treatment_trigger = {
OR = {
has_character_modifier = safe_wound_treatment_success_high_modifier
has_character_modifier = safe_wound_treatment_success_low_modifier
has_character_modifier = safe_wound_treatment_failure_modifier
has_character_modifier = risky_wound_treatment_success_modifier
has_character_modifier = risky_wound_treatment_failure_modifier
}
}
has_amputation_type_disease_trigger = {
exists = scope:disease_type
OR = {
scope:disease_type = flag:gout_ridden
scope:disease_type = flag:leper
scope:disease_type = flag:cancer
}
}
has_disfigurement_type_disease_trigger = {
exists = scope:disease_type
OR = {
scope:disease_type = flag:bubonic_plague
scope:disease_type = flag:smallpox
scope:disease_type = flag:measles
scope:disease_type = flag:dysentery
scope:disease_type = flag:ergotism
scope:disease_type = flag:leper
scope:disease_type = flag:cancer
}
}
has_short_disease_type_trigger = {
OR = {
scope:disease_type = flag:ill
scope:disease_type = flag:pneumonic #3
scope:disease_type = flag:measles #3
scope:disease_type = flag:dysentery #3.5
scope:disease_type = flag:ergotism #3.5
scope:disease_type = flag:typhus #3.5
scope:disease_type = flag:smallpox #3.5
scope:disease_type = flag:bubonic_plague #6.5
}
}
has_slow_disease_type_trigger = {
OR = {
scope:disease_type = flag:consumption #2
scope:disease_type = flag:cancer #3
scope:disease_type = flag:great_pox #1
scope:disease_type = flag:gout_ridden #1.5
scope:disease_type = flag:leper #1.5
}
}
has_high_health_penalty_disease_type_trigger = { # >= 3.5
OR = {
### TYPHUS
scope:disease_type = flag:typhus #4.5 + 1
### SMALLPOX
scope:disease_type = flag:smallpox #4.5 + 1.5
### BUBONIC PLAGUE
scope:disease_type = flag:bubonic_plague #7 + 2
### DYSENTERY
scope:disease_type = flag:dysentery #3.5 + 2
### ERGOTISM
scope:disease_type = flag:ergotism #3.5
### CONSUMPTION
AND = {
scope:disease_type = flag:consumption #2 + 1 + 2
is_old_character = yes
}
### CANCER
AND = {
scope:disease_type = flag:cancer #3 + 1
is_old_character = yes
}
### MEASLES
AND = {
scope:disease_type = flag:measles #3 + 3
is_old_character = yes
}
### PNEUMONIA
AND = {
scope:disease_type = flag:pneumonic #3 + 2
is_old_character = yes
}
}
}
has_low_health_penalty_disease_type_trigger = { # < 3.5
OR = {
## ILL
scope:disease_type = flag:ill #1 + 1
### GREAT POX
scope:disease_type = flag:great_pox #1
### GOUT
scope:disease_type = flag:gout_ridden #1
### LEPROSY
scope:disease_type = flag:leper #1.5
### CONSUMPTION
AND = {
scope:disease_type = flag:consumption #2 + 1 + 2
is_old_character = no
}
### CANCER
AND = {
scope:disease_type = flag:cancer #3 + 1
is_old_character = no
}
### MEASLES
AND = {
scope:disease_type = flag:measles #3 + 3
is_old_character = no
}
### PNEUMONIA
AND = {
scope:disease_type = flag:pneumonic #3 + 2
is_old_character = no
}
}
}
minor_disease_flag_for_notification_trigger = {
OR = {
scope:disease_type = flag:ill
scope:disease_type = flag:gout_ridden
scope:disease_type = flag:lovers_pox
scope:disease_type = flag:early_great_pox
}
}
sick_enough_for_relative_to_care_trigger = {
#For this list of diseases, you need to be dying
trigger_if = {
limit = {
exists = scope:disease_type
minor_disease_flag_for_notification_trigger = yes
}
health < death_chance_dying_health
}
#For all others we always notify
trigger_else = {
always = yes
}
}
liege_is_responsible_for_treatment_trigger = {
is_ruler = no
exists = liege
OR = {
trigger_if = {
limit = { exists = liege.primary_spouse }
this = liege.primary_spouse
}
trigger_if = {
limit = { exists = liege.player_heir }
this = liege.player_heir
}
}
}
liege_picks_treatment_trigger = {
save_temporary_scope_as = pick_treatment_check
exists = liege
liege_is_responsible_for_treatment_trigger = yes
trigger_if = {
limit = { exists = scope:disease_type }
sick_enough_for_relative_to_care_trigger = yes
}
}
root_picks_treatment_for_sick_character_trigger = {
scope:sick_character = { liege_picks_treatment_trigger = yes }
scope:sick_character = { liege = { this = root } }
}
has_infected_or_gangrenous_wound_trigger = {
OR = {
has_character_modifier = gangrene_modifier
has_character_modifier = infected_wound_modifier
}
}
inform_about_relative_recovery_trigger = {
is_ruler = yes
OR = {
scope:disease_type = flag:lovers_pox #Because it has an effect (removes rejected from bed modifier)
scope:disease_type = flag:early_great_pox #Because it has an effect (removes rejected from bed modifier)
scope:disease_type = flag:great_pox #Because it has an effect (removes rejected from bed modifier)
AND = {
is_ai = no
OR = {
NOT = { minor_disease_flag_for_notification_trigger = yes } #I.e. it's an important disease
scope:sick_character = {
is_target_in_variable_list = { #The character got an event when sick character got sick and needs to be updated
name = recovery_event_receivers
target = prev
}
}
}
}
}
}
has_health_court_owner_trigger = { #Should match save_health_court_owner_effect
trigger_if = {
limit = {
exists = imprisoner
}
always = yes
imprisoner = { save_temporary_scope_as = trigger_health_court_owner }
}
trigger_else_if = {
limit = { exists = host }
always = yes
host = { save_temporary_scope_as = trigger_health_court_owner }
}
trigger_else = {
always = no
}
}
court_physician_can_fail_on_purpose_trigger = {
scope:physician = {
dread_modified_ai_boldness = {
dreaded_character = scope:sick_character
value > 0
}
}
OR = {
reverse_opinion = {
target = scope:physician
value < 0
}
has_relation_rival = scope:physician
has_relation_potential_rival = scope:physician
}
NOT = { scope:physician = scope:sick_character }
}
has_traits_that_negate_athletic_trigger = { #Are we already athletic or does any of our traits contradict athletic?
OR = {
has_trait = athletic
has_trait = lazy
has_trait = infirm
has_trait = incapable
}
}
#Did this character's culture or area have any evidence of practicing trepanning?
native_trepanning_trigger = {
OR = {
root.culture = {
OR = {
has_cultural_pillar = heritage_east_african
has_cultural_pillar = heritage_west_slavic
has_cultural_pillar = heritage_central_germanic
has_cultural_pillar = heritage_west_germanic
has_cultural_pillar = heritage_dravidian
has_cultural_pillar = heritage_indo_aryan
}
}
root.faith = faith:armenian_apostolic
root.culture = culture:armenian
has_title = title:k_hungary
has_title = title:k_cuman
root.capital_province = {
OR = {
geographical_region = ghw_region_mediterranean
geographical_region = ghw_region_anatolia
geographical_region = world_europe_west_germania
geographical_region = world_europe_west
geographical_region = world_africa_north_east
geographical_region = custom_slavia
geographical_region = world_india
}
}
}
}
#Has this character already developed immunity to the epidemic?
immune_to_epidemic = {
NOT = {
is_target_in_variable_list = {
name = immunised_plagues
target = $EPIDEMIC$
}
}
}
# I'm putting this here because I refuse to make a "hair_triggers.txt" file.
is_bald_trigger = {
OR = {
# As it transpires, we actually cannot use this trigger here.
#has_gene = {
# category = gene_baldness
# template = male_pattern_baldness
#}
has_character_modifier = hajj_halq_modifier
has_character_modifier = shaven_bald_modifier
}
}