362 lines
7.7 KiB
Text
362 lines
7.7 KiB
Text
@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$
|
|
}
|
|
}
|
|
}
|
|
}
|