namespace = bp3_journey ### Setup Events # Arrival Event bp3_journey.0005 = { type = activity_event content_source = dlc_015 title = bp3_journey.0005.t desc = bp3_journey.0005.desc theme = journey_activity left_portrait = { character = scope:scribe_1 animation = writing } center_portrait = { character = scope:host animation = survey_staff } right_portrait = { character = scope:scribe_2 animation = happy_teacher } trigger = { this = scope:host } immediate = { scope:activity.activity_location = { save_scope_as = location } if = { limit = { scope:activity = { any_attending_character = { has_character_flag = generated_scribe } } } scope:activity = { random_attending_character = { limit = { has_character_flag = generated_scribe } save_scope_as = scribe_1 } random_attending_character = { limit = { has_character_flag = generated_scribe this != scope:scribe_1 } save_scope_as = scribe_2 } } } } option = { name = bp3_journey.0005.a # Diplomacy skill = diplomacy trigger = { scope:activity.activity_location = { journey_diplomacy_skill_monument_trigger = yes } } custom_tooltip = diplomacy_skill_focus_tt scope:activity = { set_variable = { name = diplomacy_skill_focus value = yes } } } option = { name = bp3_journey.0005.b # Martial skill = martial trigger = { scope:activity.activity_location = { journey_martial_skill_monument_trigger = yes } } custom_tooltip = martial_skill_focus_tt scope:activity = { set_variable = { name = martial_skill_focus value = yes } } } option = { name = bp3_journey.0005.c # Learning skill = learning trigger = { scope:activity.activity_location = { journey_learning_skill_monument_trigger = yes } } custom_tooltip = learning_skill_focus_tt scope:activity = { set_variable = { name = learning_skill_focus value = yes } } } option = { name = bp3_journey.0005.d # Stewardship skill = stewardship trigger = { scope:activity.activity_location = { journey_stewardship_skill_monument_trigger = yes } } custom_tooltip = stewardship_skill_focus_tt scope:activity = { set_variable = { name = stewardship_skill_focus value = yes } } } option = { name = bp3_journey.0005.e # Intrigue skill = intrigue trigger = { scope:activity.activity_location = { journey_intrigue_skill_monument_trigger = yes } } custom_tooltip = intrigue_skill_focus_tt scope:activity = { set_variable = { name = intrigue_skill_focus value = yes } } } } # Ending Event bp3_journey.0010 = { type = activity_event content_source = dlc_015 title = bp3_journey.0010.t desc = bp3_journey.0010.desc theme = journey_activity left_portrait = { character = scope:scribe_1 animation = reading } center_portrait = { character = scope:host animation = throne_room_writer } right_portrait = { character = scope:scribe_2 animation = page_flipping } trigger = { this = scope:host } immediate = { scope:activity.activity_location = { save_scope_as = location } if = { limit = { scope:activity = { any_attending_character = { has_character_flag = generated_scribe } } } scope:activity = { random_attending_character = { limit = { has_character_flag = generated_scribe } save_scope_as = scribe_1 } random_attending_character = { limit = { has_character_flag = generated_scribe this != scope:scribe_1 } save_scope_as = scribe_2 } } } random = { chance = scope:activity.var:skill_chance save_scope_as = extra_skill_gained } } option = { name = bp3_journey.0010.a scope:activity = { add_activity_log_entry = { key = journey_skill_gain_final_log score = 1000 character = root tags = { positive } show_in_conclusion = yes root = { if = { limit = { scope:activity = { has_variable = diplomacy_skill_focus } NOT = { exists = scope:extra_skill_gained } } add_diplomacy_skill = 1 } else_if = { limit = { scope:activity = { has_variable = learning_skill_focus } NOT = { exists = scope:extra_skill_gained } } add_learning_skill = 1 } else_if = { limit = { scope:activity = { has_variable = martial_skill_focus } NOT = { exists = scope:extra_skill_gained } } add_martial_skill = 1 } else_if = { limit = { scope:activity = { has_variable = stewardship_skill_focus } NOT = { exists = scope:extra_skill_gained } } add_stewardship_skill = 1 } else_if = { limit = { scope:activity = { has_variable = intrigue_skill_focus } NOT = { exists = scope:extra_skill_gained } } add_intrigue_skill = 1 } # Knowledge Hoarding outcome if = { limit = { exists = scope:extra_skill_gained } custom_tooltip = extra_skill_gained_tt if = { limit = { scope:activity = { has_variable = intrigue_skill_focus } } add_intrigue_skill = 2 } else_if = { limit = { scope:activity = { has_variable = martial_skill_focus } } add_martial_skill = 2 } else_if = { limit = { scope:activity = { has_variable = learning_skill_focus } } add_learning_skill = 2 } else_if = { limit = { scope:activity = { has_variable = stewardship_skill_focus } } add_stewardship_skill = 2 } else_if = { limit = { scope:activity = { has_variable = diplomacy_skill_focus } } add_diplomacy_skill = 2 } } else = { custom_tooltip = no_extra_skill_gained_tt } } } } } } # Mid-point Visit Event bp3_journey.0015 = { type = activity_event content_source = dlc_015 title = bp3_journey.0015.t desc = bp3_journey.0015.desc theme = journey_activity override_background = { trigger = { scope:location = { has_building_with_flag = travel_point_of_interest_economic NOR = { has_building = doges_palace_01 has_building = iron_pillar_of_dhar_01 has_building = petra_01 has_building = fairy_chimneys } } } reference = fp3_cave } left_portrait = { character = scope:potential_friend animation = admiration } center_portrait = { character = scope:host triggered_animation = { trigger = { has_activity_intent = journey_knowledge_hoarding_intent } animation = happy_teacher } triggered_animation = { trigger = { has_activity_intent = journey_curiosity_intent } animation = ecstasy } animation = hero_flex } right_portrait = { character = scope:potential_lover animation = love } trigger = { this = scope:host } immediate = { scope:activity.activity_location = { save_scope_as = location } if = { limit = { scope:activity = { any_attending_character = { has_character_flag = generated_scribe } } } scope:activity = { random_attending_character = { limit = { has_character_flag = generated_scribe } save_scope_as = scribe_1 } random_attending_character = { limit = { has_character_flag = generated_scribe this != scope:scribe_1 } save_scope_as = scribe_2 } } } if = { limit = { scope:activity = { any_attending_character = { is_incapable = no has_relation_potential_friend = root can_set_relation_friend_trigger = { CHARACTER = root } } } } scope:activity = { random_attending_character = { limit = { is_incapable = no has_relation_potential_friend = root can_set_relation_friend_trigger = { CHARACTER = root } } save_scope_as = potential_friend } } } else_if = { limit = { scope:activity.activity_location.county.holder ?= { is_available_ai_adult = yes has_relation_potential_friend = root can_set_relation_friend_trigger = { CHARACTER = root } NOR = { this = root has_relation_friend = root has_relation_rival = root } } } scope:activity.activity_location.county.holder ?= { save_scope_as = potential_friend } } if = { limit = { scope:activity = { any_attending_character = { is_incapable = no has_relation_potential_lover = root can_set_relation_lover_trigger = { CHARACTER = root } this != root trigger_if = { limit = { exists = scope:potential_friend } this != scope:potential_friend } } } } scope:activity = { random_attending_character = { limit = { is_incapable = no has_relation_potential_lover = root can_set_relation_lover_trigger = { CHARACTER = root } this != root trigger_if = { limit = { exists = scope:potential_friend } this != scope:potential_friend } } save_scope_as = potential_lover } } } else_if = { limit = { scope:activity.activity_location.county.holder ?= { is_available_ai_adult = yes has_relation_potential_lover = root can_set_relation_lover_trigger = { CHARACTER = root } NOR = { this = root has_relation_rival = root } trigger_if = { limit = { exists = scope:potential_friend } this != scope:potential_friend } } } scope:activity.activity_location.county.holder ?= { save_scope_as = potential_friend } } else_if = { limit = { scope:activity = { any_attending_character = { is_consort_of = root NOT = { has_relation_rival = root } can_set_relation_lover_trigger = { CHARACTER = root } this != root trigger_if = { limit = { exists = scope:potential_friend } this != scope:potential_friend } } } } scope:activity = { random_attending_character = { limit = { is_consort_of = root NOT = { has_relation_rival = root } can_set_relation_lover_trigger = { CHARACTER = root } this != root trigger_if = { limit = { exists = scope:potential_friend } this != scope:potential_friend } } save_scope_as = potential_lover } } } create_character_memory = { type = visited_monument } scope:new_memory = { set_variable = { name = special_building value = scope:activity.activity_location } if = { limit = { has_variable = special_building } } } } option = { name = bp3_journey.0015.knowledge_hoarding trigger = { has_activity_intent = journey_knowledge_hoarding_intent } add_prestige = miniscule_prestige_gain journey_knowledge_hoarding_skill_effect = { VALUE = 5 } ai_chance = { base = 100 } } option = { name = bp3_journey.0015.journey_curiosity_intent trigger = { has_activity_intent = journey_curiosity_intent } add_prestige = miniscule_prestige_gain if = { limit = { culture != root.location.culture } culture = { change_cultural_acceptance = { target = root.location.culture value = 2 desc = cultural_acceptance_gain_event } } } else_if = { limit = { exists = capital_county } capital_county ?= { change_development_progress_with_overflow = 10 } } ai_chance = { base = 100 } } option = { name = bp3_journey.0015.spread_legend_intent trigger = { has_activity_intent = spread_legend_intent } add_prestige = miniscule_prestige_gain add_character_modifier = { modifier = journey_apa_legend_modifier years = 15 } ai_chance = { base = 100 } } option = { name = bp3_journey.0015.friend trigger = { exists = scope:potential_friend } set_relation_friend = { target = scope:potential_friend reason = friend_bonded_by_monument province = root.location } ai_chance = { base = 100 } } option = { name = bp3_journey.0015.lover trigger = { exists = scope:potential_lover } set_relation_lover = { target = scope:potential_lover reason = lover_kissed_by_monument province = root.location } ai_chance = { base = 100 } } option = { name = bp3_journey.0015.prestige add_prestige = minor_prestige_gain ai_chance = { base = 1 } } } # Miniature Monument bp3_journey.1000 = { type = activity_event content_source = dlc_015 title = bp3_journey.1000.t desc = bp3_journey.1000.desc theme = journey_activity override_background = { reference = market } left_portrait = { character = scope:host animation = betting } right_portrait = { character = scope:local_character animation = chifonie_idle } artifact = { target = scope:new_trinket position = lower_center_portrait } cooldown = { years = 9 } trigger = { } immediate = { scope:activity.activity_location = { save_scope_as = location } if = { limit = { any_pool_character = { province = scope:location culture = scope:location.culture aptitude = { court_position = antiquarian_court_position value >= 4 } is_available_healthy_ai_adult = yes antiquarian_validity_trigger = { EMPLOYER = root } } } random_pool_character = { province = scope:location limit = { culture = scope:location.culture aptitude = { court_position = antiquarian_court_position value >= 4 } is_available_healthy_ai_adult = yes antiquarian_validity_trigger = { EMPLOYER = root } } save_scope_as = local_character } } else = { create_character = { template = antiquarian_court_position_template location = scope:location culture = scope:location.culture faith = scope:location.faith save_scope_as = local_character } scope:local_character = { add_character_flag = { flag = silently_disappear_me years = 1 } } } scope:local_character = { hidden_effect_new_object = { if = { limit = { scope:activity = { has_variable = diplomacy_skill_focus } } create_artifact = { name = miniature_monument description = miniature_monument.desc type = miscellaneous visuals = miniature_monument modifier = artifact_diplomacy_1_modifier save_scope_as = new_trinket wealth = 70 quality = 70 max_durability = 100 creator = scope:local_character } } else_if = { limit = { scope:activity = { has_variable = martial_skill_focus } } create_artifact = { name = miniature_monument description = miniature_monument.desc type = miscellaneous visuals = miniature_monument modifier = artifact_martial_1_modifier save_scope_as = new_trinket wealth = 70 quality = 70 max_durability = 100 creator = scope:local_character } } else_if = { limit = { scope:activity = { has_variable = learning_skill_focus } } create_artifact = { name = miniature_monument description = miniature_monument.desc type = miscellaneous visuals = miniature_monument modifier = artifact_learning_1_modifier save_scope_as = new_trinket wealth = 70 quality = 70 max_durability = 100 creator = scope:local_character } } else_if = { limit = { scope:activity = { has_variable = stewardship_skill_focus } } create_artifact = { name = miniature_monument description = miniature_monument.desc type = miscellaneous visuals = miniature_monument modifier = artifact_stewardship_1_modifier save_scope_as = new_trinket wealth = 70 quality = 70 max_durability = 100 creator = scope:local_character } } else = { create_artifact = { name = miniature_monument description = miniature_monument.desc type = miscellaneous visuals = miniature_monument modifier = artifact_intrigue_1_modifier save_scope_as = new_trinket wealth = 70 quality = 70 max_durability = 100 creator = scope:local_character } } } } if = { limit = { any_court_position_holder = { type = antiquarian_court_position } } random_court_position_holder = { type = antiquarian_court_position save_scope_as = current_holder } } } weight_multiplier = { base = 1 modifier = { add = 1 is_valid_to_hire_court_position_type = antiquarian_court_position NOT = { employs_court_position = antiquarian_court_position } } modifier = { add = 1 scope:activity = { has_variable = stewardship_skill_focus } } } option = { name = bp3_journey.1000.knowledge_hoarding trigger = { has_activity_intent = journey_knowledge_hoarding_intent } journey_knowledge_hoarding_skill_effect = { VALUE = 15 } stress_impact = { base = medium_stress_impact_gain lazy = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 has_trait = lazy } } } option = { name = bp3_journey.1000.curiosity trigger = { has_activity_intent = journey_curiosity_intent is_valid_to_hire_court_position_type = antiquarian_court_position } hire_for_court_position_journey_effect = { CHARACTER = scope:local_character COURT_POSITION = antiquarian } if = { limit = { culture != scope:local_character.culture } culture = { change_cultural_acceptance = { target = scope:local_character.culture value = 2 desc = cultural_acceptance_gain_event } } } stress_impact = { paranoid = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 has_trait = paranoid } } } option = { name = bp3_journey.1000.lechery trait = lustful trigger = { has_trait = lustful } custom_tooltip = suggestive_alterations hidden_effect_new_object = { create_artifact = { name = suggestive_miniature_monument description = suggestive_miniature_monument.desc type = miscellaneous visuals = miniature_monument modifier = artifact_fertility_gain_3_modifier modifier = artifact_seduce_scheme_phase_duration_add_3_modifier modifier = artifact_stress_gain_1_modifier save_scope_as = new_trinket wealth = 70 quality = 70 max_durability = 100 creator = scope:local_character } } stress_impact = { chaste = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 has_trait = chaste } } } option = { name = bp3_journey.1000.a pay_short_term_gold = { target = scope:local_character gold = minor_gold_value } send_interface_toast = { title = artifact_gained left_icon = root right_icon = scope:new_trinket scope:new_trinket = { set_owner = root } } stress_impact = { greedy = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { short_term_gold <= medium_gold_value has_trait = greedy } } } } option = { name = bp3_journey.1000.b trigger = { is_valid_to_hire_court_position_type = antiquarian_court_position NOT = { has_activity_intent = journey_curiosity_intent } } hire_for_court_position_journey_effect = { CHARACTER = scope:local_character COURT_POSITION = antiquarian } stress_impact = { paranoid = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 has_trait = paranoid } } } option = { name = bp3_journey.1000.c add_prestige = minor_prestige_gain ai_chance = { base = 100 } } after = { hidden_effect = { if = { limit = { scope:new_trinket = { artifact_owner = scope:local_character } } destroy_artifact = scope:new_trinket } } if = { # Cleanup limit = { root = { is_ai = yes } scope:local_character = { is_courtier = no has_character_flag = silently_disappear_me } } scope:local_character = { silent_disappearance_effect = yes } } } } # A Name, Eternal bp3_journey.1100 = { type = activity_event content_source = dlc_015 title = bp3_journey.1100.t override_background = { trigger = { scope:location = { has_building_with_flag = travel_point_of_interest_economic NOR = { has_building = doges_palace_01 has_building = iron_pillar_of_dhar_01 has_building = petra_01 has_building = fairy_chimneys } } } reference = fp3_cave } desc = { desc = bp3_journey.1100.desc_intro first_valid = { triggered_desc = { trigger = { exists = scope:ancient_vandal } desc = bp3_journey.1100.desc_name } desc = bp3_journey.1100.desc_first } desc = bp3_journey.1100.desc_outro } theme = journey_activity center_portrait = { character = scope:host animation = chess_certain_win } lower_center_portrait = { character = scope:ancient_vandal } cooldown = { years = 7 } trigger = { } immediate = { scope:activity.activity_location = { county.holder = { save_scope_as = county_holder } save_scope_as = location } scope:location = { if = { limit = { has_variable_list = grafitti } random_in_list = { variable = grafitti save_scope_as = ancient_vandal } } } } option = { name = bp3_journey.1100.knowledge_hoarding trigger = { has_activity_intent = journey_knowledge_hoarding_intent } journey_knowledge_hoarding_skill_effect = { VALUE = 10 } stress_impact = { base = minor_stress_impact_gain lazy = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 has_trait = lazy } } } option = { name = bp3_journey.1100.curiosity trigger = { has_activity_intent = journey_curiosity_intent culture != scope:location.culture } add_prestige = minor_prestige_gain culture = { change_cultural_acceptance = { target = scope:location.culture value = 2 desc = cultural_acceptance_gain_event } } stress_impact = { callous = medium_stress_impact_gain sadistic = medium_stress_impact_gain arrogant = medium_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { has_trait = callous has_trait = sadistic has_trait = arrogant } } } } option = { name = bp3_journey.1100.a scope:location = { add_to_variable_list = { name = grafitti target = root } } add_prestige = medium_prestige_gain if = { limit = { scope:county_holder ?= { this != root } } reverse_add_opinion = { target = scope:county_holder modifier = defaced_monument_opinion opinion = -20 } } stress_impact = { humble = medium_stress_impact_gain content = minor_stress_impact_gain shy = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { has_trait = humble has_trait = content has_trait = shy } } } } option = { name = bp3_journey.1100.b trigger = { exists = scope:ancient_vandal } custom_tooltip = prestige_trinket hidden_effect_new_object = { create_artifact = { name = grafitti_rock description = grafitti_rock.desc type = miscellaneous visuals = rock modifier = artifact_monthly_prestige_mult_1_modifier save_scope_as = new_trinket wealth = 30 quality = 30 max_durability = 100 creator = root } send_interface_toast = { title = artifact_gained left_icon = root right_icon = scope:new_trinket show_as_tooltip = { scope:new_trinket = { set_owner = root } } } } if = { limit = { scope:county_holder ?= { this != root } } reverse_add_opinion = { target = scope:county_holder modifier = defaced_monument_opinion opinion = -20 } } scope:location = { remove_list_variable = { name = grafitti target = scope:ancient_vandal } } stress_impact = { humble = major_stress_impact_gain craven = minor_stress_impact_gain } ai_chance = { base = 1 modifier = { factor = 0 OR = { has_trait = humble has_trait = craven } } } } option = { name = bp3_journey.1100.c stress_impact = { paranoid = major_stress_impact_loss arrogant = minor_stress_impact_gain } ai_chance = { base = 1 } } } # Shave and a Haircut bp3_journey.1200 = { type = activity_event content_source = dlc_015 title = bp3_journey.1200.t desc = bp3_journey.1200.desc theme = journey_activity override_background = { reference = market } left_portrait = { character = scope:host animation = betting } right_portrait = { character = scope:local_character animation = physician } cooldown = { years = 9 } trigger = { } immediate = { scope:activity.activity_location = { save_scope_as = location } if = { limit = { any_pool_character = { province = scope:location culture = scope:location.culture aptitude = { court_position = court_physician_court_position value >= 4 } is_available_healthy_ai_adult = yes court_physician_validity_trigger = { EMPLOYER = root } } } random_pool_character = { province = scope:location limit = { culture = scope:location.culture aptitude = { court_position = court_physician_court_position value >= 4 } is_available_healthy_ai_adult = yes court_physician_validity_trigger = { EMPLOYER = root } } save_scope_as = local_character } } else = { create_character = { template = court_physician_court_position_template location = scope:location culture = scope:location.culture faith = scope:location.faith save_scope_as = local_character } scope:local_character = { add_character_flag = { flag = silently_disappear_me years = 1 } } } if = { limit = { any_court_position_holder = { type = court_physician_court_position } } random_court_position_holder = { type = court_physician_court_position save_scope_as = current_holder } } hidden_effect = { scope:local_character = { random_list = { 10 = { give_nickname = nick_the_miracle_worker } 10 = { give_nickname = nick_the_healer } 10 = { give_nickname = nick_the_wise } 10 = { give_nickname = nick_the_meticulous } } } } if = { # Error suppression limit = { has_character_flag = random_haircut } } } weight_multiplier = { base = 1 modifier = { add = 1 is_valid_to_hire_court_position_type = court_physician_court_position NOT = { employs_court_position = court_physician_court_position } } modifier = { add = 1 scope:activity = { has_variable = diplomacy_skill_focus } } modifier = { add = 1 scope:activity = { has_variable = learning_skill_focus } } } option = { name = bp3_journey.1200.knowledge_hoarding trigger = { has_activity_intent = journey_knowledge_hoarding_intent } journey_knowledge_hoarding_skill_effect = { VALUE = 15 } stress_impact = { base = medium_stress_impact_gain lazy = major_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 has_trait = lazy } } } option = { name = bp3_journey.1200.curiosity trigger = { has_activity_intent = journey_curiosity_intent is_valid_to_hire_court_position_type = court_physician_court_position } custom_tooltip = hair_will_change add_character_flag = { flag = random_haircut months = 6 } add_prestige = medium_prestige_gain hire_for_court_position_journey_effect = { CHARACTER = scope:local_character COURT_POSITION = court_physician } if = { limit = { culture != scope:local_character.culture } culture = { change_cultural_acceptance = { target = scope:local_character.culture value = 2 desc = cultural_acceptance_gain_event } } } stress_impact = { callous = medium_stress_impact_gain sadistic = medium_stress_impact_gain paranoid = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { has_trait = callous has_trait = sadistic has_trait = paranoid } } } } option = { name = bp3_journey.1200.a custom_tooltip = hair_will_change add_character_flag = { flag = random_haircut months = 6 } random_list = { 90 = { desc = barber_success send_interface_toast = { title = barber_success left_icon = root right_icon = scope:local_character add_prestige = major_prestige_gain } } 10 = { desc = barber_fail send_interface_toast = { title = barber_fail left_icon = root right_icon = scope:local_character add_prestige = medium_prestige_loss } } } stress_impact = { humble = medium_stress_impact_gain content = minor_stress_impact_gain shy = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { has_trait = humble has_trait = content has_trait = shy } } } } option = { name = bp3_journey.1200.b trigger = { is_valid_to_hire_court_position_type = court_physician_court_position NOT = { has_activity_intent = journey_curiosity_intent } } hire_for_court_position_journey_effect = { CHARACTER = scope:local_character COURT_POSITION = court_physician } stress_impact = { humble = major_stress_impact_gain craven = minor_stress_impact_gain } ai_chance = { base = 1 modifier = { factor = 0 OR = { has_trait = humble has_trait = craven } } } } option = { name = bp3_journey.1200.c add_prestige = minor_prestige_gain stress_impact = { paranoid = major_stress_impact_gain arrogant = minor_stress_impact_gain } ai_chance = { base = 1 } } after = { if = { # Cleanup limit = { root = { is_ai = yes } scope:local_character = { is_courtier = no has_character_flag = silently_disappear_me } } scope:local_character = { silent_disappearance_effect = yes } } } } # The Songs of Place bp3_journey.1300 = { type = activity_event content_source = dlc_015 title = bp3_journey.1300.t desc = bp3_journey.1300.desc theme = journey_activity left_portrait = { character = scope:local_character animation = dancing } center_portrait = { character = scope:host animation = happiness } right_portrait = { character = scope:local_character_2 animation = instrument_active } cooldown = { years = 9 } trigger = { } immediate = { scope:activity.activity_location = { save_scope_as = location } if = { limit = { is_valid_to_hire_court_position_type = stooge_camp_officer any_pool_character = { province = scope:location culture = scope:location.culture aptitude = { court_position = stooge_camp_officer value >= 4 } is_available_healthy_ai_adult = yes #court_jester_validity_trigger = { EMPLOYER = root } } } random_pool_character = { province = scope:location limit = { culture = scope:location.culture aptitude = { court_position = stooge_camp_officer value >= 4 } is_available_healthy_ai_adult = yes #court_jester_validity_trigger = { EMPLOYER = root } } save_scope_as = local_character } if = { limit = { any_court_position_holder = { type = stooge_camp_officer } } random_court_position_holder = { type = stooge_camp_officer save_scope_as = current_holder } } } else_if = { limit = { is_valid_to_hire_court_position_type = stooge_camp_officer } create_character = { template = stooge_camp_officer_template location = scope:location culture = scope:location.culture faith = scope:location.faith save_scope_as = local_character } scope:local_character = { add_character_flag = { flag = silently_disappear_me years = 1 } } if = { limit = { any_court_position_holder = { type = stooge_camp_officer } } random_court_position_holder = { type = stooge_camp_officer save_scope_as = current_holder } } } else_if = { limit = { any_pool_character = { province = scope:location culture = scope:location.culture aptitude = { court_position = court_jester_court_position value >= 4 } is_available_healthy_ai_adult = yes court_jester_validity_trigger = { EMPLOYER = root } } } random_pool_character = { province = scope:location limit = { culture = scope:location.culture aptitude = { court_position = court_jester_court_position value >= 4 } is_available_healthy_ai_adult = yes court_jester_validity_trigger = { EMPLOYER = root } } save_scope_as = local_character } if = { limit = { any_court_position_holder = { type = court_jester_court_position } } random_court_position_holder = { type = court_jester_court_position save_scope_as = current_holder } } } else = { create_character = { template = court_jester_court_position_template location = scope:location culture = scope:location.culture faith = scope:location.faith save_scope_as = local_character } scope:local_character = { add_character_flag = { flag = silently_disappear_me years = 1 } } if = { limit = { any_court_position_holder = { type = court_jester_court_position } } random_court_position_holder = { type = court_jester_court_position save_scope_as = current_holder } } } if = { limit = { is_valid_to_hire_court_position_type = master_bard_camp_officer any_pool_character = { province = scope:location culture = scope:location.culture aptitude = { court_position = master_bard_camp_officer value >= 4 } is_available_healthy_ai_adult = yes #court_musician_validity_trigger = { EMPLOYER = root } this != scope:local_character } } random_pool_character = { province = scope:location limit = { culture = scope:location.culture aptitude = { court_position = master_bard_camp_officer value >= 4 } is_available_healthy_ai_adult = yes #court_musician_validity_trigger = { EMPLOYER = root } this != scope:local_character } save_scope_as = local_character_2 } if = { limit = { any_court_position_holder = { type = master_bard_camp_officer } } random_court_position_holder = { type = master_bard_camp_officer save_scope_as = current_holder_2 } } } else_if = { limit = { is_valid_to_hire_court_position_type = master_bard_camp_officer } create_character = { template = master_bard_camp_officer_template location = scope:location culture = scope:location.culture faith = scope:location.faith save_scope_as = local_character_2 } scope:local_character_2 = { add_character_flag = { flag = silently_disappear_me years = 1 } } if = { limit = { any_court_position_holder = { type = master_bard_camp_officer } } random_court_position_holder = { type = master_bard_camp_officer save_scope_as = current_holder_2 } } } else_if = { limit = { any_pool_character = { province = scope:location culture = scope:location.culture aptitude = { court_position = court_musician_court_position value >= 4 } is_available_healthy_ai_adult = yes court_musician_validity_trigger = { EMPLOYER = root } this != scope:local_character } } random_pool_character = { province = scope:location limit = { culture = scope:location.culture aptitude = { court_position = court_musician_court_position value >= 4 } is_available_healthy_ai_adult = yes court_musician_validity_trigger = { EMPLOYER = root } this != scope:local_character } save_scope_as = local_character_2 } if = { limit = { any_court_position_holder = { type = court_musician_court_position } } random_court_position_holder = { type = court_musician_court_position save_scope_as = current_holder_2 } } } else = { create_character = { template = court_musician_court_position_template location = scope:location culture = scope:location.culture faith = scope:location.faith save_scope_as = local_character_2 } scope:local_character_2 = { add_character_flag = { flag = silently_disappear_me years = 1 } } if = { limit = { any_court_position_holder = { type = court_musician_court_position } } random_court_position_holder = { type = court_musician_court_position save_scope_as = current_holder_2 } } } scope:local_character = { add_character_flag = jester_outfit } } weight_multiplier = { base = 1 modifier = { add = 1 OR = { AND = { is_valid_to_hire_court_position_type = court_jester_court_position NOT = { employs_court_position = court_jester_court_position } } AND = { is_valid_to_hire_court_position_type = court_musician_court_position NOT = { employs_court_position = court_musician_court_position } } } } modifier = { add = 1 scope:activity = { has_variable = diplomacy_skill_focus } } } option = { name = bp3_journey.1300.knowledge_hoarding trigger = { has_activity_intent = journey_knowledge_hoarding_intent } journey_knowledge_hoarding_skill_effect = { VALUE = 10 } stress_impact = { base = minor_stress_impact_gain lazy = major_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 has_trait = lazy } } } option = { name = bp3_journey.1300.spread_legend_intent trigger = { has_activity_intent = spread_legend_intent } remove_short_term_gold = tiny_gold_value add_character_modifier = { modifier = journey_apa_legend_modifier years = 15 } add_prestige = medium_prestige_gain stress_impact = { humble = minor_stress_impact_gain content = major_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { gold <= minor_gold_value has_trait = humble has_trait = content } } } } option = { name = bp3_journey.1300.curiosity trigger = { has_activity_intent = journey_curiosity_intent } hire_for_court_position_journey_laamp_replacement_effect = { CHARACTER = scope:local_character COURT_POSITION = court_jester LAAMP_POSITION = stooge } hire_for_court_position_journey_laamp_replacement_effect = { CHARACTER = scope:local_character_2 COURT_POSITION = court_musician LAAMP_POSITION = master_bard } if = { limit = { culture != scope:local_character.culture } culture = { change_cultural_acceptance = { target = scope:local_character.culture value = 2 desc = cultural_acceptance_gain_event } } } stress_impact = { callous = medium_stress_impact_gain sadistic = medium_stress_impact_gain paranoid = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { has_trait = callous has_trait = sadistic has_trait = paranoid } } } } option = { name = bp3_journey.1300.a trigger = { OR = { is_valid_to_hire_court_position_type = court_jester_court_position is_valid_to_hire_court_position_type = stooge_camp_officer } NOT = { has_activity_intent = journey_curiosity_intent } } hire_for_court_position_journey_laamp_replacement_effect = { CHARACTER = scope:local_character COURT_POSITION = court_jester LAAMP_POSITION = stooge } stress_impact = { humble = minor_stress_impact_gain content = minor_stress_impact_gain shy = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { has_trait = humble has_trait = content has_trait = shy } } } } option = { name = bp3_journey.1300.b trigger = { OR = { is_valid_to_hire_court_position_type = court_musician_court_position is_valid_to_hire_court_position_type = master_bard_camp_officer } NOT = { has_activity_intent = journey_curiosity_intent } } hire_for_court_position_journey_laamp_replacement_effect = { CHARACTER = scope:local_character_2 COURT_POSITION = court_musician LAAMP_POSITION = master_bard } stress_impact = { humble = medium_stress_impact_gain content = minor_stress_impact_gain shy = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { has_trait = humble has_trait = content has_trait = shy } } } } option = { name = bp3_journey.1300.c add_prestige = minor_prestige_gain stress_impact = { base = minor_stress_impact_loss } ai_chance = { base = 10 } } after = { if = { # Cleanup limit = { root = { is_ai = yes } scope:local_character = { is_courtier = no has_character_flag = silently_disappear_me } } scope:local_character = { remove_character_flag = jester_outfit silent_disappearance_effect = yes } } if = { limit = { root = { is_ai = yes } scope:local_character_2 = { is_courtier = no has_character_flag = silently_disappear_me } } scope:local_character_2 = { silent_disappearance_effect = yes } } } } # Hawking Meat bp3_journey.1400 = { type = activity_event content_source = dlc_015 title = bp3_journey.1400.t desc = bp3_journey.1400.desc theme = journey_activity override_background = { reference = market } left_portrait = { character = scope:host animation = shock } right_portrait = { character = scope:local_character animation = hunting_carcass_start } artifact = { target = scope:newly_created_artifact position = lower_center_portrait } cooldown = { years = 9 } trigger = { } immediate = { scope:activity.activity_location = { save_scope_as = location } if = { limit = { is_valid_to_hire_court_position_type = master_bard_camp_officer any_pool_character = { province = scope:location culture = scope:location.culture aptitude = { court_position = master_bard_camp_officer value >= 4 } is_available_healthy_ai_adult = yes #master_of_hunt_validity_trigger = { EMPLOYER = root } } } random_pool_character = { province = scope:location limit = { culture = scope:location.culture aptitude = { court_position = master_bard_camp_officer value >= 4 } is_available_healthy_ai_adult = yes #master_of_hunt_validity_trigger = { EMPLOYER = root } } save_scope_as = local_character } } else_if = { limit = { is_valid_to_hire_court_position_type = huntperson_camp_officer any_pool_character = { province = scope:location culture = scope:location.culture aptitude = { court_position = huntperson_camp_officer value >= 4 } is_available_healthy_ai_adult = yes #master_of_hunt_validity_trigger = { EMPLOYER = root } } } create_character = { template = huntperson_camp_officer_template location = scope:location culture = scope:location.culture faith = scope:location.faith save_scope_as = local_character } scope:local_character = { add_character_flag = { flag = silently_disappear_me years = 1 } } } else_if = { limit = { any_pool_character = { province = scope:location culture = scope:location.culture aptitude = { court_position = master_of_hunt_court_position value >= 4 } is_available_healthy_ai_adult = yes master_of_hunt_validity_trigger = { EMPLOYER = root } } } random_pool_character = { province = scope:location limit = { culture = scope:location.culture aptitude = { court_position = master_of_hunt_court_position value >= 4 } is_available_healthy_ai_adult = yes master_of_hunt_validity_trigger = { EMPLOYER = root } } save_scope_as = local_character } } else = { create_character = { template = master_of_hunt_court_position_template location = scope:location culture = scope:location.culture faith = scope:location.faith save_scope_as = local_character } scope:local_character = { add_character_flag = { flag = silently_disappear_me years = 1 } } } if = { limit = { any_court_position_holder = { type = huntperson_camp_officer } } random_court_position_holder = { type = huntperson_camp_officer save_scope_as = current_holder } } if = { limit = { any_court_position_holder = { type = master_of_hunt_court_position } } random_court_position_holder = { type = master_of_hunt_court_position save_scope_as = current_holder } } scope:local_character = { save_scope_as = excellent_animal_artifacts if = { limit = { root = { has_royal_court = yes } } create_artifact_animal_hide_effect = { OWNER = scope:local_character HUNTER = scope:local_character LEGENDARY = no ANIMAL = flag:none } } else = { create_artifact_animal_trinket_effect = { OWNER = scope:local_character HUNTER = scope:local_character LEGENDARY = no ANIMAL = flag:none } } } } weight_multiplier = { base = 1 modifier = { add = 1 AND = { is_valid_to_hire_court_position_type = master_of_hunt_court_position NOT = { employs_court_position = master_of_hunt_court_position } } } modifier = { add = 1 scope:activity = { has_variable = martial_skill_focus } } modifier = { add = 1 scope:activity = { has_variable = stewardship_skill_focus } } } option = { name = bp3_journey.1400.knowledge_hoarding trigger = { has_activity_intent = journey_knowledge_hoarding_intent } hunter_progress_point_gain_effect = { CHANGE = 3 RANDOM_CHANGE = 1 } #Gives Hunter Lifestyle XP journey_knowledge_hoarding_skill_effect = { VALUE = 15 } stress_impact = { base = medium_stress_impact_gain lazy = major_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 has_trait = lazy } } } option = { name = bp3_journey.1400.curiosity trigger = { has_activity_intent = journey_curiosity_intent is_valid_to_hire_court_position_type = master_of_hunt_court_position } hunter_progress_point_gain_effect = { CHANGE = 3 RANDOM_CHANGE = 1 } #Gives Hunter Lifestyle XP hire_for_court_position_journey_effect = { CHARACTER = scope:local_character COURT_POSITION = master_of_hunt } if = { limit = { culture != scope:local_character.culture } culture = { change_cultural_acceptance = { target = scope:local_character.culture value = 2 desc = cultural_acceptance_gain_event } } } stress_impact = { paranoid = minor_stress_impact_gain arrogant = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { has_trait = paranoid has_trait = arrogant } } } } option = { name = bp3_journey.1400.a pay_short_term_gold = { target = scope:local_character gold = minor_gold_value } send_interface_toast = { title = artifact_gained left_icon = root right_icon = scope:newly_created_artifact scope:newly_created_artifact = { set_owner = root } } stress_impact = { greedy = medium_stress_impact_gain humble = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { has_trait = greedy has_trait = humble short_term_gold <= medium_gold_value } } } } option = { name = bp3_journey.1400.b trigger = { is_valid_to_hire_court_position_type = master_of_hunt_court_position NOT = { has_activity_intent = journey_curiosity_intent } } hire_for_court_position_journey_effect = { CHARACTER = scope:local_character COURT_POSITION = master_of_hunt } stress_impact = { paranoid = minor_stress_impact_gain arrogant = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { has_trait = paranoid has_trait = arrogant } } } } option = { name = bp3_journey.1400.c add_prestige = minor_prestige_gain ai_chance = { base = 10 } } after = { hidden_effect = { if = { limit = { scope:newly_created_artifact = { artifact_owner = scope:local_character } } destroy_artifact = scope:newly_created_artifact } } if = { # Cleanup limit = { root = { is_ai = yes } scope:local_character = { is_courtier = no has_character_flag = silently_disappear_me } } scope:local_character = { silent_disappearance_effect = yes } } } } # Learned Locals bp3_journey.1500 = { type = activity_event content_source = dlc_015 title = bp3_journey.1500.t desc = bp3_journey.1500.desc theme = journey_activity left_portrait = { character = scope:host animation = thinking } center_portrait = { character = scope:local_character animation = debating } right_portrait = { character = scope:local_character_2 animation = happy_teacher } cooldown = { years = 10 } trigger = { } immediate = { scope:activity.activity_location = { save_scope_as = location } if = { limit = { is_valid_to_hire_court_position_type = chief_forager_camp_officer any_pool_character = { province = scope:location culture = scope:location.culture aptitude = { court_position = chief_forager_camp_officer value >= 4 } is_available_healthy_ai_adult = yes #chief_qadi_validity_trigger = { EMPLOYER = root } } } random_pool_character = { province = scope:location limit = { culture = scope:location.culture aptitude = { court_position = chief_forager_camp_officer value >= 4 } is_available_healthy_ai_adult = yes #chief_qadi_validity_trigger = { EMPLOYER = root } } save_scope_as = local_character } if = { limit = { any_court_position_holder = { type = chief_forager_camp_officer } } random_court_position_holder = { type = chief_forager_camp_officer save_scope_as = current_holder } } } else_if = { limit = { is_valid_to_hire_court_position_type = chief_forager_camp_officer } create_character = { template = chief_forager_camp_officer_template location = scope:location culture = scope:location.culture faith = scope:location.faith save_scope_as = local_character } scope:local_character = { add_character_flag = { flag = silently_disappear_me years = 1 } } if = { limit = { any_court_position_holder = { type = chief_forager_camp_officer } } random_court_position_holder = { type = chief_forager_camp_officer save_scope_as = current_holder } } } else_if = { limit = { is_valid_to_hire_court_position_type = chief_qadi_court_position scope:location.religion = religion:islam_religion any_pool_character = { province = scope:location culture = scope:location.culture aptitude = { court_position = chief_qadi_court_position value >= 4 } is_available_healthy_ai_adult = yes chief_qadi_validity_trigger = { EMPLOYER = root } } } random_pool_character = { province = scope:location limit = { culture = scope:location.culture aptitude = { court_position = chief_qadi_court_position value >= 4 } is_available_healthy_ai_adult = yes chief_qadi_validity_trigger = { EMPLOYER = root } } save_scope_as = local_character } if = { limit = { any_court_position_holder = { type = chief_qadi_court_position } } random_court_position_holder = { type = chief_qadi_court_position save_scope_as = current_holder } } } else_if = { limit = { is_valid_to_hire_court_position_type = chief_qadi_court_position scope:location.religion = religion:islam_religion } create_character = { template = chief_qadi_court_position_template location = scope:location culture = scope:location.culture faith = scope:location.faith save_scope_as = local_character } scope:local_character = { add_character_flag = { flag = silently_disappear_me years = 1 } } if = { limit = { any_court_position_holder = { type = chief_qadi_court_position } } random_court_position_holder = { type = chief_qadi_court_position save_scope_as = current_holder } } } else_if = { limit = { any_pool_character = { province = scope:location culture = scope:location.culture aptitude = { court_position = high_almoner_court_position value >= 4 } is_available_healthy_ai_adult = yes high_almoner_validity_trigger = { EMPLOYER = root } } } random_pool_character = { province = scope:location limit = { culture = scope:location.culture aptitude = { court_position = high_almoner_court_position value >= 4 } is_available_healthy_ai_adult = yes high_almoner_validity_trigger = { EMPLOYER = root } } save_scope_as = local_character } if = { limit = { any_court_position_holder = { type = chief_qadi_court_position } } random_court_position_holder = { type = chief_qadi_court_position save_scope_as = current_holder } } } else = { create_character = { template = high_almoner_court_position_template location = scope:location culture = scope:location.culture faith = scope:location.faith save_scope_as = local_character } scope:local_character = { add_character_flag = { flag = silently_disappear_me years = 1 } } if = { limit = { any_court_position_holder = { type = high_almoner_court_position } } random_court_position_holder = { type = high_almoner_court_position save_scope_as = current_holder } } } if = { limit = { any_pool_character = { province = scope:location culture = scope:location.culture aptitude = { court_position = quartermaster_camp_officer value >= 4 } is_available_healthy_ai_adult = yes #seneschal_validity_trigger = { EMPLOYER = root } this != scope:local_character } } random_pool_character = { province = scope:location limit = { culture = scope:location.culture aptitude = { court_position = quartermaster_camp_officer value >= 4 } is_available_healthy_ai_adult = yes #seneschal_validity_trigger = { EMPLOYER = root } this != scope:local_character } save_scope_as = local_character_2 } if = { limit = { any_court_position_holder = { type = quartermaster_camp_officer } } random_court_position_holder = { type = quartermaster_camp_officer save_scope_as = current_holder_2 } } } else_if = { limit = { is_valid_to_hire_court_position_type = quartermaster_camp_officer } create_character = { template = quartermaster_camp_officer_template location = scope:location culture = scope:location.culture faith = scope:location.faith save_scope_as = local_character_2 } scope:local_character_2 = { add_character_flag = { flag = silently_disappear_me years = 1 } } if = { limit = { any_court_position_holder = { type = quartermaster_camp_officer } } random_court_position_holder = { type = quartermaster_camp_officer save_scope_as = current_holder_2 } } } else_if = { limit = { any_pool_character = { province = scope:location culture = scope:location.culture aptitude = { court_position = seneschal_court_position value >= 4 } is_available_healthy_ai_adult = yes seneschal_validity_trigger = { EMPLOYER = root } this != scope:local_character } } random_pool_character = { province = scope:location limit = { culture = scope:location.culture aptitude = { court_position = seneschal_court_position value >= 4 } is_available_healthy_ai_adult = yes seneschal_validity_trigger = { EMPLOYER = root } this != scope:local_character } save_scope_as = local_character_2 } if = { limit = { any_court_position_holder = { type = seneschal_court_position } } random_court_position_holder = { type = seneschal_court_position save_scope_as = current_holder_2 } } } else = { create_character = { template = seneschal_court_position_template location = scope:location culture = scope:location.culture faith = scope:location.faith save_scope_as = local_character_2 } scope:local_character_2 = { add_character_flag = { flag = silently_disappear_me years = 1 } } if = { limit = { any_court_position_holder = { type = seneschal_court_position } } random_court_position_holder = { type = seneschal_court_position save_scope_as = current_holder_2 } } } } weight_multiplier = { base = 1 modifier = { add = 1 OR = { AND = { is_valid_to_hire_court_position_type = quartermaster_camp_officer NOT = { employs_court_position = quartermaster_camp_officer } } AND = { is_valid_to_hire_court_position_type = chief_qadi_court_position NOT = { employs_court_position = chief_qadi_court_position } } AND = { is_valid_to_hire_court_position_type = high_almoner_court_position NOT = { employs_court_position = high_almoner_court_position } } AND = { is_valid_to_hire_court_position_type = seneschal_court_position NOT = { employs_court_position = seneschal_court_position } } } } modifier = { add = 1 scope:activity = { has_variable = stewardship_skill_focus } } modifier = { add = 1 scope:activity = { has_variable = learning_skill_focus } } } option = { name = bp3_journey.option.spread_legend_intent trigger = { has_activity_intent = spread_legend_intent } add_character_modifier = { modifier = journey_apa_legend_modifier years = 15 } add_prestige = minor_prestige_gain reverse_add_opinion = { modifier = impressed_opinion opinion = 20 target = scope:local_character } reverse_add_opinion = { modifier = impressed_opinion opinion = 20 target = scope:local_character_2 } stress_impact = { humble = minor_stress_impact_gain content = major_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { gold <= minor_gold_value has_trait = humble has_trait = content } } } } option = { name = bp3_journey.1500.knowledge_hoarding trigger = { has_activity_intent = journey_knowledge_hoarding_intent } pay_short_term_gold = { target = scope:local_character gold = tiny_gold_value } add_prestige = medium_prestige_gain journey_knowledge_hoarding_skill_effect = { VALUE = 15 } stress_impact = { base = minor_stress_impact_gain lazy = major_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 has_trait = lazy } } } option = { name = bp3_journey.1500.curiosity trigger = { has_activity_intent = journey_curiosity_intent } hire_for_two_court_position_journey_laamp_replacement_effect = { CHARACTER = scope:local_character COURT_POSITION = chief_qadi COURT_POSITION_2 = high_almoner LAAMP_POSITION = chief_forager } hire_for_court_position_journey_laamp_replacement_effect_2 = { CHARACTER = scope:local_character_2 COURT_POSITION = seneschal LAAMP_POSITION = quartermaster } stress_impact = { paranoid = minor_stress_impact_gain arrogant = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { has_trait = paranoid has_trait = arrogant } } } } option = { name = bp3_journey.1500.curiosity_2 trigger = { has_activity_intent = journey_curiosity_intent } pay_short_term_gold = { target = scope:local_character gold = tiny_gold_value } pay_short_term_gold = { target = scope:local_character_2 gold = tiny_gold_value } add_prestige = medium_prestige_gain add_piety = medium_piety_gain if = { limit = { culture != scope:local_character.culture } culture = { change_cultural_acceptance = { target = scope:local_character.culture value = 4 desc = cultural_acceptance_gain_event } } } stress_impact = { greedy = minor_stress_impact_gain arrogant = minor_stress_impact_gain arbitrary = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { short_term_gold <= medium_gold_value has_trait = greedy has_trait = arrogant has_trait = arbitrary } } } } option = { name = bp3_journey.1500.a trigger = { OR = { is_valid_to_hire_court_position_type = chief_forager_camp_officer is_valid_to_hire_court_position_type = chief_qadi_court_position is_valid_to_hire_court_position_type = high_almoner_court_position } NOT = { has_activity_intent = journey_curiosity_intent } } hire_for_two_court_position_journey_laamp_replacement_effect = { CHARACTER = scope:local_character COURT_POSITION = chief_qadi COURT_POSITION_2 = high_almoner LAAMP_POSITION = chief_forager } stress_impact = { paranoid = minor_stress_impact_gain arrogant = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { has_trait = paranoid has_trait = arrogant } } } } option = { name = bp3_journey.1500.b trigger = { OR = { is_valid_to_hire_court_position_type = seneschal_court_position is_valid_to_hire_court_position_type = quartermaster_camp_officer } NOT = { has_activity_intent = journey_curiosity_intent } } hire_for_court_position_journey_laamp_replacement_effect_2 = { CHARACTER = scope:local_character_2 COURT_POSITION = seneschal LAAMP_POSITION = quartermaster } stress_impact = { paranoid = minor_stress_impact_gain arrogant = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { has_trait = paranoid has_trait = arrogant } } } } option = { name = bp3_journey.1500.c add_prestige = minor_prestige_gain add_character_modifier = { modifier = inspired_by_alms_modifier years = 10 } ai_chance = { base = 10 } } } # City of Cats bp3_journey.1600 = { type = activity_event content_source = dlc_015 title = bp3_journey.1600.t desc = bp3_journey.1600.desc theme = journey_activity center_portrait = { character = scope:host animation = survey } cooldown = { years = 9 } trigger = { NOT = { any_owned_story = { type = story_cycle_pet_cat } } } immediate = { scope:activity.activity_location = { save_scope_as = location } } weight_multiplier = { base = 1 modifier = { add = 1 scope:activity = { has_variable = intrigue_skill_focus } } } option = { name = bp3_journey.1600.knowledge_hoarding trigger = { has_activity_intent = journey_knowledge_hoarding_intent } duel = { skill = intrigue value = 12 50 = { compare_modifier = { value = scope:duel_value multiplier = 3.5 min = -49 } desc = cat_help send_interface_toast = { title = cat_help left_icon = root journey_knowledge_hoarding_skill_effect = { VALUE = 25 } add_prestige = medium_prestige_gain } } 50 = { compare_modifier = { value = scope:duel_value multiplier = -3.5 min = -49 } desc = get_lost send_interface_toast = { title = get_lost left_icon = root journey_knowledge_hoarding_skill_effect = { VALUE = 5 } remove_short_term_gold = minor_gold_value } } } stress_impact = { base = minor_stress_impact_gain lazy = major_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 has_trait = lazy } } } option = { name = bp3_journey.1600.curiosity trigger = { has_activity_intent = journey_curiosity_intent } if = { limit = { culture != scope:location.culture } culture = { change_cultural_acceptance = { target = scope:location.culture value = 2 desc = cultural_acceptance_gain_event } } } remove_short_term_gold = minor_gold_value add_prestige = minor_prestige_gain stress_impact = { paranoid = minor_stress_impact_gain arrogant = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { has_trait = paranoid has_trait = arrogant } } } } option = { name = bp3_journey.1600.a start_cat_story_cycle_effect = yes add_character_flag = { flag = city_cat days = 5 } stress_impact = { sadistic = minor_stress_impact_gain callous = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { has_trait = sadistic has_trait = callous } } } } option = { name = bp3_journey.1600.b add_prestige = miniscule_prestige_gain stress_impact = { compassionate = major_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 has_trait = compassionate } } } } # Culture Drills bp3_journey.1700 = { type = activity_event content_source = dlc_015 title = bp3_journey.1700.t desc = { desc = bp3_journey.1700.desc first_valid = { triggered_desc = { trigger = { culture != scope:location.culture } desc = bp3_journey.1700.desc_different_culture } desc = bp3_journey.1700.desc_same_culture } } theme = journey_activity override_background = { reference = courtyard } left_portrait = { character = scope:local_character_3 animation = throne_room_two_handed_passive_1 } center_portrait = { character = scope:local_character animation = inspect_weapon } right_portrait = { character = scope:local_character_2 animation = marshal } cooldown = { years = 9 } trigger = { } immediate = { scope:activity.activity_location = { save_scope_as = location } if = { limit = { is_valid_to_hire_court_position_type = head_groom_camp_officer any_pool_character = { province = scope:location culture = scope:location.culture aptitude = { court_position = head_groom_camp_officer value >= 4 } is_available_healthy_ai_adult = yes #master_of_horse_validity_trigger = { EMPLOYER = root } } } random_pool_character = { province = scope:location limit = { culture = scope:location.culture aptitude = { court_position = head_groom_camp_officer value >= 4 } is_available_healthy_ai_adult = yes #master_of_horse_validity_trigger = { EMPLOYER = root } } save_scope_as = local_character } if = { limit = { any_court_position_holder = { type = head_groom_camp_officer } } random_court_position_holder = { type = head_groom_camp_officer save_scope_as = current_holder } } } else_if = { limit = { is_valid_to_hire_court_position_type = head_groom_camp_officer } create_character = { template = head_groom_camp_officer_template location = scope:location culture = scope:location.culture faith = scope:location.faith save_scope_as = local_character } scope:local_character = { add_character_flag = { flag = silently_disappear_me years = 1 } } if = { limit = { any_court_position_holder = { type = head_groom_camp_officer } } random_court_position_holder = { type = head_groom_camp_officer save_scope_as = current_holder } } } else_if = { limit = { any_pool_character = { province = scope:location culture = scope:location.culture aptitude = { court_position = master_of_horse_court_position value >= 4 } is_available_healthy_ai_adult = yes master_of_horse_validity_trigger = { EMPLOYER = root } } } random_pool_character = { province = scope:location limit = { culture = scope:location.culture aptitude = { court_position = master_of_horse_court_position value >= 4 } is_available_healthy_ai_adult = yes master_of_horse_validity_trigger = { EMPLOYER = root } } save_scope_as = local_character } if = { limit = { any_court_position_holder = { type = master_of_horse_court_position } } random_court_position_holder = { type = master_of_horse_court_position save_scope_as = current_holder } } } else = { create_character = { template = master_of_horse_court_position_template location = scope:location culture = scope:location.culture faith = scope:location.faith save_scope_as = local_character } scope:local_character = { add_character_flag = { flag = silently_disappear_me years = 1 } } if = { limit = { any_court_position_holder = { type = master_of_horse_court_position } } random_court_position_holder = { type = master_of_horse_court_position save_scope_as = current_holder } } } if = { limit = { any_pool_character = { province = scope:location culture = scope:location.culture aptitude = { court_position = bodyguard_court_position value >= 4 } is_available_healthy_ai_adult = yes bodyguard_validity_trigger = { EMPLOYER = root } this != scope:local_character } } random_pool_character = { province = scope:location limit = { culture = scope:location.culture aptitude = { court_position = bodyguard_court_position value >= 4 } is_available_healthy_ai_adult = yes bodyguard_validity_trigger = { EMPLOYER = root } this != scope:local_character } save_scope_as = local_character_2 } } else = { create_character = { template = bodyguard_court_position_template location = scope:location culture = scope:location.culture faith = scope:location.faith save_scope_as = local_character_2 } scope:local_character = { add_character_flag = { flag = silently_disappear_me years = 1 } } } if = { limit = { any_pool_character = { province = scope:location culture = scope:location.culture aptitude = { court_position = bodyguard_court_position value >= 4 } is_available_healthy_ai_adult = yes bodyguard_validity_trigger = { EMPLOYER = root } this != scope:local_character this != scope:local_character_2 } } random_pool_character = { province = scope:location limit = { culture = scope:location.culture aptitude = { court_position = bodyguard_court_position value >= 4 } is_available_healthy_ai_adult = yes bodyguard_validity_trigger = { EMPLOYER = root } this != scope:local_character this != scope:local_character_2 } save_scope_as = local_character_3 } } else = { create_character = { template = bodyguard_court_position_template location = scope:location culture = scope:location.culture faith = scope:location.faith save_scope_as = local_character_3 } scope:local_character = { add_character_flag = { flag = silently_disappear_me years = 1 } } } scope:local_character = { add_character_flag = military_outfit } scope:local_character_2 = { add_character_flag = military_outfit } scope:local_character_3 = { add_character_flag = military_outfit } if = { limit = { any_maa_regiment = { maa_max_troops_count <= 2000 NOT = { is_unit_type = siege_weapon } OR = { is_maa_type = light_footmen is_maa_type = bowmen is_maa_type = light_horsemen is_maa_type = pikemen_unit is_maa_type = armored_footmen is_maa_type = armored_horsemen is_maa_type = crossbowmen is_maa_type = house_guard is_maa_type = steppe_raiders is_maa_type = horse_archers is_maa_type = heavy_horse_archers is_maa_type = nomad_lancers } } } random_maa_regiment = { limit = { maa_max_troops_count <= 2000 NOT = { is_unit_type = siege_weapon } OR = { is_maa_type = light_footmen is_maa_type = bowmen is_maa_type = light_horsemen is_maa_type = pikemen_unit is_maa_type = armored_footmen is_maa_type = armored_horsemen is_maa_type = crossbowmen is_maa_type = house_guard is_maa_type = steppe_raiders is_maa_type = horse_archers is_maa_type = heavy_horse_archers is_maa_type = nomad_lancers } } alternative_limit = { maa_max_troops_count <= 2000 NOT = { is_unit_type = siege_weapon } } save_scope_as = maa } } } weight_multiplier = { base = 1 modifier = { add = 1 OR = { AND = { is_valid_to_hire_court_position_type = bodyguard_court_position NOT = { employs_court_position = bodyguard_court_position } } AND = { is_valid_to_hire_court_position_type = master_of_horse_court_position NOT = { employs_court_position = master_of_horse_court_position } } AND = { is_valid_to_hire_court_position_type = head_groom_camp_officer NOT = { employs_court_position = head_groom_camp_officer } } } } modifier = { add = 1 scope:activity = { has_variable = martial_skill_focus } } } option = { name = bp3_journey.option.spread_legend_intent trigger = { has_activity_intent = spread_legend_intent } add_character_modifier = { modifier = journey_apa_legend_modifier years = 15 } add_prestige = minor_prestige_gain reverse_add_opinion = { modifier = impressed_opinion opinion = 20 target = scope:local_character } reverse_add_opinion = { modifier = impressed_opinion opinion = 20 target = scope:local_character_2 } reverse_add_opinion = { modifier = impressed_opinion opinion = 20 target = scope:local_character_3 } stress_impact = { humble = minor_stress_impact_gain content = major_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { gold <= minor_gold_value has_trait = humble has_trait = content } } } } option = { name = bp3_journey.1700.knowledge_hoarding trigger = { has_activity_intent = journey_knowledge_hoarding_intent } journey_knowledge_hoarding_skill_effect = { VALUE = 25 } if = { limit = { is_landless_adventurer = no } capital_province ?= { add_province_modifier = { modifier = imported_tactics_modifier years = 20 } } } else_if = { limit = { has_government = landless_adventurer_government } add_character_modifier = { modifier = imported_tactics_character_modifier years = 10 } } pay_short_term_gold = { target = scope:local_character gold = tiny_gold_value } hire_for_court_position_journey_laamp_replacement_effect = { CHARACTER = scope:local_character COURT_POSITION = master_of_horse LAAMP_POSITION = head_groom } stress_impact = { base = medium_stress_impact_gain lazy = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { short_term_gold <= minor_gold_value has_trait = lazy } } } } option = { name = bp3_journey.1700.curiosity trigger = { has_activity_intent = journey_curiosity_intent } hire_for_court_position_journey_laamp_replacement_effect = { CHARACTER = scope:local_character COURT_POSITION = master_of_horse LAAMP_POSITION = head_groom } add_character_flag = bodyguard_flag hire_for_court_position_journey_effect = { CHARACTER = scope:local_character_2 COURT_POSITION = bodyguard } hire_for_court_position_journey_effect = { CHARACTER = scope:local_character_3 COURT_POSITION = bodyguard } remove_character_flag = bodyguard_flag if = { limit = { culture != scope:local_character.culture } culture = { change_cultural_acceptance = { target = scope:local_character.culture value = 2 desc = cultural_acceptance_gain_event } } } stress_impact = { paranoid = minor_stress_impact_loss shy = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 has_trait = shy } } } option = { name = bp3_journey.1700.b trigger = { NOT = { has_activity_intent = journey_curiosity_intent } } add_character_flag = bodyguard_flag hire_for_court_position_journey_effect = { CHARACTER = scope:local_character_2 COURT_POSITION = bodyguard } hire_for_court_position_journey_effect = { CHARACTER = scope:local_character_3 COURT_POSITION = bodyguard } remove_character_flag = bodyguard_flag stress_impact = { trusting = major_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 has_trait = trusting } } } option = { name = bp3_journey.1700.c trigger = { exists = scope:maa } add_prestige = major_prestige_gain remove_treasury_or_gold = major_treasury_or_gold_value custom_tooltip = maa_increases_tt hidden_effect = { scope:maa = { change_maa_regiment_size = { size = 2 reinforce = yes } } } stress_impact = { humble = minor_stress_impact_gain content = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { short_term_treasury_or_gold <= massive_treasury_or_gold_value has_trait = humble has_trait = content } } } } option = { name = bp3_journey.1700.d add_prestige = minor_prestige_gain ai_chance = { base = 100 } } after = { scope:local_character = { remove_character_flag = military_outfit silent_disappear_ai_if_not_hired = yes } scope:local_character_2 = { remove_character_flag = military_outfit silent_disappear_ai_if_not_hired = yes } scope:local_character_3 = { remove_character_flag = military_outfit silent_disappear_ai_if_not_hired = yes } } } # Trust Me bp3_journey.1800 = { type = activity_event content_source = dlc_015 title = bp3_journey.1800.t desc = bp3_journey.1800.desc theme = journey_activity left_portrait = { character = scope:host animation = survey } right_portrait = { character = scope:local_character animation = eccentric } cooldown = { years = 9 } trigger = { } immediate = { scope:activity.activity_location = { save_scope_as = location } if = { limit = { any_pool_character = { province = scope:location culture = scope:location.culture aptitude = { court_position = travel_leader_court_position value >= 4 } is_available_healthy_ai_adult = yes travel_leader_validity_trigger = { EMPLOYER = root } } } random_pool_character = { province = scope:location limit = { culture = scope:location.culture aptitude = { court_position = travel_leader_court_position value >= 4 } is_available_healthy_ai_adult = yes travel_leader_validity_trigger = { EMPLOYER = root } } save_scope_as = local_character } } else = { create_character = { template = travel_leader_court_position_template location = scope:location culture = scope:location.culture faith = scope:location.faith save_scope_as = local_character } scope:local_character = { add_character_flag = { flag = silently_disappear_me years = 1 } } } if = { limit = { any_court_position_holder = { type = travel_leader_court_position } } random_court_position_holder = { type = travel_leader_court_position save_scope_as = current_holder } } hidden_effect = { scope:local_character = { random_list = { 10 = { give_nickname = nick_the_trustworthy_ironic } 10 = { give_nickname = nick_the_honest } } } } } weight_multiplier = { base = 1 modifier = { add = 1 is_valid_to_hire_court_position_type = travel_leader_court_position OR = { NOT = { employs_court_position = travel_leader_court_position } any_court_position_holder = { type = travel_leader_court_position aptitude = { court_position = travel_leader_court_position value < 4 } } } } modifier = { add = 1 scope:activity = { has_variable = intrigue_skill_focus } } } option = { name = bp3_journey.1800.spread_legend_intent trigger = { has_activity_intent = spread_legend_intent } add_character_modifier = { modifier = journey_apa_legend_modifier years = 15 } add_prestige = minor_prestige_gain reverse_add_opinion = { modifier = impressed_opinion opinion = 20 target = scope:local_character } stress_impact = { humble = minor_stress_impact_gain content = major_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { gold <= minor_gold_value has_trait = humble has_trait = content } } } } option = { name = bp3_journey.1800.knowledge_hoarding trigger = { has_activity_intent = journey_knowledge_hoarding_intent } pay_short_term_gold = { target = scope:local_character gold = minor_gold_value } duel = { skill = intrigue value = scope:local_character.intrigue 5 = { compare_modifier = { value = scope:duel_value multiplier = 3.5 min = -49 } min = 5 desc = mostly_true_tt send_interface_toast = { title = mostly_true_tt left_icon = root journey_knowledge_hoarding_skill_effect = { VALUE = 50 } add_prestige = major_prestige_gain } } 45 = { compare_modifier = { value = scope:duel_value multiplier = 3.5 min = -49 } min = 5 desc = almost_true_tt send_interface_toast = { title = almost_true_tt left_icon = root journey_knowledge_hoarding_skill_effect = { VALUE = 15 } } } 45 = { compare_modifier = { value = scope:duel_value multiplier = -3.5 min = -49 } min = 5 desc = not_true_tt send_interface_toast = { title = not_true_tt left_icon = root journey_knowledge_hoarding_skill_effect = { VALUE = 5 } } } 5 = { compare_modifier = { value = scope:duel_value multiplier = -3.5 min = -49 } min = 5 desc = utterly_scammed_tt send_interface_toast = { title = utterly_scammed_tt left_icon = root remove_short_term_gold = minor_gold_value add_prestige = minor_prestige_loss set_nickname_effect = { NICKNAME = nick_the_gullible } } } } stress_impact = { base = minor_stress_impact_gain lazy = major_stress_impact_gain cynical = major_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { short_term_gold <= medium_gold_value has_trait = lazy has_trait = cynical } } } } option = { name = bp3_journey.1800.curiosity trigger = { has_activity_intent = journey_curiosity_intent is_valid_to_hire_court_position_type = travel_leader_court_position NOT = { has_trait = trusting } } pay_short_term_gold = { target = scope:local_character gold = tiny_gold_value } hire_for_court_position_journey_effect = { CHARACTER = scope:local_character COURT_POSITION = travel_leader } if = { limit = { culture != scope:local_character.culture } culture = { change_cultural_acceptance = { target = scope:local_character.culture value = 4 desc = cultural_acceptance_gain_event } } } stress_impact = { callous = medium_stress_impact_gain sadistic = medium_stress_impact_gain paranoid = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { has_trait = callous has_trait = sadistic has_trait = paranoid } } } } option = { name = bp3_journey.1800.a trigger = { NOT = { has_trait = trusting } } pay_short_term_gold = { target = scope:local_character gold = tiny_gold_value } random_list = { 10 = { desc = beautiful_vista send_interface_toast = { title = beautiful_vista left_icon = root right_icon = scope:local_character add_prestige = medium_prestige_gain } } 10 = { desc = relaxing_sights send_interface_toast = { title = relaxing_sights left_icon = root right_icon = scope:local_character add_stress = medium_stress_impact_loss add_prestige = minor_prestige_gain } } 10 = { desc = interesting_insight send_interface_toast = { title = interesting_insight left_icon = root right_icon = scope:local_character add_character_modifier = { modifier = interesting_insight_modifier years = 9 } add_prestige = minor_prestige_gain } } } stress_impact = { greedy = minor_stress_impact_gain cynical = minor_stress_impact_gain paranoid = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { short_term_gold <= minor_gold_value has_trait = greedy has_trait = cynical has_trait = paranoid } } } } option = { name = bp3_journey.1800.b trigger = { NOR = { has_activity_intent = journey_curiosity_intent has_trait = trusting } is_valid_to_hire_court_position_type = travel_leader_court_position } hire_for_court_position_journey_effect = { CHARACTER = scope:local_character COURT_POSITION = travel_leader } stress_impact = { paranoid = minor_stress_impact_gain arrogant = minor_stress_impact_gain } ai_chance = { base = 1 modifier = { factor = 0 OR = { has_trait = paranoid has_trait = arrogant } } } } option = { name = bp3_journey.1800.c trigger = { NOT = { has_trait = trusting } } add_prestige = miniscule_prestige_gain ai_chance = { base = 1 } } option = { name = bp3_journey.1800.trusting trigger = { has_trait = trusting } pay_short_term_gold = { target = scope:local_character gold = minor_gold_value } ai_chance = { base = 100 } } after = { if = { # Cleanup limit = { root = { is_ai = yes } scope:local_character = { is_courtier = no has_character_flag = silently_disappear_me } } scope:local_character = { silent_disappearance_effect = yes } } } } # Poor X bp3_journey.1900 = { type = activity_event content_source = dlc_015 title = bp3_journey.1900.t desc = bp3_journey.1900.desc theme = journey_activity left_portrait = { character = scope:host animation = bribing } right_portrait = { character = scope:local_character animation = beg } cooldown = { years = 9 } trigger = { OR = { is_valid_to_hire_court_position_type = court_tutor_court_position is_valid_to_hire_court_position_type = royal_architect_court_position is_valid_to_hire_court_position_type = head_porter_camp_officer is_valid_to_hire_court_position_type = cupbearer_court_position is_valid_to_hire_court_position_type = witness_camp_officer is_valid_to_hire_court_position_type = court_poet_court_position is_valid_to_hire_court_position_type = chronicler_court_position is_valid_to_hire_court_position_type = second_camp_officer is_valid_to_hire_court_position_type = wet_nurse_court_position AND = { is_valid_to_hire_court_position_type = antiquarian_court_position OR = { NOT = { employs_court_position = antiquarian_court_position } AND = { employs_court_position = antiquarian_court_position any_court_position_holder = { type = antiquarian_court_position aptitude:antiquarian_court_position < 4 } } } } } } immediate = { scope:activity.activity_location = { save_scope_as = location } random_list = { 1 = { trigger = { is_valid_to_hire_court_position_type = head_porter_camp_officer } modifier = { add = 99 AND = { is_valid_to_hire_court_position_type = head_porter_camp_officer OR = { NOT = { employs_court_position = head_porter_camp_officer } AND = { employs_court_position = head_porter_camp_officer any_court_position_holder = { type = head_porter_camp_officer aptitude:head_porter_camp_officer < 4 } } } } } journey_find_or_create_excellent_court_position_effect = { COURT_POSITION = head_porter_camp_officer LOCATION = scope:location } } 1 = { trigger = { is_valid_to_hire_court_position_type = witness_camp_officer } modifier = { add = 99 AND = { is_valid_to_hire_court_position_type = witness_camp_officer OR = { NOT = { employs_court_position = witness_camp_officer } AND = { employs_court_position = witness_camp_officer any_court_position_holder = { type = witness_camp_officer aptitude:witness_camp_officer < 4 } } } } } journey_find_or_create_excellent_court_position_effect = { COURT_POSITION = witness_camp_officer LOCATION = scope:location } } 1 = { trigger = { is_valid_to_hire_court_position_type = second_camp_officer } modifier = { add = 99 AND = { is_valid_to_hire_court_position_type = second_camp_officer OR = { NOT = { employs_court_position = second_camp_officer } AND = { employs_court_position = second_camp_officer any_court_position_holder = { type = second_camp_officer aptitude:second_camp_officer < 4 } } } } } journey_find_or_create_excellent_court_position_effect = { COURT_POSITION = second_camp_officer LOCATION = scope:location } } 1 = { trigger = { is_valid_to_hire_court_position_type = court_tutor_court_position } modifier = { add = 99 AND = { is_valid_to_hire_court_position_type = court_tutor_court_position OR = { NOT = { employs_court_position = court_tutor_court_position } AND = { employs_court_position = court_tutor_court_position any_court_position_holder = { type = court_tutor_court_position aptitude:court_tutor_court_position < 4 } } } } } journey_find_or_create_excellent_court_position_effect = { COURT_POSITION = court_tutor_court_position LOCATION = scope:location } } 1 = { trigger = { is_valid_to_hire_court_position_type = royal_architect_court_position } modifier = { add = 99 AND = { is_valid_to_hire_court_position_type = royal_architect_court_position OR = { NOT = { employs_court_position = royal_architect_court_position } AND = { employs_court_position = royal_architect_court_position any_court_position_holder = { type = royal_architect_court_position aptitude:royal_architect_court_position < 4 } } } } } journey_find_or_create_excellent_court_position_effect = { COURT_POSITION = royal_architect_court_position LOCATION = scope:location } } 1 = { trigger = { is_valid_to_hire_court_position_type = cupbearer_court_position } modifier = { add = 99 AND = { is_valid_to_hire_court_position_type = cupbearer_court_position OR = { NOT = { employs_court_position = cupbearer_court_position } AND = { employs_court_position = cupbearer_court_position any_court_position_holder = { type = cupbearer_court_position aptitude:cupbearer_court_position < 4 } } } } } journey_find_or_create_excellent_court_position_effect = { COURT_POSITION = cupbearer_court_position LOCATION = scope:location } } 1 = { trigger = { is_valid_to_hire_court_position_type = court_poet_court_position } modifier = { add = 99 AND = { is_valid_to_hire_court_position_type = court_poet_court_position OR = { NOT = { employs_court_position = court_poet_court_position } AND = { employs_court_position = court_poet_court_position any_court_position_holder = { type = court_poet_court_position aptitude:court_poet_court_position < 4 } } } } } journey_find_or_create_excellent_court_position_effect = { COURT_POSITION = court_poet_court_position LOCATION = scope:location } } 1 = { trigger = { is_valid_to_hire_court_position_type = chronicler_court_position } modifier = { add = 99 AND = { is_valid_to_hire_court_position_type = chronicler_court_position OR = { NOT = { employs_court_position = chronicler_court_position } AND = { employs_court_position = chronicler_court_position any_court_position_holder = { type = chronicler_court_position aptitude:chronicler_court_position < 4 } } } } } journey_find_or_create_excellent_court_position_effect = { COURT_POSITION = chronicler_court_position LOCATION = scope:location } } 1 = { trigger = { is_valid_to_hire_court_position_type = wet_nurse_court_position } modifier = { add = 99 AND = { is_valid_to_hire_court_position_type = court_tutor_court_position OR = { NOT = { employs_court_position = court_tutor_court_position } AND = { employs_court_position = court_tutor_court_position any_court_position_holder = { type = court_tutor_court_position aptitude:court_tutor_court_position < 4 } } } } } journey_find_or_create_excellent_court_position_effect = { COURT_POSITION = wet_nurse_court_position LOCATION = scope:location } } 10 = { trigger = { AND = { is_valid_to_hire_court_position_type = antiquarian_court_position OR = { NOT = { employs_court_position = antiquarian_court_position } AND = { employs_court_position = antiquarian_court_position any_court_position_holder = { type = antiquarian_court_position aptitude:antiquarian_court_position < 4 } } } } } journey_find_or_create_excellent_court_position_effect = { COURT_POSITION = antiquarian_court_position LOCATION = scope:location } } } scope:local_character = { add_character_flag = peasant_outfit add_character_flag = no_hat } } weight_multiplier = { base = 1 modifier = { add = 1 OR = { AND = { is_valid_to_hire_court_position_type = second_camp_officer NOT = { employs_court_position = second_camp_officer } } AND = { is_valid_to_hire_court_position_type = witness_camp_officer NOT = { employs_court_position = witness_camp_officer } } AND = { is_valid_to_hire_court_position_type = head_porter_camp_officer NOT = { employs_court_position = head_porter_camp_officer } } AND = { is_valid_to_hire_court_position_type = court_tutor_court_position NOT = { employs_court_position = court_tutor_court_position } } AND = { is_valid_to_hire_court_position_type = royal_architect_court_position NOT = { employs_court_position = royal_architect_court_position } } AND = { is_valid_to_hire_court_position_type = cupbearer_court_position NOT = { employs_court_position = cupbearer_court_position } } AND = { is_valid_to_hire_court_position_type = court_poet_court_position NOT = { employs_court_position = court_poet_court_position } } AND = { is_valid_to_hire_court_position_type = chronicler_court_position NOT = { employs_court_position = chronicler_court_position } } # Wet Nurse and Antiquarian have bespoke events } } } option = { name = bp3_journey.option.spread_legend_intent trigger = { has_activity_intent = spread_legend_intent } add_character_modifier = { modifier = journey_apa_legend_modifier years = 15 } add_prestige = miniscule_prestige_gain reverse_add_opinion = { modifier = annoyed_opinion opinion = -20 target = scope:local_character } stress_impact = { humble = minor_stress_impact_gain content = major_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { gold <= minor_gold_value has_trait = humble has_trait = content } } } } option = { name = bp3_journey.1900.knowledge_hoarding trigger = { has_activity_intent = journey_knowledge_hoarding_intent } journey_knowledge_hoarding_skill_effect = { VALUE = 25 } add_piety = miniscule_piety_gain pay_short_term_gold = { target = scope:local_character gold = tiny_gold_value } stress_impact = { base = minor_stress_impact_gain lazy = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { short_term_gold <= minor_gold_value has_trait = lazy } } } } option = { name = bp3_journey.1900.curiosity trigger = { has_activity_intent = journey_curiosity_intent } if = { limit = { has_character_flag = court_tutor_court_position } journey_employ_in_court_position = { CHARACTER = scope:local_character COURT_POSITION = court_tutor } } else_if = { limit = { has_character_flag = head_porter_camp_officer } journey_employ_in_camp_position = { CHARACTER = scope:local_character COURT_POSITION = head_porter } } else_if = { limit = { has_character_flag = royal_architect_court_position } journey_employ_in_court_position = { CHARACTER = scope:local_character COURT_POSITION = royal_architect } } else_if = { limit = { has_character_flag = witness_camp_officer } journey_employ_in_camp_position = { CHARACTER = scope:local_character COURT_POSITION = witness } } else_if = { limit = { has_character_flag = cupbearer_court_position } journey_employ_in_court_position = { CHARACTER = scope:local_character COURT_POSITION = cupbearer } } else_if = { limit = { has_character_flag = court_poet_court_position } journey_employ_in_court_position = { CHARACTER = scope:local_character COURT_POSITION = court_poet } } else_if = { limit = { has_character_flag = second_camp_officer } journey_employ_in_camp_position = { CHARACTER = scope:local_character COURT_POSITION = second } } else_if = { limit = { has_character_flag = chronicler_court_position } journey_employ_in_court_position = { CHARACTER = scope:local_character COURT_POSITION = chronicler } } else_if = { limit = { has_character_flag = wet_nurse_court_position } journey_employ_in_court_position = { CHARACTER = scope:local_character COURT_POSITION = wet_nurse } } else_if = { limit = { has_character_flag = antiquarian_court_position } journey_employ_in_court_position = { CHARACTER = scope:local_character COURT_POSITION = antiquarian } } add_hook = { type = strong_obligation_hook target = scope:local_character } custom_tooltip = obligation_hook_tt if = { limit = { culture != scope:local_character.culture } culture = { change_cultural_acceptance = { target = scope:local_character.culture value = 2 desc = cultural_acceptance_gain_event } } } stress_impact = { callous = medium_stress_impact_gain sadistic = medium_stress_impact_gain paranoid = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { has_trait = callous has_trait = sadistic has_trait = paranoid } } } } option = { name = bp3_journey.1900.a journey_knowledge_hoarding_skill_effect = { VALUE = 5 } add_piety = miniscule_piety_gain pay_short_term_gold = { target = scope:local_character gold = tiny_gold_value } stress_impact = { greedy = minor_stress_impact_gain cynical = minor_stress_impact_gain paranoid = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { short_term_gold <= minor_gold_value has_trait = greedy has_trait = cynical has_trait = paranoid } } } } option = { name = bp3_journey.1900.b trigger = { NOT = { has_activity_intent = journey_curiosity_intent } } if = { limit = { has_character_flag = court_tutor_court_position } journey_employ_in_court_position = { CHARACTER = scope:local_character COURT_POSITION = court_tutor } } else_if = { limit = { has_character_flag = head_porter_camp_officer } journey_employ_in_camp_position = { CHARACTER = scope:local_character COURT_POSITION = head_porter } } else_if = { limit = { has_character_flag = royal_architect_court_position } journey_employ_in_court_position = { CHARACTER = scope:local_character COURT_POSITION = royal_architect } } else_if = { limit = { has_character_flag = witness_camp_officer } journey_employ_in_camp_position = { CHARACTER = scope:local_character COURT_POSITION = witness } } else_if = { limit = { has_character_flag = cupbearer_court_position } journey_employ_in_court_position = { CHARACTER = scope:local_character COURT_POSITION = cupbearer } } else_if = { limit = { has_character_flag = court_poet_court_position } journey_employ_in_court_position = { CHARACTER = scope:local_character COURT_POSITION = court_poet } } else_if = { limit = { has_character_flag = second_camp_officer } journey_employ_in_camp_position = { CHARACTER = scope:local_character COURT_POSITION = second } } else_if = { limit = { has_character_flag = chronicler_court_position } journey_employ_in_court_position = { CHARACTER = scope:local_character COURT_POSITION = chronicler } } else_if = { limit = { has_character_flag = wet_nurse_court_position } journey_employ_in_court_position = { CHARACTER = scope:local_character COURT_POSITION = wet_nurse } } else_if = { limit = { has_character_flag = antiquarian_court_position } journey_employ_in_court_position = { CHARACTER = scope:local_character COURT_POSITION = antiquarian } } add_hook = { type = obligation_hook target = scope:local_character } custom_tooltip = obligation_hook_tt stress_impact = { paranoid = minor_stress_impact_gain arrogant = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { has_trait = paranoid has_trait = arrogant } } } } option = { name = bp3_journey.1900.c add_prestige = miniscule_prestige_gain ai_chance = { base = 1 } } after = { if = { # Cleanup limit = { root = { is_ai = yes } scope:local_character = { is_courtier = no has_character_flag = silently_disappear_me } } scope:local_character = { silent_disappearance_effect = yes } } scope:local_character = { remove_character_flag = peasant_outfit remove_character_flag = no_hat } remove_character_flag = court_tutor_court_position remove_character_flag = royal_architect_court_position remove_character_flag = cupbearer_court_position remove_character_flag = court_poet_court_position remove_character_flag = chronicler_court_position remove_character_flag = wet_nurse_court_position remove_character_flag = antiquarian_court_position } } # A Walking Legend bp3_journey.2000 = { type = activity_event content_source = dlc_015 title = bp3_journey.2000.t desc = bp3_journey.2000.desc theme = journey_activity left_portrait = { character = scope:host animation = hero_flex } right_portrait = { character = scope:new_promoter triggered_animation = { trigger = { OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion } } animation = acknowledging # anim uses crucifix scepter } animation = war_over_tie } cooldown = { years = 3 } trigger = { has_activity_intent = spread_legend_intent exists = promoted_legend OR = { scope:activity.activity_location.county.holder = { is_available_ai_adult = yes NOR = { exists = promoted_legend this = root has_relation_rival = root has_relation_friend = root has_relation_lover = root is_close_or_extended_family_of = root } } scope:activity.activity_location.county = { any_neighboring_county = { holder = { is_available_ai_adult = yes NOR = { exists = promoted_legend this = root has_relation_rival = root has_relation_friend = root has_relation_lover = root is_close_or_extended_family_of = root } } } } } } immediate = { scope:activity.activity_location = { save_scope_as = location } random_list = { 10 = { trigger = { scope:activity.activity_location.county.holder = { is_available_ai_adult = yes NOR = { exists = promoted_legend this = root has_relation_rival = root has_relation_friend = root has_relation_lover = root is_close_or_extended_family_of = root } } } scope:activity.activity_location.county.holder = { save_scope_as = new_promoter } } 10 = { trigger = { scope:activity.activity_location.county = { any_neighboring_county = { holder = { is_available_ai_adult = yes NOR = { exists = promoted_legend this = root has_relation_rival = root has_relation_friend = root has_relation_lover = root is_close_or_extended_family_of = root } } } } } scope:activity.activity_location.county.holder = { save_scope_as = new_promoter } scope:activity.activity_location.county = { random_neighboring_county = { limit = { holder = { is_available_ai_adult = yes NOR = { exists = promoted_legend this = root has_relation_rival = root has_relation_friend = root has_relation_lover = root is_close_or_extended_family_of = root } } } holder = { save_scope_as = new_promoter } } } } } } option = { name = bp3_journey.2000.a remove_short_term_gold = minor_gold_value add_prestige = medium_prestige_gain promoted_legend = { change_legend_quality_effect = { VALUE = minor_legend_quality_increase } } scope:new_promoter = { set_promoted_legend = root.promoted_legend } stress_impact = { greedy = minor_stress_impact_gain cynical = minor_stress_impact_gain paranoid = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { short_term_gold <= minor_gold_value has_trait = greedy has_trait = cynical has_trait = paranoid } } } } option = { name = bp3_journey.2000.b scope:new_promoter = { set_promoted_legend = root.promoted_legend } stress_impact = { paranoid = minor_stress_impact_gain arrogant = minor_stress_impact_gain } ai_chance = { base = 1 modifier = { factor = 0 OR = { has_trait = paranoid has_trait = arrogant } } } } option = { name = bp3_journey.2000.c add_prestige = miniscule_prestige_gain reverse_add_opinion = { target = scope:new_promoter modifier = rude_opinion opinion = -20 } ai_chance = { base = 1 } } } # A Local Specialty bp3_journey.2100 = { type = activity_event content_source = dlc_015 title = bp3_journey.2100.t desc = bp3_journey.2100.desc theme = journey_activity override_background = { reference = market } left_portrait = { character = scope:host animation = drink } right_portrait = { character = scope:local_character animation = debating } cooldown = { years = 9 } trigger = { } immediate = { scope:activity.activity_location = { save_scope_as = location } if = { limit = { is_valid_to_hire_court_position_type = camp_cook_camp_officer any_pool_character = { province = scope:location culture = scope:location.culture aptitude = { court_position = camp_cook_camp_officer value >= 4 } is_available_healthy_ai_adult = yes #food_taster_validity_trigger = { EMPLOYER = root } } } random_pool_character = { province = scope:location limit = { culture = scope:location.culture aptitude = { court_position = camp_cook_camp_officer value >= 4 } is_available_healthy_ai_adult = yes #food_taster_validity_trigger = { EMPLOYER = root } } save_scope_as = local_character } if = { limit = { any_court_position_holder = { type = camp_cook_camp_officer } } random_court_position_holder = { type = camp_cook_camp_officer save_scope_as = current_holder } } } else_if = { limit = { is_valid_to_hire_court_position_type = camp_cook_camp_officer } create_character = { template = camp_cook_camp_officer_template location = scope:location culture = scope:location.culture faith = scope:location.faith save_scope_as = local_character } scope:local_character = { add_character_flag = { flag = silently_disappear_me years = 1 } } if = { limit = { any_court_position_holder = { type = camp_cook_camp_officer } } random_court_position_holder = { type = camp_cook_camp_officer save_scope_as = current_holder } } } else_if = { limit = { any_pool_character = { province = scope:location culture = scope:location.culture aptitude = { court_position = food_taster_court_position value >= 4 } is_available_healthy_ai_adult = yes food_taster_validity_trigger = { EMPLOYER = root } } } random_pool_character = { province = scope:location limit = { culture = scope:location.culture aptitude = { court_position = food_taster_court_position value >= 4 } is_available_healthy_ai_adult = yes food_taster_validity_trigger = { EMPLOYER = root } } save_scope_as = local_character } if = { limit = { any_court_position_holder = { type = food_taster_court_position } } random_court_position_holder = { type = food_taster_court_position save_scope_as = current_holder } } } else = { create_character = { template = food_taster_court_position_template location = scope:location culture = scope:location.culture faith = scope:location.faith save_scope_as = local_character } scope:local_character = { add_character_flag = { flag = silently_disappear_me years = 1 } } if = { limit = { any_court_position_holder = { type = food_taster_court_position } } random_court_position_holder = { type = food_taster_court_position save_scope_as = current_holder } } } hidden_effect = { scope:local_character = { set_favorite_treat_effect = yes change_current_weight = 150 } } } weight_multiplier = { base = 1 modifier = { add = 1 is_valid_to_hire_court_position_type = food_taster_court_position NOT = { employs_court_position = food_taster_court_position } } modifier = { add = 1 is_valid_to_hire_court_position_type = camp_cook_camp_officer NOT = { employs_court_position = camp_cook_camp_officer } } modifier = { add = 1 scope:activity = { has_variable = stewardship_skill_focus } } modifier = { add = 1 has_trait = gluttonous } modifier = { add = 1 has_trait = comfort_eater } } option = { name = bp3_journey.2100.knowledge_hoarding trigger = { has_activity_intent = journey_knowledge_hoarding_intent } journey_knowledge_hoarding_skill_effect = { VALUE = 10 } food_poison_chance_effect = yes stress_impact = { base = miniscule_stress_impact_gain gluttonous = minor_stress_impact_loss comfort_eater = minor_stress_impact_loss temperate = minor_stress_impact_gain inappetetic = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { has_trait = temperate has_trait = inappetetic } } } } option = { name = bp3_journey.2100.curiosity trigger = { has_activity_intent = journey_curiosity_intent culture != scope:local_character.culture } add_prestige = miniscule_prestige_gain food_poison_chance_effect = yes culture = { change_cultural_acceptance = { target = scope:local_character.culture value = 4 desc = cultural_acceptance_gain_event } } stress_impact = { gluttonous = minor_stress_impact_loss comfort_eater = minor_stress_impact_loss temperate = minor_stress_impact_gain inappetetic = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { has_trait = inappetetic has_trait = temperate } } } } option = { name = bp3_journey.2100.curiosity_2 trigger = { has_activity_intent = journey_curiosity_intent } hire_for_court_position_journey_laamp_replacement_effect = { CHARACTER = scope:local_character COURT_POSITION = food_taster LAAMP_POSITION = camp_cook } stress_impact = { callous = medium_stress_impact_gain sadistic = medium_stress_impact_gain arrogant = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { has_trait = callous has_trait = sadistic has_trait = arrogant } } } } option = { name = bp3_journey.2100.a add_character_modifier = { modifier = good_soup_modifier years = 2 } stress_impact = { base = minor_stress_impact_loss inappetetic = minor_stress_impact_gain } ai_chance = { base = 1 modifier = { factor = 0 OR = { has_trait = inappetetic stress <= 10 } } } } option = { name = bp3_journey.2100.b trigger = { OR = { is_valid_to_hire_court_position_type = camp_cook_camp_officer is_valid_to_hire_court_position_type = food_taster_court_position } NOT = { has_activity_intent = journey_curiosity_intent } } hire_for_court_position_journey_laamp_replacement_effect = { CHARACTER = scope:local_character COURT_POSITION = food_taster LAAMP_POSITION = camp_cook } stress_impact = { paranoid = minor_stress_impact_gain arrogant = minor_stress_impact_gain } ai_chance = { base = 1 modifier = { factor = 0 OR = { has_trait = paranoid has_trait = arrogant } } } } option = { name = bp3_journey.2100.c journey_knowledge_hoarding_skill_effect = { VALUE = 2 } ai_chance = { base = 1 } } after = { if = { # Cleanup limit = { root = { is_ai = yes } scope:local_character = { is_courtier = no has_character_flag = silently_disappear_me } } scope:local_character = { silent_disappearance_effect = yes } } } } # The Siren of Place bp3_journey.2200 = { type = activity_event content_source = dlc_015 title = bp3_journey.2200.t desc = bp3_journey.2200.desc theme = journey_activity override_background = { reference = alley_night } left_portrait = { character = scope:host animation = shame } right_portrait = { character = scope:local_character animation = reception_bride_right } cooldown = { years = 9 } trigger = { OR = { is_valid_to_hire_court_position_type = master_of_spoils_camp_officer is_valid_to_hire_court_position_type = wet_nurse_court_position is_valid_to_hire_court_position_type = bodyguard_court_position } } immediate = { scope:activity.activity_location = { save_scope_as = location } if = { limit = { any_pool_character = { province = scope:location culture = scope:location.culture aptitude = { court_position = wet_nurse_court_position value >= 4 } is_available_healthy_ai_adult = yes wet_nurse_validity_trigger = { EMPLOYER = root } } is_valid_to_hire_court_position_type = wet_nurse_court_position } random_pool_character = { province = scope:location limit = { culture = scope:location.culture aptitude = { court_position = wet_nurse_court_position value >= 4 } is_available_healthy_ai_adult = yes wet_nurse_validity_trigger = { EMPLOYER = root } } save_scope_as = local_character save_scope_as = wet_nurse } if = { limit = { any_court_position_holder = { type = wet_nurse_court_position } } random_court_position_holder = { type = wet_nurse_court_position save_scope_as = current_holder } } } else_if = { limit = { is_valid_to_hire_court_position_type = wet_nurse_court_position } create_character = { template = wet_nurse_court_position_template location = scope:location culture = scope:location.culture faith = scope:location.faith save_scope_as = local_character } save_scope_as = wet_nurse save_scope_as = generated scope:local_character = { add_character_flag = { flag = silently_disappear_me years = 1 } } if = { limit = { any_court_position_holder = { type = wet_nurse_court_position } } random_court_position_holder = { type = wet_nurse_court_position save_scope_as = current_holder } } } else_if = { limit = { is_valid_to_hire_court_position_type = master_of_spoils_camp_officer any_pool_character = { province = scope:location culture = scope:location.culture aptitude = { court_position = master_of_spoils_camp_officer value >= 4 } is_available_healthy_ai_adult = yes bodyguard_validity_trigger = { EMPLOYER = root } } is_valid_to_hire_court_position_type = master_of_spoils_camp_officer } random_pool_character = { province = scope:location limit = { culture = scope:location.culture aptitude = { court_position = master_of_spoils_camp_officer value >= 4 } is_available_healthy_ai_adult = yes bodyguard_validity_trigger = { EMPLOYER = root } } save_scope_as = local_character save_scope_as = master_of_spoils_camp_officer } if = { limit = { any_court_position_holder = { type = master_of_spoils_camp_officer } } random_court_position_holder = { type = master_of_spoils_camp_officer save_scope_as = current_holder } } } else_if = { limit = { is_valid_to_hire_court_position_type = master_of_spoils_camp_officer } create_character = { template = master_of_spoils_camp_officer_template location = scope:location culture = scope:location.culture faith = scope:location.faith save_scope_as = local_character } save_scope_as = master_of_spoils_camp_officer save_scope_as = generated scope:local_character = { add_character_flag = { flag = silently_disappear_me years = 1 } } if = { limit = { any_court_position_holder = { type = master_of_spoils_camp_officer } } random_court_position_holder = { type = master_of_spoils_camp_officer save_scope_as = current_holder } } } else_if = { limit = { any_pool_character = { province = scope:location culture = scope:location.culture aptitude = { court_position = bodyguard_court_position value >= 4 } is_available_healthy_ai_adult = yes bodyguard_validity_trigger = { EMPLOYER = root } } is_valid_to_hire_court_position_type = bodyguard_court_position } random_pool_character = { province = scope:location limit = { culture = scope:location.culture aptitude = { court_position = bodyguard_court_position value >= 4 } is_available_healthy_ai_adult = yes bodyguard_validity_trigger = { EMPLOYER = root } } save_scope_as = local_character save_scope_as = bodyguard } if = { limit = { any_court_position_holder = { type = bodyguard_court_position } } random_court_position_holder = { type = bodyguard_court_position save_scope_as = current_holder } } } else = { create_character = { template = bodyguard_court_position_template location = scope:location culture = scope:location.culture faith = scope:location.faith save_scope_as = local_character } save_scope_as = bodyguard save_scope_as = generated scope:local_character = { add_character_flag = { flag = silently_disappear_me years = 1 } } if = { limit = { any_court_position_holder = { type = bodyguard_court_position } } random_court_position_holder = { type = bodyguard_court_position save_scope_as = current_holder } } } hidden_effect = { scope:local_character = { if = { limit = { exists = scope:generated } remove_trait = beauty_bad_1 remove_trait = beauty_bad_2 remove_trait = beauty_bad_3 random_list = { 33 = { add_trait = beauty_good_1 } 33 = { add_trait = beauty_good_2 } 33 = { add_trait = beauty_good_3 } } } change_current_weight = 25 set_sexuality = bisexual add_trait = fornicator } } set_random_entertainment_text_effect = yes } weight_multiplier = { base = 1 modifier = { add = 1 AND = { is_valid_to_hire_court_position_type = wet_nurse_court_position NOT = { employs_court_position = wet_nurse_court_position } } # Bodyguard has a bespoke event } modifier = { add = 1 AND = { is_valid_to_hire_court_position_type = bodyguard_court_position NOT = { employs_court_position = bodyguard_court_position } } } modifier = { add = 1 scope:activity = { has_variable = intrigue_skill_focus } } modifier = { add = 1 has_trait = rakish } modifier = { add = 1 has_trait = lustful } } option = { name = bp3_journey.2200.spread_legend_intent trigger = { has_activity_intent = spread_legend_intent } add_character_modifier = { modifier = journey_apa_legend_modifier years = 15 } journey_knowledge_hoarding_skill_effect = { VALUE = 5 } reverse_add_opinion = { modifier = impressed_opinion opinion = 20 target = scope:local_character } stress_impact = { shy = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 has_trait = shy } } } option = { name = bp3_journey.2200.knowledge_hoarding flavor = local_monument_tt trigger = { has_activity_intent = journey_knowledge_hoarding_intent } journey_knowledge_hoarding_skill_effect = { VALUE = 15 } pay_short_term_gold = { target = scope:local_character gold = tiny_gold_value } stress_impact = { base = miniscule_stress_impact_gain lustful = minor_stress_impact_gain impatient = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { short_term_gold <= minor_gold_value has_trait = lustful has_trait = impatient } } } } option = { name = bp3_journey.2200.curiosity trigger = { has_activity_intent = journey_curiosity_intent } hidden_effect = { scope:local_character = { add_to_court_and_entourage_effect = yes } } hire_for_two_court_position_journey_laamp_replacement_effect = { CHARACTER = scope:local_character COURT_POSITION = wet_nurse COURT_POSITION_2 = bodyguard LAAMP_POSITION = master_of_spoils } if = { limit = { culture != root.location.culture } culture = { change_cultural_acceptance = { target = root.location.culture value = 1 desc = cultural_acceptance_gain_event } } } stress_impact = { callous = medium_stress_impact_gain sadistic = medium_stress_impact_gain arrogant = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { has_trait = callous has_trait = sadistic has_trait = arrogant } } } } option = { name = bp3_journey.2200.curiosity_2 trigger = { has_activity_intent = journey_curiosity_intent matching_gender_and_sexuality_trigger = { CHARACTER_1 = root CHARACTER_2 = scope:local_character } NOT = { has_trait = celibate } can_set_relation_lover_trigger = { CHARACTER = scope:local_character } } hidden_effect = { scope:local_character = { add_to_court_and_entourage_effect = yes } } had_sex_with_effect = { CHARACTER = scope:local_character PREGNANCY_CHANCE = pregnancy_chance } set_relation_lover = { target = scope:local_character reason = lover_fell_in_love_with_prostitute_by_monument province = root.location } if = { limit = { culture != root.location.culture } culture = { change_cultural_acceptance = { target = root.location.culture value = 1 desc = cultural_acceptance_gain_event } } } stress_impact = { base = medium_stress_impact_loss rakish = medium_stress_impact_loss seducer = medium_stress_impact_loss paranoid = medium_stress_impact_gain chaste = massive_stress_impact_gain shy = minor_stress_impact_gain } ai_chance = { base = 5 modifier = { add = 95 OR = { has_trait = lustful has_trait = rakish has_trait = seducer } } modifier = { factor = 0 might_cheat_on_every_partner_trigger = no } modifier = { factor = 0 OR = { has_trait = paranoid has_trait = chaste has_trait = shy } } } } option = { name = bp3_journey.2200.a_2 trigger = { OR = { NOT = { matching_gender_and_sexuality_trigger = { CHARACTER_1 = root CHARACTER_2 = scope:local_character } } has_trait = celibate } } stress_impact = { base = medium_stress_impact_loss paranoid = medium_stress_impact_gain shy = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 stress <= 25 } modifier = { factor = 0 OR = { has_trait = paranoid has_trait = shy } } } } option = { name = bp3_journey.2200.a trigger = { matching_gender_and_sexuality_trigger = { CHARACTER_1 = root CHARACTER_2 = scope:local_character } NOT = { has_trait = celibate } } journey_knowledge_hoarding_skill_effect = { VALUE = 5 } had_sex_with_effect = { CHARACTER = scope:local_character PREGNANCY_CHANCE = pregnancy_chance } stress_impact = { base = medium_stress_impact_loss lustful = medium_stress_impact_loss rakish = medium_stress_impact_loss seducer = medium_stress_impact_loss paranoid = medium_stress_impact_gain chaste = massive_stress_impact_gain shy = minor_stress_impact_gain } ai_chance = { base = 5 modifier = { add = 95 OR = { has_trait = lustful has_trait = rakish has_trait = seducer } } modifier = { factor = 0 might_cheat_on_every_partner_trigger = no } modifier = { factor = 0 OR = { has_trait = paranoid has_trait = chaste has_trait = shy } } } } option = { name = bp3_journey.2200.b trigger = { NOT = { has_activity_intent = journey_curiosity_intent } } hire_for_two_court_position_journey_laamp_replacement_effect = { CHARACTER = scope:local_character COURT_POSITION = wet_nurse COURT_POSITION_2 = bodyguard LAAMP_POSITION = master_of_spoils } stress_impact = { paranoid = minor_stress_impact_gain arrogant = minor_stress_impact_gain } ai_chance = { base = 1 modifier = { factor = 0 OR = { has_trait = paranoid has_trait = arrogant } } } } option = { name = bp3_journey.2200.c add_prestige = miniscule_prestige_gain journey_knowledge_hoarding_skill_effect = { VALUE = 2 } ai_chance = { base = 1 } } after = { if = { # Cleanup limit = { root = { is_ai = yes } scope:local_character = { is_courtier = no has_character_flag = silently_disappear_me } } scope:local_character = { silent_disappearance_effect = yes } } } } # X's CulturalUnit bp3_journey.2300 = { type = activity_event content_source = dlc_015 title = bp3_journey.2300.t desc = bp3_journey.2300.desc theme = journey_activity override_background = { reference = courtyard } left_portrait = { character = scope:host animation = thinking } center_portrait = { character = scope:local_ruler triggered_animation = { trigger = { OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion } } animation = acknowledging # anim uses crucifix scepter } animation = war_over_tie camera = camera_event_very_left } right_portrait = { character = scope:local_character triggered_animation = { trigger = { scope:regiment = { OR = { is_unit_type = archers is_unit_type = skirmishers } } } scripted_animation = bow_closed } triggered_animation = { trigger = { scope:regiment = { is_unit_type = pikemen } } animation = throne_room_two_handed_passive_1 } animation = inspect_weapon } cooldown = { years = 9 } trigger = { scope:activity.activity_location.county.holder ?= { is_available_ai_adult = yes culture = scope:activity.activity_location.culture NOR = { this = root culture = { has_same_culture_heritage = root.culture } is_close_or_extended_family_of = root dynasty ?= root.dynasty has_relation_friend = root has_relation_rival = root has_relation_lover = root } any_maa_regiment = { NOR = { is_unit_type = siege_weapon is_maa_type = light_footmen is_maa_type = bowmen is_maa_type = light_horsemen is_maa_type = pikemen_unit is_maa_type = armored_footmen is_maa_type = armored_horsemen is_maa_type = crossbowmen is_maa_type = house_guard is_maa_type = horse_archers is_maa_type = steppe_raiders is_maa_type = heavy_horse_archers is_maa_type = nomad_lancers } } } } immediate = { scope:activity.activity_location = { save_scope_as = location } scope:activity.activity_location.county.holder = { save_scope_as = local_ruler random_maa_regiment = { limit = { NOR = { is_unit_type = siege_weapon is_maa_type = light_footmen is_maa_type = bowmen is_maa_type = light_horsemen is_maa_type = pikemen_unit is_maa_type = armored_footmen is_maa_type = armored_horsemen is_maa_type = crossbowmen is_maa_type = house_guard is_maa_type = horse_archers is_maa_type = steppe_raiders is_maa_type = heavy_horse_archers is_maa_type = nomad_lancers } } save_scope_as = regiment } } if = { limit = { is_valid_to_hire_court_position_type = master_of_arms_camp_officer any_pool_character = { province = scope:location culture = scope:location.culture aptitude = { court_position = master_of_arms_camp_officer value >= 4 } is_available_healthy_ai_adult = yes #champion_validity_trigger = { EMPLOYER = root } } } random_pool_character = { province = scope:location limit = { culture = scope:location.culture aptitude = { court_position = master_of_arms_camp_officer value >= 4 } is_available_healthy_ai_adult = yes #champion_validity_trigger = { EMPLOYER = root } } save_scope_as = local_character } if = { limit = { any_court_position_holder = { type = master_of_arms_camp_officer } } random_court_position_holder = { type = master_of_arms_camp_officer save_scope_as = current_holder } } } else_if = { limit = { is_valid_to_hire_court_position_type = master_of_arms_camp_officer } create_character = { template = master_of_arms_camp_officer_template location = scope:location culture = scope:location.culture faith = scope:location.faith save_scope_as = local_character } scope:local_character = { add_character_flag = { flag = silently_disappear_me years = 1 } } if = { limit = { any_court_position_holder = { type = master_of_arms_camp_officer } } random_court_position_holder = { type = master_of_arms_camp_officer save_scope_as = current_holder } } } else_if = { limit = { any_pool_character = { province = scope:location culture = scope:location.culture aptitude = { court_position = champion_court_position value >= 4 } is_available_healthy_ai_adult = yes champion_validity_trigger = { EMPLOYER = root } } } random_pool_character = { province = scope:location limit = { culture = scope:location.culture aptitude = { court_position = champion_court_position value >= 4 } is_available_healthy_ai_adult = yes champion_validity_trigger = { EMPLOYER = root } } save_scope_as = local_character } if = { limit = { any_court_position_holder = { type = champion_court_position } } random_court_position_holder = { type = champion_court_position save_scope_as = current_holder } } } else = { create_character = { template = champion_court_position_template location = scope:location culture = scope:location.culture faith = scope:location.faith save_scope_as = local_character } scope:local_character = { add_character_flag = { flag = silently_disappear_me years = 1 } } if = { limit = { any_court_position_holder = { type = champion_court_position } } random_court_position_holder = { type = champion_court_position save_scope_as = current_holder } } } hidden_effect = { scope:local_character = { add_character_flag = military_outfit } } } weight_multiplier = { base = 1 modifier = { add = 1 is_valid_to_hire_court_position_type = champion_court_position NOT = { employs_court_position = champion_court_position } } modifier = { add = 1 scope:activity = { has_variable = martial_skill_focus } } } option = { name = bp3_journey.2300.knowledge_hoarding trigger = { has_activity_intent = journey_knowledge_hoarding_intent } progress_towards_friend_effect = { REASON = friend_bonded_by_monument CHARACTER = scope:local_ruler OPINION = 30 } journey_knowledge_hoarding_skill_effect = { VALUE = 10 } stress_impact = { base = minor_stress_impact_gain gregarious = minor_stress_impact_loss shy = minor_stress_impact_gain paranoid = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { has_trait = shy has_trait = paranoid } } } } option = { name = bp3_journey.2300.curiosity trigger = { has_activity_intent = journey_curiosity_intent culture != scope:local_character.culture } progress_towards_friend_effect = { REASON = friend_bonded_by_monument CHARACTER = scope:local_ruler OPINION = 30 } if = { limit = { culture != scope:local_character.culture } culture = { change_cultural_acceptance = { target = scope:local_character.culture value = 2 desc = cultural_acceptance_gain_event } } } stress_impact = { gregarious = minor_stress_impact_loss shy = minor_stress_impact_gain paranoid = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { has_trait = shy has_trait = paranoid } } } } option = { name = bp3_journey.2300.curiosity_2 trigger = { has_activity_intent = journey_curiosity_intent } hire_for_court_position_journey_laamp_replacement_effect = { CHARACTER = scope:local_character COURT_POSITION = champion LAAMP_POSITION = master_of_arms } progress_towards_friend_effect = { REASON = friend_bonded_by_monument CHARACTER = scope:local_ruler OPINION = 30 } stress_impact = { gregarious = minor_stress_impact_loss shy = minor_stress_impact_gain paranoid = minor_stress_impact_gain } ai_chance = { base = 100 modifier = { factor = 0 OR = { has_trait = shy has_trait = paranoid } } } } option = { name = bp3_journey.2300.a trigger = { maa_regiments_count <= max_regiment_count_plus_one } add_prestige = minor_prestige_gain reverse_add_opinion = { target = scope:local_ruler modifier = respect_opinion opinion = 20 } pay_treasury_or_gold = { target = scope:local_ruler value = medium_treasury_or_gold_value } create_maa_regiment = { type_of = scope:regiment check_can_recruit = no size = 1 } stress_impact = { content = minor_stress_impact_gain craven = minor_stress_impact_gain arrogant = minor_stress_impact_gain } ai_chance = { base = 1 modifier = { factor = 0 OR = { has_trait = content has_trait = craven has_trait = arrogant short_term_treasury_or_gold <= major_treasury_or_gold_value } } } } option = { name = bp3_journey.2300.b trigger = { OR = { is_valid_to_hire_court_position_type = champion_court_position is_valid_to_hire_court_position_type = master_of_arms_camp_officer } NOT = { has_activity_intent = journey_curiosity_intent } } reverse_add_opinion = { target = scope:local_ruler modifier = annoyed_opinion opinion = -10 } hire_for_court_position_journey_laamp_replacement_effect = { CHARACTER = scope:local_character COURT_POSITION = champion LAAMP_POSITION = master_of_arms } stress_impact = { paranoid = minor_stress_impact_gain arrogant = minor_stress_impact_gain } ai_chance = { base = 1 modifier = { factor = 0 OR = { has_trait = paranoid has_trait = arrogant } } } } option = { name = bp3_journey.2300.c add_prestige = miniscule_prestige_gain reverse_add_opinion = { target = scope:local_ruler modifier = flattered_opinion opinion = 10 } ai_chance = { base = 1 } } after = { if = { # Cleanup limit = { root = { is_ai = yes } scope:local_character = { is_courtier = no has_character_flag = silently_disappear_me } } scope:local_character = { silent_disappearance_effect = yes } } } }