More rel bugs

This commit is contained in:
Heidesommer 2026-05-23 20:45:31 -04:00
parent 16e7f0de2a
commit c6d5c01c61
125 changed files with 337211 additions and 3069 deletions

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,514 @@
namespace = bp2_character_interaction
# Influence Ward's Personality - Success Event
bp2_character_interaction.1001 = {
type = character_event
content_source = dlc_009
title = bp2_character_interaction.1001.t
desc = {
desc = bp2_character_interaction.1001.desc_intro
first_valid = {
triggered_desc = {
trigger = { scope:target_trait = trait:lustful }
desc = bp2_character_interaction.1001.desc_lustful
}
triggered_desc = {
trigger = { scope:target_trait = trait:chaste }
desc = bp2_character_interaction.1001.desc_chaste
}
triggered_desc = {
trigger = { scope:target_trait = trait:gluttonous }
desc = bp2_character_interaction.1001.desc_gluttonous
}
triggered_desc = {
trigger = { scope:target_trait = trait:temperate }
desc = bp2_character_interaction.1001.desc_temperate
}
triggered_desc = {
trigger = { scope:target_trait = trait:greedy }
desc = bp2_character_interaction.1001.desc_greedy
}
triggered_desc = {
trigger = { scope:target_trait = trait:generous }
desc = bp2_character_interaction.1001.desc_generous
}
triggered_desc = {
trigger = { scope:target_trait = trait:lazy }
desc = bp2_character_interaction.1001.desc_lazy
}
triggered_desc = {
trigger = { scope:target_trait = trait:diligent }
desc = bp2_character_interaction.1001.desc_diligent
}
triggered_desc = {
trigger = { scope:target_trait = trait:wrathful }
desc = bp2_character_interaction.1001.desc_wrathful
}
triggered_desc = {
trigger = { scope:target_trait = trait:calm }
desc = bp2_character_interaction.1001.desc_calm
}
triggered_desc = {
trigger = { scope:target_trait = trait:patient }
desc = bp2_character_interaction.1001.desc_patient
}
triggered_desc = {
trigger = { scope:target_trait = trait:impatient }
desc = bp2_character_interaction.1001.desc_impatient
}
triggered_desc = {
trigger = { scope:target_trait = trait:arrogant}
desc = bp2_character_interaction.1001.desc_arrogant
}
triggered_desc = {
trigger = { scope:target_trait = trait:humble }
desc = bp2_character_interaction.1001.desc_humble
}
triggered_desc = {
trigger = { scope:target_trait = trait:deceitful }
desc = bp2_character_interaction.1001.desc_deceitful
}
triggered_desc = {
trigger = { scope:target_trait = trait:honest }
desc = bp2_character_interaction.1001.desc_honest
}
triggered_desc = {
trigger = { scope:target_trait = trait:craven }
desc = bp2_character_interaction.1001.desc_craven
}
triggered_desc = {
trigger = {
scope:target_trait = trait:brave
scope:recipient = { is_landed = yes }
}
desc = bp2_character_interaction.1001.desc_brave_self
}
triggered_desc = {
trigger = {
scope:target_trait = trait:brave
scope:recipient = { exists = liege }
}
desc = bp2_character_interaction.1001.desc_brave_liege
}
triggered_desc = {
trigger = {
scope:target_trait = trait:brave
}
desc = bp2_character_interaction.1001.desc_brave_root
}
triggered_desc = {
trigger = { scope:target_trait = trait:shy }
desc = bp2_character_interaction.1001.desc_shy
}
triggered_desc = {
trigger = { scope:target_trait = trait:gregarious }
desc = bp2_character_interaction.1001.desc_gregarious
}
triggered_desc = {
trigger = { scope:target_trait = trait:ambitious }
desc = bp2_character_interaction.1001.desc_ambitious
}
triggered_desc = {
trigger = { scope:target_trait = trait:content }
desc = bp2_character_interaction.1001.desc_content
}
triggered_desc = {
trigger = { scope:target_trait = trait:arbitrary }
desc = bp2_character_interaction.1001.desc_arbitrary
}
triggered_desc = {
trigger = { scope:target_trait = trait:just }
desc = bp2_character_interaction.1001.desc_just
}
triggered_desc = {
trigger = { scope:target_trait = trait:cynical }
desc = bp2_character_interaction.1001.desc_cynical
}
triggered_desc = {
trigger = { scope:target_trait = trait:zealous }
desc = bp2_character_interaction.1001.desc_zealous
}
triggered_desc = {
trigger = { scope:target_trait = trait:paranoid }
desc = bp2_character_interaction.1001.desc_paranoid
}
triggered_desc = {
trigger = { scope:target_trait = trait:trusting }
desc = bp2_character_interaction.1001.desc_trusting
}
triggered_desc = {
trigger = { scope:target_trait = trait:compassionate }
desc = bp2_character_interaction.1001.desc_compassionate
}
triggered_desc = {
trigger = { scope:target_trait = trait:callous }
desc = bp2_character_interaction.1001.desc_callous
}
triggered_desc = {
trigger = { scope:target_trait = trait:sadistic }
desc = bp2_character_interaction.1001.desc_sadistic
}
triggered_desc = {
trigger = { scope:target_trait = trait:stubborn }
desc = bp2_character_interaction.1001.desc_stubborn
}
triggered_desc = {
trigger = { scope:target_trait = trait:fickle }
desc = bp2_character_interaction.1001.desc_fickle
}
triggered_desc = {
trigger = { scope:target_trait = trait:eccentric }
desc = bp2_character_interaction.1001.desc_eccentric
}
triggered_desc = {
trigger = { scope:target_trait = trait:vengeful }
desc = bp2_character_interaction.1001.desc_vengeful
}
triggered_desc = {
trigger = { scope:target_trait = trait:forgiving }
desc = bp2_character_interaction.1001.desc_forgiving
}
}
}
theme = family
override_background = {
trigger = {
scope:recipient = {
age < 12
}
}
reference = bp2_nursery
}
override_background = {
trigger = {
scope:recipient = {
age >= 12
}
}
reference = garden
}
left_portrait = {
character = root
animation = happiness
}
right_portrait = {
character = scope:recipient
triggered_animation = {
trigger = {
OR = {
scope:target_trait = trait:greedy
scope:target_trait = trait:generous
}
}
animation = hunting_shortbow_rest_arrow_default
}
animation = admiration
}
trigger = {
exists = scope:target_trait
}
immediate = {
scope:recipient = {
set_favorite_toy_effect = yes
}
}
option = {
name = bp2_character_interaction.1001.a
flavor = bp2_character_interaction.1001.a.flavor
add_opinion = {
target = scope:recipient
modifier = pleased_opinion
opinion = 20
}
scope:recipient = {
add_trait = scope:target_trait
add_opinion = {
target = root
modifier = admiration_opinion
opinion = 20
}
}
if = {
limit = {
scope:recipient = {
any_parent = {
this != root
is_ai = no
}
}
}
scope:recipient = {
every_parent = {
limit = {
this != root
is_ai = no
}
send_interface_message = {
type = event_childhood_good_text
title = guardian_influenced_personality
desc = guardian_influenced_personality_desc
left_icon = scope:recipient
right_icon = scope:actor
}
}
}
}
stress_impact = {
base = minor_stress_impact_gain
}
}
}
# Influence Ward's Personality - Basic Failure Event
bp2_character_interaction.1002 = {
type = character_event
content_source = dlc_009
title = bp2_character_interaction.1002.t
desc = {
desc = bp2_character_interaction.1002.desc_intro
first_valid = {
triggered_desc = {
trigger = { scope:target_trait = trait:lustful }
desc = bp2_character_interaction.1002.desc_lustful
}
triggered_desc = {
trigger = { scope:target_trait = trait:chaste }
desc = bp2_character_interaction.1002.desc_chaste
}
triggered_desc = {
trigger = { scope:target_trait = trait:gluttonous }
desc = bp2_character_interaction.1002.desc_gluttonous
}
triggered_desc = {
trigger = { scope:target_trait = trait:temperate }
desc = bp2_character_interaction.1002.desc_temperate
}
triggered_desc = {
trigger = { scope:target_trait = trait:greedy }
desc = bp2_character_interaction.1002.desc_greedy
}
triggered_desc = {
trigger = { scope:target_trait = trait:generous }
desc = bp2_character_interaction.1002.desc_generous
}
triggered_desc = {
trigger = { scope:target_trait = trait:lazy }
desc = bp2_character_interaction.1002.desc_lazy
}
triggered_desc = {
trigger = { scope:target_trait = trait:diligent }
desc = bp2_character_interaction.1002.desc_diligent
}
triggered_desc = {
trigger = { scope:target_trait = trait:wrathful }
desc = bp2_character_interaction.1002.desc_wrathful
}
triggered_desc = {
trigger = { scope:target_trait = trait:calm }
desc = bp2_character_interaction.1002.desc_calm
}
triggered_desc = {
trigger = { scope:target_trait = trait:patient }
desc = bp2_character_interaction.1002.desc_patient
}
triggered_desc = {
trigger = { scope:target_trait = trait:impatient }
desc = bp2_character_interaction.1002.desc_impatient
}
triggered_desc = {
trigger = { scope:target_trait = trait:arrogant}
desc = bp2_character_interaction.1002.desc_arrogant
}
triggered_desc = {
trigger = { scope:target_trait = trait:humble }
desc = bp2_character_interaction.1002.desc_humble
}
triggered_desc = {
trigger = { scope:target_trait = trait:deceitful }
desc = bp2_character_interaction.1002.desc_deceitful
}
triggered_desc = {
trigger = { scope:target_trait = trait:honest }
desc = bp2_character_interaction.1002.desc_honest
}
triggered_desc = {
trigger = { scope:target_trait = trait:craven }
desc = bp2_character_interaction.1002.desc_craven
}
triggered_desc = {
trigger = { scope:target_trait = trait:brave }
desc = bp2_character_interaction.1002.desc_brave
}
triggered_desc = {
trigger = { scope:target_trait = trait:shy }
desc = bp2_character_interaction.1002.desc_shy
}
triggered_desc = {
trigger = { scope:target_trait = trait:gregarious }
desc = bp2_character_interaction.1002.desc_gregarious
}
triggered_desc = {
trigger = { scope:target_trait = trait:ambitious }
desc = bp2_character_interaction.1002.desc_ambitious
}
triggered_desc = {
trigger = { scope:target_trait = trait:content }
desc = bp2_character_interaction.1002.desc_content
}
triggered_desc = {
trigger = { scope:target_trait = trait:arbitrary }
desc = bp2_character_interaction.1002.desc_arbitrary
}
triggered_desc = {
trigger = { scope:target_trait = trait:just }
desc = bp2_character_interaction.1002.desc_just
}
triggered_desc = {
trigger = { scope:target_trait = trait:cynical }
desc = bp2_character_interaction.1002.desc_cynical
}
triggered_desc = {
trigger = { scope:target_trait = trait:zealous }
desc = bp2_character_interaction.1002.desc_zealous
}
triggered_desc = {
trigger = { scope:target_trait = trait:paranoid }
desc = bp2_character_interaction.1002.desc_paranoid
}
triggered_desc = {
trigger = { scope:target_trait = trait:trusting }
desc = bp2_character_interaction.1002.desc_trusting
}
triggered_desc = {
trigger = { scope:target_trait = trait:compassionate }
desc = bp2_character_interaction.1002.desc_compassionate
}
triggered_desc = {
trigger = { scope:target_trait = trait:callous }
desc = bp2_character_interaction.1002.desc_callous
}
triggered_desc = {
trigger = { scope:target_trait = trait:sadistic }
desc = bp2_character_interaction.1002.desc_sadistic
}
triggered_desc = {
trigger = { scope:target_trait = trait:stubborn }
desc = bp2_character_interaction.1002.desc_stubborn
}
triggered_desc = {
trigger = { scope:target_trait = trait:fickle }
desc = bp2_character_interaction.1002.desc_fickle
}
triggered_desc = {
trigger = { scope:target_trait = trait:eccentric }
desc = bp2_character_interaction.1002.desc_eccentric
}
triggered_desc = {
trigger = { scope:target_trait = trait:vengeful }
desc = bp2_character_interaction.1002.desc_vengeful
}
triggered_desc = {
trigger = { scope:target_trait = trait:forgiving }
desc = bp2_character_interaction.1002.desc_forgiving
}
}
}
theme = family
override_background = {
trigger = {
scope:recipient = {
age < 12
}
}
reference = bp2_nursery
}
override_background = {
trigger = {
scope:recipient = {
age >= 12
}
}
reference = garden
}
left_portrait = {
character = root
animation = stress
}
right_portrait = {
character = scope:recipient
triggered_animation = {
trigger = {
OR = {
scope:target_trait = trait:greedy
scope:target_trait = trait:generous
}
}
animation = hunting_shortbow_rest_arrow_default
}
triggered_animation = {
trigger = { scope:target_trait = trait:paranoid }
animation = disapproval
}
triggered_animation = {
trigger = { scope:recipient = { age >= 12 } }
animation = shame
}
animation = clutching_toy
}
immediate = {
scope:recipient = {
set_favorite_toy_effect = yes
}
}
option = {
name = bp2_character_interaction.1002.a
flavor = bp2_character_interaction.1002.a.flavor
scope:recipient = {
add_opinion = {
target = root
modifier = confused_opinion
opinion = -20
}
}
add_opinion = {
target = scope:recipient
modifier = disappointed_opinion
opinion = -20
}
if = {
limit = {
scope:recipient = {
any_parent = {
this != root
is_ai = no
}
}
}
scope:recipient = {
every_parent = {
limit = {
this != root
is_ai = no
}
send_interface_message = {
type = event_childhood_bad_text
title = guardian_influenced_personality_fail
desc = guardian_influenced_personality_fail_desc
left_icon = scope:recipient
right_icon = scope:actor
}
}
}
}
stress_impact = {
base = medium_stress_impact_gain
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,831 @@
namespace = bp2_decision
##################################################
#
# FIND WET NURSE
# 0001 Find a character to be a wet nurse
#
##################################################
bp2_decision.0001 = { #find wet nurse candidates
type = character_event
content_source = dlc_009
title = bp2_decision.0001.t
desc = {
first_valid = {
triggered_desc = {
trigger = { exists = root.primary_spouse }
desc = bp2_decision.0001.desc
}
desc = bp2_decision.0001.desc_widower
}
}
theme = family
override_background = {
reference = bp2_nursery
}
left_portrait = {
character = scope:wet_nurse_candidate_1
}
right_portrait = {
character = scope:wet_nurse_candidate_2
}
immediate = {
if = {
limit = {
any_spouse = { }
}
random_spouse = {
save_scope_as = spouse
}
}
hidden_effect = {
if = {
limit = {
exists = capital_province
any_pool_character = {
province = root.capital_province
can_be_employed_as = wet_nurse_court_position
}
}
random_pool_character = {
province = root.capital_province
limit = { can_be_employed_as = wet_nurse_court_position}
save_scope_as = wet_nurse_candidate_1
}
if = {
limit = {
exists = capital_province
any_pool_character = {
province = root.capital_province
can_be_employed_as = wet_nurse_court_position
this != scope:wet_nurse_candidate_1
}
}
save_scope_as = wet_nurse_candidate_2
}
else = {
create_character = { #create poor candidate without a child
template = generic_peasant_character
gender = female
age = { 18 25 }
culture = root.culture
faith = root.faith
location = root.location
save_scope_as = wet_nurse_candidate_2
}
}
}
else = {
create_character = { #create a good candidate with a child
template = bp2_wet_nurse_template
location = root.location
save_scope_as = wet_nurse_candidate_1
}
create_character = {
template = peasant_child_character
age = { 0 5 }
culture = root.culture
faith = root.faith
location = root.location
save_scope_as = wet_nurse_candidate_1_child
}
scope:wet_nurse_candidate_1_child = {
set_mother = scope:wet_nurse_candidate_1
}
create_character = { #create poor candidate without a child
template = generic_peasant_character
gender = female
age = { 18 25 }
culture = root.culture
faith = root.faith
location = root.location
save_scope_as = wet_nurse_candidate_2
}
}
}
}
# Expensive wet nurse with great health and a chance for good trait
option = {
name = bp2_decision.0001.a
custom_tooltip = bp2_decision.0001.a.aptitude
pay_treasury_or_gold = {
target = scope:wet_nurse_candidate_1
value = tiny_treasury_or_gold_value
}
hidden_effect = {
add_courtier = scope:wet_nurse_candidate_1
add_courtier = scope:wet_nurse_candidate_1_child
}
if = { #reappoint the former wet nurse, fire current one if exists
limit = {
employs_court_position = wet_nurse_court_position
}
every_court_position_holder = {
type = wet_nurse_court_position
save_temporary_scope_as = current_wet_nurse
}
replace_court_position = {
recipient = scope:wet_nurse_candidate_1
holder = scope:current_wet_nurse
court_position = wet_nurse_court_position
}
}
else = {
appoint_court_position = {
recipient = scope:wet_nurse_candidate_1
court_position = wet_nurse_court_position
}
}
stress_impact = {
greedy = major_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
has_trait = greedy
add = -100
}
modifier = {
short_term_gold < minor_gold_value
factor = 0
}
}
}
# Cheaper wet nurse; all random traits
option = {
name = bp2_decision.0001.b
custom_tooltip = bp2_decision.0001.b.aptitude
pay_treasury_or_gold = {
target = scope:wet_nurse_candidate_2
value = {
add = tiny_treasury_or_gold_value
divide = 3
}
}
hidden_effect = {
add_courtier = scope:wet_nurse_candidate_2
}
if = { #reappoint the former wet nurse, fire current one if exists
limit = {
employs_court_position = wet_nurse_court_position
}
every_court_position_holder = {
type = wet_nurse_court_position
save_temporary_scope_as = current_wet_nurse
}
replace_court_position = {
recipient = scope:wet_nurse_candidate_2
holder = scope:current_wet_nurse
court_position = wet_nurse_court_position
}
}
else = {
appoint_court_position = {
recipient = scope:wet_nurse_candidate_2
court_position = wet_nurse_court_position
}
}
stress_impact = {
greedy = medium_stress_impact_gain
}
ai_chance = {
base = 50
modifier = {
short_term_gold < tiny_gold_value_check
factor = 0
}
}
}
# On seconds thoughts, I won't hire a wet nurse at all...
option = {
name = bp2_decision.0001.c
ai_chance = {
base = 0
modifier = {
short_term_gold < tiny_gold_value_check
add = 10
}
}
}
after = {
if = {
limit = { scope:wet_nurse_candidate_1 = { has_court_position = wet_nurse_court_position } }
scope:wet_nurse_candidate_2 = {
silent_disappearance_effect = yes
}
}
else_if = {
limit = { scope:wet_nurse_candidate_2 = { has_court_position = wet_nurse_court_position } }
scope:wet_nurse_candidate_1 = {
silent_disappearance_effect = yes
}
scope:wet_nurse_candidate_1_child = {
silent_disappearance_effect = yes
}
}
else = {
scope:wet_nurse_candidate_1 = {
silent_disappearance_effect = yes
}
scope:wet_nurse_candidate_2 = {
silent_disappearance_effect = yes
}
scope:wet_nurse_candidate_1_child = {
silent_disappearance_effect = yes
}
}
}
}
bp2_decision.0002 = { #rites of passage
type = character_event
content_source = dlc_009
title = bp2_decision.0002.t
desc = {
first_valid = {
triggered_desc = {
trigger = { scope:teentribal != root }
desc = bp2_decision.0002.desc
}
desc = bp2_decision.0002.desc_root
}
triggered_desc = {
trigger = {
scope:teentribal = {
is_target_in_variable_list = {
name = possible_rites
target = flag:duel
}
}
}
desc = bp2_decision.0002.desc_duel
}
triggered_desc = {
trigger = {
scope:teentribal = {
is_target_in_variable_list = {
name = possible_rites
target = flag:scarification
}
}
}
desc = bp2_decision.0002.desc_scarification
}
triggered_desc = {
trigger = {
scope:teentribal = {
is_target_in_variable_list = {
name = possible_rites
target = flag:seclusion
}
}
}
desc = bp2_decision.0002.desc_seclusion
}
triggered_desc = {
trigger = {
scope:teentribal = {
is_target_in_variable_list = {
name = possible_rites
target = flag:hair_shaving
}
}
}
desc = bp2_decision.0002.desc_hair_shaving
}
triggered_desc = {
trigger = {
scope:teentribal = {
is_target_in_variable_list = {
name = possible_rites
target = flag:cleansing
}
}
}
desc = bp2_decision.0002.desc_cleansing
}
first_valid = {
triggered_desc = {
trigger = { scope:teentribal != root }
desc = bp2_decision.0002.desc_end
}
desc = bp2_decision.0002.desc_end_root
}
}
theme = family
override_background = {
reference = holy_site_generic_scope
}
left_portrait = {
character = root
animation = war_defender
}
right_portrait = {
trigger = { scope:teentribal != root }
character = scope:teentribal
animation = throne_room_bow_1
}
lower_right_portrait = {
trigger = { exists = scope:priest }
character = scope:priest
}
immediate = {
capital_province = {
save_scope_as = holy_site_scope
}
location = {
save_scope_as = rite_location
}
if = {
limit = {
is_landed = yes
character_can_rites_of_passage_trigger = yes
}
save_scope_as = teentribal
}
else_if = {
limit = {
any_child = {
character_can_rites_of_passage_trigger = yes
}
}
save_scope_as = liege
random_child = {
limit = {
character_can_rites_of_passage_trigger = yes
}
weight = {
base = 1
modifier = {
has_character_flag = unproven_adult_flag
add = 100
}
modifier = {
is_primary_heir_of = scope:liege
add = 100
}
modifier = {
can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = root }
add = 10
}
}
save_scope_as = teentribal
}
}
else_if = {
limit = {
any_courtier = {
is_hostage_of = root
character_can_rites_of_passage_trigger = yes
}
}
save_scope_as = liege
random_courtier = {
limit = {
is_hostage_of = root
character_can_rites_of_passage_trigger = yes
}
weight = {
base = 1
modifier = {
has_character_flag = unproven_adult_flag
add = 100
}
modifier = {
can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = root }
add = 10
}
}
save_scope_as = teentribal
}
}
if = { #grab a court chaplain if you have one
limit = {
cp:councillor_court_chaplain ?= {
is_available_ai_adult = yes
}
}
cp:councillor_court_chaplain = {
save_scope_as = priest
}
}
if = { #duel rite for warrior cultures
limit = {
culture = {
OR = {
has_cultural_pillar = ethos_bellicose
has_cultural_pillar = ethos_stoic
}
}
}
scope:teentribal = {
add_to_variable_list = {
name = possible_rites
target = flag:duel
}
}
}
if = { #scarification rite for warrior cultures
limit = {
culture = {
OR = {
has_cultural_pillar = ethos_bellicose
has_cultural_pillar = ethos_stoic
has_cultural_pillar = ethos_communal
}
}
}
scope:teentribal = {
add_to_variable_list = {
name = possible_rites
target = flag:scarification
}
}
}
if = { #seclusion rite for non-communal cultures
limit = {
culture = {
NOT = {
has_cultural_pillar = ethos_communal
}
}
}
scope:teentribal = {
add_to_variable_list = {
name = possible_rites
target = flag:seclusion
}
}
}
if = { #hair shaving rite non-warrior cultures
limit = {
culture = {
OR = {
has_cultural_pillar = ethos_spiritual
has_cultural_pillar = ethos_communal
has_cultural_pillar = ethos_egalitarian
has_cultural_pillar = ethos_bureaucratic
}
}
}
scope:teentribal = {
add_to_variable_list = {
name = possible_rites
target = flag:hair_shaving
}
}
}
if = { #cleansing for non-warrior cultures
limit = {
culture = {
NOT = {
has_cultural_pillar = ethos_bellicose
has_cultural_pillar = ethos_stoic
}
}
}
scope:teentribal = {
add_to_variable_list = {
name = possible_rites
target = flag:cleansing
}
if = {
limit = {
scope:rite_location = {
OR = {
is_riverside_province = yes
is_coastal = yes
}
}
}
set_variable = {
name = cleansing_type
value = flag:water_cleanse
}
}
else = {
set_variable = {
name = cleansing_type
value = flag:fire_cleanse
}
}
}
}
}
option = { #combat duel
name = bp2_decision.0002.a
flavor = bp2_decision.0002.a.flavor
custom_tooltip = bp2_decision.0002.a.tt
trigger = {
scope:teentribal = {
is_target_in_variable_list = {
name = possible_rites
target = flag:duel
}
}
}
show_as_tooltip = {
random_list = {
1 = {
desc = bp2_decision.0002.a.win
show_chance = no
scope:teentribal = {
add_character_modifier = {
modifier = proven_adult_modifier
years = 10
}
custom_tooltip = bp2_decision.0002.effect_tt
}
}
1= {
desc = bp2_decision.0002.a.lose
show_chance = no
scope:teentribal = {
add_character_modifier = {
modifier = insecure_adult_modifier
years = 10
}
custom_tooltip = bp2_decision.0002.effect_tt
}
}
}
}
scope:teentribal = { #set variable to determine which rite was completed when creating a memory
set_variable = {
name = chosen_rite_memory
value = flag:dueling_rite_memory
}
}
trigger_event = bp2_yearly.7021
ai_chance = {
base = 1
}
}
option = { #scarification
name = bp2_decision.0002.b
flavor = bp2_decision.0002.b.tt
trigger = {
scope:teentribal = {
is_target_in_variable_list = {
name = possible_rites
target = flag:scarification
}
}
}
show_as_tooltip = {
random_list = {
1 = {
desc = bp2_decision.0002.b_scarred
show_chance = no
scope:teentribal = {
add_character_modifier = {
modifier = proven_adult_modifier
years = 10
}
custom_tooltip = bp2_decision.0002.effect_tt
custom_tooltip = bp2_decision.0002.b_scarred.tt
}
}
1= {
desc = bp2_decision.0002.b_modifier
show_chance = no
scope:teentribal = {
add_character_modifier = {
modifier = insecure_adult_modifier
years = 10
}
custom_tooltip = bp2_decision.0002.effect_tt
}
}
}
}
scope:teentribal = { #set variable to determine which rite was completed when creating a memory
set_variable = {
name = chosen_rite_memory
value = flag:scarification_rite_memory
}
}
trigger_event = bp2_yearly.7023
ai_chance = {
base = 1
}
}
option = { #seclusion
name = bp2_decision.0002.c
flavor = bp2_decision.0002.c.tt
trigger = {
scope:teentribal = {
is_target_in_variable_list = {
name = possible_rites
target = flag:seclusion
}
}
}
show_as_tooltip = {
custom_tooltip = bp2_decision.0002.c.destination
random_list = {
1 = {
desc = bp2_decision.0002.c_win
show_chance = no
scope:teentribal = {
add_character_modifier = {
modifier = proven_adult_modifier
years = 10
}
custom_tooltip = bp2_decision.0002.c_trait
}
}
1= {
desc = bp2_decision.0002.c_lose
show_chance = no
scope:teentribal = {
add_character_modifier = {
modifier = insecure_adult_modifier
years = 10
}
add_trait_xp = {
trait = lifestyle_traveler
track = danger
value = 25
}
increase_wounds_no_death_effect = { REASON = wild_animal }
}
}
}
}
scope:teentribal = { #set variable to determine which rite was completed when creating a memory
set_variable = {
name = chosen_rite_memory
value = flag:seclusion_rite_memory
}
}
trigger_event = bp2_yearly.7024
ai_chance = {
base = 1
}
}
option = { #hair shave
trigger = {
scope:teentribal = {
is_target_in_variable_list = {
name = possible_rites
target = flag:hair_shaving
}
}
}
name = bp2_decision.0002.d
flavor = bp2_decision.0002.d.tt
show_as_tooltip = {
random_list = {
1 = {
show_chance = no
desc = bp2_decision.0002.d_bald
scope:teentribal = {
add_character_modifier = {
modifier = proven_adult_modifier
years = 10
}
add_character_modifier = {
modifier = shaven_bald_modifier
years = 3
}
custom_tooltip = bp2_decision.0002.effect_tt
add_piety = medium_piety_gain
}
}
1 = {
show_chance = no
desc = bp2_decision.0002.d_shave
scope:teentribal = {
add_character_modifier = {
modifier = insecure_adult_modifier
years = 10
}
custom_tooltip = bp2_decision.0002.effect_tt
custom_tooltip = bp2_decision.0002.d_artifact
}
}
}
}
scope:teentribal = { #set variable to determine which rite was completed when creating a memory
set_variable = {
name = chosen_rite_memory
value = flag:shaving_hair_rite_memory
}
}
trigger_event = bp2_yearly.7026
ai_chance = {
base = 1
}
}
option = { #fire/water cleansing
trigger = {
scope:teentribal = {
is_target_in_variable_list = {
name = possible_rites
target = flag:cleansing
}
}
}
name = bp2_decision.0002.e
flavor = bp2_decision.0002.e.tt
show_as_tooltip = {
random_list = {
1 = {
show_chance = no
desc = bp2_decision.0002.e.full
scope:teentribal = {
add_character_modifier = {
modifier = proven_adult_modifier
years = 10
}
if = {
limit = {
num_sinful_traits > 0
}
custom_tooltip = bp2_decision.0002.e_flip
}
custom_tooltip = bp2_decision.0002.effect_tt
add_piety = medium_piety_gain
if = {
limit = {
scope:teentribal.var:cleansing_type = flag:water_cleanse
}
add_stress = minor_stress_gain
}
else = {
add_character_modifier = {
modifier = scorched_soles_modifier
years = 5
}
}
}
}
1 = {
show_chance = no
desc = bp2_decision.0002.e.partially
scope:teentribal = {
add_character_modifier = {
modifier = insecure_adult_modifier
years = 10
}
custom_tooltip = bp2_decision.0002.effect_tt
}
}
}
}
if = {
limit = {
scope:teentribal.var:cleansing_type = flag:water_cleanse
}
scope:teentribal = { #set variable to determine which rite was completed when creating a memory
set_variable = {
name = chosen_rite_memory
value = flag:water_cleanse_rite_memory
}
}
trigger_event = bp2_yearly.7027
}
else_if = {
limit = {
scope:teentribal.var:cleansing_type = flag:fire_cleanse
}
scope:teentribal = { #set variable to determine which rite was completed when creating a memory
set_variable = {
name = chosen_rite_memory
value = flag:fire_cleanse_rite_memory
}
}
trigger_event = bp2_yearly.7028
}
ai_chance = {
base = 1
}
}
option = { # opt out - trigger the decision cooldown, don't get your money back. Think of it as a non-refundable deposit.
name = bp2_decision.0002.f
flavor = bp2_decision.0002.tt
scope:teentribal ?= {
remove_variable ?= cleansing_type
remove_variable ?= chosen_rite_memory
clear_variable_list ?= possible_rites
}
ai_chance = { #there is no reason for the AI to back out at this point
base = 0
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,538 @@
namespace = bp2_yearly
# bp2_yearly.3000 - Asserting yourself in your studies or loafing
################################
# What's a Study Day Worth? #
# by Claudia Baldassi #
# bp2_yearly.3000 #
################################
# Asserting yourself in your studies or loafing
bp2_yearly.3000 = {
type = character_event
content_source = dlc_009
title = bp2_yearly.3000.t
desc = {
first_valid = {
triggered_desc = {
trigger = {
exists = scope:educator
}
desc = bp2_yearly.3000.desc
}
desc = bp2_yearly.3000.desc_no_educator
}
desc = bp2_yearly.3000.desc_ending
}
theme = education
left_portrait = {
character = root
animation = boredom
}
right_portrait = {
trigger = { exists = scope:educator }
character = scope:educator
animation = personality_rational
}
cooldown = { years = 10 } #Should not happen more than once for the same child
trigger = {
has_bp2_dlc_trigger = yes
age >= 8
is_available_child = yes
has_education_focus_trigger = yes
OR = {
exists = warden
any_relation = {
type = guardian
location = root.location
}
exists = liege
AND = {
top_liege = this
employs_court_position = court_tutor_court_position
}
any_parent = {
is_alive = yes
location = root.location
}
}
}
weight_multiplier = {
base = 1
}
immediate = {
if = {
limit = {
is_hostage = yes
location = warden.location
}
warden = {
save_scope_as = educator
}
}
else_if = {
limit = {
any_relation = {
type = guardian
location = root.location
}
}
random_relation = {
type = guardian
limit = {
location = root.location
}
save_scope_as = educator
}
}
else_if = {
limit = {
exists = liege
root.liege = {
employs_court_position = court_tutor_court_position
court_position:court_tutor_court_position = { location = root.location }
}
}
root.liege.court_position:court_tutor_court_position = {
save_scope_as = educator
}
}
else_if = {
limit = {
top_liege = this
employs_court_position = court_tutor_court_position
court_position:court_tutor_court_position = { location = root.location }
}
court_position:court_tutor_court_position = {
save_scope_as = educator
}
}
else_if = {
limit = {
any_parent = {
is_alive = yes
location = root.location
}
}
random_parent = {
limit = {
is_alive = yes
location = root.location
}
save_scope_as = educator
}
}
else_if = {
limit = { exists = liege }
liege = {
save_scope_as = educator
}
}
}
# Option A: study hard
option = {
name = bp2_yearly.3000.a
if = {
limit = {
has_focus = education_diplomacy
}
add_diplomacy_skill = 1
}
else_if = {
limit = {
has_focus = education_martial
}
add_martial_skill = 1
}
else_if = {
limit = {
has_focus = education_stewardship
}
add_stewardship_skill = 1
}
else_if = {
limit = {
has_focus = education_intrigue
}
add_intrigue_skill = 1
}
else_if = {
limit = {
has_focus = education_learning
}
add_learning_skill = 1
}
hidden_effect = { education_point_acquisition_effect = yes }
custom_tooltip = bp2_yearly.3000.a.tt
stress_impact = {
base = medium_stress_impact_gain
diligent = medium_stress_impact_loss
lazy = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
has_trait = diligent
add = 100
}
modifier = {
has_trait = lazy
add = -100
}
modifier = {
has_trait = curious
add = 100
}
modifier = {
has_trait = pensive
add = 150
}
}
}
# Option B: study a bit
option = {
name = bp2_yearly.3000.b
hidden_effect = { education_point_acquisition_effect = yes }
custom_tooltip = bp2_yearly.3000.a.tt
stress_impact = {
base = minor_stress_impact_gain
diligent = minor_stress_impact_loss
lazy = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
has_trait = diligent
add = 50
}
modifier = {
has_trait = lazy
add = -50
}
modifier = {
has_trait = curious
add = 50
}
modifier = {
has_trait = pensive
add = 75
}
}
}
# Option C: play
option = {
name = bp2_yearly.3000.c
add_prowess_skill = 1
stress_impact = {
base = minor_stress_impact_loss
diligent = major_stress_impact_gain
pensive = major_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
has_trait = diligent
add = -100
}
modifier = {
has_trait = lazy
add = 100
}
modifier = {
has_trait = pensive
add = -75
}
modifier = {
has_trait = rowdy
add = 100
}
}
}
}
################################
# SheHe Knows This Room #
# by Claudia Baldassi #
# bp2_yearly.3010 #
################################
# Child returns home: This home is unfamiliar to me: parent POV
bp2_yearly.3010 = {
type = character_event
content_source = dlc_009
title = bp2_yearly.3010.t
desc = bp2_yearly.3010.desc
theme = hostage
left_portrait = {
character = root
animation = worry
}
right_portrait = {
character = scope:child
animation = sadness
}
override_background = { reference = corridor_day }
cooldown = { years = 20 }
trigger = {
has_bp2_dlc_trigger = yes
is_available_adult = yes
is_landless_adventurer = no
any_child = {
age >= 12
location = root.location
NOT = { has_relation_ward = root } # Your ward grew up here
any_memory = {
memory_type = hostage_returned_hostage
memory_age_years <= 1
}
any_memory = {
memory_type = hostage_created_hostage
memory_age_years >= 6
}
}
}
weight_multiplier = {
base = 1
modifier = {
add = 1
has_trait = compassionate
}
}
immediate = {
# for the responding event
save_scope_as = parent
random_child = {
limit = {
any_memory = {
memory_type = hostage_returned_hostage
memory_age_years <= 1
}
any_memory = {
memory_type = hostage_created_hostage
memory_age_years >= 6
}
age >= 12
location = root.location
}
save_scope_as = child
}
}
# Option A: I wanna help
option = {
name = bp2_yearly.3010.a
scope:child = {
add_character_flag = helpful_parent_flag
add_opinion = {
target = scope:parent
modifier = feel_accepted_opinion
opinion = 20
}
trigger_event = bp2_yearly.3011
}
stress_impact = {
callous = medium_stress_impact_gain
fickle = medium_stress_impact_gain
paranoid = medium_stress_impact_gain
content = minor_stress_impact_gain
lazy = minor_stress_impact_gain
}
ai_chance = {
base = 100
}
}
# Option B: he'll manage
option = {
name = bp2_yearly.3010.b
scope:child = {
add_opinion = {
target = root
modifier = ignored_opinion
opinion = -15
}
scope:child = { trigger_event = bp2_yearly.3011 }
}
stress_impact = {
compassionate = medium_stress_impact_gain
gregarious = medium_stress_impact_gain
family_first = medium_stress_impact_gain
patient = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
has_trait = callous
add = 50
}
}
}
}
# Child returns home: This home is unfamiliar to me: child POV
bp2_yearly.3011 = {
type = character_event
content_source = dlc_009
title = bp2_yearly.3011.t
desc = {
desc = bp2_yearly.3011.desc
first_valid = {
triggered_desc = {
trigger = {
has_character_flag = helpful_parent_flag
}
desc = bp2_yearly.3011.desc_parent
}
desc = bp2_yearly.3011.desc_no_parent
}
}
theme = hostage
left_portrait = {
character = root
animation = sadness
}
right_portrait = {
character = scope:parent
animation = worry
}
override_background = { reference = corridor_day }
# Option A: accept you're a stranger now
option = {
name = bp2_yearly.3011.a
if = {
limit = {
has_character_flag = helpful_parent_flag
}
scope:parent = {
send_interface_toast = {
title = bp2_yearly.3010.a.tt
left_icon = scope:child
scope:child = {
add_character_modifier = {
modifier = bp2_stranger_at_home_modifier
years = 30
}
}
}
}
}
else = {
add_character_modifier = {
modifier = bp2_stranger_at_home_modifier
years = 30
}
}
stress_impact = {
gregarious = medium_stress_impact_gain
humble = medium_stress_impact_gain
patient = minor_stress_impact_gain
pensive = medium_stress_impact_loss
bossy = medium_stress_impact_loss
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_vengefulness = 0.5
}
modifier = {
has_trait = pensive
add = 100
}
modifier = {
has_trait = bossy
add = 100
}
}
}
# Option B: try to integrate again
option = {
name = bp2_yearly.3011.b
if = {
limit = {
has_character_flag = helpful_parent_flag
}
scope:parent = {
send_interface_toast = {
title = bp2_yearly.3010.b.tt
left_icon = scope:child
scope:child = {
add_character_modifier = {
modifier = bp2_stranger_no_more_modifier
years = 30
}
}
}
}
}
else = {
add_character_modifier = {
modifier = bp2_stranger_no_more_modifier
years = 30
}
}
stress_impact = {
stubborn = major_stress_impact_gain
lazy = medium_stress_impact_gain
reclusive = medium_stress_impact_gain
arrogant = medium_stress_impact_gain
wrathful = minor_stress_impact_gain
impatient = minor_stress_impact_gain
charming = medium_stress_impact_loss
curious = medium_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
has_character_flag = helpful_parent_flag
add = 100
}
modifier = {
has_trait = lazy
add = -50
}
modifier = {
has_trait = reclusive
add = -50
}
modifier = {
has_trait = charming
add = 100
}
modifier = {
has_trait = curious
add = 100
}
ai_value_modifier = {
ai_energy = -0.5
}
}
}
after = {
if = {
limit = {
has_character_flag = helpful_parent_flag
}
remove_character_flag = helpful_parent_flag
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,206 @@
namespace = bp2_yearly_extra
################################
# My Favorite Councilor #
# by Johan Husén #
# bp2_yearly_extra #
################################
# Gaining some skills from your councilor
bp2_yearly_extra.0001 = {
type = character_event
content_source = dlc_009
title = bp2_yearly_extra.0001.t
desc = bp2_yearly_extra.0001.desc
theme = education
left_portrait = {
character = root
animation = thinking
}
right_portrait = {
character = scope:target_councilor
triggered_animation = {
trigger = {
scope:target_councilor = { has_council_position = councillor_court_chaplain }
}
animation = chaplain
}
triggered_animation = {
trigger = {
scope:target_councilor = { has_council_position = councillor_steward }
}
animation = steward
}
triggered_animation = {
trigger = {
scope:target_councilor = { has_council_position = councillor_marshal }
}
animation = marshal
}
triggered_animation = {
trigger = {
scope:target_councilor = { has_council_position = councillor_spymaster }
}
animation = spymaster
}
triggered_animation = {
trigger = {
scope:target_councilor = { has_council_position = councillor_chancellor }
}
animation = chancellor
}
}
cooldown = { years = 15 }
trigger = {
has_bp2_dlc_trigger = yes
is_available_child = yes
OR = {
AND = {
has_focus = education_diplomacy
exists = cp:councillor_chancellor
}
AND = {
has_focus = education_martial
exists = cp:councillor_marshal
}
AND = {
has_focus = education_stewardship
exists = cp:councillor_steward
}
AND = {
has_focus = education_intrigue
exists = cp:councillor_spymaster
}
AND = {
has_focus = education_learning
exists = cp:councillor_court_chaplain
}
}
}
weight_multiplier = {
base = 1
}
immediate = {
if = {
limit = {
has_focus = education_diplomacy
exists = cp:councillor_chancellor
}
cp:councillor_chancellor = { save_scope_as = target_councilor }
}
else_if = {
limit = {
has_focus = education_martial
exists = cp:councillor_marshal
}
cp:councillor_marshal = { save_scope_as = target_councilor }
}
else_if = {
limit = {
has_focus = education_stewardship
exists = cp:councillor_steward
}
cp:councillor_steward = { save_scope_as = target_councilor }
}
else_if = {
limit = {
has_focus = education_intrigue
exists = cp:councillor_spymaster
}
cp:councillor_spymaster = { save_scope_as = target_councilor }
}
else_if = {
limit = {
has_focus = education_learning
exists = cp:councillor_court_chaplain
}
cp:councillor_court_chaplain = { save_scope_as = target_councilor }
}
}
# Option A: I want to help out!
option = {
name = bp2_yearly_extra.0001.a
flavor = bp2_yearly_extra.0001.a.tt
if = {
limit = { has_focus = education_diplomacy }
add_diplomacy_skill = 1
}
else_if = {
limit = { has_focus = education_martial }
add_martial_skill = 1
}
else_if = {
limit = { has_focus = education_stewardship }
add_stewardship_skill = 1
}
else_if = {
limit = { has_focus = education_intrigue }
add_intrigue_skill = 1
}
else_if = {
limit = { has_focus = education_learning }
add_learning_skill = 1
}
stress_impact = {
base = miniscule_stress_impact_gain
diligent = minor_stress_impact_loss
lazy = minor_stress_impact_gain
}
scope:target_councilor = {
add_opinion = {
target = root
modifier = frustrated_opinion
opinion = -20
}
}
ai_chance = {
base = 100
modifier = {
has_trait = lazy
factor = 0
}
}
}
# Option B: I just like to see them work.
option = {
name = bp2_yearly_extra.0001.b
flavor = bp2_yearly_extra.0001.b.tt
scope:target_councilor = {
add_opinion = {
target = root
modifier = thankful_opinion
opinion = 20
}
}
stress_impact = {
base = minor_stress_impact_loss
diligent = medium_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
has_trait = diligent
factor = 0
}
modifier = {
has_trait = lazy
add = 50
}
modifier = {
has_trait = curious
add = 50
}
modifier = {
has_trait = pensive
add = 50
}
}
}
}

File diff suppressed because it is too large Load diff