namespace = bp2_yearly #### # bp2_yearly.1000 - Parent/Guardian: Your child/ward walks in on you performing your stress trait # bp2_yearly.1001 - Follow-up; the child is mimicking your stress behavior # bp2_yearly.1005 - Child: You notice your parent/guardian performing a stress trait # # bp2_yearly.1010 - Parent/Guardian: Your child gives you a hug # bp2_yearly.1015 - Parent/Guardian: Your child/ward found a pouch of gold while exploring # bp2_yearly.1020 - Parent/Guardian: Your child/ward has found a secret in court # # bp2_yearly.1030 - Parent: Your child does not have the same educational trait as you. Change? # bp2_yearly.1035 - Parent/Guardian: Your child/ward has a rock collection # bp2_yearly.1040 - Parent/Guardian: Your child/ward has a text about martial arts # bp2_yearly.1045 - Parent/Guardian: There is a brawl among some children # ################# ## Event Chain ## ## The Builder ## ## 1050 - 1072 ## ################# # bp2_yearly.1050 - The tide/sandstorm is ruining your sandcastle! # bp2_yearly.1051 - Follow-up: Curse you, tide! # bp2_yearly.1055 - You are challenged to a den-building competition # bp2_yearly.1056 - Follow-up: Things went down in the woods # bp2_yearly.1060 - Appreciate the architecture of your capital # bp2_yearly.1061 - Follow-up: You spend the day with WhatsTheirFace # bp2_yearly.1065 - Your input is desired on the next building target # bp2_yearly.1070 - All of our efforts have culminated into _this_ # bp2_yearly.1071 - Follow-up: Get the sweet sweet loo... I mean, sweet sweet effects! # bp2_yearly.1072 - Clean up: You dun messed up, son scripted_trigger bp2_yearly_1000_is_appropriate_child = { age > 4 age < 16 is_available = yes is_ai = yes location = root.location NOT = { has_variable = witnessed_trait } OR = { AND = { root = { has_trait = drunkard } NOT = { has_trait = drunkard } } AND = { root = { has_trait = reclusive } NOT = { has_trait = reclusive } } AND = { root = { has_trait = irritable } NOT = { has_trait = irritable } } AND = { root = { has_trait = flagellant } NOT = { has_trait = flagellant } } AND = { root = { has_trait = profligate } NOT = { has_trait = profligate } } AND = { root = { has_trait = improvident } NOT = { has_trait = improvident } } AND = { root = { has_trait = comfort_eater } NOT = { has_trait = comfort_eater } } AND = { root = { has_trait = inappetetic } NOT = { has_trait = inappetetic } } AND = { root = { has_trait = journaller } NOT = { has_trait = journaller } } AND = { root = { has_trait = hashishiyah } NOT = { has_trait = hashishiyah } any_courtier_or_guest = { is_available_adult = yes has_any_bad_relationship_with_root_trigger = no } } AND = { NOT = { has_trait = confider } root = { has_trait = confider any_relation = { type = friend is_available = yes location = root.location } } } AND = { root = { has_trait = athletic NOT = { has_trait = one_legged } } NOT = { has_trait = athletic has_trait = one_legged } } } } scripted_effect bp2_yearly_1000_award_trait_effect = { if = { limit = { exists = scope:triggered_trait } this = { switch = { trigger = scope:triggered_trait flag:drunkard = { add_trait = drunkard } flag:hashishiyah = { add_trait = hashishiyah } flag:reclusive = { add_trait = reclusive } flag:irritable = { add_trait = irritable } flag:flagellant = { add_trait = flagellant } flag:profligate = { add_trait = profligate } flag:improvident = { add_trait = improvident } flag:contrite = { add_trait = contrite } flag:comfort_eater = { add_trait = comfort_eater } flag:inappetetic = { add_trait = inappetetic } flag:journaller = { add_trait = journaller } flag:confider = { add_trait = confider } flag:athletic = { add_trait = athletic } } } } else_if = { limit = { exists = var:witnessed_trait } this = { switch = { trigger = var:witnessed_trait flag:drunkard = { add_trait = drunkard } flag:hashishiyah = { add_trait = hashishiyah } flag:reclusive = { add_trait = reclusive } flag:irritable = { add_trait = irritable } flag:flagellant = { add_trait = flagellant } flag:profligate = { add_trait = profligate } flag:improvident = { add_trait = improvident } flag:contrite = { add_trait = contrite } flag:comfort_eater = { add_trait = comfort_eater } flag:inappetetic = { add_trait = inappetetic } flag:journaller = { add_trait = journaller } flag:confider = { add_trait = confider } flag:athletic = { add_trait = athletic } } } } } #Parent/Guardian: Your child/ward walks in on you performing your stress trait bp2_yearly.1000 = { type = character_event content_source = dlc_009 title = bp2_yearly.1000.t desc = { #Hoppsan first_valid = { triggered_desc = { trigger = { scope:triggered_trait = flag:drunkard } desc = bp2_yearly.1000.desc_drunkard } triggered_desc = { trigger = { scope:triggered_trait = flag:hashishiyah } desc = bp2_yearly.1000.desc_hashishiyah } triggered_desc = { trigger = { scope:triggered_trait = flag:reclusive } desc = bp2_yearly.1000.desc_reclusive } triggered_desc = { trigger = { scope:triggered_trait = flag:irritable } desc = bp2_yearly.1000.desc_irritable } triggered_desc = { trigger = { scope:triggered_trait = flag:flagellant } desc = bp2_yearly.1000.desc_flagellant } triggered_desc = { trigger = { scope:triggered_trait = flag:profligate } desc = bp2_yearly.1000.desc_profligate } triggered_desc = { trigger = { scope:triggered_trait = flag:improvident } desc = bp2_yearly.1000.desc_improvident } triggered_desc = { trigger = { scope:triggered_trait = flag:contrite } desc = bp2_yearly.1000.desc_contrite } triggered_desc = { trigger = { scope:triggered_trait = flag:comfort_eater } desc = bp2_yearly.1000.desc_comfort_eater } triggered_desc = { trigger = { scope:triggered_trait = flag:inappetetic } desc = bp2_yearly.1000.desc_inappetetic } triggered_desc = { trigger = { scope:triggered_trait = flag:journaller } desc = bp2_yearly.1000.desc_journaller } triggered_desc = { trigger = { scope:triggered_trait = flag:confider } desc = bp2_yearly.1000.desc_confider } triggered_desc = { trigger = { scope:triggered_trait = flag:athletic } desc = bp2_yearly.1000.desc_athletic } } #Is it a *good* stress trait or a *bad* stress trait? first_valid = { #Hmm, this isn't _great_ triggered_desc = { trigger = { OR = { scope:triggered_trait = flag:drunkard scope:triggered_trait = flag:hashishiyah scope:triggered_trait = flag:irritable scope:triggered_trait = flag:flagellant scope:triggered_trait = flag:comfort_eater } } desc = bp2_yearly.1000.outro_bad } #Meh, it's fine desc = bp2_yearly.1000.outro } } theme = family #Let's be in a couple of different places override_background = { trigger = { OR = { scope:triggered_trait = flag:drunkard scope:triggered_trait = flag:irritable scope:triggered_trait = flag:contrite scope:triggered_trait = flag:inappetetic scope:triggered_trait = flag:confider } } reference = feast_event } override_background = { trigger = { OR = { scope:triggered_trait = flag:hashishiyah scope:triggered_trait = flag:comfort_eater scope:triggered_trait = flag:journaller } } reference = relaxing_room } override_background = { trigger = { scope:triggered_trait = flag:reclusive } reference = study } override_background = { trigger = { scope:triggered_trait = flag:flagellant } reference = dungeon } override_background = { trigger = { scope:triggered_trait = flag:profligate } reference = market } override_background = { trigger = { scope:triggered_trait = flag:athletic } reference = courtyard } override_background = { trigger = { scope:triggered_trait = flag:improvident } reference = temple } #Fallback override_background = { reference = throne_room } left_portrait = { character = root triggered_animation = { trigger = { scope:triggered_trait = flag:drunkard } animation = drink_goblet } triggered_animation = { trigger = { scope:triggered_trait = flag:improvident } animation = personality_compassionate } triggered_animation = { trigger = { OR = { scope:triggered_trait = flag:irritable AND = { has_trait = eccentric scope:triggered_trait = flag:reclusive } } } animation = rage } triggered_animation = { trigger = { scope:triggered_trait = flag:reclusive } animation = personality_cynical } triggered_animation = { trigger = { scope:triggered_trait = flag:journaller } animation = reading } triggered_animation = { trigger = { scope:triggered_trait = flag:flagellant } animation = pain } triggered_animation = { trigger = { scope:triggered_trait = flag:contrite } animation = personality_zealous } triggered_animation = { trigger = { scope:triggered_trait = flag:confider } animation = admiration } triggered_animation = { trigger = { scope:triggered_trait = flag:athletic } animation = ecstasy } triggered_animation = { trigger = { scope:triggered_trait = flag:profligate has_trait = eccentric } animation = steward } triggered_animation = { trigger = { OR = { has_trait = eccentric has_trait = lunatic scope:triggered_trait = flag:hashishiyah } } animation = personality_irrational } animation = stress } right_portrait = { character = scope:appropriate_child triggered_animation = { trigger = { OR = { scope:triggered_trait = flag:drunkard scope:triggered_trait = flag:hashishiyah scope:triggered_trait = flag:irritable scope:triggered_trait = flag:flagellant scope:triggered_trait = flag:comfort_eater } } animation = shock } animation = thinking } lower_left_portrait = { trigger = { exists = scope:portrait_to_display } character = scope:portrait_to_display } #Set up the cooldown cooldown = { years = 10 } trigger = { #DLC check has_bp2_dlc_trigger = yes #Standard checks is_available_adult = yes is_landed_or_landless_administrative = yes is_ai = no #Longer cooldown if you removed a stress trait NOT = { has_character_flag = bp2_yearly_1001_removed_stress_trait } #Check if we have a stress trait; and if an appropriate child does not have the stress trait (so it's transferrable) OR = { any_child = { bp2_yearly_1000_is_appropriate_child = yes } any_relation = { type = ward bp2_yearly_1000_is_appropriate_child = yes } any_warden_hostage = { opinion = { target = root value >= low_negative_opinion } bp2_yearly_1000_is_appropriate_child = yes } } } weight_multiplier = { base = 0 #The more stress traits; the higher chance modifier = { has_trait = drunkard add = 1 } modifier = { has_trait = hashishiyah add = 1 } modifier = { has_trait = reclusive add = 1 } modifier = { has_trait = irritable add = 1 } modifier = { has_trait = flagellant add = 1 } modifier = { has_trait = profligate add = 1 } modifier = { has_trait = improvident add = 1 } modifier = { has_trait = contrite add = 1 } modifier = { has_trait = comfort_eater add = 1 } modifier = { has_trait = inappetetic add = 1 } modifier = { has_trait = journaller add = 1 } modifier = { has_trait = confider add = 1 } modifier = { has_trait = athletic add = 1 } } immediate = { #play_music_cue = "mx_cue_stress" #Your own children first if = { limit = { any_child = { bp2_yearly_1000_is_appropriate_child = yes } } random_child = { #A child you care about limit = { opinion = { target = root value >= low_positive_opinion } bp2_yearly_1000_is_appropriate_child = yes } #Otherwise pick whoever alternative_limit = { bp2_yearly_1000_is_appropriate_child = yes } save_scope_as = appropriate_child } } #Otherwise a ward else_if = { limit = { any_relation = { type = ward bp2_yearly_1000_is_appropriate_child = yes } } random_relation = { type = ward #A child you care about limit = { opinion = { target = root value >= low_positive_opinion } bp2_yearly_1000_is_appropriate_child = yes } #Otherwise pick whoever alternative_limit = { bp2_yearly_1000_is_appropriate_child = yes } save_scope_as = appropriate_child } } else_if = { limit = { any_warden_hostage = { opinion = { target = root value >= low_negative_opinion } bp2_yearly_1000_is_appropriate_child = yes } } random_warden_hostage = { limit = { opinion = { target = root value >= low_negative_opinion } bp2_yearly_1000_is_appropriate_child = yes } save_scope_as = appropriate_child } } random_list = { #Set a trait to work from and remember it; weights what stress coping events the child may get later in life 1 = { trigger = { has_trait = drunkard } scope:appropriate_child = { set_variable = { name = witnessed_trait value = flag:drunkard } } } 1 = { trigger = { has_trait = hashishiyah } scope:appropriate_child = { set_variable = { name = witnessed_trait value = flag:hashishiyah } } } 1 = { trigger = { has_trait = reclusive } scope:appropriate_child = { set_variable = { name = witnessed_trait value = flag:reclusive } } } 1 = { trigger = { has_trait = irritable } scope:appropriate_child = { set_variable = { name = witnessed_trait value = flag:irritable } } random_dummy_gender_effect = yes } 1 = { trigger = { has_trait = flagellant } scope:appropriate_child = { set_variable = { name = witnessed_trait value = flag:flagellant } } add_character_flag = should_be_topless } 1 = { trigger = { has_trait = profligate } scope:appropriate_child = { set_variable = { name = witnessed_trait value = flag:profligate } } random_dummy_gender_effect = yes } 1 = { trigger = { has_trait = improvident } scope:appropriate_child = { set_variable = { name = witnessed_trait value = flag:improvident } } } 1 = { trigger = { has_trait = contrite any_courtier_or_guest = { is_available_adult = yes has_any_bad_relationship_with_root_trigger = no } } scope:appropriate_child = { set_variable = { name = witnessed_trait value = flag:contrite } } random_courtier_or_guest = { limit = { is_available_adult = yes has_any_bad_relationship_with_root_trigger = no } save_scope_as = other_guest save_scope_as = portrait_to_display } } 1 = { trigger = { has_trait = comfort_eater } scope:appropriate_child = { set_variable = { name = witnessed_trait value = flag:comfort_eater } set_favorite_treat_effect = yes } set_favorite_treat_effect = yes } 1 = { trigger = { has_trait = inappetetic } scope:appropriate_child = { set_variable = { name = witnessed_trait value = flag:inappetetic } } } 1 = { trigger = { has_trait = journaller } scope:appropriate_child = { set_variable = { name = witnessed_trait value = flag:journaller } } } 1 = { trigger = { has_trait = confider any_relation = { type = friend is_available = yes location = root.location } } scope:appropriate_child = { set_variable = { name = witnessed_trait value = flag:confider } } random_relation = { type = friend limit = { is_available = yes location = root.location } save_scope_as = confider_friend save_scope_as = portrait_to_display } } 1 = { trigger = { has_trait = athletic NOT = { has_trait = one_legged } } scope:appropriate_child = { set_variable = { name = witnessed_trait value = flag:athletic } } if = { limit = { is_male = yes } #Yes, this is a boring restriction but it's the current lense for how things worked back then, I suspect add_character_flag = should_be_topless } } } #To save us some script lines in the rest of the event, let's refer to a scope instead scope:appropriate_child = { if = { limit = { exists = var:witnessed_trait } switch = { trigger = scope:appropriate_child.var:witnessed_trait flag:drunkard = { save_scope_value_as = { name = triggered_trait value = flag:drunkard } } flag:hashishiyah = { save_scope_value_as = { name = triggered_trait value = flag:hashishiyah } } flag:reclusive = { save_scope_value_as = { name = triggered_trait value = flag:reclusive } } flag:irritable = { save_scope_value_as = { name = triggered_trait value = flag:irritable } } flag:flagellant = { save_scope_value_as = { name = triggered_trait value = flag:flagellant } } flag:profligate = { save_scope_value_as = { name = triggered_trait value = flag:profligate } } flag:improvident = { save_scope_value_as = { name = triggered_trait value = flag:improvident } } flag:contrite = { save_scope_value_as = { name = triggered_trait value = flag:contrite } } flag:comfort_eater = { save_scope_value_as = { name = triggered_trait value = flag:comfort_eater } } flag:inappetetic = { save_scope_value_as = { name = triggered_trait value = flag:inappetetic } } flag:journaller = { save_scope_value_as = { name = triggered_trait value = flag:journaller } } flag:confider = { save_scope_value_as = { name = triggered_trait value = flag:confider } } flag:athletic = { save_scope_value_as = { name = triggered_trait value = flag:athletic } } } } } if = { limit = { scope:triggered_trait = flag:hashishiyah } add_character_flag = is_naked } } #Hmm. option = { name = { text = { first_valid = { triggered_desc = { trigger = { OR = { scope:triggered_trait = flag:drunkard scope:triggered_trait = flag:hashishiyah scope:triggered_trait = flag:irritable scope:triggered_trait = flag:flagellant scope:triggered_trait = flag:profligate scope:triggered_trait = flag:comfort_eater scope:triggered_trait = flag:inappetetic } } desc = bp2_yearly.1000.a } triggered_desc = { trigger = { scope:triggered_trait = flag:reclusive } desc = bp2_yearly.1000.b_reclusive } desc = bp2_yearly.1000.a_good } } } flavor = { first_valid = { triggered_desc = { trigger = { OR = { scope:triggered_trait = flag:drunkard scope:triggered_trait = flag:hashishiyah scope:triggered_trait = flag:reclusive scope:triggered_trait = flag:irritable scope:triggered_trait = flag:flagellant scope:triggered_trait = flag:profligate scope:triggered_trait = flag:improvident } } desc = bp2_yearly.1000.a.flavor } desc = bp2_yearly.1000.a.flavor_good } } custom_tooltip = bp2_yearly.1000.a.tt #We're not too concerned that we got caught doing these; enjoy the stress loss if = { limit = { OR = { scope:triggered_trait = flag:reclusive scope:triggered_trait = flag:improvident scope:triggered_trait = flag:contrite scope:triggered_trait = flag:journaller scope:triggered_trait = flag:confider scope:triggered_trait = flag:athletic } } stress_impact = { base = miniscule_stress_impact_loss } } trigger_event = { days = 5 id = bp2_yearly.1001 } #AI won't be getting this event } #Toot-toot, stress trait schmesh trait... option = { name = { text = { first_valid = { triggered_desc = { trigger = { scope:triggered_trait = flag:drunkard } desc = bp2_yearly.1000.b_drunkard } triggered_desc = { trigger = { scope:triggered_trait = flag:contrite } desc = bp2_yearly.1000.b_contrite } triggered_desc = { trigger = { scope:triggered_trait = flag:inappetetic } desc = bp2_yearly.1000.b_inappetetic } triggered_desc = { trigger = { scope:triggered_trait = flag:confider } desc = bp2_yearly.1000.b_us } triggered_desc = { trigger = { OR = { scope:triggered_trait = flag:reclusive scope:triggered_trait = flag:irritable } } desc = bp2_yearly.1000.b_agitated } triggered_desc = { trigger = { scope:triggered_trait = flag:hashishiyah } desc = bp2_yearly.1000.b_hashishiyah } triggered_desc = { trigger = { scope:triggered_trait = flag:flagellant } desc = bp2_yearly.1000.b_flagellant } triggered_desc = { trigger = { scope:triggered_trait = flag:improvident } desc = bp2_yearly.1000.b_improvident } triggered_desc = { trigger = { scope:triggered_trait = flag:athletic } desc = bp2_yearly.1000.b_athletic } desc = bp2_yearly.1000.b } } } flavor = { first_valid = { triggered_desc = { trigger = { OR = { scope:triggered_trait = flag:reclusive scope:triggered_trait = flag:irritable } } desc = bp2_yearly.1000.b.flavor_agitated } triggered_desc = { trigger = { scope:triggered_trait = flag:contrite } desc = bp2_yearly.1000.b.flavor_contrite } triggered_desc = { trigger = { scope:triggered_trait = flag:inappetetic } desc = bp2_yearly.1000.b.flavor_inappetetic } triggered_desc = { trigger = { scope:triggered_trait = flag:confider } desc = bp2_yearly.1000.b.flavor_confider } triggered_desc = { trigger = { scope:triggered_trait = flag:flagellant } desc = bp2_yearly.1000.b.flavor_flagellant } triggered_desc = { trigger = { scope:triggered_trait = flag:improvident } desc = bp2_yearly.1000.b.flavor_improvident } triggered_desc = { trigger = { scope:triggered_trait = flag:athletic } desc = bp2_yearly.1000.b.flavor_athletic } desc = bp2_yearly.1000.b.flavor } } trigger = { has_trait = eccentric } scope:appropriate_child = { bp2_yearly_1000_award_trait_effect = yes } #If it's not a chummy stress trait, let's lash out... if = { limit = { OR = { scope:triggered_trait = flag:reclusive scope:triggered_trait = flag:irritable } } reverse_add_opinion = { target = scope:appropriate_child modifier = stress_lashed_out_opinion opinion = -40 } stress_impact = { base = major_stress_impact_loss } } #Otherwise indulge them else = { reverse_add_opinion = { target = scope:appropriate_child modifier = teaching_moment_opinion opinion = 25 } #More stress relief trade-off for worse inflicted stress traits if = { limit = { OR = { scope:triggered_trait = flag:journaller scope:triggered_trait = flag:confider scope:triggered_trait = flag:athletic } } stress_impact = { base = minor_stress_impact_loss } } else_if = { limit = { OR = { scope:triggered_trait = flag:improvident scope:triggered_trait = flag:contrite } } stress_impact = { base = medium_stress_impact_loss } } else = { stress_impact = { base = major_stress_impact_loss } } } #AI won't be getting this event } after = { if = { limit = { has_character_flag = should_be_topless } remove_character_flag = should_be_topless } if = { limit = { has_character_flag = is_naked } remove_character_flag = is_naked } } } #Follow-up; the child is mimicking your stress behavior bp2_yearly.1001 = { type = character_event content_source = dlc_009 title = bp2_yearly.1001.t desc = { #Hoppsan first_valid = { triggered_desc = { trigger = { scope:triggered_trait = flag:drunkard } desc = bp2_yearly.1001.desc_drunkard } triggered_desc = { trigger = { scope:triggered_trait = flag:hashishiyah } desc = bp2_yearly.1001.desc_hashishiyah } triggered_desc = { trigger = { scope:triggered_trait = flag:reclusive } desc = bp2_yearly.1001.desc_reclusive } triggered_desc = { trigger = { scope:triggered_trait = flag:irritable } desc = bp2_yearly.1001.desc_irritable } triggered_desc = { trigger = { scope:triggered_trait = flag:flagellant } desc = bp2_yearly.1001.desc_flagellant } triggered_desc = { trigger = { scope:triggered_trait = flag:profligate } desc = bp2_yearly.1001.desc_profligate } triggered_desc = { trigger = { scope:triggered_trait = flag:improvident } desc = bp2_yearly.1001.desc_improvident } triggered_desc = { trigger = { scope:triggered_trait = flag:contrite } desc = bp2_yearly.1001.desc_contrite } triggered_desc = { trigger = { scope:triggered_trait = flag:comfort_eater } desc = bp2_yearly.1001.desc_comfort_eater } triggered_desc = { trigger = { scope:triggered_trait = flag:inappetetic } desc = bp2_yearly.1001.desc_inappetetic } triggered_desc = { trigger = { scope:triggered_trait = flag:journaller } desc = bp2_yearly.1001.desc_journaller } triggered_desc = { trigger = { scope:triggered_trait = flag:confider } desc = bp2_yearly.1001.desc_confider } triggered_desc = { trigger = { scope:triggered_trait = flag:athletic } desc = bp2_yearly.1001.desc_athletic } } first_valid = { #Hmm, this isn't _great_ triggered_desc = { trigger = { OR = { scope:triggered_trait = flag:drunkard scope:triggered_trait = flag:hashishiyah scope:triggered_trait = flag:reclusive scope:triggered_trait = flag:irritable scope:triggered_trait = flag:flagellant scope:triggered_trait = flag:profligate scope:triggered_trait = flag:comfort_eater scope:triggered_trait = flag:inappetetic scope:triggered_trait = flag:improvident scope:triggered_trait = flag:contrite } } desc = bp2_yearly.1001.outro_bad } } } theme = family #Let's be in a couple of different places override_background = { trigger = { OR = { scope:triggered_trait = flag:irritable scope:triggered_trait = flag:inappetetic } } reference = feast_event } override_background = { trigger = { OR = { scope:triggered_trait = flag:hashishiyah scope:triggered_trait = flag:comfort_eater } } reference = study } override_background = { trigger = { OR = { scope:triggered_trait = flag:reclusive scope:triggered_trait = flag:journaller } } reference = bp2_nursery } override_background = { trigger = { scope:triggered_trait = flag:flagellant } reference = dungeon } override_background = { trigger = { OR = { scope:triggered_trait = flag:athletic scope:triggered_trait = flag:contrite } } reference = courtyard } override_background = { trigger = { scope:triggered_trait = flag:drunkard } reference = bp1_wine_cellar } override_background = { trigger = { OR = { scope:triggered_trait = flag:profligate scope:triggered_trait = flag:improvident scope:triggered_trait = flag:confider } } reference = market } #Fallback override_background = { reference = throne_room } left_portrait = { character = scope:appropriate_child triggered_animation = { trigger = { scope:triggered_trait = flag:drunkard } animation = sick } triggered_animation = { trigger = { scope:triggered_trait = flag:improvident } animation = personality_compassionate } triggered_animation = { trigger = { scope:triggered_trait = flag:irritable } animation = rage } triggered_animation = { trigger = { scope:triggered_trait = flag:reclusive } animation = anger } triggered_animation = { trigger = { scope:triggered_trait = flag:journaller } animation = thinking } triggered_animation = { trigger = { scope:triggered_trait = flag:flagellant } animation = pain } triggered_animation = { trigger = { scope:triggered_trait = flag:hashishiyah } animation = personality_irrational } triggered_animation = { trigger = { scope:triggered_trait = flag:contrite } animation = personality_zealous } triggered_animation = { trigger = { scope:triggered_trait = flag:confider } animation = admiration } triggered_animation = { trigger = { scope:triggered_trait = flag:comfort_eater } animation = shame } triggered_animation = { trigger = { scope:triggered_trait = flag:profligate } animation = steward } triggered_animation = { trigger = { scope:triggered_trait = flag:athletic } animation = ecstasy } animation = stress } right_portrait = { character = root triggered_animation = { trigger = { OR = { scope:triggered_trait = flag:drunkard scope:triggered_trait = flag:hashishiyah scope:triggered_trait = flag:reclusive scope:triggered_trait = flag:flagellant scope:triggered_trait = flag:comfort_eater } } animation = shock } triggered_animation = { trigger = { OR = { scope:triggered_trait = flag:profligate scope:triggered_trait = flag:journaller scope:triggered_trait = flag:confider scope:triggered_trait = flag:athletic scope:triggered_trait = flag:improvident } } animation = thinking } animation = eavesdrop } immediate = { #play_music_cue = "mx_cue_stress" if = { limit = { scope:triggered_trait = flag:contrite } random_dummy_gender_effect = yes } scope:appropriate_child = { if = { limit = { scope:triggered_trait = flag:athletic is_male = yes } add_character_flag = should_be_topless } } } #Teach them better option = { name = bp2_yearly.1001.a flavor = { first_valid = { triggered_desc = { trigger = { OR = { scope:triggered_trait = flag:journaller scope:triggered_trait = flag:confider scope:triggered_trait = flag:athletic } } desc = bp2_yearly.1001.a.flavor_good } desc = bp2_yearly.1001.a.flavor } } #These traits are net positive if = { limit = { OR = { scope:triggered_trait = flag:journaller scope:triggered_trait = flag:confider scope:triggered_trait = flag:athletic } } duel = { skill = learning value = average_skill_rating 50 = { compare_modifier = { value = scope:duel_value multiplier = 3.5 min = -49 } opinion_modifier = { opinion_target = scope:appropriate_child multiplier = 3 step = 5 } modifier = { has_trait = family_first add = 25 } modifier = { has_trait = diplomat add = 10 } desc = bp2_yearly.1001.a.trait.desc send_interface_toast = { type = event_toast_effect_good title = bp2_yearly.1001.a.trait.t left_icon = root right_icon = scope:appropriate_child scope:appropriate_child = { bp2_yearly_1000_award_trait_effect = yes } reverse_add_opinion = { target = scope:appropriate_child modifier = teaching_moment_opinion opinion = 25 } } } 50 = { compare_modifier = { value = scope:duel_value multiplier = -3.5 min = -49 } desc = bp2_yearly.1001.a.no_trait.desc send_interface_toast = { type = event_toast_effect_neutral title = bp2_yearly.1001.a.no_trait.t left_icon = root right_icon = scope:appropriate_child reverse_add_opinion = { target = scope:appropriate_child modifier = teaching_moment_opinion opinion = 25 } } } } } #These traits are to be avoided else = { duel = { skill = learning value = average_skill_rating 50 = { compare_modifier = { value = scope:duel_value multiplier = 3.5 min = -49 } opinion_modifier = { opinion_target = scope:appropriate_child multiplier = 2 step = 5 } modifier = { has_trait = family_first add = 25 } modifier = { has_trait = diplomat add = 10 } desc = bp2_yearly.1001.a.no_trait.desc send_interface_toast = { type = event_toast_effect_good title = bp2_yearly.1001.a.no_trait.t left_icon = root right_icon = scope:appropriate_child reverse_add_opinion = { target = scope:appropriate_child modifier = teaching_moment_opinion opinion = 25 } } } 50 = { compare_modifier = { value = scope:duel_value multiplier = -3.5 min = 5 } desc = bp2_yearly.1001.a.trait.desc send_interface_toast = { type = event_toast_effect_bad title = bp2_yearly.1001.a.trait.t left_icon = root right_icon = scope:appropriate_child scope:appropriate_child = { bp2_yearly_1000_award_trait_effect = yes } } } } } #AI won't be getting this event } #I should change my ways option = { name = bp2_yearly.1001.b flavor = bp2_yearly.1001.b.flavor #Doesn't make sense to lose these traits trigger = { NOR = { scope:triggered_trait = flag:journaller scope:triggered_trait = flag:confider scope:triggered_trait = flag:athletic } } switch = { trigger = scope:triggered_trait flag:drunkard = { remove_trait = drunkard } flag:hashishiyah = { remove_trait = hashishiyah } flag:reclusive = { remove_trait = reclusive } flag:irritable = { remove_trait = irritable } flag:flagellant = { remove_trait = flagellant } flag:profligate = { remove_trait = profligate } flag:improvident = { remove_trait = improvident } flag:contrite = { remove_trait = contrite } flag:comfort_eater = { remove_trait = comfort_eater } flag:inappetetic = { remove_trait = inappetetic } } #Longer cooldown if you actually changed your ways add_character_flag = { flag = bp2_yearly_1001_removed_stress_trait years = 20 } #You're stressed about losing your outlet; but also proud about changing your ways add_character_modifier = { modifier = changed_ways_modifier years = 10 } #Massive gain stress_impact = { base = major_stress_impact_gain #Some mitigation whole_of_body = minor_stress_impact_loss stubborn = minor_stress_impact_loss } #AI won't be getting this event } #Meh, guess it's out of my hands option = { name = { text = { first_valid = { triggered_desc = { trigger = { has_trait = sadistic has_trait = eccentric } #That's my girl! desc = bp2_yearly.1001.c_ecc_sadist } triggered_desc = { trigger = { has_trait = callous } #Who am I to interrupt desc = bp2_yearly.1001.c.flavor_callous } desc = bp2_yearly.1001.c } } } flavor = { first_valid = { triggered_desc = { trigger = { scope:triggered_trait = flag:flagellant has_trait = sadistic has_trait = eccentric } #Let the flesh sing desc = bp2_yearly.1001.c.flavor_ecc_sadist } triggered_desc = { trigger = { has_trait = callous } #Who said child-rearing was difficult desc = bp2_yearly.1001.c.flavor_callous } desc = bp2_yearly.1001.c.flavor } } #Doesn't make sense to not encourage these trigger = { NOR = { scope:triggered_trait = flag:journaller scope:triggered_trait = flag:confider scope:triggered_trait = flag:athletic } } random_list = { 50 = { send_interface_toast = { type = event_toast_effect_bad title = bp2_yearly.1001.a.trait.t right_icon = scope:appropriate_child scope:appropriate_child = { bp2_yearly_1000_award_trait_effect = yes } } } 50 = { #Nothing happens } } #Sadists be sadists if = { limit = { OR = { scope:triggered_trait = flag:irritable scope:triggered_trait = flag:flagellant } has_trait = sadistic } stress_impact = { diligent = miniscule_stress_impact_gain lazy = miniscule_stress_impact_loss sadistic = medium_stress_impact_loss } } else = { stress_impact = { diligent = miniscule_stress_impact_gain lazy = miniscule_stress_impact_loss } } #AI won't be getting this event } after = { scope:appropriate_child = { if = { limit = { has_character_flag = should_be_topless } remove_character_flag = should_be_topless } } } } scripted_trigger bp2_yearly_1005_is_stressed_adult = { location = root.location OR = { AND = { has_trait = drunkard #Is the trait transferrable? NOT = { root = { has_trait = drunkard } } } AND = { has_trait = hashishiyah NOT = { root = { has_trait = hashishiyah } } } AND = { has_trait = reclusive NOT = { root = { has_trait = reclusive } } } AND = { has_trait = irritable NOT = { root = { has_trait = irritable } } } AND = { has_trait = flagellant NOT = { root = { has_trait = flagellant } } } AND = { has_trait = profligate NOT = { root = { has_trait = profligate } } } AND = { has_trait = improvident NOT = { root = { has_trait = improvident } } } AND = { has_trait = contrite NOT = { root = { has_trait = contrite } } } AND = { has_trait = comfort_eater NOT = { root = { has_trait = comfort_eater } } } AND = { has_trait = inappetetic NOT = { root = { has_trait = inappetetic } } } AND = { has_trait = journaller NOT = { root = { has_trait = journaller } } } AND = { has_trait = confider any_relation = { type = friend is_available = yes location = this.location } NOT = { root = { has_trait = confider } } } AND = { has_trait = athletic NOT = { root = { has_trait = athletic } } } } } #Child: You notice your parent/guardian performing a stress trait bp2_yearly.1005 = { type = character_event content_source = dlc_009 title = bp2_yearly.1005.t desc = { desc = bp2_yearly.1005.intro #Well, this is an interesting behavior... first_valid = { triggered_desc = { trigger = { var:witnessed_trait ?= flag:drunkard } desc = bp2_yearly.1005.desc_drunkard } triggered_desc = { trigger = { var:witnessed_trait ?= flag:hashishiyah } desc = bp2_yearly.1005.desc_hashishiyah } triggered_desc = { trigger = { var:witnessed_trait ?= flag:reclusive } desc = bp2_yearly.1005.desc_reclusive } triggered_desc = { trigger = { var:witnessed_trait ?= flag:irritable } desc = bp2_yearly.1005.desc_irritable } triggered_desc = { trigger = { var:witnessed_trait ?= flag:flagellant } desc = bp2_yearly.1005.desc_flagellant } triggered_desc = { trigger = { var:witnessed_trait ?= flag:profligate } desc = bp2_yearly.1005.desc_profligate } triggered_desc = { trigger = { var:witnessed_trait ?= flag:improvident } desc = bp2_yearly.1005.desc_improvident } triggered_desc = { trigger = { var:witnessed_trait ?= flag:contrite } desc = bp2_yearly.1005.desc_contrite } triggered_desc = { trigger = { var:witnessed_trait ?= flag:comfort_eater } desc = bp2_yearly.1005.desc_comfort_eater } triggered_desc = { trigger = { var:witnessed_trait ?= flag:inappetetic } desc = bp2_yearly.1005.desc_inappetetic } triggered_desc = { trigger = { var:witnessed_trait ?= flag:journaller } desc = bp2_yearly.1005.desc_journaller } triggered_desc = { trigger = { var:witnessed_trait ?= flag:confider } desc = bp2_yearly.1005.desc_confider } triggered_desc = { trigger = { var:witnessed_trait ?= flag:athletic } desc = bp2_yearly.1005.desc_athletic } } } theme = family #Let's be in a couple of different places override_background = { trigger = { var:witnessed_trait ?= flag:inappetetic } reference = feast_event } override_background = { trigger = { OR = { var:witnessed_trait ?= flag:hashishiyah var:witnessed_trait ?= flag:comfort_eater var:witnessed_trait ?= flag:journaller } } reference = relaxing_room } override_background = { trigger = { OR = { var:witnessed_trait ?= flag:contrite var:witnessed_trait ?= flag:confider } } reference = corridor_day } override_background = { trigger = { var:witnessed_trait ?= flag:drunkard } reference = bp1_wine_cellar } override_background = { trigger = { var:witnessed_trait ?= flag:irritable } reference = bedchamber } override_background = { trigger = { var:witnessed_trait ?= flag:reclusive } reference = study } override_background = { trigger = { var:witnessed_trait ?= flag:flagellant } reference = dungeon } override_background = { trigger = { var:witnessed_trait ?= flag:profligate } reference = market } override_background = { trigger = { var:witnessed_trait ?= flag:athletic } reference = ep2_tournament } override_background = { trigger = { var:witnessed_trait ?= flag:improvident } reference = temple } #Fallback override_background = { reference = throne_room } left_portrait = { character = root animation = thinking } right_portrait = { character = scope:stressed_adult triggered_animation = { trigger = { root = { var:witnessed_trait ?= flag:drunkard } } animation = drink_goblet } triggered_animation = { trigger = { root = { var:witnessed_trait ?= flag:improvident } } animation = personality_compassionate } triggered_animation = { trigger = { root = { OR = { var:witnessed_trait ?= flag:reclusive var:witnessed_trait ?= flag:inappetetic } } } animation = personality_cynical } triggered_animation = { trigger = { root = { var:witnessed_trait ?= flag:journaller } } animation = thinking } triggered_animation = { trigger = { root = { var:witnessed_trait ?= flag:flagellant } } animation = pain } triggered_animation = { trigger = { root = { var:witnessed_trait ?= flag:contrite } } animation = personality_zealous } triggered_animation = { trigger = { root = { var:witnessed_trait ?= flag:confider } } animation = admiration } triggered_animation = { trigger = { root = { var:witnessed_trait ?= flag:athletic } } animation = ecstasy } triggered_animation = { trigger = { root = { var:witnessed_trait ?= flag:profligate } } animation = steward } triggered_animation = { trigger = { root = { var:witnessed_trait ?= flag:irritable } } animation = rage } triggered_animation = { trigger = { OR = { has_trait = eccentric has_trait = lunatic root = { var:witnessed_trait ?= flag:hashishiyah } } } animation = personality_irrational } animation = stress } lower_right_portrait = { trigger = { exists = scope:confidant_friend } character = scope:confidant_friend } #Set up the cooldown cooldown = { years = 10 } trigger = { #DLC check has_bp2_dlc_trigger = yes #Standard checks is_available_child = yes age >= 6 age <= 14 is_landed = yes is_ai = no OR = { any_relation = { type = guardian bp2_yearly_1005_is_stressed_adult = yes } any_parent = { bp2_yearly_1005_is_stressed_adult = yes } } NOT = { has_variable = witnessed_trait } } weight_multiplier = { base = 0 #The more stress traits; the higher chance modifier = { OR = { any_relation = { type = guardian location = root.location has_trait = drunkard } any_parent = { location = root.location has_trait = drunkard } } add = 1 } modifier = { OR = { any_relation = { type = guardian location = root.location has_trait = hashishiyah } any_parent = { location = root.location has_trait = hashishiyah } } add = 1 } modifier = { OR = { any_relation = { type = guardian location = root.location has_trait = reclusive } any_parent = { location = root.location has_trait = reclusive } } add = 1 } modifier = { OR = { any_relation = { type = guardian location = root.location has_trait = irritable } any_parent = { location = root.location has_trait = irritable } } add = 1 } modifier = { OR = { any_relation = { type = guardian location = root.location has_trait = flagellant } any_parent = { location = root.location has_trait = flagellant } } add = 1 } modifier = { OR = { any_relation = { type = guardian location = root.location has_trait = profligate } any_parent = { location = root.location has_trait = profligate } } add = 1 } modifier = { OR = { any_relation = { type = guardian location = root.location has_trait = improvident } any_parent = { location = root.location has_trait = improvident } } add = 1 } modifier = { OR = { any_relation = { type = guardian location = root.location has_trait = contrite } any_parent = { location = root.location has_trait = contrite } } add = 1 } modifier = { OR = { any_relation = { type = guardian location = root.location has_trait = comfort_eater } any_parent = { location = root.location has_trait = comfort_eater } } add = 1 } modifier = { OR = { any_relation = { type = guardian location = root.location has_trait = inappetetic } any_parent = { location = root.location has_trait = inappetetic } } add = 1 } modifier = { OR = { any_relation = { type = guardian location = root.location has_trait = journaller } any_parent = { location = root.location has_trait = journaller } } add = 1 } modifier = { OR = { any_relation = { type = guardian location = root.location has_trait = confider } any_parent = { location = root.location has_trait = confider } } add = 1 } modifier = { OR = { any_relation = { type = guardian location = root.location has_trait = athletic } any_parent = { location = root.location has_trait = athletic } } add = 1 } } immediate = { #play_music_cue = "mx_cue_stress" #Your guardian first (you probably spend more time together) random_relation = { type = guardian limit = { bp2_yearly_1005_is_stressed_adult = yes } save_scope_as = stressed_adult } #Then a parent if = { limit = { NOT = { exists = scope:stressed_adult } } random_parent = { #A parent you care about limit = { opinion = { target = root value >= low_positive_opinion } bp2_yearly_1005_is_stressed_adult = yes } #Otherwise pick whoever alternative_limit = { bp2_yearly_1005_is_stressed_adult = yes } save_scope_as = stressed_adult } } random_list = { #Set a trait to work from and remember it; weights what stress coping events the child may get later in life 1 = { trigger = { scope:stressed_adult = { has_trait = drunkard } } set_variable = { name = witnessed_trait value = flag:drunkard } } 1 = { trigger = { scope:stressed_adult = { has_trait = hashishiyah } } set_variable = { name = witnessed_trait value = flag:hashishiyah } } 1 = { trigger = { scope:stressed_adult = { has_trait = reclusive } } set_variable = { name = witnessed_trait value = flag:reclusive } } 1 = { trigger = { scope:stressed_adult = { has_trait = irritable } } set_variable = { name = witnessed_trait value = flag:irritable } } 1 = { trigger = { scope:stressed_adult = { has_trait = flagellant } } set_variable = { name = witnessed_trait value = flag:flagellant } } 1 = { trigger = { scope:stressed_adult = { has_trait = profligate } } set_variable = { name = witnessed_trait value = flag:profligate } } 1 = { trigger = { scope:stressed_adult = { has_trait = improvident } } set_variable = { name = witnessed_trait value = flag:improvident } } 1 = { trigger = { scope:stressed_adult = { has_trait = contrite } } set_variable = { name = witnessed_trait value = flag:contrite } } 1 = { trigger = { scope:stressed_adult = { has_trait = comfort_eater } } scope:stressed_adult = { set_favorite_treat_effect = yes } set_variable = { name = witnessed_trait value = flag:comfort_eater } } 1 = { trigger = { scope:stressed_adult = { has_trait = inappetetic } } set_variable = { name = witnessed_trait value = flag:inappetetic } } 1 = { trigger = { scope:stressed_adult = { has_trait = journaller } } set_variable = { name = witnessed_trait value = flag:journaller } } 1 = { trigger = { scope:stressed_adult = { has_trait = confider any_relation = { type = friend is_available = yes location = this.location } } } scope:stressed_adult = { random_relation = { type = friend limit = { is_available = yes location = this.location } save_scope_as = confidant_friend } } set_variable = { name = witnessed_trait value = flag:confider } } 1 = { trigger = { scope:stressed_adult = { has_trait = athletic } } set_variable = { name = witnessed_trait value = flag:athletic } } } } #_What's the worst thing that could happen_ option = { name = bp2_yearly.1005.a flavor = bp2_yearly.1005.a.flavor random_list = { 25 = { trigger = { NOR = { var:witnessed_trait ?= flag:confider var:witnessed_trait ?= flag:journaller var:witnessed_trait ?= flag:athletic } } desc = bp2_yearly.1005.a.insight.desc send_interface_toast = { type = event_toast_effect_good title = bp2_yearly.1005.a.insight.t left_icon = root add_character_modifier = { modifier = stress_insight_modifier #Reflecting on yourself is half the battle } } } 25 = { desc = bp2_yearly.1005.a.stressed.desc send_interface_toast = { type = event_toast_effect_bad title = bp2_yearly.1005.a.stressed.t left_icon = root stress_impact = { base = miniscule_stress_impact_gain } } } 50 = { desc = bp2_yearly.1005.a.trait.desc bp2_yearly_1000_award_trait_effect = yes stress_impact = { base = medium_stress_impact_loss } } } #AI won't be getting this event } #Nah option = { name = bp2_yearly.1005.b #AI won't be getting this event } } scripted_trigger bp2_yearly_1010_is_hugging_child = { age >= 2 age < 16 is_available = yes is_ai = yes location = root.location opinion = { target = root value >= medium_positive_opinion } } #Parent/Guardian: Your child/ward gives you a hug bp2_yearly.1010 = { type = character_event content_source = dlc_009 title = bp2_yearly.1010.t desc = { desc = bp2_yearly.1010.intro first_valid = { #Age 2 kid doesn't speak triggered_desc = { trigger = { scope:hugging_child = { age = 2 } } desc = bp2_yearly.1010.desc_toddler } #Age 3-5 kid speaks... ish triggered_desc = { trigger = { scope:hugging_child = { age > 2 age < 6 } } desc = bp2_yearly.1010.desc_rambler } #Age 6-10 kid speaks triggered_desc = { trigger = { scope:hugging_child = { age > 5 age < 11 } } desc = bp2_yearly.1010.desc_kid } #Age 10-15 teenager triggered_desc = { trigger = { scope:hugging_child = { age > 10 age <= 15 } } desc = bp2_yearly.1010.desc_teenager } } first_valid = { triggered_desc = { trigger = { has_trait = callous } desc = bp2_yearly.1010.outro_callous } triggered_desc = { trigger = { scope:hugging_child = { age >= 2 age < 11 } } desc = bp2_yearly.1010.outro_young } desc = bp2_yearly.1010.outro_older } } theme = family override_background = { reference = council_chamber } left_portrait = { character = root triggered_animation = { trigger = { has_trait = callous } animation = personality_cynical } animation = shock } right_portrait = { character = scope:hugging_child animation = personality_content } #Set up the cooldown cooldown = { years = 5 } trigger = { #DLC check has_bp2_dlc_trigger = yes #Standard checks static_group_filter = { group = bp2_yearly.1010 match = 0.25 } stress > 0 is_available = yes is_physically_able_adult = yes is_landed = yes OR = { any_child = { bp2_yearly_1010_is_hugging_child = yes } any_relation = { type = ward bp2_yearly_1010_is_hugging_child = yes } any_warden_hostage = { bp2_yearly_1010_is_hugging_child = yes } } } weight_multiplier = { base = 1 #The more stress; the higher chance modifier = { stress_level > 0 add = 1 } modifier = { stress_level > 1 add = 1 } modifier = { stress_level > 2 add = 1 } } immediate = { #play_music_cue = "mx_cue_touching_moment" #Your own children first random_list = { 33 = { trigger = { any_child = { bp2_yearly_1010_is_hugging_child = yes } } random_child = { #A child you care about limit = { bp2_yearly_1010_is_hugging_child = yes } save_scope_as = hugging_child } } 33 = { trigger = { any_relation = { type = ward bp2_yearly_1010_is_hugging_child = yes } } random_relation = { type = ward #A child you care about limit = { bp2_yearly_1010_is_hugging_child = yes } save_scope_as = hugging_child } } 33 = { trigger = { any_warden_hostage = { bp2_yearly_1010_is_hugging_child = yes } } random_warden_hostage = { #A child you care about limit = { bp2_yearly_1010_is_hugging_child = yes } save_scope_as = hugging_child } } } } #Have some stress relief option = { name = { text = { first_valid = { triggered_desc = { trigger = { has_trait = callous } desc = bp2_yearly.1010.a_callous } desc = bp2_yearly.1010.a } } } flavor = { first_valid = { triggered_desc = { trigger = { has_trait = callous } desc = bp2_yearly.1010.a.flavor_callous } desc = bp2_yearly.1010.a.flavor } } stress_impact = { base = minor_stress_impact_loss } } } scripted_trigger bp2_yearly_1015_is_golden_child = { age >= 7 age < 16 is_available = yes is_ai = yes location = root.location opinion = { target = root value >= medium_positive_opinion } NOT = { has_variable = had_bp2_yearly_1015_stewardship_event } } #Parent/Guardian: Your child/ward found a pouch of gold while exploring bp2_yearly.1015 = { type = character_event content_source = dlc_009 title = bp2_yearly.1015.t desc = { desc = bp2_yearly.1015.intro first_valid = { triggered_desc = { trigger = { is_parent_of = scope:golden_child } desc = bp2_yearly.1015.desc_parent } desc = bp2_yearly.1015.desc_guardian } desc = bp2_yearly.1015.outro } theme = family override_background = { reference = bedchamber } left_portrait = { character = root triggered_animation = { trigger = { has_trait = callous } animation = personality_cynical } triggered_animation = { trigger = { has_trait = greedy } animation = personality_greedy } animation = personality_compassionate } right_portrait = { character = scope:golden_child animation = steward } #Set up the cooldown cooldown = { years = 5 } trigger = { #DLC check has_bp2_dlc_trigger = yes #Standard checks is_available = yes OR = { any_child = { bp2_yearly_1015_is_golden_child = yes } any_relation = { type = ward bp2_yearly_1015_is_golden_child = yes } any_warden_hostage = { bp2_yearly_1015_is_golden_child = yes } } } weight_multiplier = { base = 1 modifier = { OR = { any_child = { bp2_yearly_1015_is_golden_child = yes has_focus = education_stewardship } any_relation = { type = ward bp2_yearly_1015_is_golden_child = yes has_focus = education_stewardship } any_warden_hostage = { bp2_yearly_1015_is_golden_child = yes has_focus = education_stewardship } } add = 1 } } immediate = { #play_music_cue = "mx_cue_low_key_positive" #Your own children first random_child = { limit = { bp2_yearly_1015_is_golden_child = yes has_focus = education_stewardship } alternative_limit = { bp2_yearly_1015_is_golden_child = yes } save_scope_as = golden_child } random_list = { 33 = { trigger = { any_child = { bp2_yearly_1015_is_golden_child = yes } } random_child = { limit = { bp2_yearly_1015_is_golden_child = yes has_focus = education_stewardship this = root.player_heir } alternative_limit = { bp2_yearly_1015_is_golden_child = yes this = root.player_heir } alternative_limit = { bp2_yearly_1015_is_golden_child = yes has_focus = education_stewardship } alternative_limit = { bp2_yearly_1015_is_golden_child = yes } save_scope_as = golden_child } modifier = { any_child = { bp2_yearly_1015_is_golden_child = yes this = root.player_heir } add = 50 } } 33 = { trigger = { any_relation = { type = ward bp2_yearly_1015_is_golden_child = yes } } random_relation = { type = ward limit = { bp2_yearly_1015_is_golden_child = yes has_focus = education_stewardship } alternative_limit = { bp2_yearly_1015_is_golden_child = yes } save_scope_as = golden_child } } 33 = { trigger = { any_warden_hostage = { bp2_yearly_1015_is_golden_child = yes } } random_warden_hostage = { #A child you care about limit = { bp2_yearly_1015_is_golden_child = yes has_focus = education_stewardship } alternative_limit = { bp2_yearly_1015_is_golden_child = yes } save_scope_as = golden_child } } } scope:golden_child = { set_variable = { name = had_bp2_yearly_1015_stewardship_event value = flag:yes } } } #Have some gold option = { name = bp2_yearly.1015.a flavor = { first_valid = { triggered_desc = { trigger = { has_trait = greedy } desc = bp2_yearly.1015.a.flavor_greedy } desc = bp2_yearly.1015.a.flavor } } add_gold = minor_gold_value ai_chance = { base = 100 } } #Have some education option = { name = bp2_yearly.1015.b trigger = { scope:golden_child = { has_focus = education_stewardship } } #More points for a matching education if = { limit = { has_trait = education_stewardship } custom_tooltip = bp2_yearly.1015.b.tt_matching hidden_effect = { scope:golden_child = { education_point_acquisition_additional_points_effect = { LEVEL = mid } } } } else = { custom_tooltip = bp2_yearly.1015.b.tt hidden_effect = { scope:golden_child = { education_point_acquisition_additional_points_effect = { LEVEL = low } } } } reverse_add_opinion = { target = scope:golden_child modifier = teaching_moment_opinion opinion = 15 } stress_impact = { greedy = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { has_trait = greedy factor = 0 } } } } scripted_trigger bp2_yearly_1020_is_secrety_child = { age >= 7 age < 16 is_available = yes is_ai = yes location = root.location opinion = { target = root value >= medium_positive_opinion } NOT = { has_variable = had_bp2_yearly_1020_intrigue_event } } scripted_trigger bp2_yearly_1020_is_relevant_secret = { is_known_by = prev #A courtier NOR = { secret_owner = root is_known_by = root } } #Parent/Guardian: Your child/ward has found a secret in court bp2_yearly.1020 = { type = character_event content_source = dlc_009 title = bp2_yearly.1020.t desc = { desc = bp2_yearly.1020.intro first_valid = { triggered_desc = { trigger = { is_parent_of = scope:secrety_child } desc = bp2_yearly.1020.desc_parent } desc = bp2_yearly.1020.desc_guardian } desc = bp2_yearly.1020.desc } theme = family override_background = { reference = study } left_portrait = { character = root triggered_animation = { trigger = { has_trait = callous } animation = personality_cynical } triggered_animation = { trigger = { has_trait = deceitful } animation = schadenfreude } animation = personality_dishonorable } right_portrait = { character = scope:secrety_child animation = ecstasy } lower_center_portrait = { character = scope:secret_keeper } #Set up the cooldown cooldown = { years = 10 } trigger = { #DLC check has_bp2_dlc_trigger = yes #Standard checks is_available = yes is_adult = yes OR = { any_child = { bp2_yearly_1020_is_secrety_child = yes save_temporary_scope_as = child_check } any_relation = { type = ward bp2_yearly_1020_is_secrety_child = yes save_temporary_scope_as = child_check } any_warden_hostage = { bp2_yearly_1020_is_secrety_child = yes save_temporary_scope_as = child_check } } any_courtier = { NOR = { this = scope:child_check this = root is_parent_of = scope:child_check #Don't rat out your parents } any_secret = { bp2_yearly_1020_is_relevant_secret = yes NOR = { trigger_if = { limit = { exists = secret_target } secret_target = scope:child_check } secret_owner = scope:child_check #Or yourself } } } } weight_multiplier = { base = 1 modifier = { OR = { any_child = { bp2_yearly_1020_is_secrety_child = yes has_focus = education_intrigue } any_relation = { type = ward bp2_yearly_1020_is_secrety_child = yes has_focus = education_intrigue } any_warden_hostage = { bp2_yearly_1020_is_secrety_child = yes has_focus = education_intrigue } } add = 1 } } immediate = { #play_music_cue = "mx_cue_low_key_positive" random_list = { 33 = { trigger = { any_child = { bp2_yearly_1020_is_secrety_child = yes } } random_child = { limit = { bp2_yearly_1020_is_secrety_child = yes has_focus = education_intrigue this = root.player_heir } alternative_limit = { bp2_yearly_1020_is_secrety_child = yes has_focus = education_intrigue } alternative_limit = { bp2_yearly_1020_is_secrety_child = yes } save_scope_as = secrety_child } modifier = { any_child = { bp2_yearly_1020_is_secrety_child = yes this = root.player_heir } add = 50 } } 33 = { trigger = { any_relation = { type = ward bp2_yearly_1020_is_secrety_child = yes } } random_relation = { type = ward limit = { bp2_yearly_1020_is_secrety_child = yes has_focus = education_stewardship } alternative_limit = { bp2_yearly_1020_is_secrety_child = yes } save_scope_as = secrety_child } } 33 = { trigger = { any_warden_hostage = { bp2_yearly_1020_is_secrety_child = yes } } random_warden_hostage = { #A child you care about limit = { bp2_yearly_1020_is_secrety_child = yes has_focus = education_stewardship } alternative_limit = { bp2_yearly_1020_is_secrety_child = yes } save_scope_as = secrety_child } } } #Find the secret to reveal random_courtier = { limit = { NOR = { this = scope:secrety_child this = root is_parent_of = scope:secrety_child #Don't rat out your parents } any_secret = { bp2_yearly_1020_is_relevant_secret = yes NOR = { trigger_if = { limit = { exists = secret_target } secret_target = scope:secrety_child } secret_owner = scope:secrety_child #Or yourself } } } save_scope_as = secret_keeper random_secret = { limit = { bp2_yearly_1020_is_relevant_secret = yes NOR = { trigger_if = { limit = { exists = secret_target } secret_target = scope:secrety_child } secret_owner = scope:secrety_child } } hidden_effect = { if = { limit = { NOT = { is_known_by = scope:secrety_child } } reveal_to = scope:secrety_child } } save_scope_as = bp2_yearly_1020_secret_to_reveal } } scope:secrety_child = { set_variable = { name = had_bp2_yearly_1020_intrigue_event value = flag:yes } } } #Have a secret option = { name = bp2_yearly.1020.a custom_tooltip = bp2_yearly.1020.a.tt hidden_effect = { send_interface_toast = { type = event_toast_effect_good title = bp2_yearly.1020.a.secret.t left_icon = root right_icon = scope:secret_keeper scope:bp2_yearly_1020_secret_to_reveal = { reveal_to = root } } } ai_chance = { base = 100 } } #Have some education option = { name = bp2_yearly.1020.b trigger = { scope:secrety_child = { has_focus = education_intrigue } } #More points for a matching education if = { limit = { has_trait = education_intrigue } custom_tooltip = bp2_yearly.1020.b.tt_matching hidden_effect = { scope:secrety_child = { education_point_acquisition_additional_points_effect = { LEVEL = mid } } } } else = { custom_tooltip = bp2_yearly.1020.b.tt hidden_effect = { scope:secrety_child = { education_point_acquisition_additional_points_effect = { LEVEL = low } } } } reverse_add_opinion = { target = scope:secrety_child modifier = teaching_moment_opinion opinion = 15 } stress_impact = { deceitful = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { has_trait = deceitful factor = 0 } } } } scripted_trigger bp2_yearly_1030_is_focus_child = { age >= 5 age < 16 is_available = yes is_ai = yes OR = { # A focus is selected has_focus = education_martial has_focus = education_intrigue has_focus = education_learning has_focus = education_stewardship has_focus = education_diplomacy } OR = { AND = { root = { has_trait = education_martial } NOT = { has_focus = education_martial } } AND = { root = { has_trait = education_intrigue } NOT = { has_focus = education_intrigue } } AND = { root = { has_trait = education_learning } NOT = { has_focus = education_learning } } AND = { root = { has_trait = education_stewardship } NOT = { has_focus = education_stewardship } } AND = { root = { has_trait = education_diplomacy } NOT = { has_focus = education_diplomacy } } } NOT = { has_variable = had_bp2_yearly_1030_focus_event } } #Parent: Your child does not have the same educational trait as you. Change? bp2_yearly.1030 = { type = character_event content_source = dlc_009 title = bp2_yearly.1030.t desc = bp2_yearly.1030.desc theme = education override_background = { reference = bp2_nursery } left_portrait = { character = root animation = thinking } right_portrait = { character = scope:focus_child animation = reading } #Set up the cooldown cooldown = { years = 10 } trigger = { #DLC check has_bp2_dlc_trigger = yes #Standard checks is_available = yes is_adult = yes any_child = { bp2_yearly_1030_is_focus_child = yes } } weight_multiplier = { base = 1 #The better educational trait; the higher chance modifier = { has_trait = education_martial_2 add = 1 } modifier = { has_trait = education_martial_3 add = 2 } modifier = { has_trait = education_martial_4 add = 3 } modifier = { has_trait = education_intrigue_2 add = 1 } modifier = { has_trait = education_intrigue_3 add = 2 } modifier = { has_trait = education_intrigue_4 add = 3 } modifier = { has_trait = education_learning_2 add = 1 } modifier = { has_trait = education_learning_3 add = 2 } modifier = { has_trait = education_learning_4 add = 3 } modifier = { has_trait = education_stewardship_2 add = 1 } modifier = { has_trait = education_stewardship_3 add = 2 } modifier = { has_trait = education_stewardship_4 add = 3 } modifier = { has_trait = education_diplomacy_2 add = 1 } modifier = { has_trait = education_diplomacy_3 add = 2 } modifier = { has_trait = education_diplomacy_4 add = 3 } } immediate = { #play_music_cue = "mx_cue_low_key_positive" random_child = { limit = { bp2_yearly_1030_is_focus_child = yes NOT = { has_variable = had_bp2_yearly_1030_focus_event } } save_scope_as = focus_child } scope:focus_child = { set_variable = { name = had_bp2_yearly_1030_focus_event value = flag:yes } } } #My way or the highway option = { name = bp2_yearly.1030.a custom_tooltip = bp2_yearly.1030.a.tt_change custom_tooltip = bp2_yearly.1030.a.tt_tutor hidden_effect = { if = { limit = { has_trait = education_martial } scope:focus_child = { set_focus = education_martial change_variable = { name = education_martial_variable add = age } } } else_if = { limit = { has_trait = education_intrigue } scope:focus_child = { set_focus = education_intrigue change_variable = { name = education_intrigue_variable add = age } } } else_if = { limit = { has_trait = education_learning } scope:focus_child = { set_focus = education_learning change_variable = { name = education_learning_variable add = age } } } else_if = { limit = { has_trait = education_stewardship } scope:focus_child = { set_focus = education_stewardship change_variable = { name = education_stewardship_variable add = age } } } else_if = { limit = { has_trait = education_diplomacy } scope:focus_child = { set_focus = education_diplomacy change_variable = { name = education_diplomacy_variable add = age } } } } stress_impact = { base = medium_stress_impact_gain diligent = minor_stress_impact_loss ambitious = minor_stress_impact_loss } ai_chance = { base = 0 } } #It's fine, I guess... option = { name = bp2_yearly.1030.b custom_tooltip = bp2_yearly.1030.b.tt #To avoid an empty random list hidden_effect = { scope:focus_child = { education_point_acquisition_effect = yes } } ai_chance = { base = 100 } } } scripted_trigger bp2_yearly_1035_is_rock_child = { age >= 7 age < 16 is_available = yes is_ai = yes location = root.location opinion = { target = root value >= medium_positive_opinion } NOT = { has_variable = had_bp2_yearly_1035_learning_event } } #Parent/Guardian: Your child/ward has a rock collection bp2_yearly.1035 = { type = character_event content_source = dlc_009 title = bp2_yearly.1035.t desc = { desc = bp2_yearly.1035.desc first_valid = { triggered_desc = { trigger = { is_parent_of = scope:rock_child } desc = bp2_yearly.1035.desc_parent } desc = bp2_yearly.1035.desc_guardian } } theme = family override_background = { trigger = { has_tgp_dlc_trigger = yes location = { geographical_region = world_asia_east } } reference = relaxing_room } override_background = { reference = bp2_nursery } left_portrait = { character = root triggered_animation = { trigger = { has_trait = callous } animation = personality_cynical } triggered_animation = { trigger = { has_trait = greedy } animation = personality_greedy } animation = personality_coward } right_portrait = { character = scope:rock_child animation = love } artifact = { target = scope:gemstone_trinket position = lower_center_portrait } #Set up the cooldown cooldown = { years = 10 } trigger = { #DLC check has_bp2_dlc_trigger = yes #Standard checks is_available = yes is_adult = yes OR = { any_child = { bp2_yearly_1035_is_rock_child = yes } any_relation = { type = ward bp2_yearly_1035_is_rock_child = yes } any_warden_hostage = { bp2_yearly_1035_is_rock_child = yes } } } weight_multiplier = { base = 1 modifier = { OR = { any_child = { bp2_yearly_1035_is_rock_child = yes has_focus = education_learning } any_relation = { type = ward bp2_yearly_1035_is_rock_child = yes has_focus = education_learning } any_warden_hostage = { bp2_yearly_1035_is_rock_child = yes has_focus = education_learning } } add = 1 } } immediate = { #play_music_cue = "mx_cue_low_key_positive" random_list = { 33 = { trigger = { any_child = { bp2_yearly_1035_is_rock_child = yes } } random_child = { limit = { bp2_yearly_1035_is_rock_child = yes has_focus = education_learning this = root.player_heir } alternative_limit = { bp2_yearly_1035_is_rock_child = yes has_focus = education_learning } alternative_limit = { bp2_yearly_1035_is_rock_child = yes } save_scope_as = rock_child } modifier = { any_child = { bp2_yearly_1035_is_rock_child = yes this = root.player_heir } add = 50 } } 33 = { trigger = { any_relation = { type = ward bp2_yearly_1035_is_rock_child = yes } } random_relation = { type = ward limit = { bp2_yearly_1035_is_rock_child = yes has_focus = education_learning } alternative_limit = { bp2_yearly_1035_is_rock_child = yes } save_scope_as = rock_child } } 33 = { trigger = { any_warden_hostage = { bp2_yearly_1035_is_rock_child = yes } } random_warden_hostage = { #A child you care about limit = { bp2_yearly_1035_is_rock_child = yes has_focus = education_learning } alternative_limit = { bp2_yearly_1035_is_rock_child = yes } save_scope_as = rock_child } } } root.location = { save_scope_as = trinket_location } #Create the gemstone hidden_effect = { scope:rock_child = { random_list = { 50 = { create_artifact = { name = gemstone_trinket_rough description = gemstone_trinket_rough.desc type = miscellaneous visuals = diamond modifier = artifact_monthly_minor_prestige_1_modifier modifier = artifact_learning_1_modifier save_scope_as = gemstone_trinket wealth = 15 quality = 15 max_durability = 30 generate_history = no } } 50 = { create_artifact = { name = gemstone_trinket_modest description = gemstone_trinket_modest.desc type = miscellaneous visuals = diamond modifier = artifact_monthly_minor_prestige_2_modifier modifier = artifact_learning_1_modifier save_scope_as = gemstone_trinket wealth = 15 quality = 15 max_durability = 40 generate_history = no } } 50 = { create_artifact = { name = gemstone_trinket_brilliant description = gemstone_trinket_brilliant.desc type = miscellaneous visuals = diamond modifier = artifact_monthly_minor_prestige_3_modifier modifier = artifact_learning_2_modifier save_scope_as = gemstone_trinket wealth = 15 quality = 15 max_durability = 50 generate_history = no } } } } } scope:rock_child = { set_variable = { name = had_bp2_yearly_1035_learning_event value = flag:yes } } } #Have a gem trinket option = { name = bp2_yearly.1035.a flavor = bp2_yearly.1035.a.flavor scope:gemstone_trinket = { set_owner = root } ai_chance = { base = 100 } } #Have some education option = { name = bp2_yearly.1035.b trigger = { scope:rock_child = { has_focus = education_learning } } #More points for a matching education if = { limit = { has_trait = education_learning } custom_tooltip = bp2_yearly.1035.b.tt_matching hidden_effect = { scope:rock_child = { education_point_acquisition_additional_points_effect = { LEVEL = mid } } } } else = { custom_tooltip = bp2_yearly.1035.b.tt hidden_effect = { scope:rock_child = { education_point_acquisition_additional_points_effect = { LEVEL = low } } } } reverse_add_opinion = { target = scope:rock_child modifier = teaching_moment_opinion opinion = 15 } stress_impact = { greedy = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { has_trait = greedy factor = 0 } } } } scripted_trigger bp2_yearly_1040_is_sparring_child = { age >= 7 age < 16 is_available = yes is_ai = yes location = root.location opinion = { target = root value >= medium_positive_opinion } NOT = { has_variable = had_bp2_yearly_1040_martial_event } } #Parent/Guardian: Your child/ward has a text about martial bp2_yearly.1040 = { type = character_event content_source = dlc_009 title = bp2_yearly.1040.t desc = bp2_yearly.1040.desc theme = family override_background = { reference = study } left_portrait = { character = root animation = reading } right_portrait = { character = scope:sparring_child animation = marshal_wooden_sword } #Set up the cooldown cooldown = { years = 10 } trigger = { #DLC check has_bp2_dlc_trigger = yes #Standard checks is_available = yes is_adult = yes OR = { any_child = { bp2_yearly_1040_is_sparring_child = yes } any_relation = { type = ward bp2_yearly_1040_is_sparring_child = yes } any_warden_hostage = { bp2_yearly_1040_is_sparring_child = yes } } } weight_multiplier = { base = 1 modifier = { OR = { any_child = { bp2_yearly_1040_is_sparring_child = yes has_focus = education_martial } any_relation = { type = ward bp2_yearly_1040_is_sparring_child = yes has_focus = education_martial } any_warden_hostage = { bp2_yearly_1040_is_sparring_child = yes has_focus = education_martial } } add = 1 } } immediate = { #play_music_cue = "mx_cue_low_key_positive" random_list = { 33 = { trigger = { any_child = { bp2_yearly_1040_is_sparring_child = yes } } random_child = { limit = { bp2_yearly_1040_is_sparring_child = yes has_focus = education_martial this = root.player_heir } alternative_limit = { bp2_yearly_1040_is_sparring_child = yes has_focus = education_martial } alternative_limit = { bp2_yearly_1040_is_sparring_child = yes } save_scope_as = sparring_child } modifier = { any_child = { bp2_yearly_1040_is_sparring_child = yes this = root.player_heir } add = 50 } } 33 = { trigger = { any_relation = { type = ward bp2_yearly_1040_is_sparring_child = yes } } random_relation = { type = ward limit = { bp2_yearly_1040_is_sparring_child = yes has_focus = education_martial } alternative_limit = { bp2_yearly_1040_is_sparring_child = yes } save_scope_as = sparring_child } } 33 = { trigger = { any_warden_hostage = { bp2_yearly_1040_is_sparring_child = yes } } random_warden_hostage = { #A child you care about limit = { bp2_yearly_1040_is_sparring_child = yes has_focus = education_martial } alternative_limit = { bp2_yearly_1040_is_sparring_child = yes } save_scope_as = sparring_child } } } scope:sparring_child = { set_variable = { name = had_bp2_yearly_1040_martial_event value = flag:yes } } } #Have some martial option = { name = bp2_yearly.1040.a flavor = bp2_yearly.1040.a.flavor add_martial_skill = 1 ai_chance = { base = 100 } } #Have some education option = { name = bp2_yearly.1040.b trigger = { scope:sparring_child = { has_focus = education_martial } } #More points for a matching education if = { limit = { has_trait = education_martial } custom_tooltip = bp2_yearly.1040.b.tt_matching hidden_effect = { scope:sparring_child = { education_point_acquisition_additional_points_effect = { LEVEL = mid } } } } else = { custom_tooltip = bp2_yearly.1040.b.tt hidden_effect = { scope:sparring_child = { education_point_acquisition_additional_points_effect = { LEVEL = low } } } } reverse_add_opinion = { target = scope:sparring_child modifier = teaching_moment_opinion opinion = 15 } stress_impact = { craven = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { has_trait = craven factor = 0 } } } } scripted_trigger bp2_yearly_1045_is_diplomacy_child = { age >= 7 age < 16 is_available = yes is_ai = yes location = root.location opinion = { target = root value >= medium_positive_opinion } NOT = { has_variable = had_bp2_yearly_1045_diplomacy_event } } #Parent/Guardian: There is a brawl among some children bp2_yearly.1045 = { type = character_event content_source = dlc_009 title = bp2_yearly.1045.t desc = { desc = bp2_yearly.1045.intro first_valid = { triggered_desc = { trigger = { is_parent_of = scope:diplomacy_child } desc = bp2_yearly.1045.desc_parent } desc = bp2_yearly.1045.desc_guardian } desc = bp2_yearly.1045.desc } theme = family override_background = { reference = alley_day } left_portrait = { character = root triggered_animation = { trigger = { has_trait = eccentric } animation = happiness } triggered_animation = { trigger = { OR = { has_trait = greedy has_trait = callous } } animation = personality_dishonorable } animation = worry } right_portrait = { character = scope:diplomacy_child animation = shock } #Set up the cooldown cooldown = { years = 10 } trigger = { #DLC check has_bp2_dlc_trigger = yes #Standard checks is_available = yes is_adult = yes OR = { any_child = { bp2_yearly_1045_is_diplomacy_child = yes } any_relation = { type = ward bp2_yearly_1045_is_diplomacy_child = yes } any_warden_hostage = { bp2_yearly_1045_is_diplomacy_child = yes } } } weight_multiplier = { base = 1 modifier = { OR = { any_child = { bp2_yearly_1045_is_diplomacy_child = yes has_focus = education_diplomacy } any_relation = { type = ward bp2_yearly_1045_is_diplomacy_child = yes has_focus = education_diplomacy } any_warden_hostage = { bp2_yearly_1045_is_diplomacy_child = yes has_focus = education_diplomacy } } add = 1 } } immediate = { #play_music_cue = "mx_cue_low_key_positive" random_list = { 33 = { trigger = { any_child = { bp2_yearly_1045_is_diplomacy_child = yes } } random_child = { limit = { bp2_yearly_1045_is_diplomacy_child = yes has_focus = education_diplomacy this = root.player_heir } alternative_limit = { bp2_yearly_1045_is_diplomacy_child = yes has_focus = education_diplomacy } alternative_limit = { bp2_yearly_1045_is_diplomacy_child = yes } save_scope_as = diplomacy_child } modifier = { any_child = { bp2_yearly_1045_is_diplomacy_child = yes this = root.player_heir } add = 50 } } 33 = { trigger = { any_relation = { type = ward bp2_yearly_1045_is_diplomacy_child = yes } } random_relation = { type = ward limit = { bp2_yearly_1045_is_diplomacy_child = yes has_focus = education_diplomacy } alternative_limit = { bp2_yearly_1045_is_diplomacy_child = yes } save_scope_as = diplomacy_child } } 33 = { trigger = { any_warden_hostage = { bp2_yearly_1040_is_sparring_child = yes } } random_warden_hostage = { #A child you care about limit = { bp2_yearly_1045_is_diplomacy_child = yes has_focus = education_diplomacy } alternative_limit = { bp2_yearly_1045_is_diplomacy_child = yes } save_scope_as = diplomacy_child } } } scope:diplomacy_child = { set_variable = { name = had_bp2_yearly_1045_diplomacy_event value = flag:yes } } } #Have some diplomacy option = { name = bp2_yearly.1045.a flavor = bp2_yearly.1045.a.flavor add_prestige = minor_prestige_gain if = { limit = { NOT = { has_perk = firm_hand_perk } } random = { chance = 5 send_interface_toast = { type = event_toast_effect_good title = bp2_yearly.1045.a.perk.t left_icon = root add_perk = firm_hand_perk } } } else_if = { limit = { has_lifestyle = diplomacy_lifestyle } add_learning_lifestyle_xp = minor_lifestyle_experience } else = { add_character_modifier = { modifier = august_presence_modifier years = 5 } } ai_chance = { base = 100 } } #Bet on the fight option = { name = bp2_yearly.1045.b flavor = bp2_yearly.1045.b.flavor trigger = { OR = { has_trait = greedy has_trait = eccentric has_trait = callous } } duel = { skill = learning value = medium_skill_rating 50 = { compare_modifier = { value = scope:duel_value multiplier = 3.5 min = -49 } desc = bp2_yearly.1045.b.win.desc send_interface_toast = { type = event_toast_effect_good title = bp2_yearly.1045.b.win.t left_icon = root add_gold = medium_gold_value } } 50 = { compare_modifier = { value = scope:duel_value multiplier = -3.5 min = -49 } desc = bp2_yearly.1045.b.loss.desc send_interface_toast = { type = event_toast_effect_good title = bp2_yearly.1045.b.loss.t left_icon = root remove_short_term_gold = minor_gold_value } } } stress_impact = { compassionate = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { has_trait = compassionate factor = 0 } } } #Have some education option = { name = bp2_yearly.1045.c trigger = { scope:diplomacy_child = { has_focus = education_diplomacy } } #More points for a matching education if = { limit = { has_trait = education_diplomacy } custom_tooltip = bp2_yearly.1045.c.tt_matching hidden_effect = { scope:diplomacy_child = { education_point_acquisition_additional_points_effect = { LEVEL = mid } } } } else = { custom_tooltip = bp2_yearly.1045.c.tt hidden_effect = { scope:diplomacy_child = { education_point_acquisition_additional_points_effect = { LEVEL = low } } } } reverse_add_opinion = { target = scope:diplomacy_child modifier = teaching_moment_opinion opinion = 15 } stress_impact = { craven = minor_stress_impact_loss } ai_chance = { base = 100 } } } ################# ## Event Chain ## ## The Builder ## ## 1050 - 1072 ## ################# #These effects keeps track of what our latest choice was scripted_effect the_builder_stewardship_choice_tracker_effect = { #Record the latest choice if = { limit = { NOT = { exists = var:the_builder_latest_choice } } set_variable = { name = the_builder_latest_choice value = flag:stewardship } } else = { remove_variable = the_builder_latest_choice set_variable = { name = the_builder_latest_choice value = flag:stewardship } } } #These effects increments the amount of any particular choice (had to separate it to display the present/past effect correctly) scripted_effect the_builder_stewardship_increment_effect = { #We stack if = { limit = { NOT = { exists = var:the_builder_stewardship_choices } } set_variable = { name = the_builder_stewardship_choices value = 1 } } else = { change_variable = { name = the_builder_stewardship_choices add = 1 } } #Pick something else and we reset if = { limit = { exists = var:the_builder_martial_choices } remove_variable = the_builder_martial_choices } if = { limit = { exists = var:the_builder_learning_choices } remove_variable = the_builder_learning_choices } } scripted_effect the_builder_martial_choice_tracker_effect = { #Record the latest choice if = { limit = { NOT = { exists = var:the_builder_latest_choice } } set_variable = { name = the_builder_latest_choice value = flag:martial } } else = { remove_variable = the_builder_latest_choice set_variable = { name = the_builder_latest_choice value = flag:martial } } } scripted_effect the_builder_martial_increment_effect = { #We stack if = { limit = { NOT = { exists = var:the_builder_martial_choices } } set_variable = { name = the_builder_martial_choices value = 1 } } else = { change_variable = { name = the_builder_martial_choices add = 1 } } #Pick something else and we reset if = { limit = { exists = var:the_builder_learning_choices } remove_variable = the_builder_learning_choices } if = { limit = { exists = var:the_builder_stewardship_choices } remove_variable = the_builder_stewardship_choices } } scripted_effect the_builder_learning_choice_tracker_effect = { #Record the latest choice if = { limit = { NOT = { exists = var:the_builder_latest_choice } } set_variable = { name = the_builder_latest_choice value = flag:learning } } else = { remove_variable = the_builder_latest_choice set_variable = { name = the_builder_latest_choice value = flag:learning } } } scripted_effect the_builder_learning_increment_effect = { #We stack if = { limit = { NOT = { exists = var:the_builder_learning_choices } } set_variable = { name = the_builder_learning_choices value = 1 } } else = { change_variable = { name = the_builder_learning_choices add = 1 } } #Pick something else and we reset if = { limit = { exists = var:the_builder_stewardship_choices } remove_variable = the_builder_stewardship_choices } if = { limit = { exists = var:the_builder_martial_choices } remove_variable = the_builder_martial_choices } } #The tide/storm is ruining your sand/twigcastle! bp2_yearly.1050 = { type = character_event content_source = dlc_009 title = { first_valid = { triggered_desc = { trigger = { root.location = { OR = { county = { is_coastal_county = yes } graphical_wilderness_desert_trigger = yes } } } desc = bp2_yearly.1050.t } desc = bp2_yearly.1050.t_twig } } desc = { first_valid = { triggered_desc = { trigger = { root.location = { county = { is_coastal_county = yes } } } desc = bp2_yearly.1050.desc } triggered_desc = { trigger = { root.location = { graphical_wilderness_desert_trigger = yes } } desc = bp2_yearly.1050.desc_desert } desc = bp2_yearly.1050.desc_twig } } theme = education override_background = { trigger = { root.location = { county = { is_coastal_county = yes } } } reference = bp3_coast } #Some more flavor than simply using reference = terrain override_background = { trigger = { root.location = { graphical_wilderness_desert_trigger = yes } } reference = wilderness_desert } override_background = { trigger = { root.location = { graphical_wilderness_forest_pine_trigger = yes } } reference = ep2_hunt_foggy_forest } override_background = { trigger = { root.location = { graphical_wilderness_jungle_trigger = yes } } reference = wilderness_jungle } override_background = { trigger = { root.location = { graphical_wilderness_steppe_trigger = yes } } reference = ep2_travel_settlement_steppe } override_background = { trigger = { root.location = { graphical_drylands_trigger = yes } } reference = drylands } #Fallback override_background = { reference = ep2_hunt_foggy_forest } left_portrait = { character = root animation = thinking } trigger = { #DLC check has_bp2_dlc_trigger = yes #Standard checks is_available = yes is_landed_or_landless_administrative = yes age >= 4 age <= 10 NOT = { has_variable = had_builder_event_chain } #If the child is AI, we don't want a player regent to get snubbed by the AI builder child trigger_if = { limit = { is_ai = yes } has_active_diarchy = yes diarch = { is_ai = yes } } } weight_multiplier = { base = 1 modifier = { is_ai = no add = 10 #Should reach 50 in the on_action trigger for the chain to start } } immediate = { #play_music_cue = "mx_cue_low_key_positive" set_variable = { name = had_builder_event_chain } } #Bribe nature option = { name = { text = { first_valid = { triggered_desc = { trigger = { root.location = { county = { is_coastal_county = yes } } } desc = bp2_yearly.1050.a } desc = bp2_yearly.1050.a_twig } } } flavor = { first_valid = { triggered_desc = { trigger = { root.location = { county = { is_coastal_county = yes } } } desc = bp2_yearly.1050.a.flavor } desc = bp2_yearly.1050.a.flavor_twig } } the_builder_stewardship_choice_tracker_effect = yes the_builder_stewardship_increment_effect = yes add_stewardship_skill = 1 ai_chance = { base = 100 modifier = { ai_has_pious_builder_personality = yes factor = 0 } modifier = { ai_has_warlike_personality = yes factor = 0 } modifier = { has_trait = zealous factor = 0 } modifier = { has_trait = craven factor = 0 } } } #Build walls option = { name = bp2_yearly.1050.b flavor = bp2_yearly.1050.b.flavor the_builder_martial_choice_tracker_effect = yes the_builder_martial_increment_effect = yes add_martial_skill = 1 ai_chance = { base = 100 modifier = { ai_has_pious_builder_personality = yes factor = 0 } modifier = { ai_has_economical_boom_personality = yes factor = 0 } modifier = { has_trait = zealous factor = 0 } modifier = { has_trait = greedy factor = 0 } } } #Build a tiny altar option = { name = bp2_yearly.1050.c flavor = bp2_yearly.1050.c.flavor the_builder_learning_choice_tracker_effect = yes the_builder_learning_increment_effect = yes add_learning_skill = 1 ai_chance = { base = 100 modifier = { ai_has_economical_boom_personality = yes factor = 0 } modifier = { ai_has_warlike_personality = yes factor = 0 } modifier = { has_trait = greedy factor = 0 } modifier = { has_trait = craven factor = 0 } } } after = { trigger_event = { id = bp2_yearly.1051 days = 1 } } } #Follow-up: Curse you, tide! bp2_yearly.1051 = { type = character_event content_source = dlc_009 title = { first_valid = { triggered_desc = { trigger = { root.location = { OR = { county = { is_coastal_county = yes } graphical_wilderness_desert_trigger = yes } } } desc = bp2_yearly.1051.t } desc = bp2_yearly.1051.t_twig } } desc = { first_valid = { triggered_desc = { trigger = { root.location = { county = { is_coastal_county = yes } } } desc = bp2_yearly.1051.desc } triggered_desc = { trigger = { root.location = { graphical_wilderness_desert_trigger = yes } } desc = bp2_yearly.1051.desc_desert } desc = bp2_yearly.1051.desc_twig } desc = bp2_yearly.1051.outro } theme = education #Oh beach background; where art thou override_background = { trigger = { root.location = { county = { is_coastal_county = yes } } } reference = market_tribal #This is the closest to a beach -well this or wetlands and I personally have a hard time seeing a sand castle in a marsh- we have that doesn't star a massive longship atm } #Some more flavor than simply using reference = terrain override_background = { trigger = { root.location = { graphical_wilderness_desert_trigger = yes } } reference = wilderness_desert } override_background = { trigger = { root.location = { graphical_wilderness_forest_pine_trigger = yes } } reference = ep2_forest_managed } override_background = { trigger = { root.location = { graphical_wilderness_jungle_trigger = yes } } reference = wilderness_jungle } override_background = { trigger = { root.location = { graphical_wilderness_steppe_trigger = yes } } reference = ep2_travel_settlement_steppe } override_background = { trigger = { root.location = { graphical_drylands_trigger = yes } } reference = drylands } #Fallback override_background = { reference = wilderness_forest_pine } left_portrait = { character = root animation = personality_cynical } artifact = { target = scope:iridescent_stone_trinket position = lower_center_portrait } immediate = { #play_music_cue = "mx_cue_positive_effect" if = { limit = { var:the_builder_latest_choice ?= flag:stewardship } create_artifact = { name = iridescent_stone_trinket description = iridescent_stone_trinket.desc type = miscellaneous visuals = diamond modifier = artifact_stewardship_1_modifier modifier = artifact_stewardship_lifestyle_xp_2_modifier save_scope_as = iridescent_stone_trinket wealth = 15 quality = 15 max_durability = 40 history = { type = created_before_history } } } if = { limit = { var:the_builder_latest_choice ?= flag:martial } create_artifact = { name = iridescent_stone_trinket description = iridescent_stone_trinket.desc type = miscellaneous visuals = diamond modifier = artifact_martial_1_modifier modifier = artifact_martial_lifestyle_xp_2_modifier save_scope_as = iridescent_stone_trinket wealth = 15 quality = 15 max_durability = 40 history = { type = created_before_history } } } if = { limit = { var:the_builder_latest_choice ?= flag:learning } create_artifact = { name = iridescent_stone_trinket description = iridescent_stone_trinket.desc type = miscellaneous visuals = diamond modifier = artifact_learning_1_modifier modifier = artifact_learning_lifestyle_xp_2_modifier save_scope_as = iridescent_stone_trinket wealth = 15 quality = 15 max_durability = 40 history = { type = created_before_history } } } } #Curse you, tide/storm! option = { name = { text = { first_valid = { triggered_desc = { trigger = { root.location = { county = { is_coastal_county = yes } } } desc = bp2_yearly.1051.a } desc = bp2_yearly.1051.a_twig } } } } #We are 4-10 years after = { if = { limit = { age = 4 } trigger_event = { id = bp2_yearly.1055 years = 4 } } else_if = { limit = { age = 5 } trigger_event = { id = bp2_yearly.1055 years = 3 } } else_if = { limit = { age = 6 } trigger_event = { id = bp2_yearly.1055 years = 2 } } else_if = { limit = { age = 10 } trigger_event = { id = bp2_yearly.1055 years = 1 } } #7-9 years else = { trigger_event = { id = bp2_yearly.1055 years = { 1 2 } } } } } ################# #If we for whatever reason don't finish the event chain, clean up the flags and variables scripted_effect the_builder_clean_up_flags_effect = { if = { limit = { exists = var:the_builder_latest_choice } remove_variable = the_builder_latest_choice } if = { limit = { exists = var:the_builder_stewardship_choices } remove_variable = the_builder_stewardship_choices } if = { limit = { exists = var:the_builder_martial_choices } remove_variable = the_builder_martial_choices } if = { limit = { exists = var:the_builder_learning_choices } remove_variable = the_builder_learning_choices } } #These effects accurately checks and rewards your any particular stacked type of decision scripted_effect the_builder_stacking_stewardship_rewards_effect = { #Stewardship if = { limit = { var:the_builder_latest_choice ?= flag:stewardship } if = { limit = { exists = var:the_builder_stewardship_choices } if = { limit = { var:the_builder_stewardship_choices >= 4 } #To get that sweet sweet past version of the tooltip if the effect has already happened custom_description_no_bullet = { text = reminds_of_childhood_decision } add_gold = major_gold_value } else_if = { limit = { var:the_builder_stewardship_choices = 3 } #To get that sweet sweet past version of the tooltip if the effect has already happened custom_description_no_bullet = { text = reminds_of_childhood_decision } add_gold = medium_gold_value } else_if = { limit = { var:the_builder_stewardship_choices = 2 } #To get that sweet sweet past version of the tooltip if the effect has already happened custom_description_no_bullet = { text = reminds_of_childhood_decision } add_gold = minor_gold_value } else_if = { limit = { var:the_builder_stewardship_choices = 1 } #To get that sweet sweet past version of the tooltip if the effect has already happened custom_description_no_bullet = { text = reminds_of_childhood_decision } add_gold = tiny_gold_value } } } } scripted_effect the_builder_stacking_martial_rewards_effect = { #Martial if = { limit = { var:the_builder_latest_choice ?= flag:martial } if = { limit = { exists = var:the_builder_martial_choices } if = { limit = { var:the_builder_martial_choices >= 4 } #To get that sweet sweet past version of the tooltip if the effect has already happened custom_description_no_bullet = { text = reminds_of_childhood_decision } add_prestige = major_prestige_gain } else_if = { limit = { var:the_builder_martial_choices = 3 } #To get that sweet sweet past version of the tooltip if the effect has already happened custom_description_no_bullet = { text = reminds_of_childhood_decision } add_prestige = medium_prestige_gain } else_if = { limit = { var:the_builder_martial_choices = 2 } #To get that sweet sweet past version of the tooltip if the effect has already happened custom_description_no_bullet = { text = reminds_of_childhood_decision } add_prestige = minor_prestige_gain } else_if = { limit = { var:the_builder_martial_choices = 1 } #To get that sweet sweet past version of the tooltip if the effect has already happened custom_description_no_bullet = { text = reminds_of_childhood_decision } add_prestige = miniscule_prestige_gain } } } } scripted_effect the_builder_stacking_learning_rewards_effect = { #Learning if = { limit = { var:the_builder_latest_choice ?= flag:learning } if = { limit = { exists = var:the_builder_learning_choices } if = { limit = { var:the_builder_learning_choices >= 4 } #To get that sweet sweet past version of the tooltip if the effect has already happened custom_description_no_bullet = { text = reminds_of_childhood_decision } add_piety = major_piety_gain } else_if = { limit = { var:the_builder_learning_choices = 3 } #To get that sweet sweet past version of the tooltip if the effect has already happened custom_description_no_bullet = { text = reminds_of_childhood_decision } add_piety = medium_piety_gain } else_if = { limit = { var:the_builder_learning_choices = 2 } #To get that sweet sweet past version of the tooltip if the effect has already happened custom_description_no_bullet = { text = reminds_of_childhood_decision } add_piety = minor_piety_gain } else_if = { limit = { var:the_builder_learning_choices = 1 } #To get that sweet sweet past version of the tooltip if the effect has already happened custom_description_no_bullet = { text = reminds_of_childhood_decision } add_piety = miniscule_piety_gain } } } } scripted_effect bp2_yearly_1055_economy_effect = { the_builder_stacking_stewardship_rewards_effect = yes add_stewardship_skill = 1 if = { limit = { scope:den_challenger = { is_alive = yes } } worsen_relationship_effect = { TARGET = scope:den_challenger REASON = rival_paid_to_win } } } scripted_effect bp2_yearly_1055_martial_effect = { the_builder_stacking_martial_rewards_effect = yes add_martial_skill = 1 improve_relationship_effect = { TARGET = scope:den_challenger REASON = friend_built_den_together } if = { limit = { has_relation_bully = scope:den_challenger } add_prestige = minor_prestige_loss } if = { limit = { scope:den_challenger = { NOT = { is_in_the_same_court_as = root } } } add_courtier = scope:den_challenger } } scripted_effect bp2_yearly_1055_sacred_effect = { the_builder_stacking_learning_rewards_effect = yes create_artifact = { name = holy_stick description = holy_stick.desc type = spear visuals = spear modifier = artifact_learning_lifestyle_xp_1_modifier modifier = artifact_learning_2_modifier save_scope_as = holy_stick_artifact wealth = 25 quality = 25 max_durability = 40 generate_history = no } add_learning_skill = 1 } #You are challenged to a den-building competition bp2_yearly.1055 = { type = character_event content_source = dlc_009 title = bp2_yearly.1055.t desc = { desc = bp2_yearly.1055.desc first_valid = { triggered_desc = { trigger = { OR = { is_close_family_of = scope:den_challenger is_extended_family_of = scope:den_challenger } } desc = bp2_yearly.1055.desc_related } triggered_desc = { trigger = { OR = { has_relation_crush = scope:den_challenger has_relation_friend = scope:den_challenger has_relation_best_friend = scope:den_challenger has_relation_bully = scope:den_challenger } } desc = bp2_yearly.1055.desc_relations } desc = bp2_yearly.1055.desc_liege } desc = bp2_yearly.1055.outro } theme = education #Some more flavor than simply using reference = terrain override_background = { trigger = { root.location = { graphical_wilderness_jungle_trigger = yes } } reference = wilderness_jungle } override_background = { trigger = { root.location = { graphical_wilderness_steppe_trigger = yes } } reference = ep2_travel_settlement_steppe } override_background = { trigger = { root.location = { OR = { graphical_drylands_trigger = yes graphical_wilderness_desert_trigger = yes } } } reference = drylands } #Fallback override_background = { reference = ep2_hunt_forest_hut } left_portrait = { character = root animation = personality_bold } right_portrait = { character = scope:den_challenger animation = schadenfreude } trigger = { is_available = yes is_landed_or_landless_administrative = yes #If the child is AI, we don't want a player regent to get snubbed by the AI builder child trigger_if = { limit = { is_ai = yes } has_active_diarchy = yes diarch = { is_ai = yes } } } on_trigger_fail = { the_builder_clean_up_flags_effect = yes } immediate = { #play_music_cue = "mx_cue_low_key_positive" if = { limit = { any_relation = { type = bully is_available_ai = yes } } random_relation = { type = bully limit = { is_available_ai = yes } save_scope_as = den_challenger } } else_if = { limit = { any_courtier_or_guest = { is_available_ai = yes is_adult = no age > 8 } } random_courtier = { limit = { is_available_ai = yes is_adult = no age > 8 } save_scope_as = den_challenger } } else_if = { limit = { any_pool_character = { province = root.location is_available_ai = yes is_adult = no age > 8 } } random_pool_character = { province = root.location limit = { is_available_ai = yes is_adult = no age > 8 } save_scope_as = den_challenger } } else = { create_character = { location = root.location template = peasant_child_character age = { 9 13 } culture = root.location.culture faith = root.location.faith save_scope_as = den_challenger after_creation = { add_character_flag = created } } } } #Use the virtue of 'free' labor option = { name = bp2_yearly.1055.a flavor = bp2_yearly.1055.a.flavor the_builder_stewardship_choice_tracker_effect = yes show_as_tooltip = { bp2_yearly_1055_economy_effect = yes } ai_chance = { base = 100 modifier = { has_trait = zealous factor = 0 } modifier = { has_trait = gregarious factor = 0 } } } #Build higher walls _together_! option = { name = bp2_yearly.1055.b flavor = bp2_yearly.1055.b.flavor the_builder_martial_choice_tracker_effect = yes show_as_tooltip = { bp2_yearly_1055_martial_effect = yes } ai_chance = { base = 100 modifier = { has_trait = zealous factor = 0 } modifier = { has_trait = arrogant factor = 0 } } } #Pft, only Deity can judge _me_ option = { name = bp2_yearly.1055.c flavor = bp2_yearly.1055.c.flavor the_builder_learning_choice_tracker_effect = yes show_as_tooltip = { the_builder_stacking_learning_rewards_effect = yes add_learning_skill = 1 } ai_chance = { base = 100 modifier = { has_trait = gregarious factor = 0 } modifier = { has_trait = arrogant factor = 0 } } } after = { trigger_event = { id = bp2_yearly.1056 days = 1 } } } #Follow-up: Things went down in the woods bp2_yearly.1056 = { type = character_event content_source = dlc_009 title = { first_valid = { triggered_desc = { trigger = { var:the_builder_latest_choice ?= flag:stewardship } desc = bp2_yearly.1056.t_economy } triggered_desc = { trigger = { var:the_builder_latest_choice ?= flag:martial } desc = bp2_yearly.1056.t_martial } desc = bp2_yearly.1056.t_pious } } desc = { first_valid = { triggered_desc = { trigger = { var:the_builder_latest_choice ?= flag:stewardship } desc = bp2_yearly.1056.desc_economy } triggered_desc = { trigger = { var:the_builder_latest_choice ?= flag:martial } desc = bp2_yearly.1056.desc_martial } desc = bp2_yearly.1056.desc_pious } } theme = education #Some more flavor than simply using reference = terrain override_background = { trigger = { root.location = { graphical_wilderness_jungle_trigger = yes } } reference = wilderness_jungle } override_background = { trigger = { root.location = { graphical_wilderness_steppe_trigger = yes } } reference = ep2_travel_settlement_steppe } override_background = { trigger = { root.location = { OR = { graphical_drylands_trigger = yes graphical_wilderness_desert_trigger = yes } } } reference = drylands } #Fallback override_background = { reference = ep2_hunt_forest_cave } left_portrait = { character = root triggered_animation = { trigger = { var:the_builder_latest_choice ?= flag:stewardship } animation = personality_dishonorable } triggered_animation = { trigger = { var:the_builder_latest_choice ?= flag:martial } animation = admiration } animation = disbelief } right_portrait = { trigger = { root = { OR = { var:the_builder_latest_choice ?= flag:stewardship var:the_builder_latest_choice ?= flag:martial } } } triggered_animation = { trigger = { root = { var:the_builder_latest_choice ?= flag:stewardship } } animation = disapproval } character = scope:den_challenger animation = happiness } artifact = { trigger = { exists = scope:holy_stick_artifact } target = scope:holy_stick_artifact position = lower_center_portrait } immediate = { #play_music_cue = "mx_cue_low_key_positive" if = { limit = { var:the_builder_latest_choice ?= flag:stewardship } bp2_yearly_1055_economy_effect = yes the_builder_stewardship_increment_effect = yes } else_if = { limit = { var:the_builder_latest_choice ?= flag:martial } bp2_yearly_1055_martial_effect = yes the_builder_martial_increment_effect = yes } else = { bp2_yearly_1055_sacred_effect = yes the_builder_learning_increment_effect = yes } } #Alright option = { name = { text = { first_valid = { triggered_desc = { trigger = { var:the_builder_latest_choice ?= flag:stewardship } desc = bp2_yearly.1056.a_economy } triggered_desc = { trigger = { var:the_builder_latest_choice ?= flag:martial } desc = bp2_yearly.1056.a_martial } desc = bp2_yearly.1056.a_pious } } } #Effects are handled in the immediate } #We are 8-11 years after = { if = { limit = { age = 8 } trigger_event = { id = bp2_yearly.1060 years = { 4 5 } } } else_if = { limit = { age = 9 } trigger_event = { id = bp2_yearly.1060 years = { 3 4 } } } #10-11 years else = { trigger_event = { id = bp2_yearly.1060 years = { 1 2 } } } scope:den_challenger = { # created in the preceding event, but necessary for the immediate and the narrative in this one silent_disappearance_ai_if_created_effect = yes } } } ################# scripted_trigger bp2_yearly_1060_appropriate_character_trigger = { NOR = { opinion = { target = root value < medium_negative_opinion } has_relation_rival = root has_relation_nemesis = root this = root } is_available_ai = yes location = root.location } scripted_effect bp2_yearly_1060_give_economical_reward_effect = { the_builder_stacking_stewardship_rewards_effect = yes scope:economical_architecture_book = { set_owner = root add_artifact_history = { location = root.location actor = scope:steward_character recipient = root type = given } } add_stewardship_skill = 1 improve_relationship_effect = { TARGET = scope:steward_character REASON = friend_bonded_over_economical_architecture } } scripted_effect bp2_yearly_1060_give_martial_reward_effect = { the_builder_stacking_martial_rewards_effect = yes scope:martial_architecture_book = { set_owner = root add_artifact_history = { location = root.location actor = scope:martial_character recipient = root type = given } } add_martial_skill = 1 improve_relationship_effect = { TARGET = scope:martial_character REASON = friend_bonded_over_martial_architecture } } scripted_effect bp2_yearly_1060_give_learned_reward_effect = { the_builder_stacking_learning_rewards_effect = yes scope:religious_architecture_book = { set_owner = root add_artifact_history = { location = root.location actor = scope:learned_character recipient = root type = given } } add_learning_skill = 1 improve_relationship_effect = { TARGET = scope:learned_character REASON = friend_bonded_over_religious_architecture } } #Appreciate the architecture of your capital bp2_yearly.1060 = { type = character_event content_source = dlc_009 title = bp2_yearly.1060.t desc = bp2_yearly.1060.desc theme = education override_background = { reference = courtyard } left_portrait = { character = root animation = thinking } lower_left_portrait = { character = scope:steward_character } lower_center_portrait = { character = scope:martial_character } lower_right_portrait = { character = scope:learned_character } trigger = { is_available = yes is_landed_or_landless_administrative = yes exists = capital_province #If the child is AI, we don't want a player regent to get snubbed by the AI builder child trigger_if = { limit = { is_ai = yes } has_active_diarchy = yes diarch = { is_ai = yes } } } on_trigger_fail = { the_builder_clean_up_flags_effect = yes } immediate = { #play_music_cue = "mx_cue_low_key_positive" set_variable = { name = the_builder_sightseed_capital value = capital_province } #Find a steward character if = { limit = { cp:councillor_steward ?= { bp2_yearly_1060_appropriate_character_trigger = yes } } cp:councillor_steward = { save_scope_as = steward_character } } #Or a steward-savvy courtier else_if = { limit = { any_courtier_or_guest = { bp2_yearly_1060_appropriate_character_trigger = yes stewardship >= medium_skill_rating } } random_courtier_or_guest = { limit = { bp2_yearly_1060_appropriate_character_trigger = yes stewardship >= medium_skill_rating } add_to_list = potential_steward_characters } ordered_in_list = { list = potential_steward_characters order_by = stewardship save_scope_as = steward_character } } #Or a steward-savvy pool character else_if = { limit = { any_pool_character = { province = root.location bp2_yearly_1060_appropriate_character_trigger = yes stewardship >= medium_skill_rating } } random_pool_character = { province = root.location limit = { bp2_yearly_1060_appropriate_character_trigger = yes stewardship >= medium_skill_rating } save_scope_as = steward_character } #And add them to court hidden_effect = { add_courtier = scope:steward_character } } #Or simply create a steward-savvy character else = { create_character = { location = root.location template = bp1_yearly_2021_stewardship_person_template save_scope_as = steward_character after_creation = { add_character_flag = created } } #And add them to court hidden_effect = { add_courtier = scope:steward_character } } #Give them a steward architecture book hidden_effect_new_object = { scope:steward_character = { if = { limit = { artifacts_use_indian_books_trigger = yes } create_artifact = { name = economical_architecture_book description = economical_architecture_book_desc type = journal visuals = indian_book modifier = artifact_stewardship_lifestyle_xp_2_modifier modifier = artifact_stewardship_1_modifier modifier = artifact_city_holding_build_speed_add_1_modifier save_scope_as = economical_architecture_book } } else = { create_artifact = { name = economical_architecture_book description = economical_architecture_book_desc type = journal visuals = book modifier = artifact_stewardship_lifestyle_xp_2_modifier modifier = artifact_stewardship_1_modifier modifier = artifact_city_holding_build_speed_add_1_modifier save_scope_as = economical_architecture_book } } } } #Find a martial character if = { limit = { cp:councillor_marshal ?= { bp2_yearly_1060_appropriate_character_trigger = yes this != scope:steward_character } } cp:councillor_marshal = { save_scope_as = martial_character } } #Or a martial-savvy courtier else_if = { limit = { any_courtier_or_guest = { bp2_yearly_1060_appropriate_character_trigger = yes martial >= medium_skill_rating this != scope:steward_character } } random_courtier_or_guest = { limit = { bp2_yearly_1060_appropriate_character_trigger = yes martial >= medium_skill_rating this != scope:steward_character } add_to_list = potential_martial_characters } ordered_in_list = { list = potential_martial_characters order_by = martial save_scope_as = martial_character } } else_if = { limit = { any_pool_character = { province = root.location bp2_yearly_1060_appropriate_character_trigger = yes martial >= medium_skill_rating this != scope:steward_character } } random_pool_character = { province = root.location limit = { bp2_yearly_1060_appropriate_character_trigger = yes martial >= medium_skill_rating this != scope:steward_character } save_scope_as = martial_character } #And add them to court hidden_effect = { add_courtier = scope:martial_character } } #Or simply create a martial-savvy character else = { create_character = { location = root.location template = bp1_yearly_2021_martial_person_template save_scope_as = martial_character after_creation = { add_character_flag = created } } #And add them to court hidden_effect = { add_courtier = scope:martial_character } } #Give them a martial architecture book hidden_effect_new_object = { scope:martial_character = { if = { limit = { artifacts_use_indian_books_trigger = yes } create_artifact = { name = martial_architecture_book description = martial_architecture_book_desc type = journal visuals = indian_book modifier = artifact_martial_lifestyle_xp_2_modifier modifier = artifact_martial_1_modifier modifier = artifact_castle_holding_build_speed_add_1_modifier save_scope_as = martial_architecture_book } } else = { create_artifact = { name = martial_architecture_book description = martial_architecture_book_desc type = journal visuals = book modifier = artifact_martial_lifestyle_xp_2_modifier modifier = artifact_martial_1_modifier modifier = artifact_castle_holding_build_speed_add_1_modifier save_scope_as = martial_architecture_book } } } } #Find a learned character if = { limit = { cp:councillor_court_chaplain ?= { bp2_yearly_1060_appropriate_character_trigger = yes NOR = { this = scope:steward_character this = scope:martial_character } } } cp:councillor_court_chaplain = { save_scope_as = learned_character } } #Or a learning-savvy courtier else_if = { limit = { any_courtier_or_guest = { bp2_yearly_1060_appropriate_character_trigger = yes learning >= medium_skill_rating NOR = { this = scope:steward_character this = scope:martial_character } } } random_courtier_or_guest = { limit = { bp2_yearly_1060_appropriate_character_trigger = yes learning >= medium_skill_rating NOR = { this = scope:steward_character this = scope:martial_character } } add_to_list = potential_learned_characters } ordered_in_list = { list = potential_learned_characters order_by = learning save_scope_as = learned_character } } #Or a learning-savvy pool character else_if = { limit = { any_pool_character = { province = root.location bp2_yearly_1060_appropriate_character_trigger = yes learning >= medium_skill_rating NOR = { this = scope:steward_character this = scope:martial_character } } } random_pool_character = { province = root.location limit = { bp2_yearly_1060_appropriate_character_trigger = yes learning >= medium_skill_rating NOR = { this = scope:steward_character this = scope:martial_character } } save_scope_as = learned_character } #And add them to court hidden_effect = { add_courtier = scope:learned_character } } #Or simply create a learning-savvy character else = { create_character = { location = root.location template = bp1_yearly_2021_learning_person_template save_scope_as = learned_character after_creation = { add_character_flag = created } } #And add them to court hidden_effect = { add_courtier = scope:learned_character } } #Give them a religious architecture book hidden_effect_new_object = { scope:learned_character = { if = { limit = { artifacts_use_indian_books_trigger = yes } create_artifact = { name = religious_architecture_book description = religious_architecture_book_desc type = journal visuals = indian_book modifier = artifact_learning_lifestyle_xp_2_modifier modifier = artifact_learning_1_modifier modifier = artifact_church_holding_build_speed_add_1_modifier save_scope_as = religious_architecture_book } } else = { create_artifact = { name = religious_architecture_book description = religious_architecture_book_desc type = journal visuals = book modifier = artifact_learning_lifestyle_xp_2_modifier modifier = artifact_learning_1_modifier modifier = artifact_church_holding_build_speed_add_1_modifier save_scope_as = religious_architecture_book } } } } } #Check out _that_ tradeport option = { name = bp2_yearly.1060.a flavor = bp2_yearly.1060.a.flavor the_builder_stewardship_choice_tracker_effect = yes show_as_tooltip = { bp2_yearly_1060_give_economical_reward_effect = yes } ai_chance = { base = 100 modifier = { has_trait = zealous factor = 0 } modifier = { has_trait = craven factor = 0 } } } #I like a good wall option = { name = bp2_yearly.1060.b flavor = bp2_yearly.1060.b.flavor the_builder_martial_choice_tracker_effect = yes show_as_tooltip = { bp2_yearly_1060_give_martial_reward_effect = yes } ai_chance = { base = 100 modifier = { has_trait = zealous factor = 0 } modifier = { has_trait = greedy factor = 0 } } } #The temple, obviously option = { name = bp2_yearly.1060.c flavor = bp2_yearly.1060.c.flavor the_builder_learning_choice_tracker_effect = yes show_as_tooltip = { bp2_yearly_1060_give_learned_reward_effect = yes } ai_chance = { base = 100 modifier = { has_trait = craven factor = 0 } modifier = { has_trait = greedy factor = 0 } } } after = { trigger_event = { id = bp2_yearly.1061 days = 1 } scope:steward_character ?= { silent_disappearance_ai_if_created_effect = yes } scope:martial_character ?= { silent_disappearance_ai_if_created_effect = yes } scope:learned_character ?= { silent_disappearance_ai_if_created_effect = yes } } } #Follow-up: You spend the day with WhatsTheirFace bp2_yearly.1061 = { type = character_event content_source = dlc_009 title = bp2_yearly.1061.t desc = { first_valid = { triggered_desc = { trigger = { var:the_builder_latest_choice ?= flag:stewardship } desc = bp2_yearly.1061.desc_steward } triggered_desc = { trigger = { var:the_builder_latest_choice ?= flag:martial } desc = bp2_yearly.1061.desc_martial } desc = bp2_yearly.1061.desc_religion } desc = bp2_yearly.1061.outro } theme = education override_background = { trigger = { var:the_builder_latest_choice ?= flag:stewardship } reference = market } override_background = { trigger = { var:the_builder_latest_choice ?= flag:martial } reference = armory } override_background = { trigger = { var:the_builder_latest_choice ?= flag:learning } reference = holy_site_generic } left_portrait = { character = root animation = happiness } right_portrait = { character = scope:architecture_character animation = personality_compassionate } artifact = { target = scope:book_to_get position = lower_center_portrait } immediate = { #play_music_cue = "mx_cue_low_key_positive" #Save character for the portrait if = { limit = { var:the_builder_latest_choice ?= flag:stewardship } scope:steward_character = { save_scope_as = architecture_character } scope:economical_architecture_book = { save_scope_as = book_to_get } bp2_yearly_1060_give_economical_reward_effect = yes the_builder_stewardship_increment_effect = yes } else_if = { limit = { var:the_builder_latest_choice ?= flag:martial } scope:martial_character = { save_scope_as = architecture_character } scope:martial_architecture_book = { save_scope_as = book_to_get } bp2_yearly_1060_give_martial_reward_effect = yes the_builder_martial_increment_effect = yes } else = { scope:learned_character = { save_scope_as = architecture_character } scope:religious_architecture_book = { save_scope_as = book_to_get } bp2_yearly_1060_give_learned_reward_effect = yes the_builder_learning_increment_effect = yes } } #Alright option = { name = bp2_yearly.1061.a flavor = bp2_yearly.1061.a.flavor #Effect is handled in immediate } #We are 12-13 years after = { trigger_event = { id = bp2_yearly.1065 years = { 1 2 } } } } ################# scripted_trigger bp2_yearly.1065_appropriate_province_trigger = { trigger_if = { limit = { exists = barony.holder } barony.holder = { is_ai = yes } } has_holding = yes has_free_building_slot = yes } scripted_trigger bp2_yearly_1065_can_build_building_trigger = { building_$BUILDING$_requirement_terrain = yes NOT = { has_building = $BUILDING$_08 } } scripted_effect bp2_yearly_1065_add_buff_effect = { if = { limit = { has_province_modifier = $DIRECTION$_improvements_modifier } remove_province_modifier = $DIRECTION$_improvements_modifier add_province_modifier = { modifier = $DIRECTION$_improvements_modifier years = 10 } } else = { add_province_modifier = { modifier = $DIRECTION$_improvements_modifier years = 10 } } } scripted_effect bp2_yearly_1065_determine_economical_building_effect = { #Can we actually build one of these buildings? if = { limit = { OR = { bp2_yearly_1065_can_build_building_trigger = { BUILDING = common_tradeport } bp2_yearly_1065_can_build_building_trigger = { BUILDING = pastures } bp2_yearly_1065_can_build_building_trigger = { BUILDING = hunting_grounds } bp2_yearly_1065_can_build_building_trigger = { BUILDING = orchards } bp2_yearly_1065_can_build_building_trigger = { BUILDING = farm_estates } bp2_yearly_1065_can_build_building_trigger = { BUILDING = cereal_fields } bp2_yearly_1065_can_build_building_trigger = { BUILDING = logging_camps } bp2_yearly_1065_can_build_building_trigger = { BUILDING = peat_quarries } bp2_yearly_1065_can_build_building_trigger = { BUILDING = hill_farms } bp2_yearly_1065_can_build_building_trigger = { BUILDING = elephant_pens } bp2_yearly_1065_can_build_building_trigger = { BUILDING = plantations } bp2_yearly_1065_can_build_building_trigger = { BUILDING = quarries } } } #Yes? In that case, randomize which! random_list = { #Tradeport 10 = { trigger = { bp2_yearly_1065_can_build_building_trigger = { BUILDING = common_tradeport } } set_variable = { name = bp2_yearly_1065_economical_building value = flag:common_tradeport } } #Pastures 10 = { trigger = { bp2_yearly_1065_can_build_building_trigger = { BUILDING = pastures } } set_variable = { name = bp2_yearly_1065_economical_building value = flag:pastures } } #Hunting Grounds 10 = { trigger = { bp2_yearly_1065_can_build_building_trigger = { BUILDING = hunting_grounds } } set_variable = { name = bp2_yearly_1065_economical_building value = flag:hunting_grounds } } #Orchards 10 = { trigger = { bp2_yearly_1065_can_build_building_trigger = { BUILDING = orchards } } set_variable = { name = bp2_yearly_1065_economical_building value = flag:orchards } } #Farm Estates 10 = { trigger = { bp2_yearly_1065_can_build_building_trigger = { BUILDING = farm_estates } } set_variable = { name = bp2_yearly_1065_economical_building value = flag:farm_estates } } #Cereal Fields 10 = { trigger = { bp2_yearly_1065_can_build_building_trigger = { BUILDING = cereal_fields } } set_variable = { name = bp2_yearly_1065_economical_building value = flag:cereal_fields } } #Logging Camps 10 = { trigger = { bp2_yearly_1065_can_build_building_trigger = { BUILDING = logging_camps } } set_variable = { name = bp2_yearly_1065_economical_building value = flag:logging_camps } } #Peat Quarries 10 = { trigger = { bp2_yearly_1065_can_build_building_trigger = { BUILDING = peat_quarries } } set_variable = { name = bp2_yearly_1065_economical_building value = flag:peat_quarries } } #Hill Farms 10 = { trigger = { bp2_yearly_1065_can_build_building_trigger = { BUILDING = hill_farms } } set_variable = { name = bp2_yearly_1065_economical_building value = flag:hill_farms } } #Elephant Pens 10 = { trigger = { bp2_yearly_1065_can_build_building_trigger = { BUILDING = elephant_pens } } set_variable = { name = bp2_yearly_1065_economical_building value = flag:elephant_pens } } #Plantations 10 = { trigger = { bp2_yearly_1065_can_build_building_trigger = { BUILDING = plantations } } set_variable = { name = bp2_yearly_1065_economical_building value = flag:plantations } } #Quarries 10 = { trigger = { bp2_yearly_1065_can_build_building_trigger = { BUILDING = quarries } } set_variable = { name = bp2_yearly_1065_economical_building value = flag:quarries } } } } #Otherwise you get a modifier else = { set_variable = { name = bp2_yearly_1065_economical_building value = flag:modifier } } } scripted_effect bp2_yearly_1065_add_economical_building_effect = { #Tradeport if = { limit = { var:bp2_yearly_1065_economical_building ?= flag:common_tradeport } add_next_building_tier_effect = { BUILDING = common_tradeport } } #Pastures else_if = { limit = { var:bp2_yearly_1065_economical_building ?= flag:pastures } add_next_building_tier_effect = { BUILDING = pastures } } #Hunting Grounds else_if = { limit = { var:bp2_yearly_1065_economical_building ?= flag:hunting_grounds } add_next_building_tier_effect = { BUILDING = hunting_grounds } } #Orchards else_if = { limit = { var:bp2_yearly_1065_economical_building ?= flag:orchards } add_next_building_tier_effect = { BUILDING = orchards } } #Farm Estates else_if = { limit = { var:bp2_yearly_1065_economical_building ?= flag:farm_estates } add_next_building_tier_effect = { BUILDING = farm_estates } } #Cereal Fields else_if = { limit = { var:bp2_yearly_1065_economical_building ?= flag:cereal_fields } add_next_building_tier_effect = { BUILDING = cereal_fields } } #Logging Camps else_if = { limit = { var:bp2_yearly_1065_economical_building ?= flag:logging_camps } add_next_building_tier_effect = { BUILDING = logging_camps } } #Peat Quarries else_if = { limit = { var:bp2_yearly_1065_economical_building ?= flag:peat_quarries } add_next_building_tier_effect = { BUILDING = peat_quarries } } #Hill Farms else_if = { limit = { var:bp2_yearly_1065_economical_building ?= flag:hill_farms } add_next_building_tier_effect = { BUILDING = hill_farms } } #Elephant Pens else_if = { limit = { var:bp2_yearly_1065_economical_building ?= flag:elephant_pens } add_next_building_tier_effect = { BUILDING = elephant_pens } } #Plantations else_if = { limit = { var:bp2_yearly_1065_economical_building ?= flag:plantations } add_next_building_tier_effect = { BUILDING = plantations } } #Quarries else_if = { limit = { var:bp2_yearly_1065_economical_building ?= flag:quarries } add_next_building_tier_effect = { BUILDING = quarries } } #You're all decked out; have a modifier else_if = { limit = { var:bp2_yearly_1065_economical_building ?= flag:modifier } bp2_yearly_1065_add_buff_effect = { DIRECTION = economical } } } scripted_effect bp2_yearly_1065_determine_martial_building_effect = { #Can we actually build one of these buildings? if = { limit = { OR = { bp2_yearly_1065_can_build_building_trigger = { BUILDING = ramparts } bp2_yearly_1065_can_build_building_trigger = { BUILDING = curtain_walls } bp2_yearly_1065_can_build_building_trigger = { BUILDING = watchtowers } bp2_yearly_1065_can_build_building_trigger = { BUILDING = hill_forts } bp2_yearly_1065_can_build_building_trigger = { BUILDING = outposts } bp2_yearly_1065_can_build_building_trigger = { BUILDING = barracks } bp2_yearly_1065_can_build_building_trigger = { BUILDING = smiths } } } #Yes? In that case, randomize which! random_list = { #Ramparts 10 = { trigger = { bp2_yearly_1065_can_build_building_trigger = { BUILDING = ramparts } } set_variable = { name = bp2_yearly_1065_martial_building value = flag:ramparts } } #Walls 10 = { trigger = { bp2_yearly_1065_can_build_building_trigger = { BUILDING = curtain_walls } } set_variable = { name = bp2_yearly_1065_martial_building value = flag:curtain_walls } } #Watch Towers 10 = { trigger = { bp2_yearly_1065_can_build_building_trigger = { BUILDING = watchtowers } } set_variable = { name = bp2_yearly_1065_martial_building value = flag:watchtowers } } #Hill Forts 10 = { trigger = { bp2_yearly_1065_can_build_building_trigger = { BUILDING = hill_forts } } set_variable = { name = bp2_yearly_1065_martial_building value = flag:hill_forts } } #Barracks 10 = { trigger = { bp2_yearly_1065_can_build_building_trigger = { BUILDING = barracks } } set_variable = { name = bp2_yearly_1065_martial_building value = flag:barracks } } #Smiths 10 = { trigger = { bp2_yearly_1065_can_build_building_trigger = { BUILDING = smiths } } set_variable = { name = bp2_yearly_1065_martial_building value = flag:smiths } } } } #Otherwise you get a modifier else = { set_variable = { name = bp2_yearly_1065_martial_building value = flag:modifier } } } scripted_effect bp2_yearly_1065_add_martial_building_effect = { #Ramparts if = { limit = { var:bp2_yearly_1065_martial_building ?= flag:ramparts } add_next_building_tier_effect = { BUILDING = ramparts } } #Curtain Walls else_if = { limit = { var:bp2_yearly_1065_martial_building ?= flag:curtain_walls } add_next_building_tier_effect = { BUILDING = curtain_walls } } #Watch Towers else_if = { limit = { var:bp2_yearly_1065_martial_building ?= flag:watchtowers } add_next_building_tier_effect = { BUILDING = watchtowers } } #Hill Fort else_if = { limit = { var:bp2_yearly_1065_martial_building ?= flag:hill_forts } add_next_building_tier_effect = { BUILDING = hill_forts } } #Barracks else_if = { limit = { var:bp2_yearly_1065_martial_building ?= flag:barracks } add_next_building_tier_effect = { BUILDING = barracks } } #Smiths else_if = { limit = { var:bp2_yearly_1065_martial_building ?= flag:smiths } add_next_building_tier_effect = { BUILDING = smiths } } #You're all decked out; have a modifier else_if = { limit = { var:bp2_yearly_1065_martial_building ?= flag:modifier } bp2_yearly_1065_add_buff_effect = { DIRECTION = martial } } } scripted_effect bp2_yearly_1065_determine_pious_building_effect = { #Can we actually build one of these buildings? if = { limit = { OR = { county.holder.faith = { has_doctrine_parameter = can_build_megaliths } county.faith = { has_doctrine_parameter = can_build_megaliths } NOT = { has_building = monastic_schools_08 } } } #Yes? In that case, randomize which! random_list = { #Monastic Schools 10 = { trigger = { NOT = { has_building = monastic_schools_08 } } set_variable = { name = bp2_yearly_1065_pious_building value = flag:monastic_schools } } #Megalith 10 = { trigger = { OR = { county.holder.faith = { has_doctrine_parameter = can_build_megaliths } county.faith = { has_doctrine_parameter = can_build_megaliths } } } set_variable = { name = bp2_yearly_1065_pious_building value = flag:megalith } } } } #Otherwise you get a modifier else = { set_variable = { name = bp2_yearly_1065_pious_building value = flag:modifier } } } scripted_effect bp2_yearly_1065_add_pious_building_effect = { #Monastic Schools if = { limit = { var:bp2_yearly_1065_pious_building ?= flag:monastic_schools } add_next_building_tier_effect = { BUILDING = monastic_schools } } #Megalith else_if = { limit = { var:bp2_yearly_1065_pious_building ?= flag:megalith } add_next_building_tier_effect = { BUILDING = megalith } } #You're all decked out; have a modifier else_if = { limit = { var:bp2_yearly_1065_pious_building ?= flag:modifier } bp2_yearly_1065_add_buff_effect = { DIRECTION = pious } } } #Your input is desired on the next building target bp2_yearly.1065 = { type = character_event content_source = dlc_009 title = bp2_yearly.1065.t desc = { first_valid = { triggered_desc = { trigger = { scope:current_regent ?= { OR = { is_parent_of = root is_grandparent_of = root is_great_grandparent_of = root } } } desc = bp2_yearly.1065.intro_parent } triggered_desc = { trigger = { exists = scope:current_regent } desc = bp2_yearly.1065.intro_regent } desc = bp2_yearly.1065.intro } first_valid = { triggered_desc = { trigger = { scope:current_regent ?= { OR = { is_parent_of = root is_grandparent_of = root is_great_grandparent_of = root } } exists = scope:province_holder } desc = bp2_yearly.1065.desc_parent_mayor } triggered_desc = { trigger = { scope:current_regent ?= { OR = { is_parent_of = root is_grandparent_of = root is_great_grandparent_of = root } } } desc = bp2_yearly.1065.desc_parent_mayor } triggered_desc = { trigger = { exists = scope:current_regent exists = scope:province_holder } desc = bp2_yearly.1065.desc_regent_mayor } triggered_desc = { trigger = { exists = scope:current_regent } desc = bp2_yearly.1065.desc_regent } triggered_desc = { trigger = { exists = scope:province_holder } desc = bp2_yearly.1065.desc_mayor } desc = bp2_yearly.1065.desc } desc = bp2_yearly.1065.outro } theme = education override_background = { reference = council_chamber } left_portrait = { character = root animation = thinking } right_portrait = { trigger = { exists = scope:current_regent } character = scope:current_regent animation = disapproval } lower_right_portrait = { trigger = { exists = scope:province_holder } character = scope:province_holder } trigger = { is_available = yes is_landed_or_landless_administrative = yes #If the child is AI, we don't want a player regent to get snubbed by the AI builder child trigger_if = { limit = { is_ai = yes } has_active_diarchy = yes diarch = { is_ai = yes } } OR = { any_held_title = { title_tier = county any_county_province = { bp2_yearly.1065_appropriate_province_trigger = yes } } any_sub_realm_county = { county.holder ?= { is_ai = yes } any_county_province = { bp2_yearly.1065_appropriate_province_trigger = yes } } } } on_trigger_fail = { if = { limit = { exists = var:the_builder_sightseed_capital } remove_variable = the_builder_sightseed_capital } the_builder_clean_up_flags_effect = yes } immediate = { #play_music_cue = "mx_cue_low_key_positive" if = { limit = { has_active_diarchy = yes } diarch = { save_scope_as = current_regent } } #Find a holding to build a building in if = { limit = { OR = { any_held_title = { title_tier = county any_county_province = { bp2_yearly.1065_appropriate_province_trigger = yes } } any_sub_realm_county = { county.holder ?= { is_ai = yes } any_county_province = { bp2_yearly.1065_appropriate_province_trigger = yes } } } } #First one with an empty slot if = { limit = { any_held_title = { title_tier = county any_county_province = { bp2_yearly.1065_appropriate_province_trigger = yes } } } random_held_title = { title_tier = county limit = { any_county_province = { bp2_yearly.1065_appropriate_province_trigger = yes } } save_scope_as = 1065_county_for_building } } #Or a sub-realm with an empty slot else_if = { limit = { any_sub_realm_county = { county.holder ?= { is_ai = yes } any_county_province = { bp2_yearly.1065_appropriate_province_trigger = yes } } } random_sub_realm_county = { limit = { county.holder ?= { is_ai = yes } any_county_province = { bp2_yearly.1065_appropriate_province_trigger = yes } } save_scope_as = 1065_sub_realm_county_for_building } } } else = { random_held_title = { title_tier = county random_county_province = { save_scope_as = 1065_province_for_buffing } } } #Find the scopes in the province if = { limit = { NOT = { exists = scope:1065_province_for_buffing } } #Hash out which one of our own provinces to build in if = { limit = { exists = scope:1065_county_for_building } scope:1065_county_for_building = { random_county_province = { limit = { bp2_yearly.1065_appropriate_province_trigger = yes } save_scope_as = 1065_province_for_building } } } #... or a sub-realm province else = { scope:1065_sub_realm_county_for_building = { random_county_province = { limit = { bp2_yearly.1065_appropriate_province_trigger = yes } save_scope_as = 1065_province_for_building } } } #Save scopes for loc scope:1065_province_for_building = { if = { limit = { exists = barony.holder barony.holder != root trigger_if = { limit = { exists = scope:current_regent } barony.holder != scope:current_regent } } barony.holder = { save_scope_as = province_holder } } } set_variable = { name = the_builder_constructed_building_in value = scope:1065_province_for_building } } else = { #Save scopes for loc scope:1065_province_for_buffing = { if = { limit = { exists = barony.holder barony.holder != root trigger_if = { limit = { exists = scope:current_regent } barony.holder != scope:current_regent } } barony.holder = { save_scope_as = province_holder } } } set_variable = { name = the_builder_constructed_building_in value = scope:1065_province_for_buffing } } #Determine what buildings you should get to pick from - and actually give the effect in the option if = { limit = { exists = scope:1065_province_for_building } scope:1065_province_for_building = { bp2_yearly_1065_determine_economical_building_effect = yes bp2_yearly_1065_determine_martial_building_effect = yes bp2_yearly_1065_determine_pious_building_effect = yes } } } #Economical improvements option = { name = bp2_yearly.1065.a flavor = bp2_yearly.1065.a.flavor the_builder_stacking_stewardship_rewards_effect = yes add_stewardship_skill = 1 if = { limit = { exists = scope:1065_province_for_building } scope:1065_province_for_building = { bp2_yearly_1065_add_economical_building_effect = yes } } else_if = { limit = { exists = scope:1065_province_for_buffing } scope:1065_province_for_buffing = { bp2_yearly_1065_add_buff_effect = { DIRECTION = economical } } } the_builder_stewardship_choice_tracker_effect = yes the_builder_stewardship_increment_effect = yes ai_chance = { base = 100 modifier = { ai_has_warlike_personality = yes factor = 0 } modifier = { has_trait = zealous factor = 0 } modifier = { has_trait = craven factor = 0 } } } #Martial improvements option = { name = bp2_yearly.1065.b flavor = bp2_yearly.1065.b.flavor the_builder_stacking_martial_rewards_effect = yes add_martial_skill = 1 if = { limit = { exists = scope:1065_province_for_building } scope:1065_province_for_building = { bp2_yearly_1065_add_martial_building_effect = yes } } else_if = { limit = { exists = scope:1065_province_for_buffing } scope:1065_province_for_buffing = { bp2_yearly_1065_add_buff_effect = { DIRECTION = martial } } } the_builder_martial_choice_tracker_effect = yes the_builder_martial_increment_effect = yes ai_chance = { base = 100 modifier = { ai_has_economical_boom_personality = yes factor = 0 } modifier = { has_trait = zealous factor = 0 } modifier = { has_trait = greedy factor = 0 } } } #Pious improvements, obviously option = { name = bp2_yearly.1065.c flavor = bp2_yearly.1065.c.flavor the_builder_stacking_learning_rewards_effect = yes add_learning_skill = 1 if = { limit = { exists = scope:1065_province_for_building } scope:1065_province_for_building = { if = { limit = { NOT = { has_holding_type = church_holding } } custom_tooltip = bp2_yearly.1065.c.tt set_holding_type = church_holding } bp2_yearly_1065_add_pious_building_effect = yes } } else_if = { limit = { exists = scope:1065_province_for_buffing } scope:1065_province_for_buffing = { bp2_yearly_1065_add_buff_effect = { DIRECTION = pious } } } the_builder_learning_choice_tracker_effect = yes the_builder_learning_increment_effect = yes ai_chance = { base = 100 modifier = { ai_has_economical_boom_personality = yes factor = 0 } modifier = { ai_has_warlike_personality = yes factor = 0 } modifier = { has_trait = craven factor = 0 } modifier = { has_trait = greedy factor = 0 } } } #We are 14-15 after = { if = { limit = { exists = scope:1065_province_for_building } if = { limit = { exists = var:bp2_yearly_1065_economical_building } remove_variable = bp2_yearly_1065_economical_building } if = { limit = { exists = var:bp2_yearly_1065_martial_building } remove_variable = bp2_yearly_1065_martial_building } if = { limit = { exists = var:bp2_yearly_1065_pious_building } remove_variable = bp2_yearly_1065_pious_building } } trigger_event = { id = bp2_yearly.1070 years = { 4 6 } } } } ################# #All of our efforts have culminated into _this_ scripted_effect bp2_yearly_1070_city_builder_effect = { the_builder_stacking_stewardship_rewards_effect = yes give_nickname = nick_the_city_builder add_trait = architect add_character_modifier = the_city_builder_modifier } scripted_effect bp2_yearly_1070_castle_builder_effect = { the_builder_stacking_martial_rewards_effect = yes give_nickname = nick_the_castle_builder add_trait = architect add_character_modifier = the_castle_builder_modifier } scripted_effect bp2_yearly_1070_temple_builder_effect = { the_builder_stacking_learning_rewards_effect = yes give_nickname = nick_the_temple_builder add_trait = architect add_character_modifier = the_temple_builder_modifier } bp2_yearly.1070 = { type = character_event content_source = dlc_009 title = bp2_yearly.1070.t desc = { desc = bp2_yearly.1070.intro first_valid = { triggered_desc = { trigger = { exists = scope:1070_province_to_build_in } desc = bp2_yearly.1070.desc } triggered_desc = { trigger = { exists = scope:1070_province_to_buff } desc = bp2_yearly.1070.desc_no_province } } #Actually none of the above apply triggered_desc = { trigger = { NOR = { exists = scope:1070_province_to_build_in exists = scope:1070_province_to_buff } } desc = bp2_yearly.1070.desc_no_province_no_buff } } theme = education override_background = { reference = study } left_portrait = { character = root animation = personality_compassionate } trigger = { is_available = yes is_landed_or_landless_administrative = yes has_active_diarchy = no has_variable = the_builder_sightseed_capital } on_trigger_fail = { the_builder_clean_up_flags_effect = yes if = { limit = { exists = var:the_builder_sightseed_capital } remove_variable = the_builder_sightseed_capital } if = { limit = { exists = var:the_builder_constructed_building_in } remove_variable = the_builder_constructed_building_in } } immediate = { #play_music_cue = "mx_cue_positive_effect" var:the_builder_sightseed_capital ?= { save_scope_as = sightseed_capital } var:the_builder_constructed_building_in ?= { save_scope_as = constructed_building_in } #Find a holding to build if = { limit = { OR = { any_held_title = { county_has_empty_province_trigger = yes } any_sub_realm_county = { county.holder ?= { is_ai = yes } any_county_province = { province_has_no_holding_trigger = yes } } } } #Build in our own area first ordered_held_title = { limit = { county_has_empty_province_trigger = yes } order_by = development_level save_scope_as = 1070_county_to_build_in } if = { limit = { NOT = { exists = scope:1070_county_to_build_in } } #Then a sub realm ordered_sub_realm_county = { limit = { county.holder ?= { is_ai = yes } any_county_province = { province_has_no_holding_trigger = yes } } order_by = development_level save_scope_as = 1070_county_to_build_in } } scope:1070_county_to_build_in = { random_county_province = { limit = { province_has_no_holding_trigger = yes } set_variable = { name = the_builder_holding value = root } save_scope_as = 1070_province_to_build_in } } set_variable = { name = the_builder_constructed_holding value = scope:1070_province_to_build_in } } #If no empty provinces, buff a random holding else_if = { limit = { any_held_title = { title_tier = county any_county_province = { NOR = { has_province_modifier = improved_by_the_city_builder_modifier has_province_modifier = improved_by_the_castle_builder_modifier has_province_modifier = improved_by_the_temple_builder_modifier } } } any_sub_realm_county = { any_county_province = { NOR = { has_province_modifier = improved_by_the_city_builder_modifier has_province_modifier = improved_by_the_castle_builder_modifier has_province_modifier = improved_by_the_temple_builder_modifier } } } } #Least developed county ordered_held_title = { title_tier = county order_by = { value = development_level multiply = -1 } save_scope_as = 1070_county_to_buff } if = { limit = { NOT = { exists = scope:1070_county_to_buff } } #Least developed sub realm county ordered_sub_realm_county = { limit = { any_county_province = { NOR = { has_province_modifier = improved_by_the_city_builder_modifier has_province_modifier = improved_by_the_castle_builder_modifier has_province_modifier = improved_by_the_temple_builder_modifier } } } order_by = { value = development_level multiply = -1 } save_scope_as = 1070_county_to_buff } } scope:1070_county_to_buff = { ordered_county_province = { limit = { NOR = { has_province_modifier = improved_by_the_city_builder_modifier has_province_modifier = improved_by_the_castle_builder_modifier has_province_modifier = improved_by_the_temple_builder_modifier } } #Least developed holdng order_by = { value = county.development_level multiply = -1 } save_scope_as = 1070_province_to_buff } } } } #Build or buff a city option = { name = { text = { first_valid = { #Build city triggered_desc = { trigger = { exists = scope:1070_province_to_build_in } desc = bp2_yearly.1070.a } #Buff holding triggered_desc = { trigger = { exists = scope:1070_province_to_buff } desc = bp2_yearly.1070.a_buff } #I would probs focus on economy desc = bp2_yearly.1070.a_none } } } flavor = { first_valid = { triggered_desc = { trigger = { exists = scope:1070_province_to_build_in } desc = bp2_yearly.1070.a.flavor } desc = bp2_yearly.1070.a.flavor_none } } the_builder_stewardship_choice_tracker_effect = yes #We build! if = { limit = { exists = scope:1070_province_to_build_in } scope:1070_province_to_build_in = { begin_create_holding = { type = city_holding } } #Some custom loc to look proper in tooltip custom_description_no_bullet = { text = upon_holding_completion } show_as_tooltip = { bp2_yearly_1070_city_builder_effect = yes dynasty ?= { add_dynasty_prestige = minor_dynasty_prestige_gain } } } #We buff else_if = { limit = { exists = scope:1070_province_to_buff } bp2_yearly_1070_city_builder_effect = yes scope:1070_province_to_buff = { add_province_modifier = improved_by_the_city_builder_modifier } } #... we really should never end up here. Have some renown, because obviously your domain is pristine. else = { bp2_yearly_1070_city_builder_effect = yes dynasty ?= { add_dynasty_prestige = medium_dynasty_prestige_gain } } ai_chance = { base = 100 modifier = { ai_has_warlike_personality = yes factor = 0 } modifier = { has_trait = zealous factor = 0 } modifier = { has_trait = craven factor = 0 } } } #Build or buff a castle option = { name = { text = { first_valid = { #Build castle triggered_desc = { trigger = { exists = scope:1070_province_to_build_in } desc = bp2_yearly.1070.b } #Buff holding triggered_desc = { trigger = { exists = scope:1070_province_to_buff } desc = bp2_yearly.1070.b_buff } #I would probs focus on defense desc = bp2_yearly.1070.b_none } } } flavor = { first_valid = { triggered_desc = { trigger = { OR = { exists = scope:1070_province_to_build_in exists = scope:1070_province_to_buff } } desc = bp2_yearly.1070.b.flavor } desc = bp2_yearly.1070.b.flavor_none } } the_builder_martial_choice_tracker_effect = yes #We build! if = { limit = { exists = scope:1070_province_to_build_in } scope:1070_province_to_build_in = { begin_create_holding = { type = castle_holding } } #Some custom loc to look proper in tooltip custom_description_no_bullet = { text = upon_holding_completion } show_as_tooltip = { bp2_yearly_1070_castle_builder_effect = yes dynasty ?= { add_dynasty_prestige = minor_dynasty_prestige_gain } } } #We buff else_if = { limit = { exists = scope:1070_province_to_buff } bp2_yearly_1070_castle_builder_effect = yes scope:1070_province_to_buff = { add_province_modifier = improved_by_the_castle_builder_modifier } } #... we really should never end up here. Have some renown, because obviously your domain is pristine. else = { bp2_yearly_1070_castle_builder_effect = yes dynasty ?= { add_dynasty_prestige = medium_dynasty_prestige_gain } } ai_chance = { base = 100 modifier = { ai_has_economical_boom_personality = yes factor = 0 } modifier = { has_trait = zealous factor = 0 } modifier = { has_trait = greedy factor = 0 } } } #Build or buff a temple option = { name = bp2_yearly.1070.c flavor = { first_valid = { triggered_desc = { trigger = { OR = { exists = scope:1070_province_to_build_in exists = scope:1070_province_to_buff } } desc = bp2_yearly.1070.c.flavor } desc = bp2_yearly.1070.c.flavor_none } } the_builder_learning_choice_tracker_effect = yes #We build! if = { limit = { exists = scope:1070_province_to_build_in } scope:1070_province_to_build_in = { begin_create_holding = { type = church_holding } } #Some custom loc to look proper in tooltip custom_description_no_bullet = { text = upon_holding_completion } show_as_tooltip = { bp2_yearly_1070_temple_builder_effect = yes dynasty ?= { add_dynasty_prestige = minor_dynasty_prestige_gain } } } #We buff else_if = { limit = { exists = scope:1070_province_to_buff } bp2_yearly_1070_temple_builder_effect = yes scope:1070_province_to_buff = { add_province_modifier = improved_by_the_temple_builder_modifier } } #... we really should never end up here. Have some renown, because obviously your domain is pristine. else = { bp2_yearly_1070_temple_builder_effect = yes dynasty ?= { add_dynasty_prestige = medium_dynasty_prestige_gain } } ai_chance = { base = 100 modifier = { ai_has_economical_boom_personality = yes factor = 0 } modifier = { ai_has_warlike_personality = yes factor = 0 } modifier = { has_trait = greedy factor = 0 } modifier = { has_trait = craven factor = 0 } } } after = { if = { limit = { exists = var:the_builder_sightseed_capital } remove_variable = the_builder_sightseed_capital } if = { limit = { exists = var:the_builder_constructed_building_in } remove_variable = the_builder_constructed_building_in } #If the player for whatever reason manually cancels the holding if = { limit = { exists = scope:1070_province_to_build_in } set_variable = { name = the_builder_holding_cancelled_safeguard value = scope:1070_province_to_build_in years = 6 #In general, a holding takes 5 years to build } #You dun messed up, son trigger_event = { id = bp2_yearly.1072 years = 6 } } } } #Follow-up: Get the sweet sweet loo... I mean, sweet sweet effects! bp2_yearly.1071 = { type = character_event content_source = dlc_009 title = { first_valid = { triggered_desc = { trigger = { var:the_builder_latest_choice ?= flag:stewardship } desc = bp2_yearly.1071.t_city } triggered_desc = { trigger = { var:the_builder_latest_choice ?= flag:martial } desc = bp2_yearly.1071.t_castle } triggered_desc = { trigger = { var:the_builder_latest_choice ?= flag:learning } desc = bp2_yearly.1071.t_temple } } } desc = { first_valid = { triggered_desc = { trigger = { var:the_builder_latest_choice ?= flag:stewardship } desc = bp2_yearly.1071.desc_city } triggered_desc = { trigger = { var:the_builder_latest_choice ?= flag:martial } desc = bp2_yearly.1071.desc_castle } triggered_desc = { trigger = { var:the_builder_latest_choice ?= flag:learning } desc = bp2_yearly.1071.desc_temple } } desc = bp2_yearly.1071.outro } theme = education override_background = { trigger = { var:the_builder_latest_choice ?= flag:stewardship } reference = market } override_background = { trigger = { var:the_builder_latest_choice ?= flag:martial } reference = courtyard } override_background = { trigger = { var:the_builder_latest_choice ?= flag:learning } reference = holy_site_generic } left_portrait = { character = root animation = personality_honorable } immediate = { #play_music_cue = "mx_cue_positive_effect" var:the_builder_constructed_holding ?= { save_scope_as = constructed_holding } } #Alright option = { name = bp2_yearly.1071.a flavor = bp2_yearly.1071.a.flavor if = { limit = { var:the_builder_latest_choice ?= flag:stewardship } bp2_yearly_1070_city_builder_effect = yes } else_if = { limit = { var:the_builder_latest_choice ?= flag:martial } bp2_yearly_1070_castle_builder_effect = yes } else_if = { limit = { var:the_builder_latest_choice ?= flag:learning } bp2_yearly_1070_temple_builder_effect = yes } dynasty ?= { add_dynasty_prestige = minor_dynasty_prestige_gain } } after = { if = { limit = { has_variable = the_builder_constructed_holding } remove_variable = the_builder_constructed_holding } the_builder_clean_up_flags_effect = yes } } #Clean up: You dun messed up, son bp2_yearly.1072 = { type = character_event content_source = dlc_009 title = bp2_yearly.1072.t desc = bp2_yearly.1072.desc theme = education override_background = { reference = study } left_portrait = { character = root animation = sadness } trigger = { has_variable = the_builder_holding_cancelled_safeguard } immediate = { #play_music_cue = "mx_cue_negative" var:the_builder_holding_cancelled_safeguard = { save_scope_as = cancelled_holding } } #Wa-wa option = { name = bp2_yearly.1072.a } after = { if = { limit = { has_variable = the_builder_holding_cancelled_safeguard } remove_variable = the_builder_holding_cancelled_safeguard } the_builder_clean_up_flags_effect = yes } }