namespace = bp3_roaming ### Setup Events # Arrival Event bp3_roaming.0005 = { type = activity_event content_source = dlc_015 title = bp3_roaming.0005.t desc = bp3_roaming.0005.desc theme = roaming_activity left_portrait = { character = scope:host triggered_animation = { trigger = { location = { roaming_activity_monsoon_trigger = yes } } animation = scheme } triggered_animation = { trigger = { location = { roaming_activity_winter_trigger = yes terrain = mountains } } animation = shiver } animation = survey_staff } right_portrait = { trigger = { exists = scope:special_guest } character = scope:special_guest triggered_animation = { trigger = { location = { roaming_activity_monsoon_trigger = yes } } animation = scheme } triggered_animation = { trigger = { location = { roaming_activity_winter_trigger = yes terrain = mountains } } animation = shiver } animation = happiness } override_effect_2d = { reference = rain trigger = { location = { roaming_activity_monsoon_trigger = yes } } } widgets = { widget = { is_shown = { location = { roaming_activity_winter_trigger = yes NOT = { terrain = mountains } } } gui = "event_window_widget_vfx_snow" container = "foreground_shader_vfx_container" } widget = { is_shown = { location = { roaming_activity_winter_trigger = yes terrain = mountains } } gui = "event_window_widget_vfx_snowstorm" container = "foreground_shader_vfx_container" } } override_effect_2d = { # Fallback, will be chosen if the others weren't trigger = { scope:province = { roaming_activity_monsoon_trigger = no roaming_activity_winter_trigger = no } } reference = legend_glow } immediate = { save_scope_as = root_scope roaming_tally_variable_effect = { TYPE = stress VALUE = miniscule_stress_impact_loss } hidden_effect = { involved_activity = { add_activity_log_entry = { key = roaming_start_of_the_journey_key tags = { activity_log } character = root root = { show_as_tooltip = { stress_impact = { base = miniscule_stress_impact_loss } } } } } } } option = { name = bp3_roaming.0005.a trigger = { location = { OR = { terrain = forest terrain = farmlands terrain = drylands terrain = oasis terrain = wetlands terrain = taiga terrain = floodplains } has_winter_trigger = no NAND = { tropical_seasons_region_trigger = yes middle_of_year_season_trigger = yes } } } stress_impact = { base = miniscule_stress_impact_loss } roaming_tally_variable_effect = { TYPE = stress VALUE = miniscule_stress_impact_loss } } option = { name = bp3_roaming.0005.b trigger = { location = { OR = { terrain = hills terrain = mountains terrain = plains terrain = desert_mountains terrain = desert terrain = jungle terrain = steppe } has_winter_trigger = no NAND = { tropical_seasons_region_trigger = yes middle_of_year_season_trigger = yes } } } stress_impact = { base = miniscule_stress_impact_loss } roaming_tally_variable_effect = { TYPE = stress VALUE = miniscule_stress_impact_loss } } option = { name = bp3_roaming.0005.c trigger = { location = { has_winter_trigger = yes } } stress_impact = { base = miniscule_stress_impact_loss } roaming_tally_variable_effect = { TYPE = stress VALUE = miniscule_stress_impact_loss } } option = { name = bp3_roaming.0005.d trigger = { location = { tropical_seasons_region_trigger = yes middle_of_year_season_trigger = yes } } stress_impact = { base = miniscule_stress_impact_loss } roaming_tally_variable_effect = { TYPE = stress VALUE = miniscule_stress_impact_loss } } } # Ending Event bp3_roaming.0010 = { type = activity_event content_source = dlc_015 title = bp3_roaming.0010.t desc = bp3_roaming.0010.desc theme = roaming_activity left_portrait = { character = scope:host animation = scheme } right_portrait = { character = scope:special_guest animation = idle trigger = { exists = scope:special_guest } } option = { name = bp3_roaming.0010.a stress_impact = { base = roaming_outro_stress_loss_value athletic = medium_stress_impact_loss lifestyle_traveler = minor_stress_impact_loss } if = { limit = { has_trait = depressed_1 has_character_flag = roaming_very_strong_stress_loss } remove_trait = depressed_1 } } after = { remove_character_flag = roaming_weak_stress_loss remove_character_flag = roaming_medium_stress_loss remove_character_flag = roaming_strong_stress_loss remove_character_flag = roaming_very_strong_stress_loss } } ### Mid-Activity Events # The View (Mountains/Hills/Desert Mountains) bp3_roaming.0050 = { type = activity_event content_source = dlc_015 title = bp3_roaming.0050.t desc = bp3_roaming.0050.desc theme = roaming_activity left_portrait = { character = scope:host animation = survey_staff } right_portrait = { character = scope:special_guest animation = idle trigger = { exists = scope:special_guest } } trigger = { location = { OR = { terrain = mountains terrain = hills terrain = desert_mountains } } } option = { name = bp3_roaming.0050.a roaming_progress_events_reward_effect = { LOG_KEY = breathtaking_view_key } } } # The Oasis (Oasis/Desert/Drylands) bp3_roaming.0060 = { type = activity_event content_source = dlc_015 title = bp3_roaming.0060.t desc = bp3_roaming.0060.desc theme = roaming_activity override_background = { reference = ce1_legendary_oasis } left_portrait = { character = scope:host animation = survey_staff } right_portrait = { character = scope:special_guest animation = idle trigger = { exists = scope:special_guest } } trigger = { location = { OR = { terrain = oasis terrain = desert terrain = drylands } } } option = { name = bp3_roaming.0060.a roaming_progress_events_reward_effect = { LOG_KEY = the_oasis_key } } } # The Path's End (Forest/Taiga/Jungle) bp3_roaming.0070 = { type = activity_event content_source = dlc_015 title = bp3_roaming.0070.t desc = { desc = bp3_roaming.0070.desc.intro first_valid = { triggered_desc = { trigger = { has_government = landless_adventurer_government } desc = bp3_roaming.0070.desc.landless } desc = bp3_roaming.0070.desc.landed } } theme = roaming_activity override_background = { trigger = { location = { terrain = jungle } } reference = wilderness_jungle } override_background = { trigger = { location = { has_winter_trigger = no } } reference = wilderness_forest_pine } left_portrait = { character = scope:host animation = scheme } right_portrait = { character = scope:special_guest animation = idle trigger = { exists = scope:special_guest } } trigger = { location = { OR = { terrain = forest terrain = taiga terrain = jungle } } } option = { name = bp3_roaming.0070.a roaming_progress_events_reward_effect = { LOG_KEY = paths_end_key } } } # The Ocean Scent (Fallback for ocean adjacent provinces) bp3_roaming.0080 = { type = activity_event content_source = dlc_015 title = bp3_roaming.0080.t desc = bp3_roaming.0080.desc theme = roaming_activity override_background = { reference = bp3_coast } left_portrait = { character = scope:host animation = survey_staff } right_portrait = { character = scope:special_guest animation = idle trigger = { exists = scope:special_guest } } trigger = { location = { is_coastal = yes } } option = { name = bp3_roaming.0080.a roaming_progress_events_reward_effect = { LOG_KEY = ocean_scent_key } } } # The River at Journey's End (Fallback for terrain that hasn't been covered) bp3_roaming.0090 = { type = activity_event content_source = dlc_015 title = bp3_roaming.0090.t desc = bp3_roaming.0090.desc theme = roaming_activity override_background = { reference = ce1_legendary_spring } left_portrait = { character = scope:host animation = survey_staff } right_portrait = { character = scope:special_guest animation = idle trigger = { exists = scope:special_guest } } trigger = { location = { is_coastal = no NOR = { terrain = mountains terrain = hills terrain = desert_mountains terrain = oasis terrain = desert terrain = drylands terrain = forest terrain = taiga terrain = jungle } } } option = { name = bp3_roaming.0090.a roaming_progress_events_reward_effect = { LOG_KEY = river_journeys_end_key } } } ### Random Events # Meeting a Stranger bp3_roaming.0100 = { type = activity_event content_source = dlc_015 title = bp3_roaming.0100.t desc = { desc = bp3_roaming.0100.desc triggered_desc = { desc = bp3_roaming.0100.desc.companion trigger = { exists = scope:special_guest } } } theme = roaming_activity left_portrait = { character = scope:host animation = survey_staff } center_portrait = { character = scope:special_guest animation = happiness } right_portrait = { character = scope:ancient_traveler animation = scheme } cooldown = { months = 3 } weight_multiplier = { base = 1 modifier = { OR = { has_activity_intent = reduce_stress_intent has_activity_intent = roaming_mystic_intent } factor = 1.5 } } immediate = { save_scope_value_as = { name = trait_xp value = { integer_range = { min = 3 max = 5 } } } create_character = { location = root.location gender_female_chance = { if = { limit = { root.faith = { has_doctrine = doctrine_gender_male_dominated } } add = 0 } else_if = { limit = { root.faith = { has_doctrine = doctrine_gender_female_dominated } } add = 100 } else = { add = 50 } } template = ancient_forest_traveler_character save_scope_as = ancient_traveler } } option = { name = bp3_roaming.0100.a flavor = bp3_roaming.0100.a.flavor scope:ancient_traveler = { silent_disappear_ai_if_not_hired = yes } if = { limit = { has_trait = lifestyle_mystic } involved_activity = { add_activity_log_entry = { key = roaming_pondering_stone_mystic_key tags = { activity_log } character = scope:host root = { add_trait_xp = { trait = lifestyle_mystic value = scope:trait_xp } } } } roaming_tally_variable_effect = { TYPE = mystic_xp VALUE = scope:trait_xp } } random_list = { 10 = { trigger = { NOT = { has_character_modifier = pondering_rulership_modifier } } roaming_pondering_stone_effect = { TYPE = rulership } } 10 = { trigger = { NOT = { has_character_modifier = pondering_religion_modifier } } roaming_pondering_stone_effect = { TYPE = religion } } 10 = { trigger = { NOT = { has_character_modifier = pondering_war_modifier } } roaming_pondering_stone_effect = { TYPE = war } } 10 = { trigger = { NOT = { has_character_modifier = pondering_schemes_modifier } } roaming_pondering_stone_effect = { TYPE = schemes } } 10 = { trigger = { NOT = { has_character_modifier = pondering_management_modifier } } roaming_pondering_stone_effect = { TYPE = management } } 10 = { trigger = { NOT = { has_character_modifier = pondering_travel_modifier } } roaming_pondering_stone_effect = { TYPE = travel } } 10 = { trigger = { NOT = { has_trait = lifestyle_mystic } } involved_activity = { add_activity_log_entry = { key = roaming_pondering_stone_key tags = { activity_log } character = scope:host root = { add_trait = lifestyle_mystic set_variable = roaming_tally_mystic } } } } } stress_impact = { lifestyle_mystic = minor_stress_impact_loss } roaming_tally_stress_impact_effect = { TRAIT = lifestyle_mystic VALUE = minor_stress_impact_loss } ai_chance = { base = 100 modifier = { factor = 1.5 has_trait = lifestyle_mystic } } } option = { name = bp3_roaming.0100.b involved_activity = { add_activity_log_entry = { key = roaming_resting_stone_key tags = { activity_log } character = scope:host root = { stress_impact = { base = minor_stress_impact_loss athletic = medium_stress_gain lazy = medium_stress_impact_loss } roaming_tally_variable_effect = { TYPE = stress VALUE = minor_stress_impact_loss } roaming_tally_stress_impact_effect = { TRAIT = athletic VALUE = minor_stress_gain } roaming_tally_stress_impact_effect = { TRAIT = lazy VALUE = medium_stress_impact_loss } } } } scope:ancient_traveler = { silent_disappear_ai_if_not_hired = yes } ai_chance = { base = 100 modifier = { factor = 0 has_trait = athletic } } } option = { name = bp3_roaming.0100.c flavor = bp3_roaming.0100.c.flavor duel = { skill = learning target = scope:ancient_traveler 50 = { desc = bp3_roaming.0100.c.win compare_modifier = { value = scope:duel_value multiplier = 1.5 min = -49 } involved_activity = { add_activity_log_entry = { key = roaming_old_man_key tags = { activity_log } character = scope:host root = { send_interface_toast = { type = event_generic_good title = bp3_roaming.0100.c.win left_icon = root add_learning_lifestyle_xp = 250 roaming_tally_variable_effect = { TYPE = learning_lifestyle_xp VALUE = 250 } add_learning_skill = 1 roaming_tally_variable_effect = { TYPE = learning_skill VALUE = 1 } } } } } } 50 = { desc = bp3_roaming.0100.c.neutral compare_modifier = { value = scope:duel_value multiplier = -1.5 min = -49 } involved_activity = { add_activity_log_entry = { key = roaming_old_man_key tags = { activity_log } character = scope:host root = { send_interface_toast = { type = event_generic_neutral title = bp3_roaming.0100.c.neutral add_visiting_courtier = scope:ancient_traveler } } } } } 50 = { desc = bp3_roaming.0100.c.loss compare_modifier = { value = scope:duel_value multiplier = -1 min = -49 } involved_activity = { add_activity_log_entry = { key = roaming_old_man_key tags = { activity_log } character = scope:host root = { send_interface_toast = { type = event_generic_bad title = bp3_roaming.0100.c.loss } } } } } } stress_impact = { gregarious = minor_stress_impact_loss shy = medium_stress_gain } roaming_tally_stress_impact_effect = { TRAIT = gregarious VALUE = minor_stress_impact_loss } roaming_tally_stress_impact_effect = { TRAIT = shy VALUE = medium_stress_gain } ai_chance = { base = 100 modifier = { factor = 0 has_trait = shy } } } option = { name = bp3_roaming.0100.d trigger = { has_trait = lifestyle_poet } involved_activity = { add_activity_log_entry = { key = roaming_ancient_traveler_poet_key tags = { activity_log } character = root root = { roaming_fame_reward_event_effect = { VALUE = roaming_reward_fame_medium } stress_impact = { honest = medium_stress_gain deceitful = minor_stress_impact_loss } roaming_tally_stress_impact_effect = { TRAIT = honest VALUE = minor_stress_gain } roaming_tally_stress_impact_effect = { TRAIT = deceitful VALUE = minor_stress_impact_loss } } } } ai_chance = { base = 100 modifier = { factor = 10 has_trait = lifestyle_poet } modifier = { factor = 0 has_trait = honest } } } } # Normal Animal Sighting bp3_roaming.0110 = { type = activity_event content_source = dlc_015 title = bp3_roaming.0110.t desc = { desc = bp3_roaming.0110.desc triggered_desc = { trigger = { exists = scope:special_guest } desc = bp3_roaming.0110.desc.companion } } theme = roaming_activity override_background = { trigger = { location = { terrain = forest has_winter_trigger = no } } reference = ep2_hunt_foggy_forest } left_portrait = { character = scope:host triggered_animation = { trigger = { OR = { scope:sighting_county = { OR = { var:animal_type = flag:fox var:animal_type = flag:hare } } has_trait = lifestyle_hunter prowess >= 25 } } animation = personality_bold } triggered_animation = { trigger = { NOR = { scope:sighting_county = { OR = { var:animal_type = flag:fox var:animal_type = flag:hare } } has_trait = lifestyle_hunter prowess >= 25 } } animation = paranoia } } center_portrait = { character = scope:special_guest animation = fear } cooldown = { months = 3 } weight_multiplier = { base = 1 modifier = { OR = { has_activity_intent = reduce_stress_intent has_activity_intent = roaming_storyteller_intent } factor = 1.5 } } override_effect_2d = { reference = rain trigger = { location = { tropical_seasons_region_trigger = yes middle_of_year_season_trigger = yes } } } widget = { is_shown = { location = { has_winter_trigger = yes } } gui = "event_window_widget_vfx_snow" container = "foreground_shader_vfx_container" } override_effect_2d = { reference = fog trigger = { location = { has_winter_trigger = no NAND = { tropical_seasons_region_trigger = yes middle_of_year_season_trigger = yes } } } } trigger = { NOT = { any_sub_realm_county = { has_county_modifier = hunt_sighting_standard_modifier } } } immediate = { location = { save_scope_as = sighting_province } location.county = { save_scope_as = sighting_county hunt_activity_standard_game_effect = { PROVINCE = scope:sighting_province HUNTER = root } } } option = { name = bp3_roaming.0110.a involved_activity = { add_activity_log_entry = { key = roaming_animal_sighting_key tags = { activity_log } character = root root = { roaming_fame_reward_event_effect = { VALUE = roaming_reward_fame_medium } scope:sighting_county = { # Create new sighting hunt_create_sighting_effect = { TYPE = standard ANIMAL = var:animal_type OWNER = root } } } } } ai_chance = { base = 100 modifier = { factor = 1.5 OR = { has_trait = lifestyle_hunter has_trait = athletic } } } } option = { name = { text = bp3_roaming.0110.b.weakling trigger = { NOR = { scope:sighting_county = { OR = { var:animal_type = flag:fox var:animal_type = flag:hare } } has_trait = lifestyle_hunter prowess >= 25 } } } name = { text = bp3_roaming.0110.b.hunter trigger = { OR = { scope:sighting_county = { OR = { var:animal_type = flag:fox var:animal_type = flag:hare } } has_trait = lifestyle_hunter prowess >= 25 } } } involved_activity = { add_activity_log_entry = { key = roaming_animal_sighting_key tags = { activity_log } character = root root = { roaming_fame_reward_event_effect = { VALUE = roaming_reward_fame_medium } stress_impact = { base = medium_stress_impact_loss } roaming_tally_variable_effect = { TYPE = stress VALUE = medium_stress_impact_loss } } } } ai_chance = { base = 100 } } option = { name = bp3_roaming.0110.c trigger = { has_trait = lifestyle_poet } involved_activity = { add_activity_log_entry = { key = roaming_animal_sighting_poet_key tags = { activity_log } character = root root = { roaming_fame_reward_event_effect = { VALUE = roaming_reward_fame_very_high } stress_impact = { honest = medium_stress_gain deceitful = minor_stress_impact_loss } roaming_tally_stress_impact_effect = { TRAIT = honest VALUE = minor_stress_gain } roaming_tally_stress_impact_effect = { TRAIT = deceitful VALUE = minor_stress_impact_loss } } } } ai_chance = { base = 100 modifier = { factor = 10 has_trait = lifestyle_poet } } } } # Legendary Animal Sighting bp3_roaming.0120 = { type = activity_event content_source = dlc_015 title = bp3_roaming.0120.t desc = { desc = bp3_roaming.0120.desc triggered_desc = { desc = bp3_roaming.0120.desc.companion trigger = { exists = scope:special_guest } } } theme = roaming_activity override_background = { trigger = { location = { terrain = forest has_winter_trigger = no } } reference = ep2_hunt_foggy_forest } left_portrait = { character = scope:host triggered_animation = { trigger = { OR = { scope:sighting_county = { OR = { var:animal_type = flag:fox var:animal_type = flag:hare } } has_trait = lifestyle_hunter prowess >= 25 } } animation = personality_bold } triggered_animation = { trigger = { NOR = { scope:sighting_county = { OR = { var:animal_type = flag:fox var:animal_type = flag:hare } } has_trait = lifestyle_hunter prowess >= 25 } } animation = paranoia } } center_portrait = { character = scope:special_guest animation = fear } cooldown = { months = 3 } weight_multiplier = { base = 1 modifier = { OR = { has_activity_intent = reduce_stress_intent has_activity_intent = roaming_storyteller_intent } factor = 1.5 } } override_effect_2d = { reference = rain trigger = { location = { tropical_seasons_region_trigger = yes middle_of_year_season_trigger = yes } } } widget = { is_shown = { location = { has_winter_trigger = yes } } gui = "event_window_widget_vfx_snow" container = "foreground_shader_vfx_container" } override_effect_2d = { reference = fog trigger = { location = { has_winter_trigger = no NAND = { tropical_seasons_region_trigger = yes middle_of_year_season_trigger = yes } } } } trigger = { NOT = { any_sub_realm_county = { has_county_modifier = hunt_sighting_legendary_modifier } } } immediate = { location = { save_scope_as = sighting_province } location.county = { save_scope_as = sighting_county hunt_activity_standard_game_effect = { PROVINCE = scope:sighting_province HUNTER = root } } } option = { name = bp3_roaming.0120.a involved_activity = { add_activity_log_entry = { key = roaming_legendary_sighting_key tags = { activity_log } character = root root = { roaming_fame_reward_event_effect = { VALUE = roaming_reward_fame_very_high } scope:sighting_county = { # Create new sighting hunt_create_sighting_effect = { TYPE = legendary ANIMAL = var:animal_type OWNER = root } } } } } start_hunt_mystical_animal_story_cycle_effect = yes ai_chance = { base = 100 modifier = { factor = 1.5 OR = { has_trait = lifestyle_hunter has_trait = athletic } } } } option = { name = bp3_roaming.0120.b involved_activity = { add_activity_log_entry = { key = roaming_legendary_sighting_key tags = { activity_log } character = root root = { roaming_fame_reward_event_effect = { VALUE = roaming_reward_fame_very_high } stress_impact = { base = massive_stress_impact_loss } roaming_tally_variable_effect = { TYPE = stress VALUE = massive_stress_impact_loss } } } } ai_chance = { base = 100 modifier = { factor = 10 stress > 90 } } } option = { name = bp3_roaming.0120.c trigger = { has_trait = lifestyle_poet } involved_activity = { add_activity_log_entry = { key = roaming_legendary_sighting_poet_key tags = { activity_log } character = root root = { roaming_fame_reward_event_effect = { VALUE = roaming_reward_fame_legendary } stress_impact = { honest = medium_stress_gain deceitful = minor_stress_impact_loss } roaming_tally_stress_impact_effect = { TRAIT = honest VALUE = minor_stress_gain } roaming_tally_stress_impact_effect = { TRAIT = deceitful VALUE = minor_stress_impact_loss } } } } ai_chance = { base = 100 modifier = { factor = 10 has_trait = lifestyle_poet } } } } # A Battlefield Forgotten bp3_roaming.0130 = { type = activity_event content_source = dlc_015 title = bp3_roaming.0130.t desc = { desc = bp3_roaming.0130.desc triggered_desc = { desc = bp3_roaming.0130.desc.companion trigger = { exists = scope:special_guest } } } theme = battle left_portrait = { character = scope:host animation = worry } center_portrait = { character = scope:special_guest animation = fear } override_effect_2d = { reference = fog } cooldown = { months = 3 } weight_multiplier = { base = 1 modifier = { has_activity_intent = roaming_storyteller_intent factor = 1.5 } } option = { name = bp3_roaming.0130.a involved_activity = { add_activity_log_entry = { key = roaming_battlefield_prayer_key tags = { activity_log } character = root root = { roaming_fame_reward_event_effect = { VALUE = roaming_reward_fame_medium } add_piety = medium_piety_gain roaming_tally_variable_effect = { TYPE = piety VALUE = medium_piety_gain } stress_impact = { compassionate = minor_stress_impact_loss zealous = minor_stress_impact_loss } roaming_tally_stress_impact_effect = { TRAIT = compassionate VALUE = minor_stress_impact_loss } roaming_tally_stress_impact_effect = { TRAIT = zealous VALUE = minor_stress_impact_loss } } } } ai_chance = { base = 100 modifier = { factor = 1.5 OR = { has_trait = zealous has_trait = compassionate } } } } option = { name = bp3_roaming.0130.b involved_activity = { add_activity_log_entry = { key = roaming_battlefield_scavenging_key tags = { activity_log } character = root root = { roaming_fame_reward_event_effect = { VALUE = roaming_reward_fame_medium } add_gold = minor_gold_value roaming_tally_variable_effect = { TYPE = gold VALUE = minor_gold_value } stress_impact = { greedy = minor_stress_impact_loss compassionate = minor_stress_gain generous = medium_stress_gain } roaming_tally_stress_impact_effect = { TRAIT = greedy VALUE = minor_stress_impact_loss } roaming_tally_stress_impact_effect = { TRAIT = compassionate VALUE = minor_stress_gain } roaming_tally_stress_impact_effect = { TRAIT = generous VALUE = medium_stress_gain } } } } ai_chance = { base = 100 modifier = { factor = 0 OR = { has_trait = compassionate has_trait = generous } } } } option = { name = bp3_roaming.0130.c trigger = { has_trait = lifestyle_poet } involved_activity = { add_activity_log_entry = { key = roaming_battlefield_poet_key tags = { activity_log } character = root root = { roaming_fame_reward_event_effect = { VALUE = roaming_reward_fame_very_high } stress_impact = { honest = medium_stress_gain deceitful = minor_stress_impact_loss } roaming_tally_stress_impact_effect = { TRAIT = honest VALUE = minor_stress_gain } roaming_tally_stress_impact_effect = { TRAIT = deceitful VALUE = minor_stress_impact_loss } } } } ai_chance = { base = 100 modifier = { factor = 10 has_trait = lifestyle_poet } } } } # A Night in the Wilds bp3_roaming.0140 = { type = activity_event content_source = dlc_015 title = bp3_roaming.0140.t desc = { desc = bp3_roaming.0140.desc triggered_desc = { desc = bp3_roaming.0140.desc.companion trigger = { exists = scope:special_guest } } } theme = roaming_activity override_background = { reference = ep3_campfire } left_portrait = { character = scope:host animation = paranoia } cooldown = { months = 3 } weight_multiplier = { base = 1 modifier = { has_activity_intent = roaming_mystic_intent factor = 1.5 } } immediate = { save_scope_value_as = { name = trait_xp value = { integer_range = { min = 5 max = 8 } } } } option = { name = bp3_roaming.0140.a involved_activity = { add_activity_log_entry = { key = roaming_night_scare_key tags = { activity_log } character = root root = { stress_impact = { base = miniscule_stress_gain } roaming_tally_variable_effect = { TYPE = stress VALUE = miniscule_stress_gain } } } } ai_chance = { base = 100 modifier = { factor = 1.5 has_trait = content } } } option = { name = bp3_roaming.0140.b involved_activity = { random_list = { 50 = { desc = bp3_roaming.0140.b.2 add_activity_log_entry = { key = roaming_night_sleep_key tags = { activity_log } character = root root = { send_interface_toast = { type = event_generic_good title = bp3_roaming.0140.b.2 left_icon = root stress_impact = { base = minor_stress_impact_loss } roaming_tally_variable_effect = { TYPE = stress VALUE = minor_stress_impact_loss } } } } } 50 = { desc = bp3_roaming.0140.b.1 add_activity_log_entry = { key = roaming_night_threat_key tags = { activity_log } character = root root = { send_interface_toast = { type = event_generic_bad title = bp3_roaming.0140.b.1 left_icon = root stress_impact = { base = minor_stress_gain } roaming_tally_variable_effect = { TYPE = stress VALUE = minor_stress_gain } } } } } } } ai_chance = { base = 100 modifier = { factor = 1.5 has_trait = paranoid } } } option = { name = bp3_roaming.0140.c trigger = { has_trait = lifestyle_poet } involved_activity = { add_activity_log_entry = { key = roaming_night_poet_key tags = { activity_log } character = root root = { roaming_fame_reward_event_effect = { VALUE = roaming_reward_fame_medium } stress_impact = { base = miniscule_stress_gain honest = medium_stress_gain deceitful = minor_stress_impact_loss } roaming_tally_variable_effect = { TYPE = stress VALUE = miniscule_stress_gain } roaming_tally_stress_impact_effect = { TRAIT = honest VALUE = minor_stress_gain } roaming_tally_stress_impact_effect = { TRAIT = deceitful VALUE = minor_stress_impact_loss } } } } ai_chance = { base = 100 modifier = { factor = 10 has_trait = lifestyle_poet } } } option = { name = bp3_roaming.0140.d trigger = { has_trait = lifestyle_mystic } involved_activity = { add_activity_log_entry = { key = roaming_night_mystic_key tags = { activity_log } character = root root = { add_trait_xp = { trait = lifestyle_mystic value = scope:trait_xp } } } } ai_chance = { base = 100 modifier = { factor = 10 has_trait = lifestyle_mystic } } } } # A Quiet Pond bp3_roaming.0150 = { type = activity_event content_source = dlc_015 title = bp3_roaming.0150.t desc = { desc = bp3_roaming.0150.desc triggered_desc = { desc = bp3_roaming.0150.desc.no_companion trigger = { NOT = { exists = scope:special_guest } } } triggered_desc = { desc = bp3_roaming.0150.desc.companion trigger = { exists = scope:special_guest } } } theme = roaming_activity override_background = { reference = ce1_legendary_oasis trigger = { location = { OR = { terrain = desert terrain = desert_mountains } } } } override_background = { reference = ce1_legendary_spring trigger = { location = { NOR = { terrain = desert terrain = desert_mountains } } } } left_portrait = { character = scope:host animation = survey_staff } center_portrait = { character = scope:special_guest animation = happiness } cooldown = { months = 3 } weight_multiplier = { base = 1 modifier = { has_activity_intent = reduce_stress_intent factor = 1.5 } } option = { name = bp3_roaming.0150.a involved_activity = { add_activity_log_entry = { key = roaming_quiet_pond_key tags = { activity_log } character = root root = { stress_impact = { base = minor_stress_impact_loss lazy = minor_stress_impact_loss } roaming_tally_variable_effect = { TYPE = stress VALUE = minor_stress_impact_loss } roaming_tally_stress_impact_effect = { TRAIT = lazy VALUE = minor_stress_impact_loss } } } } ai_chance = { base = 100 modifier = { factor = 1.5 has_trait = lazy } } } option = { name = bp3_roaming.0150.b trigger = { has_trait = lifestyle_poet } involved_activity = { add_activity_log_entry = { key = roaming_quiet_pond_poet_key tags = { activity_log } character = root root = { roaming_fame_reward_event_effect = { VALUE = roaming_reward_fame_medium } stress_impact = { honest = medium_stress_gain deceitful = minor_stress_impact_loss } roaming_tally_stress_impact_effect = { TRAIT = honest VALUE = minor_stress_gain } roaming_tally_stress_impact_effect = { TRAIT = deceitful VALUE = minor_stress_impact_loss } } } } ai_chance = { base = 100 modifier = { factor = 10 has_trait = lifestyle_poet } } } } # The Ruined Building bp3_roaming.0160 = { type = activity_event content_source = dlc_015 title = bp3_roaming.0160.t desc = { desc = bp3_roaming.0160.desc triggered_desc = { desc = bp3_roaming.0160.desc.no_companion trigger = { NOT = { exists = scope:special_guest } } } triggered_desc = { desc = bp3_roaming.0160.desc.companion trigger = { exists = scope:special_guest } } desc = bp3_roaming.0160.desc.outro } theme = roaming_activity override_background = { reference = burning_building_west } override_effect_2d = { reference = smoke } left_portrait = { character = scope:host animation = disbelief } center_portrait = { character = scope:special_guest animation = fear } cooldown = { months = 3 } weight_multiplier = { base = 1 } option = { name = bp3_roaming.0160.a involved_activity = { add_activity_log_entry = { key = roaming_burning_farm_piety_key tags = { activity_log } character = root root = { add_piety = medium_piety_gain roaming_tally_variable_effect = { TYPE = piety VALUE = medium_piety_gain } stress_impact = { compassionate = minor_stress_impact_loss zealous = minor_stress_impact_loss } roaming_tally_stress_impact_effect = { TRAIT = compassionate VALUE = minor_stress_impact_loss } roaming_tally_stress_impact_effect = { TRAIT = zealous VALUE = minor_stress_impact_loss } } } } ai_chance = { base = 100 modifier = { factor = 0 has_trait = greedy } } } option = { name = bp3_roaming.0160.b involved_activity = { add_activity_log_entry = { key = roaming_burning_farm_greedy_key tags = { activity_log } character = root root = { add_gold = tiny_gold_value roaming_tally_variable_effect = { TYPE = gold VALUE = tiny_gold_value } stress_impact = { greedy = minor_stress_impact_loss compassionate = minor_stress_gain generous = medium_stress_gain } roaming_tally_stress_impact_effect = { TRAIT = greedy VALUE = minor_stress_impact_loss } roaming_tally_stress_impact_effect = { TRAIT = compassionate VALUE = minor_stress_gain } roaming_tally_stress_impact_effect = { TRAIT = generous VALUE = medium_stress_gain } } } } ai_chance = { base = 100 modifier = { factor = 0 OR = { has_trait = compassionate has_trait = generous } } } } option = { name = bp3_roaming.0160.c trigger = { has_trait = lifestyle_poet } involved_activity = { add_activity_log_entry = { key = roaming_burning_farm_poet_key tags = { activity_log } character = root root = { roaming_fame_reward_event_effect = { VALUE = roaming_reward_fame_medium } } } } ai_chance = { base = 100 modifier = { factor = 10 has_trait = lifestyle_poet } } } } # A Quiet Day bp3_roaming.0170 = { type = activity_event content_source = dlc_015 title = bp3_roaming.0170.t desc = { desc = bp3_roaming.0170.desc triggered_desc = { desc = bp3_roaming.0170.desc.no_companion trigger = { NOT = { exists = scope:special_guest } } } triggered_desc = { desc = bp3_roaming.0170.desc.companion trigger = { exists = scope:special_guest } } } theme = roaming_activity cooldown = { months = 3 } left_portrait = { character = scope:host animation = happiness } right_portrait = { character = scope:special_guest animation = laugh } override_effect_2d = { reference = legend_glow } weight_multiplier = { base = 1 modifier = { OR = { has_activity_intent = reduce_stress_intent has_activity_intent = roaming_befriend_intent } factor = 1.5 } } option = { name = bp3_roaming.0170.a roaming_progress_events_reward_effect = { LOG_KEY = roaming_quiet_day_key } } } # Are we there yet? bp3_roaming.0180 = { type = activity_event content_source = dlc_015 title = bp3_roaming.0180.t desc = bp3_roaming.0180.desc theme = roaming_activity left_portrait = { character = scope:host animation = happiness } right_portrait = { character = scope:special_guest animation = disappointed } cooldown = { months = 3 } weight_multiplier = { base = 1 modifier = { OR = { has_activity_intent = reduce_stress_intent has_activity_intent = roaming_befriend_intent } factor = 1.5 } } trigger = { scope:special_guest ?= { OR = { age <= 16 has_trait = lazy has_trait = impatient current_weight > 50 } } NOR = { has_trait = lazy has_trait = impatient } } option = { name = bp3_roaming.0180.a involved_activity = { add_activity_log_entry = { key = roaming_tired_mutterings_lies_key tags = { activity_log } character = root root = { stress_impact = { base = minor_stress_impact_loss honest = medium_stress_gain deceitful = medium_stress_impact_loss callous = minor_stress_impact_loss } roaming_tally_variable_effect = { TYPE = stress VALUE = medium_stress_impact_loss } roaming_tally_stress_impact_effect = { TRAIT = honest VALUE = medium_stress_gain } roaming_tally_stress_impact_effect = { TRAIT = deceitful VALUE = medium_stress_impact_loss } roaming_tally_stress_impact_effect = { TRAIT = callous VALUE = minor_stress_impact_loss } } } } random = { chance = 10 involved_activity = { add_activity_log_entry = { key = roaming_tired_mutterings_athletic_key tags = { activity_log } character = root root = { send_interface_toast = { type = event_generic_good title = bp3_roaming.0180.a_short left_icon = root add_trait = athletic set_variable = roaming_tally_athletic } } } } } ai_chance = { base = 100 modifier = { factor = 0 has_trait = honest } } } option = { name = bp3_roaming.0180.b involved_activity = { add_activity_log_entry = { key = roaming_tired_mutterings_break_key tags = { activity_log } character = scope:special_guest scope:special_guest = { reverse_add_opinion = { modifier = friendliness_opinion target = root opinion = 15 } roaming_tally_variable_effect = { TYPE = opinion VALUE = 15 } } root = { reverse_add_opinion = { modifier = friendliness_opinion target = scope:special_guest opinion = 15 } roaming_tally_variable_effect = { TYPE = opinion VALUE = 15 } } } } ai_chance = { base = 100 modifier = { factor = 0 OR = { has_trait = sadistic has_trait = athletic has_trait = callous } } } } } # A chance to talk bp3_roaming.0190 = { type = activity_event content_source = dlc_015 title = bp3_roaming.0190.t desc = bp3_roaming.0190.desc theme = roaming_activity left_portrait = { character = scope:host animation = happiness } right_portrait = { character = scope:special_guest animation = laugh } cooldown = { months = 3 } weight_multiplier = { base = 1 modifier = { has_activity_intent = roaming_befriend_intent factor = 1.5 } } trigger = { exists = scope:special_guest } immediate = { random_courtier_or_guest = { limit = { NOR = { this = root this = scope:special_guest } age > 5 } save_scope_as = random_courtier } } option = { name = bp3_roaming.0190.a involved_activity = { add_activity_log_entry = { key = roaming_chance_to_talk_key tags = { activity_log } character = root scope:special_guest = { reverse_add_opinion = { modifier = friendliness_opinion target = root opinion = 20 } roaming_tally_variable_effect = { TYPE = opinion VALUE = 20 } } root = { reverse_add_opinion = { modifier = friendliness_opinion target = scope:special_guest opinion = 20 } roaming_tally_variable_effect = { TYPE = opinion VALUE = 20 } } } } } } # Astronomical Sight bp3_roaming.0200 = { type = activity_event content_source = dlc_015 title = bp3_roaming.0200.t desc = bp3_roaming.0200.desc theme = roaming_activity override_background = { reference = bp1_bonfire } left_portrait = { character = scope:host animation = happiness } right_portrait = { character = scope:special_guest animation = admiration } cooldown = { years = 1 } option = { name = bp3_roaming.0200.a involved_activity = { add_activity_log_entry = { key = roaming_nightsky_canvas_key tags = { activity_log } character = root scope:host = { stress_impact = { base = medium_stress_impact_loss zealous = medium_stress_impact_loss } add_wanderer_lifestyle_xp = 500 roaming_tally_stress_impact_effect = { TRAIT = zealous VALUE = medium_stress_impact_loss } roaming_fame_reward_event_effect = { VALUE = roaming_reward_fame_very_high } } } } } } # The Birds Overhead bp3_roaming.0210 = { type = activity_event content_source = dlc_015 title = bp3_roaming.0210.t desc = bp3_roaming.0210.desc theme = roaming_activity left_portrait = { character = scope:host animation = survey_staff } right_portrait = { character = scope:special_guest animation = happiness } cooldown = { months = 3 } weight_multiplier = { base = 1 modifier = { OR = { has_activity_intent = reduce_stress_intent has_activity_intent = roaming_befriend_intent has_activity_intent = roaming_storyteller_intent } factor = 1.5 } } option = { name = bp3_roaming.0210.a roaming_progress_events_reward_effect = { LOG_KEY = the_birds_overhead_key } } } # The Forgotten Village bp3_roaming.0220 = { type = activity_event content_source = dlc_015 title = bp3_roaming.0220.t desc = bp3_roaming.0220.desc theme = roaming_activity override_background = { reference = market_tribal } left_portrait = { character = scope:host animation = shock } right_portrait = { character = scope:peasant_character hide_info = yes animation = dismissal } cooldown = { months = 3 } weight_multiplier = { base = 1 modifier = { has_activity_intent = roaming_mystic_intent } } immediate = { create_character = { template = peasant_character faith = scope:province.faith culture = scope:province.culture gender = root location = scope:province save_scope_as = peasant_character } } option = { name = { trigger = { is_landless_adventurer = no } text = bp3_roaming.0220.a } name = { trigger = { has_government = landless_adventurer_government } text = bp3_roaming.0220.a.landless } involved_activity = { add_activity_log_entry = { key = the_forgotten_village_key tags = { activity_log } character = root root = { roaming_gold_reward_APA_effect = { REWARD = tiny_gold_value } stress_impact = { greedy = minor_stress_impact_loss generous = minor_stress_gain } roaming_tally_stress_impact_effect = { TRAIT = greedy VALUE = minor_stress_impact_loss } roaming_tally_stress_impact_effect = { TRAIT = generous VALUE = minor_stress_gain } if = { limit = { has_government = landless_adventurer_government NOT = { has_trait = gallowsbait } } add_trait = gallowsbait } else_if = { limit = { has_government = landless_adventurer_government has_trait = gallowsbait } add_trait_xp = { trait = gallowsbait track = thief value = 5 } } } } } ai_chance = { base = 100 modifier = { factor = 1.5 has_trait = greedy } modifier = { factor = 0 has_trait = generous } } } option = { name = bp3_roaming.0220.b involved_activity = { add_activity_log_entry = { key = the_forgotten_village_key tags = { activity_log } character = root root = { scope:province = { add_province_modifier = { modifier = roaming_forgotten_village_modifier years = 10 } } stress_impact = { lifestyle_mystic = minor_stress_impact_loss gregarious = minor_stress_impact_loss } roaming_tally_stress_impact_effect = { TRAIT = lifestyle_mystic VALUE = minor_stress_impact_loss } roaming_tally_stress_impact_effect = { TRAIT = gregarious VALUE = minor_stress_impact_loss } } } } random = { chance = roaming_mystic_chance_value involved_activity = { add_activity_log_entry = { key = the_forgotten_village_mystic_key tags = { activity_log } character = root root = { send_interface_message = { type = event_generic_good title = bp3_roaming.0220.b.mystic roaming_mystic_xp_APA_effect = { REWARD = 3 } if = { limit = { NOT = { has_trait = lifestyle_mystic } } add_trait = lifestyle_mystic } } } } } } ai_chance = { base = 100 modifier = { factor = 1.5 OR = { has_trait = gregarious has_trait = lifestyle_mystic } } } } option = { name = bp3_roaming.0220.c involved_activity = { add_activity_log_entry = { key = the_forgotten_village_key tags = { activity_log } character = root root = { roaming_fame_reward_event_effect = { VALUE = roaming_reward_fame_medium } stress_impact = { lifestyle_poet = minor_stress_impact_loss } roaming_tally_stress_impact_effect = { TRAIT = lifestyle_poet VALUE = minor_stress_impact_loss } } } } ai_chance = { base = 100 modifier = { factor = 1.5 has_trait = lifestyle_poet } } } after = { scope:peasant_character = { silent_disappear_ai_if_not_hired = yes } } } # The Hermit bp3_roaming.0230 = { type = activity_event content_source = dlc_015 title = bp3_roaming.0230.t desc = bp3_roaming.0230.desc theme = roaming_activity left_portrait = { character = scope:host animation = boredom } right_portrait = { character = scope:hermit_character animation = debating } cooldown = { months = 3 } trigger = { scope:province.religion = { any_faith = { this != root.faith num_county_followers < 3 } } } weight_multiplier = { base = 1 modifier = { factor = 1.5 has_activity_intent = roaming_mystic_intent } } immediate = { scope:province.religion = { random_faith = { limit = { this != root.faith num_county_followers < 3 } save_scope_as = hermit_faith } } create_character = { template = peasant_character faith = scope:hermit_faith culture = scope:province.culture gender = root location = scope:province save_scope_as = hermit_character after_creation = { add_trait = eccentric add_character_flag = roaming_character } } } option = { name = bp3_roaming.0230.a involved_activity = { add_activity_log_entry = { key = the_hermit_key tags = { activity_log } character = root root = { add_character_modifier = { modifier = roaming_the_hermit_modifier years = 10 } stress_impact = { zealous = major_stress_gain } roaming_tally_stress_impact_effect = { TRAIT = zealous VALUE = major_stress_gain } } } } random = { chance = roaming_mystic_chance_value involved_activity = { add_activity_log_entry = { key = the_hermit_learning_key tags = { activity_log } character = root root = { send_interface_message = { type = event_generic_good title = bp3_roaming.0230.a.hermit roaming_mystic_xp_APA_effect = { REWARD = 3 } if = { limit = { NOT = { has_trait = lifestyle_mystic } } add_trait = lifestyle_mystic } } } } } } scope:hermit_character = { silent_disappear_ai_if_not_hired = yes } ai_chance = { base = 100 modifier = { factor = 1.5 has_trait = lifestyle_mystic } modifier = { factor = 0 has_trait = zealous } } } option = { name = bp3_roaming.0230.b trigger = { NOR = { any_secret = { type = secret_crypto_religionist } exists = secret_faith scope:hermit_faith = faith } } involved_activity = { add_activity_log_entry = { key = the_hermit_key tags = { activity_log } character = root root = { custom_tooltip = bp3_roaming.0230.b.tooltip make_character_crypto_religionist_effect = { CRYPTO_RELIGION = scope:hermit_faith } stress_impact = { zealous = major_stress_gain } roaming_tally_stress_impact_effect = { TRAIT = zealous VALUE = major_stress_gain } } } } scope:hermit_character = { silent_disappear_ai_if_not_hired = yes } ai_chance = { base = 0 modifier = { add = 100 OR = { has_trait = lunatic has_trait = eccentric } } } } option = { name = bp3_roaming.0230.c involved_activity = { add_activity_log_entry = { key = the_hermit_key tags = { activity_log } character = root root = { add_piety = medium_piety_gain roaming_tally_variable_effect = { TYPE = piety VALUE = medium_piety_gain } scope:hermit_character = { death = { death_reason = death_murder killer = root } } stress_impact = { zealous = medium_stress_impact_loss } roaming_tally_stress_impact_effect = { TRAIT = zealous VALUE = medium_stress_impact_loss } } } } ai_chance = { base = 100 modifier = { factor = 1.5 has_trait = zealous } } } } # A Night to Remember bp3_roaming.0240 = { type = activity_event content_source = dlc_015 title = bp3_roaming.0240.t desc = bp3_roaming.0240.desc theme = roaming_activity override_background = { reference = ep3_campfire } left_portrait = { character = scope:host animation = stunned } cooldown = { months = 3 } weight_multiplier = { base = 1 modifier = { OR = { has_activity_intent = reduce_stress_intent has_activity_intent = roaming_storyteller_intent has_activity_intent = roaming_mystic_intent } factor = 1.5 } } trigger = { scope:province = { NOT = { has_province_modifier = wayfarer_astronomical_phenomenon } } } option = { name = bp3_roaming.0240.a involved_activity = { add_activity_log_entry = { key = a_night_to_remember_key tags = { activity_log } character = root root = { if = { limit = { has_trait = lifestyle_mystic has_activity_intent = roaming_mystic_intent } } else = { roaming_fame_reward_event_effect = { VALUE = roaming_reward_fame_medium } } stress_impact = { base = minor_stress_impact_loss } roaming_tally_variable_effect = { TYPE = stress VALUE = minor_stress_impact_loss } } } } } } # A Small Grave bp3_roaming.0250 = { type = activity_event content_source = dlc_015 title = bp3_roaming.0250.t desc = bp3_roaming.0250.desc theme = roaming_activity left_portrait = { character = scope:host animation = prayer } cooldown = { months = 3 } weight_multiplier = { base = 1 } immediate = { save_scope_value_as = { name = randomized_chance value = { integer_range = { min = 1 max = 20 } } } } option = { name = bp3_roaming.0250.a involved_activity = { add_activity_log_entry = { key = a_small_grave_key tags = { activity_log } character = root root = { add_piety = medium_piety_gain roaming_tally_variable_effect = { TYPE = piety VALUE = medium_piety_gain } stress_impact = { zealous = medium_stress_impact_loss } roaming_tally_stress_impact_effect = { TRAIT = zealous VALUE = medium_stress_impact_loss } } } } ai_chance = { base = 100 modifier = { factor = 1.5 has_trait = zealous } } } option = { name = bp3_roaming.0250.b add_piety = medium_piety_loss roaming_tally_variable_effect = { TYPE = piety VALUE = medium_piety_loss } show_as_tooltip = { random_list = { 1 = { desc = no_treasure show_chance = no } 1 = { desc = small_treasure show_chance = no add_gold = tiny_gold_value } 1 = { desc = medium_treasure show_chance = no add_gold = minor_gold_value } 1 = { desc = large_treasure show_chance = no add_gold = medium_gold_value custom_tooltip = bp3_roaming.0250.artifact } } stress_impact = { greedy = medium_stress_impact_loss } } hidden_effect_new_object = { involved_activity = { add_activity_log_entry = { key = a_small_grave_key tags = { activity_log } character = root root = { if = { limit = { scope:randomized_chance > 18 } hidden_effect = { create_character = { template = merchant_template faith = scope:province.faith culture = scope:province.culture gender = root location = scope:province save_scope_as = blacksmith_character } scope:blacksmith_character = { random_list = { 1 = { create_artifact_weapon_effect = { OWNER = scope:blacksmith_character CREATOR = scope:blacksmith_character SET_WEAPON_TYPE = flag:no } } 1 = { create_artifact_armor_effect = { OWNER = scope:blacksmith_character CREATOR = scope:blacksmith_character SET_ARMOR_TYPE = flag:no } } 1 = { create_artifact_brooch_effect = { OWNER = scope:blacksmith_character SMITH = scope:blacksmith_character } } } } } send_interface_message = { type = event_generic_good title = large_treasure scope:newly_created_artifact ?= { set_owner = { target = root history = { actor = root recipient = root location = scope:province type = discovered } } } add_gold = medium_gold_value } } else_if = { limit = { scope:randomized_chance > 13 } send_interface_message = { type = event_generic_good title = medium_treasure add_gold = minor_gold_value } } else_if = { limit = { scope:randomized_chance > 7 } send_interface_message = { type = event_generic_good title = small_treasure add_gold = tiny_gold_value } } else = { send_interface_message = { type = event_generic_good title = no_treasure } } stress_impact = { greedy = minor_stress_impact_loss generous = minor_stress_gain zealous = minor_stress_gain } roaming_tally_stress_impact_effect = { TRAIT = greedy VALUE = minor_stress_impact_loss } roaming_tally_stress_impact_effect = { TRAIT = generous VALUE = minor_stress_gain } roaming_tally_stress_impact_effect = { TRAIT = zealous VALUE = minor_stress_gain } } } } } ai_chance = { base = 100 modifier = { factor = 1.5 has_trait = greedy } modifier = { factor = 0 OR = { has_trait = zealous has_trait = generous } } } } after = { scope:blacksmith_character ?= { silent_disappear_ai_if_not_hired = yes } } }