namespace = ep3_camp_party ################################ # Maintenance ################################ # START EVENT ep3_camp_party.0001 = { type = activity_event title = ep3_camp_party.0001.t desc = ep3_camp_party.0001.desc theme = landless_adventurer override_background = { reference = ep3_campfire } center_portrait = { character = root animation = drink } option = { name = ep3_camp_party.0001.a ai_chance = { base = 100 } } } # CONCLUSION EVENT ep3_camp_party.0009 = { type = activity_event title = ep3_camp_party.0009.t desc = ep3_camp_party.0009.desc theme = landless_adventurer override_background = { reference = ep3_campfire } center_portrait = { character = root animation = ecstasy } immediate = { #Reward effects camp_party_completed_log_entry_effect = yes } option = { name = ep3_camp_party.0009.a ai_chance = { base = 100 } } } ################################ # Events ################################ # ep3_camp_party.1000 - Listen to a story at the campfire # ep3_camp_party.1005 - Someone wanders off and gets lost # ep3_camp_party.1010 - Solve a riddle # ep3_camp_party.1015 - An archery contest breaks out # ep3_camp_party.1020 - A local turns up # ep3_camp_party.1025 - Bond with your intent target # ep3_camp_party.1030 - Relieve stress - intent event # ep3_camp_party.1035 - Fell a tree for more firewood # ep3_camp_party.1040 - Encounter a wandering merchant # # Listen to a story at the campfire ep3_camp_party.1000 = { type = activity_event title = ep3_camp_party.1000.t desc = ep3_camp_party.1000.desc theme = landless_adventurer override_background = { reference = ep3_campfire } left_portrait = { character = root animation = drink } right_portrait = { character = scope:storyteller animation = storyteller } cooldown = { months = 3 } trigger = { #Standard checks has_ep3_dlc_trigger = yes has_government = landless_adventurer_government involved_activity = { any_attending_character = { count > 3 #Make sure there's actually a 'crowd' to listen this != root is_ai = yes is_adult = yes } } } immediate = { location = { save_scope_as = location } involved_activity = { save_scope_as = activity random_attending_character = { limit = { this != root is_ai = yes is_adult = yes } save_scope_as = storyteller } } } #If we rip some of these tables apart... option = { name = ep3_camp_party.1000.a trigger = { involved_activity = { has_activity_option = { category = camp_party_option_food option = camp_party_food_lavish } } } add_internal_flag = special flavor = ep3_camp_party.1000.a.tt domicile = { change_provisions = medium_provisions_loss } create_artifact = { name = ep3_makeshift_mace description = ep3_makeshift_mace_description type = mace visuals = mace modifier = artifact_prowess_4_modifier modifier = artifact_mercenary_hire_cost_mult_2_modifier modifier = artifact_men_at_arms_maintenance_8_modifier modifier = artifact_monthly_prestige_penalty_modifier creator = root rarity = common save_scope_as = makeshift_mace } stress_impact = { wrathful = miniscule_stress_impact_loss brave = miniscule_stress_impact_loss ambitious = miniscule_stress_impact_loss diligent = miniscule_stress_impact_loss calm = minor_stress_impact_gain content = minor_stress_impact_gain lazy = minor_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_boldness = 1 } } } #Oh yeah? Well I have a story too! option = { name = ep3_camp_party.1000.b trigger = { OR = { has_trait = lifestyle_poet has_trait = lifestyle_traveler } } duel = { skill = diplomacy value = medium_skill_rating # Success: Your story is believed 50 = { desc = ep3_camp_party.1000.b.success show_chance = yes compare_modifier = { value = scope:duel_value multiplier = 3.5 min = -49 } send_interface_toast = { title = ep3_camp_party.1000.b.success left_icon = root add_prestige = medium_prestige_gain involved_activity = { if = { limit = { any_attending_character = { NOR = { this = scope:storyteller this = root } } } every_attending_character = { custom = custom.every_attending_character limit = { NOR = { this = scope:storyteller this = root } } add_opinion = { target = root modifier = impressed_opinion opinion = 10 } } } } } } # Failure 50 = { desc = ep3_camp_party.1000.b.failure show_chance = yes compare_modifier = { value = scope:duel_value multiplier = -3.5 min = -49 } send_interface_toast = { title = ep3_camp_party.1000.b.failure left_icon = root add_prestige = medium_prestige_loss } } } random = { chance = 50 send_interface_toast = { type = event_toast_effect_bad title = ep3_camp_party.1000.b.tt left_icon = root right_icon = scope:storyteller reverse_add_opinion = { target = scope:storyteller modifier = upstaged_opinion opinion = -25 } } } stress_impact = { arrogant = minor_stress_impact_loss humble = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_sociability = -0.5 ai_compassion = -1 } } } #Another! option = { name = ep3_camp_party.1000.c scope:storyteller = { duel = { skill = diplomacy value = medium_skill_rating # Success: Their next story is great 50 = { desc = ep3_camp_party.1000.c.success show_chance = yes compare_modifier = { value = scope:duel_value multiplier = 3.5 min = -49 } send_interface_toast = { title = ep3_camp_party.1000.c.success left_icon = root right_icon = scope:storyteller involved_activity = { activity_special_type_progression_variable = { NUM = 15 } } custom_tooltip = camp_party_tt_positive_medium progress_towards_friend_effect = { REASON = friend_encouraged_tale CHARACTER = root OPINION = default_friend_opinion } } } # Failure: Their next story is a damp squib 50 = { desc = ep3_camp_party.1000.c.failure show_chance = yes compare_modifier = { value = scope:duel_value multiplier = -3.5 min = -49 } send_interface_toast = { title = ep3_camp_party.1000.c.failure left_icon = root right_icon = scope:storyteller add_prestige = medium_prestige_loss } } } } stress_impact = { humble = miniscule_stress_impact_loss gregarious = miniscule_stress_impact_loss shy = minor_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_sociability = 1 } } } #A fine tale. option = { name = ep3_camp_party.1000.d scope:activity = { activity_special_type_progression_variable = { NUM = 10 } } custom_tooltip = camp_party_tt_positive_tiny stress_impact = { patient = minor_stress_impact_loss impatient = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = 1 } } } } # Someone wanders off and gets lost ep3_camp_party.1005 = { type = activity_event title = ep3_camp_party.1005.t desc = ep3_camp_party.1005.desc theme = landless_adventurer override_background = { reference = ep3_campfire } left_portrait = { character = root animation = stress } right_portrait = { character = scope:attendee animation = worry } cooldown = { months = 3 } trigger = { #Standard checks has_ep3_dlc_trigger = yes has_government = landless_adventurer_government involved_activity = { any_attending_character = { count > 2 #Requires you plus two others this != root is_ai = yes is_adult = yes } } } immediate = { location = { save_scope_as = location } involved_activity = { save_scope_as = activity random_attending_character = { limit = { this != root is_ai = yes is_adult = yes } save_scope_as = attendee } random_attending_character = { limit = { NOR = { this = root this = scope:attendee } is_ai = yes is_adult = yes } save_scope_as = wanderer } } } #Chuck some more wood on the fire to guide them home option = { name = ep3_camp_party.1005.a trigger = { involved_activity = { OR = { has_activity_option = { category = camp_party_option_food option = camp_party_food_simple } has_activity_option = { category = camp_party_option_food option = camp_party_food_lavish } } } } add_internal_flag = special domicile = { change_provisions = minor_provisions_loss } reverse_add_opinion = { target = scope:wanderer modifier = grateful_opinion opinion = 20 } if = { limit = { involved_activity = { has_activity_option = { category = camp_party_option_food option = camp_party_food_simple } } } random = { chance = 50 custom_tooltip = ep3_camp_party.1005.a.tt.positive trigger_event = ep3_camp_party.1006 } } if = { #Boost chance for lavish limit = { involved_activity = { has_activity_option = { category = camp_party_option_food option = camp_party_food_lavish } } } random = { chance = 80 custom_tooltip = ep3_camp_party.1005.a.tt.positive trigger_event = ep3_camp_party.1006 } } stress_impact = { calm = miniscule_stress_impact_loss compassionate = miniscule_stress_impact_loss } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = 1 } } } #Search for them option = { name = ep3_camp_party.1005.b duel = { skills = { learning martial } value = medium_skill_rating # You find them 50 = { desc = ep3_camp_party.1005.b.success show_chance = yes compare_modifier = { value = scope:duel_value multiplier = 3.5 min = -49 } send_interface_toast = { title = ep3_camp_party.1005.b.success left_icon = root right_icon = scope:wanderer if = { limit = { NOT = { has_trait = lifestyle_hunter } } add_trait = lifestyle_hunter } add_trait_xp = { trait = lifestyle_hunter track = hunter value = { 3 8 } } reverse_add_opinion = { target = scope:wanderer modifier = grateful_opinion opinion = 15 } scope:activity = { activity_special_type_progression_variable = { NUM = 15 } } custom_tooltip = camp_party_tt_positive_medium } } # You find some berries 50 = { desc = ep3_camp_party.1005.b.neutral show_chance = yes compare_modifier = { value = scope:duel_value multiplier = 3.5 min = -49 } send_interface_toast = { title = ep3_camp_party.1005.b.neutral left_icon = root right_icon = scope:attendee domicile = { change_provisions = microscopic_provisions_gain } scope:wanderer = { random = { chance = 35 add_trait = lifestyle_gardener } } } } # You don't find them, and have a tangle with a wild animal 50 = { desc = ep3_camp_party.1005.b.failure show_chance = yes compare_modifier = { value = scope:duel_value multiplier = -3.5 min = -49 } send_interface_toast = { title = ep3_camp_party.1005.b.failure left_icon = root right_icon = scope:wanderer add_prestige = miniscule_prestige_loss increase_wounds_no_death_effect = { REASON = wild_animal } } } } stress_impact = { arrogant = miniscule_stress_impact_loss humble = minor_stress_impact_gain diligent = miniscule_stress_impact_loss lazy = minor_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_sociability = 1 ai_energy = 1 } } } #They'll come back, no worries option = { name = ep3_camp_party.1005.c random_list = { #They find their way back 50 = { desc = ep3_camp_party.1005.c.success send_interface_toast = { title = ep3_camp_party.1005.c.success left_icon = root right_icon = scope:wanderer scope:wanderer = { add_stress = miniscule_stress_loss } scope:activity = { activity_special_type_progression_variable = { NUM = 10 } } custom_tooltip = camp_party_tt_positive_tiny } } #They find their way back, wounded 50 = { desc = ep3_camp_party.1005.c.failure send_interface_toast = { title = ep3_camp_party.1005.c.failure left_icon = root right_icon = scope:wanderer scope:wanderer = { increase_wounds_no_death_effect = { REASON = wild_animal } } } } # They are lost forever 10 = { desc = ep3_camp_party.1005.c.critfailure send_interface_toast = { title = ep3_camp_party.1005.c.critfailure left_icon = root right_icon = scope:attendee scope:wanderer = { move_to_pool = yes } } } } stress_impact = { lazy = miniscule_stress_impact_loss diligent = minor_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = -1 ai_energy = -1 } } } } # Followup to 1005: some wanderers join! ep3_camp_party.1006 = { type = activity_event title = ep3_camp_party.1006.t desc = ep3_camp_party.1006.desc theme = landless_adventurer left_portrait = { character = root animation = ecstasy } right_portrait = { character = scope:newcomer animation = obsequious_bow } trigger = { #Standard checks has_ep3_dlc_trigger = yes has_government = landless_adventurer_government } immediate = { location = { save_scope_as = location } involved_activity = { save_scope_as = activity } if = { limit = { any_pool_character = { province = root.location is_physically_able_ai_adult = yes has_no_particular_noble_roots_trigger = yes } } random_pool_character = { province = root.location limit = { is_physically_able_ai_adult = yes has_no_particular_noble_roots_trigger = yes } save_scope_as = newcomer } } else = { create_character = { template = bandit_character culture = location.culture faith = location.faith location = root.location save_scope_as = newcomer } } hidden_effect = { scope:newcomer = { add_trait = lifestyle_physician add_trait_xp = { trait = lifestyle_physician value = { integer_range = { min = 50 max = 100 } } } add_trait = lifestyle_traveler add_trait_xp = { trait = lifestyle_traveler track = danger value = { integer_range = { min = 25 max = 75 } } } } } domicile = { change_provisions = miniscule_provisions_gain } } #Join, and stay! option = { name = ep3_camp_party.1006.a scope:newcomer = { add_to_activity = scope:activity } add_courtier = scope:newcomer scope:activity = { activity_special_type_progression_variable = { NUM = 15 } } custom_tooltip = camp_party_tt_positive_medium stress_impact = { calm = miniscule_stress_impact_loss compassionate = miniscule_stress_impact_loss } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = 1 } } } #Come join the revelries, and teach me how you survive in the wilderness option = { name = ep3_camp_party.1006.b scope:newcomer = { add_to_activity = scope:activity } scope:activity = { activity_special_type_progression_variable = { NUM = 15 } } custom_tooltip = camp_party_tt_positive_medium if = { limit = { NOT = { has_trait = lifestyle_physician } } add_trait = lifestyle_physician } add_trait_xp = { trait = lifestyle_physician value = { 15 30 } } stress_impact = { arrogant = miniscule_stress_impact_loss humble = minor_stress_impact_gain diligent = miniscule_stress_impact_loss lazy = minor_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_sociability = 1 ai_energy = 1 } } } } # Solve a riddle ep3_camp_party.1010 = { type = activity_event title = ep3_camp_party.1010.t desc = { desc = ep3_camp_party.1010.desc random_valid = { triggered_desc = { trigger = { has_character_flag = 1010_first_riddle_answer } desc = ep3_camp_party.1010.desc_riddle_01 } triggered_desc = { trigger = { has_character_flag = 1010_second_riddle_answer } desc = ep3_camp_party.1010.desc_riddle_02 } triggered_desc = { trigger = { has_character_flag = 1010_third_riddle_answer } desc = ep3_camp_party.1010.desc_riddle_03 } triggered_desc = { trigger = { has_character_flag = 1010_fourth_riddle_answer } desc = ep3_camp_party.1010.desc_riddle_04 } triggered_desc = { trigger = { has_character_flag = 1010_fifth_riddle_answer } desc = ep3_camp_party.1010.desc_riddle_05 } triggered_desc = { trigger = { has_character_flag = 1010_sixth_riddle_answer } desc = ep3_camp_party.1010.desc_riddle_06 } triggered_desc = { trigger = { has_character_flag = 1010_seventh_riddle_answer } desc = ep3_camp_party.1010.desc_riddle_07 } triggered_desc = { trigger = { has_character_flag = 1010_eighth_riddle_answer } desc = ep3_camp_party.1010.desc_riddle_08 } } desc = ep3_camp_party.1010.desc_outro } theme = landless_adventurer override_background = { reference = ep3_campfire } left_portrait = { character = root animation = thinking } right_portrait = { character = scope:riddler animation = drink } cooldown = { months = 3 } trigger = { #Standard checks has_ep3_dlc_trigger = yes has_government = landless_adventurer_government involved_activity = { any_attending_character = { count > 1 this != root is_ai = yes is_adult = yes } } } immediate = { location = { save_scope_as = location } involved_activity = { save_scope_as = activity random_attending_character = { limit = { this != root is_ai = yes is_adult = yes } save_scope_as = riddler } } random_list = { 1 = { add_character_flag = 1010_first_riddle_answer } 1 = { add_character_flag = 1010_second_riddle_answer } 1 = { add_character_flag = 1010_third_riddle_answer } 1 = { add_character_flag = 1010_fourth_riddle_answer } 1 = { add_character_flag = 1010_fifth_riddle_answer } 1 = { add_character_flag = 1010_sixth_riddle_answer } 1 = { add_character_flag = 1010_seventh_riddle_answer } 1 = { add_character_flag = 1010_eighth_riddle_answer } } } #I'm big brained and know the answer option = { name = ep3_camp_party.1010.a trigger = { OR = { has_trait = intellect_good has_trait = shrewd } } reverse_add_opinion = { target = scope:riddler modifier = disappointed_opinion opinion = -5 } add_prestige = medium_prestige_gain if = { limit = { has_trait = tourney_participant } add_trait_xp = { trait = tourney_participant track = wit value = tournament_hastiludes_xp_gain_medium_value } } else = { add_trait = tourney_participant add_trait_xp = { trait = tourney_participant track = wit value = tournament_hastiludes_xp_gain_medium_value } } stress_impact = { arrogant = medium_stress_impact_loss impatient = miniscule_stress_impact_loss humble = medium_stress_impact_gain patient = minor_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_boldness = 1 } } } #Hmm, well, what about this guess? option = { name = ep3_camp_party.1010.b duel = { skill = learning value = medium_skill_rating # Success: You guessed right 50 = { desc = ep3_camp_party.1010.b.success show_chance = yes compare_modifier = { value = scope:duel_value multiplier = 3.5 min = -49 } send_interface_toast = { title = ep3_camp_party.1010.b.success.title #Used for supplying the actual answer left_icon = root right_icon = scope:riddler add_prestige = medium_prestige_gain involved_activity = { every_attending_character = { custom = custom.every_attending_character add_opinion = { target = root modifier = impressed_opinion opinion = 5 } } } } } # Failure: You guessed wrong 50 = { desc = ep3_camp_party.1010.b.failure show_chance = yes compare_modifier = { value = scope:duel_value multiplier = -3.5 min = -49 } send_interface_toast = { title = ep3_camp_party.1010.b.failure left_icon = root right_icon = scope:riddler add_prestige = minor_prestige_loss scope:riddler = { add_stress = miniscule_stress_loss } } } } stress_impact = { patient = miniscule_stress_impact_loss impatient = minor_stress_impact_gain gregarious = miniscule_stress_impact_loss } ai_chance = { base = 100 ai_value_modifier = { ai_sociability = 0.5 } } } #No idea, want a drink? option = { name = ep3_camp_party.1010.c flavor = ep3_camp_party.1010.c.tt involved_activity = { activity_special_type_progression_variable = { NUM = 15 } } custom_tooltip = camp_party_tt_positive_medium stress_impact = { arrogant = medium_stress_impact_gain impatient = medium_stress_impact_gain humble = miniscule_stress_impact_loss patient = miniscule_stress_impact_loss } ai_chance = { base = 100 ai_value_modifier = { ai_sociability = 1 } } } after = { remove_character_flag ?= 1010_first_riddle_answer remove_character_flag ?= 1010_second_riddle_answer remove_character_flag ?= 1010_third_riddle_answer remove_character_flag ?= 1010_fourth_riddle_answer remove_character_flag ?= 1010_fifth_riddle_answer remove_character_flag ?= 1010_sixth_riddle_answer remove_character_flag ?= 1010_seventh_riddle_answer remove_character_flag ?= 1010_eighth_riddle_answer } } # An archery contest breaks out ep3_camp_party.1015 = { type = activity_event title = ep3_camp_party.1015.t desc = ep3_camp_party.1015.desc theme = landless_adventurer override_background = { reference = ep3_campfire } left_portrait = { character = root animation = interested } right_portrait = { character = scope:archer animation = hunting_shortbow_rest_arrow_default } cooldown = { months = 3 } trigger = { #Standard checks has_ep3_dlc_trigger = yes has_government = landless_adventurer_government involved_activity = { any_attending_character = { count > 1 this != root is_ai = yes is_adult = yes } } } immediate = { location = { save_scope_as = location } involved_activity = { save_scope_as = activity random_attending_character = { limit = { this != root is_ai = yes is_adult = yes } save_scope_as = archer } } if = { limit = { involved_activity = { OR = { has_activity_option = { category = camp_party_option_food option = camp_party_food_simple } has_activity_option = { category = camp_party_option_food option = camp_party_food_lavish } } } } involved_activity = { random_attending_character = { limit = { NOR = { this = root this = scope:archer } is_ai = yes is_adult = yes } save_scope_as = apple_holder } } } } #Use apples as targets option = { name = ep3_camp_party.1015.a trigger = { involved_activity = { OR = { has_activity_option = { category = camp_party_option_food option = camp_party_food_simple } has_activity_option = { category = camp_party_option_food option = camp_party_food_lavish } } any_attending_character = { count > 2 this != root is_ai = yes is_adult = yes } } } add_internal_flag = special flavor = ep3_camp_party.1015.a.tt domicile = { change_provisions = microscopic_provisions_loss } duel = { skill = prowess target = scope:archer # Success: You hit 30 = { desc = ep3_camp_party.1015.a.success show_chance = yes compare_modifier = { value = scope:duel_value multiplier = 3.5 min = -49 } send_interface_toast = { title = ep3_camp_party.1015.a.success left_icon = root right_icon = scope:archer add_prestige = major_prestige_gain if = { limit = { has_trait = tourney_participant } add_trait_xp = { trait = tourney_participant track = bow value = tournament_hastiludes_xp_gain_major_value } } else = { add_trait = tourney_participant add_trait_xp = { trait = tourney_participant track = bow value = tournament_hastiludes_xp_gain_major_value } } scope:archer = { pay_short_term_gold = { target = root gold = tiny_gold_value } } } } # Failure: You miss 40 = { desc = ep3_camp_party.1015.a.failure show_chance = yes compare_modifier = { value = scope:duel_value multiplier = -3.5 min = -49 } send_interface_toast = { title = ep3_camp_party.1015.a.failure left_icon = root right_icon = scope:archer pay_short_term_gold = { target = scope:archer gold = tiny_gold_value } scope:archer = { add_prestige = medium_prestige_gain if = { limit = { has_trait = tourney_participant } add_trait_xp = { trait = tourney_participant track = bow value = tournament_hastiludes_xp_gain_major_value } } else = { add_trait = tourney_participant add_trait_xp = { trait = tourney_participant track = bow value = tournament_hastiludes_xp_gain_major_value } } } } } # Failure: You REALLY miss 10 = { desc = ep3_camp_party.1015.a.critfailure show_chance = yes compare_modifier = { value = scope:duel_value multiplier = -3.5 min = -49 } send_interface_toast = { title = ep3_camp_party.1015.a.critfailure left_icon = root right_icon = scope:apple_holder scope:apple_holder = { if = { limit = { NOT = { has_trait = one_eyed } } add_trait = one_eyed } else = { increase_wounds_no_death_effect = { REASON = wounds } } add_opinion = { target = root modifier = maimed_me opinion = -50 } } } } } stress_impact = { arrogant = miniscule_stress_impact_loss humble = medium_stress_impact_gain callous = minor_stress_impact_loss compassionate = medium_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = -1 } } } #Why don't we make this into a hunting competition? option = { name = ep3_camp_party.1015.b random_list = { 10 = { desc = ep3_camp_party.1015.b.success modifier = { #If you're both good add = 5 AND = { scope:archer = { prowess > 10 } prowess > 10 } } modifier = { #If at least one of you is good add = 5 OR = { scope:archer = { prowess > 10 } prowess > 10 } } send_interface_toast = { title = ep3_camp_party.1015.b.success left_icon = root right_icon = scope:archer domicile = { change_provisions = { miniscule_provisions_gain medium_provisions_gain } } if = { limit = { has_trait = lifestyle_hunter } add_trait_xp = { trait = lifestyle_hunter track = hunter value = tournament_hastiludes_xp_gain_major_value } } else = { add_trait = lifestyle_hunter add_trait_xp = { trait = lifestyle_hunter track = hunter value = tournament_hastiludes_xp_gain_major_value } } } } 10 = { desc = ep3_camp_party.1015.b.failure send_interface_toast = { title = ep3_camp_party.1015.b.failure left_icon = root right_icon = scope:archer if = { limit = { has_trait = lifestyle_hunter } add_trait_xp = { trait = lifestyle_hunter track = hunter value = tournament_hastiludes_xp_gain_medium_value } } else = { add_trait = lifestyle_hunter add_trait_xp = { trait = lifestyle_hunter track = hunter value = tournament_hastiludes_xp_gain_medium_value } } add_prestige = minor_prestige_loss add_stress = minor_stress_gain } } 1 = { desc = ep3_camp_party.1015.b.critfailure send_interface_toast = { title = ep3_camp_party.1015.b.critfailure left_icon = root right_icon = scope:archer increase_wounds_no_death_effect = { REASON = wounds } } } } stress_impact = { arrogant = miniscule_stress_impact_loss impatient = miniscule_stress_impact_loss humble = minor_stress_impact_gain patient = minor_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_boldness = 1 } } } #Come, then! option = { name = ep3_camp_party.1015.c trigger = { involved_activity = { NOR = { has_activity_option = { category = camp_party_option_food option = camp_party_food_simple } has_activity_option = { category = camp_party_option_food option = camp_party_food_lavish } } } } duel = { skill = prowess target = scope:archer # Success: You win 50 = { desc = ep3_camp_party.1015.c.success show_chance = yes compare_modifier = { value = scope:duel_value multiplier = 3.5 min = -49 } send_interface_toast = { title = ep3_camp_party.1015.c.success left_icon = root right_icon = scope:archer add_prestige = medium_prestige_gain if = { limit = { has_trait = tourney_participant } add_trait_xp = { trait = tourney_participant track = bow value = tournament_hastiludes_xp_gain_major_value } } else = { add_trait = tourney_participant add_trait_xp = { trait = tourney_participant track = bow value = tournament_hastiludes_xp_gain_major_value } } } } # Failure: You lose 50 = { desc = ep3_camp_party.1015.c.failure show_chance = yes compare_modifier = { value = scope:duel_value multiplier = -3.5 min = -49 } send_interface_toast = { title = ep3_camp_party.1015.c.failure left_icon = root right_icon = scope:archer add_stress = miniscule_stress_gain scope:archer = { add_prestige = medium_prestige_gain } } } } stress_impact = { patient = minor_stress_impact_gain impatient = miniscule_stress_impact_loss brave = miniscule_stress_impact_loss craven = minor_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_energy = 1 } } } #Ah, you're better than me, let's just sit and talk shall we? option = { name = ep3_camp_party.1015.d involved_activity = { activity_special_type_progression_variable = { NUM = 15 } } custom_tooltip = camp_party_tt_positive_medium reverse_add_opinion = { target = scope:archer modifier = pleased_opinion opinion = 25 } stress_impact = { arrogant = minor_stress_impact_gain impatient = minor_stress_impact_gain humble = miniscule_stress_impact_loss patient = miniscule_stress_impact_loss } ai_chance = { base = 100 ai_value_modifier = { ai_sociability = 1 } } } } # A local turns up ep3_camp_party.1020 = { type = activity_event title = ep3_camp_party.1020.t desc = { desc = ep3_camp_party.1020.opening first_valid = { triggered_desc = { trigger = { scope:local = { has_character_flag = witch_flag } } desc = ep3_camp_party.1020.witch } triggered_desc = { trigger = { scope:local = { has_character_flag = cannibal_flag } } desc = ep3_camp_party.1020.cannibal } triggered_desc = { trigger = { scope:local = { has_character_flag = mangled_flag } } desc = ep3_camp_party.1020.mangled } triggered_desc = { trigger = { scope:local = { has_character_flag = mystic_flag } } desc = ep3_camp_party.1020.mystic } triggered_desc = { trigger = { scope:local = { has_character_flag = siblings_flag } } desc = ep3_camp_party.1020.siblings } } triggered_desc = { trigger = { scope:local = { NOT = { has_character_flag = siblings_flag } } } desc = ep3_camp_party.1020.ending } } theme = landless_adventurer override_background = { reference = ep3_campfire } left_portrait = { character = root animation = shock } center_portrait = { trigger = { exists = scope:local_sibling } character = scope:local_sibling animation = sick camera = camera_event_left_forward } right_portrait = { character = scope:local animation = beg } cooldown = { months = 3 } trigger = { #Standard checks has_ep3_dlc_trigger = yes has_government = landless_adventurer_government involved_activity = { OR = { has_activity_option = { category = camp_party_option_food option = camp_party_food_simple } has_activity_option = { category = camp_party_option_food option = camp_party_food_lavish } } } } immediate = { location = { save_scope_as = location } involved_activity = { save_scope_as = activity } random_list = { 2 = { #Normal pool character trigger = { any_pool_character = { province = root.location is_physically_able_ai_adult = yes has_no_particular_noble_roots_trigger = yes } } random_pool_character = { province = root.location limit = { is_physically_able_ai_adult = yes has_no_particular_noble_roots_trigger = yes } save_scope_as = local } } 1 = { create_character = { template = bp1_yearly_2021_learning_witch_template culture = location.culture faith = location.faith location = root.location save_scope_as = local } hidden_effect = { scope:local = { add_character_flag = witch_flag } } } 1 = { create_character = { template = generic_peasant_character culture = location.culture faith = location.faith location = root.location save_scope_as = local } hidden_effect = { scope:local = { add_secret = { type = secret_cannibal } add_character_flag = cannibal_flag } } } 1 = { create_character = { template = generic_peasant_character culture = location.culture faith = location.faith location = root.location age = { 20 30 } save_scope_as = local } hidden_effect = { scope:local = { random_list = { 1 = { #Cowhig Croft 'em add_trait = one_eyed add_trait = one_legged add_trait = scarred add_trait_xp = { trait = scarred value = { integer_range = { min = 50 max = 100 } } } add_learning_skill = { 5 15 } add_diplomacy_skill = { 5 15 } add_character_flag = mangled_flag } 1 = { #'Yes it is', not 'that it be' add_trait = lifestyle_mystic add_trait_xp = { trait = lifestyle_mystic value = { integer_range = { min = 50 max = 100 } } } add_trait = lifestyle_herbalist set_age = { 35 60 } add_character_flag = mystic_flag } 1 = { #Someone suspiciously close to their sibling, whose parents have mysteriously just died... create_character = { #Make their dad template = generic_peasant_character gender = male culture = location.culture faith = location.faith location = root.location age = { 50 70 } save_scope_as = local_dad } create_character = { #Make their mum template = generic_female_peasant_character gender = female culture = location.culture faith = location.faith location = root.location age = { 50 70 } save_scope_as = local_mum } scope:local_dad = { death = { death_reason = death_mysterious } } scope:local_mum = { death = { death_reason = death_mysterious } } #Now back to the person at hand set_sexuality = bisexual #No, this isn't a statement on the inherently incestuous nature of bisexuals, I just don't want to have to set up all the cascading checks for brother/brother, brother/sister, sister/sister for what is a throwaway part of an event. OK?! (ㆆ_ㆆ) add_secret = { type = secret_incest } set_father = scope:local_dad set_mother = scope:local_mum add_character_flag = siblings_flag #Make them a good character that you want to have, so giving us plenty of intrigue later on random_list = { 10 = { add_trait = beauty_good_1 } 10 = { add_trait = beauty_good_2 } 10 = { add_trait = physique_good_1 } 10 = { add_trait = physique_good_2 } 1 = { add_trait = fecund } 5 = { add_trait = strong } 5 = { add_trait = shrewd } } #And now to their sibling create_character = { template = generic_peasant_character culture = location.culture faith = location.faith location = root.location age = { 20 30 } save_scope_as = local_sibling } scope:local_sibling = { set_sexuality = bisexual #Same goes here! set_father = scope:local_dad set_mother = scope:local_mum set_relation_lover = { target = scope:local } random_list = { #As above 10 = { add_trait = beauty_good_1 } 10 = { add_trait = beauty_good_2 } 10 = { add_trait = physique_good_1 } 10 = { add_trait = physique_good_2 } 1 = { add_trait = fecund } 5 = { add_trait = strong } 5 = { add_trait = shrewd } } } random_list = { #Did they kill their parents? 5 = { #First one did add_trait = kinslayer_3 } 5 = { #Second one did scope:local_sibling = { add_trait = kinslayer_3 } } 20 = { #They BOTH did! add_trait = kinslayer_3 scope:local_sibling = { add_trait = kinslayer_3 } } } } } } } } } } #Invite them in option = { name = ep3_camp_party.1020.a domicile = { change_provisions = minor_provisions_loss } add_courtier = scope:local reverse_add_opinion = { target = scope:local modifier = grateful_opinion opinion = 50 } if = { limit = { exists = scope:local_sibling } add_courtier = scope:local_sibling reverse_add_opinion = { target = scope:local_sibling modifier = grateful_opinion opinion = 50 } } stress_impact = { trusting = miniscule_stress_impact_loss paranoid = medium_stress_impact_gain gregarious = miniscule_stress_impact_loss shy = minor_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = 1 } } } #Give them food option = { name = ep3_camp_party.1020.b domicile = { change_provisions = miniscule_provisions_loss } add_piety = medium_piety_gain involved_activity = { every_attending_character = { custom = custom.every_attending_character add_opinion = { target = root modifier = charity_opinion opinion = 15 } } } stress_impact = { just = miniscule_stress_impact_loss generous = miniscule_stress_impact_loss greedy = medium_stress_impact_gain arbitrary = minor_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = 0.5 } } } #Something's off about them; turn them away option = { name = ep3_camp_party.1020.c domicile = { change_provisions = miniscule_provisions_gain } involved_activity = { activity_special_type_progression_variable = { NUM = 15 } } custom_tooltip = camp_party_tt_positive_medium trigger_event = ep3_camp_party.1021 stress_impact = { paranoid = medium_stress_impact_loss compassionate = medium_stress_impact_gain trusting = minor_stress_impact_gain callous = minor_stress_impact_loss } ai_chance = { base = 100 ai_value_modifier = { ai_energy = -1 } } } } # Resolution event to the previous ep3_camp_party.1021 = { type = activity_event title = ep3_camp_party.1021.t desc = { first_valid = { triggered_desc = { trigger = { OR = { has_trait = callous has_trait = paranoid } } desc = ep3_camp_party.1021.callous } triggered_desc = { trigger = { scope:local = { has_character_flag = witch_flag } } desc = ep3_camp_party.1021.witch } triggered_desc = { trigger = { scope:local = { has_character_flag = cannibal_flag } } desc = ep3_camp_party.1021.cannibal } triggered_desc = { trigger = { scope:local = { has_character_flag = mangled_flag } } desc = ep3_camp_party.1021.mangled } triggered_desc = { trigger = { scope:local = { has_character_flag = mystic_flag } } desc = ep3_camp_party.1021.mystic } triggered_desc = { trigger = { scope:local = { has_character_flag = siblings_flag } } desc = ep3_camp_party.1021.siblings } triggered_desc = { desc = ep3_camp_party.1021.normal } } } theme = landless_adventurer override_background = { reference = ep3_campfire } left_portrait = { character = root triggered_animation = { trigger = { OR = { has_trait = callous has_trait = paranoid } } animation = dismissal } triggered_animation = { trigger = { scope:local = { OR = { has_character_flag = siblings_flag has_character_flag = mystic_flag } } } animation = grief } triggered_animation = { trigger = { NOR = { has_trait = callous has_trait = paranoid } } animation = worry } } center_portrait = { trigger = { exists = scope:local_sibling } character = scope:local_sibling animation = shock camera = camera_event_left_forward } right_portrait = { character = scope:local animation = anger } cooldown = { months = 3 } option = { name = { trigger = { scope:local = { has_character_flag = siblings_flag } } text = ep3_camp_party.1021.a.face } name = { trigger = { scope:local = { has_character_flag = mystic_flag } } text = ep3_camp_party.1021.a.ill } name = { trigger = { scope:local = { NOR = { has_character_flag = siblings_flag has_character_flag = mystic_flag } } } text = ep3_camp_party.1021.a.sad } trigger = { NOR = { has_trait = callous has_trait = paranoid } } if = { #If you turn away the witch, they turn one of your people into one limit = { scope:local = { has_character_flag = witch_flag } } hidden_effect = { involved_activity = { random_attending_character = { limit = { this != root } add_secret = { type = secret_witch } } } } } else_if = { #Or a cannibal limit = { scope:local = { has_character_flag = cannibal_flag } } hidden_effect = { involved_activity = { random_attending_character = { limit = { this != root } add_secret = { type = secret_cannibal } } } } } else_if = { #If you turn away the mangled man, everyone just feels bad limit = { scope:local = { has_character_flag = mangled_flag } } involved_activity = { every_attending_character = { custom = custom.every_attending_character add_opinion = { target = root modifier = guilty_opinion opinion = -25 } add_stress = minor_stress_gain } random_attending_character = { limit = { NOR = { this = root has_trait = loyal has_trait = sadistic has_trait = callous } } random = { chance = 75 add_trait = disloyal } } } } else_if = { #The mystic poisons you limit = { scope:local = { has_character_flag = mystic_flag } } contract_disease_effect = { DISEASE = ill TREATMENT_EVENT = yes } } else_if = { #The siblings attack you limit = { scope:local = { has_character_flag = siblings_flag } } random_list = { 10 = { modifier = { employs_court_position = court_physician_court_position add = 5 } increase_wounds_no_death_effect = { REASON = fight } } 3 = { add_trait = one_eyed } } } else = { if = { limit = { NOT = { has_character_modifier = ep3_uneasy_modifier } } add_character_modifier = { modifier = ep3_uneasy_modifier years = 3 } } } stress_impact = { base = minor_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = 1 } } } option = { name = ep3_camp_party.1021.b trigger = { OR = { has_trait = callous has_trait = paranoid } } add_stress = medium_stress_loss } after = { scope:local = { remove_character_flag = witch_flag remove_character_flag = cannibal_flag remove_character_flag = mangled_flag remove_character_flag = mystic_flag remove_character_flag = siblings_flag } } } # Bond with your intent target ep3_camp_party.1025 = { type = activity_event title = ep3_camp_party.1025.t desc = ep3_camp_party.1025.desc theme = landless_adventurer override_background = { reference = ep3_campfire } left_portrait = { character = root animation = ecstasy } right_portrait = { character = scope:friend animation = storyteller } cooldown = { months = 3 } trigger = { #Standard checks has_ep3_dlc_trigger = yes has_government = landless_adventurer_government has_activity_intent = befriend_attendee_intent intent_target ?= { is_alive = yes this != root } } immediate = { location = { save_scope_as = location } involved_activity = { save_scope_as = activity } intent_target = { save_scope_as = friend } } #No, no, tell me more! option = { name = ep3_camp_party.1025.a trigger = { OR = { has_relation_potential_friend = scope:friend has_trait = diplomat has_trait = gregarious diplomacy > 15 number_of_personality_traits_in_common = { target = scope:friend value >= 2 } number_of_traits_in_common = { target = scope:friend value >= 3 } } } set_relation_friend = { target = scope:friend reason = friend_listened_to_story } complete_activity_intent = yes stress_impact = { arrogant = minor_stress_impact_gain humble = minor_stress_impact_loss callous = minor_stress_impact_gain compassionate = minor_stress_impact_loss } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = 1 } } } #I do! I did stuff like... option = { name = ep3_camp_party.1025.b duel = { skill = diplomacy value = medium_skill_rating # Success: You pluck a memory out of thin air 50 = { desc = ep3_camp_party.1025.b.success show_chance = yes compare_modifier = { value = scope:duel_value multiplier = 3.5 min = -49 } send_interface_toast = { title = ep3_camp_party.1025.b.success left_icon = root right_icon = scope:friend progress_towards_friend_effect = { REASON = friend_bonded_over_story CHARACTER = scope:friend OPINION = default_friend_opinion } if = { limit = { has_relation_friend = scope:friend } complete_activity_intent = yes } } } # Failure: You had a boring childhood, apparently 50 = { desc = ep3_camp_party.1025.b.failure show_chance = yes compare_modifier = { value = scope:duel_value multiplier = -3.5 min = -49 } send_interface_toast = { title = ep3_camp_party.1025.b.failure left_icon = root right_icon = scope:friend reverse_add_opinion = { target = scope:friend modifier = disappointed_opinion opinion = -20 } } } } stress_impact = { impatient = miniscule_stress_impact_loss deceitful = miniscule_stress_impact_loss patient = miniscule_stress_impact_gain honest = minor_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_boldness = 1 } } } #...how about a topic change? option = { name = ep3_camp_party.1025.c flavor = ep3_camp_party.1025.c.tt random = { chance = 50 add_intrigue_lifestyle_xp = medium_lifestyle_xp } stress_impact = { deceitful = miniscule_stress_impact_loss honest = miniscule_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_energy = 1 } } } } # Relieve stress - intent event ep3_camp_party.1030 = { type = activity_event title = ep3_camp_party.1030.t desc = ep3_camp_party.1030.desc theme = landless_adventurer left_portrait = { character = root animation = drink } right_portrait = { character = scope:reveler animation = lantern } cooldown = { months = 3 } trigger = { #Standard checks has_ep3_dlc_trigger = yes has_government = landless_adventurer_government has_activity_intent = reduce_stress_intent involved_activity = { any_attending_character = { count > 1 this != root is_ai = yes is_adult = yes } } } immediate = { location = { save_scope_as = location } involved_activity = { save_scope_as = activity random_attending_character = { limit = { this != root is_ai = yes is_adult = yes } save_scope_as = reveler } } } # Crack out all the reserves lads! option = { name = ep3_camp_party.1030.a trigger = { involved_activity = { OR = { has_activity_option = { category = camp_party_option_food option = camp_party_food_simple } has_activity_option = { category = camp_party_option_food option = camp_party_food_lavish } } } } add_internal_flag = special if = { limit = { has_trait = lifestyle_reveler } add_trait_xp = { trait = lifestyle_reveler value = { 10 25 } } } else = { add_trait = lifestyle_reveler add_trait_xp = { trait = lifestyle_reveler value = { 10 25 } } } involved_activity = { every_attending_character = { custom = custom.every_attending_character limit = { this != root } add_opinion = { target = root modifier = pleased_opinion opinion = 20 } add_stress = medium_stress_loss } } domicile = { change_provisions = medium_provisions_loss } involved_activity = { activity_special_type_progression_variable = { NUM = 15 } } custom_tooltip = camp_party_tt_positive_medium stress_impact = { base = major_stress_impact_loss temperate = miniscule_stress_impact_gain gluttonous = miniscule_stress_impact_loss } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = 1 ai_greed = -1 } } } # Let's live a little - downgraded version of option A option = { name = ep3_camp_party.1030.b involved_activity = { every_attending_character = { custom = custom.every_attending_character limit = { this != root } add_opinion = { target = root modifier = pleased_opinion opinion = 5 } add_stress = miniscule_stress_loss } } domicile = { change_provisions = minor_provisions_loss } random = { chance = 30 send_interface_toast = { title = ep3_camp_party.1030.b.success left_icon = root add_character_modifier = { modifier = ep3_life_of_the_party years = 10 } } } scope:activity = { activity_special_type_progression_variable = { NUM = 10 } } custom_tooltip = camp_party_tt_positive_tiny stress_impact = { base = minor_stress_impact_loss gluttonous = miniscule_stress_impact_gain temperate = miniscule_stress_impact_loss } ai_chance = { base = 100 ai_value_modifier = { ai_greed = -1 } } } #We should be sensible option = { name = ep3_camp_party.1030.c add_character_modifier = { modifier = ep3_sensible_provisions years = 10 } involved_activity = { every_attending_character = { custom = custom.every_attending_character limit = { this != root } add_opinion = { target = root modifier = disappointed_opinion opinion = -5 } } } stress_impact = { temperate = miniscule_stress_impact_loss deceitful = miniscule_stress_impact_loss honest = miniscule_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_greed = 1 } } } } # Fell a tree for more firewood ep3_camp_party.1035 = { type = activity_event title = ep3_camp_party.1035.t desc = ep3_camp_party.1035.desc theme = landless_adventurer override_background = { reference = ep3_campfire } left_portrait = { character = root animation = thinking } right_portrait = { character = scope:treefeller animation = aggressive_axe } cooldown = { months = 3 } trigger = { #Standard checks has_ep3_dlc_trigger = yes has_government = landless_adventurer_government location = { NOR = { terrain = desert terrain = desert_mountains terrain = mountains } } } immediate = { location = { save_scope_as = location } involved_activity = { save_scope_as = activity random_attending_character = { limit = { this != root is_ai = yes is_adult = yes } save_scope_as = treefeller } } } # Burn some old barrels and crates option = { name = ep3_camp_party.1035.a trigger = { involved_activity = { OR = { has_activity_option = { category = camp_party_option_food option = camp_party_food_simple } has_activity_option = { category = camp_party_option_food option = camp_party_food_lavish } } } } add_internal_flag = special if = { limit = { NOT = { has_trait = shrewd } } random = { chance = 25 send_interface_toast = { title = ep3_camp_party.1035.a.success left_icon = root add_trait = shrewd } } } else = { add_stewardship_lifestyle_perk_points = 1 } involved_activity = { every_attending_character = { custom = custom.every_attending_character add_character_modifier = { modifier = ep3_warm_and_content years = 3 } } } domicile = { change_provisions = medium_provisions_loss } stress_impact = { greedy = miniscule_stress_impact_gain generous = miniscule_stress_impact_loss compassionate = miniscule_stress_impact_loss callous = miniscule_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_compassion = 1 ai_greed = -1 } } } # Fell a tree option = { name = ep3_camp_party.1035.b duel = { skill = prowess value = medium_skill_rating # Success: Your story is believed 50 = { desc = ep3_camp_party.1035.b.success show_chance = yes compare_modifier = { value = scope:duel_value multiplier = 3.5 min = -49 } send_interface_toast = { title = ep3_camp_party.1035.b.success left_icon = root right_icon = scope:treefeller add_prestige = medium_prestige_gain involved_activity = { every_attending_character = { custom = custom.every_attending_character add_character_modifier = { modifier = ep3_warm_and_content years = 1 } } } domicile = { change_provisions = miniscule_provisions_gain } } } # Failure 50 = { desc = ep3_camp_party.1035.b.failure show_chance = yes compare_modifier = { value = scope:duel_value multiplier = -3.5 min = -49 } send_interface_toast = { title = ep3_camp_party.1035.b.failure left_icon = root right_icon = scope:treefeller add_prestige = minor_prestige_loss } } # Crit Failure 10 = { desc = ep3_camp_party.1035.b.critfailure show_chance = yes compare_modifier = { value = scope:duel_value multiplier = -3.5 min = -49 } send_interface_toast = { title = ep3_camp_party.1035.b.critfailure left_icon = root right_icon = scope:treefeller add_prestige = medium_prestige_loss increase_wounds_no_death_effect = { REASON = accident } } } } stress_impact = { brave = minor_stress_impact_loss craven = minor_stress_impact_gain paranoid = miniscule_stress_impact_gain trusting = miniscule_stress_impact_loss } ai_chance = { base = 100 ai_value_modifier = { ai_greed = 1 } } } # Scrabble around in the brush for some twigs option = { name = ep3_camp_party.1035.c domicile = { change_provisions = microscopic_provisions_gain } reverse_add_opinion = { target = scope:treefeller modifier = disappointed_opinion opinion = -20 } stress_impact = { temperate = miniscule_stress_impact_loss deceitful = miniscule_stress_impact_loss honest = miniscule_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_greed = 1 } } } } # Encounter a wandering merchant ep3_camp_party.1040 = { type = activity_event title = ep3_camp_party.1040.t desc = ep3_camp_party.1040.desc theme = landless_adventurer override_background = { reference = ep3_campfire } left_portrait = { character = root animation = thinking } right_portrait = { character = scope:merchant animation = scheme } artifact = { target = scope:big_artifact position = lower_left_portrait } artifact = { target = scope:small_artifact position = lower_center_portrait } cooldown = { months = 3 } trigger = { #Standard checks has_ep3_dlc_trigger = yes has_government = landless_adventurer_government drinks_alcohol_trigger = yes } immediate = { location = { save_scope_as = location } if = { limit = { any_pool_character = { province = root.location is_physically_able_ai_adult = yes has_no_particular_noble_roots_trigger = yes } } random_pool_character = { province = root.location limit = { is_physically_able_ai_adult = yes has_no_particular_noble_roots_trigger = yes } save_scope_as = merchant } } else = { create_character = { template = merchant_template culture = location.culture faith = location.faith location = root.location save_scope_as = merchant } } scope:merchant = { hidden_effect = { random_list = { #Generate a big artifact 10 = { random_dummy_gender_effect = yes create_artifact_weapon_effect = { OWNER = scope:merchant CREATOR = scope:dummy_gender SET_WEAPON_TYPE = flag:artifact_weapon_type_sword } hidden_effect = { scope:newly_created_artifact ?= { save_scope_as = big_artifact add_artifact_modifier = artifact_negate_prowess_penalty_add_3_modifier set_artifact_rarity = famed } } } 10 = { random_dummy_gender_effect = yes create_artifact_regalia_effect = { OWNER = scope:merchant SMITH = scope:dummy_gender } hidden_effect = { scope:newly_created_artifact ?= { save_scope_as = big_artifact add_artifact_modifier = artifact_monthly_prestige_add_3_modifier set_artifact_rarity = famed } } } 2 = { #Chance of it being amazing random_dummy_gender_effect = yes create_artifact_armor_effect = { OWNER = scope:merchant CREATOR = scope:dummy_gender SET_ARMOR_TYPE = flag:armor_type_scale } hidden_effect = { scope:newly_created_artifact ?= { save_scope_as = big_artifact add_artifact_modifier = artifact_prowess_5_modifier add_artifact_modifier = artifact_knight_effectiveness_5_modifier add_artifact_modifier = artifact_hard_casualty_modifier_5_modifier add_artifact_modifier = artifact_courtier_and_guest_opinion_5_modifier set_artifact_rarity = illustrious set_artifact_name = resplendent_armour_name set_artifact_description = resplendent_armour_desc } } } } random_list = { 10 = { random_dummy_gender_effect = yes create_artifact_brooch_effect = { OWNER = scope:owner SMITH = scope:dummy_gender } scope:newly_created_artifact ?= { save_scope_as = small_artifact } } 10 = { random_dummy_gender_effect = yes create_artifact_book_effect = { OWNER = scope:owner CREATOR = scope:dummy_gender SET_SUBJECT = flag:no SET_TOPIC = flag:no } scope:newly_created_artifact ?= { save_scope_as = small_artifact } } } } } } # Buy a big shiny thing option = { name = ep3_camp_party.1040.a pay_short_term_gold = { target = scope:merchant gold = major_gold_value } scope:big_artifact = { set_owner = root } involved_activity = { activity_special_type_progression_variable = { NUM = 15 } } custom_tooltip = camp_party_tt_positive_medium stress_impact = { greedy = minor_stress_impact_gain generous = minor_stress_impact_loss temperate = miniscule_stress_impact_gain profligate = medium_stress_impact_loss } ai_chance = { base = 100 ai_value_modifier = { ai_greed = -1 } } } # Buy a small item option = { name = ep3_camp_party.1040.b pay_short_term_gold = { target = scope:merchant gold = tiny_gold_value } scope:small_artifact = { set_owner = root } scope:activity = { activity_special_type_progression_variable = { NUM = 10 } } custom_tooltip = camp_party_tt_positive_tiny stress_impact = { greedy = miniscule_stress_impact_gain generous = miniscule_stress_impact_loss } ai_chance = { base = 100 ai_value_modifier = { ai_greed = -0.5 } } } # Tell them to sod off option = { name = ep3_camp_party.1040.c add_character_modifier = { modifier = ep3_responsible_with_money years = 10 } reverse_add_opinion = { target = scope:merchant modifier = disappointed_opinion opinion = -20 } stress_impact = { temperate = miniscule_stress_impact_loss greedy = minor_stress_impact_loss generous = minor_stress_impact_gain profligate = minor_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_greed = 1 } } } } ################################ # Events ################################ # ep3_camp_party.2000 - Choose which same-trait follower to chat with # scripted_trigger 2000_adult_ai_follower_trigger = { this != root is_ai = yes is_adult = yes } scripted_trigger 2000_suitable_follower_for_conversation_trigger = { 2000_adult_ai_follower_trigger = yes NOR = { has_relation_rival = root has_relation_best_friend = root } } scripted_trigger 2000_has_same_personality_trait_as_root_trigger = { has_trait_category = personality root = { has_trait = prev } #The aforementioned trait } #Choose which same-trait follower to chat with ep3_camp_party.2000 = { type = activity_event title = ep3_camp_party.2000.t desc = ep3_camp_party.2000.desc theme = landless_adventurer override_background = { reference = ep3_campfire } left_portrait = { character = root animation = thinking } center_portrait = { character = scope:first_follower animation = drink } right_portrait = { character = scope:second_follower animation = happiness } cooldown = { months = 3 } trigger = { #Standard checks has_ep3_dlc_trigger = yes has_government = landless_adventurer_government involved_activity = { #At least 3 peeps any_attending_character = { count >= 3 } #First person with a trait in common with ROOT any_attending_character = { 2000_suitable_follower_for_conversation_trigger = yes any_character_trait = { 2000_has_same_personality_trait_as_root_trigger = yes save_temporary_scope_as = trait_check } save_temporary_scope_as = first_follower_check } #Second person with a trait in common with ROOT any_attending_character = { 2000_suitable_follower_for_conversation_trigger = yes this != scope:first_follower_check #NOT the same trait as the first person custom_tooltip = { #This is an error suppression, known by Code already text = ep3_camp_party.2000.t any_character_trait = { 2000_has_same_personality_trait_as_root_trigger = yes this != scope:trait_check #the trait } } save_temporary_scope_as = second_follower_check } #Random joe for loc in case we got the deceitful trait any_attending_character = { 2000_adult_ai_follower_trigger = yes NOR = { this = scope:first_follower_check this = scope:second_follower_check } } } } immediate = { involved_activity = { #First person with a trait in common with ROOT random_attending_character = { limit = { 2000_suitable_follower_for_conversation_trigger = yes any_character_trait = { 2000_has_same_personality_trait_as_root_trigger = yes } } save_scope_as = first_follower random_character_trait = { limit = { 2000_has_same_personality_trait_as_root_trigger = yes } root = { set_variable = { name = first_follower_trait_var value = prev #the trait } } } } #Second person with a trait in common with ROOT random_attending_character = { limit = { 2000_suitable_follower_for_conversation_trigger = yes #NOT the same trait as the first person any_character_trait = { 2000_has_same_personality_trait_as_root_trigger = yes NOT = { var:first_follower_trait_var ?= prev } #the trait } this != scope:first_follower } save_scope_as = second_follower random_character_trait = { limit = { 2000_has_same_personality_trait_as_root_trigger = yes NOT = { var:first_follower_trait_var ?= prev } #the trait } root = { set_variable = { name = second_follower_trait_var value = prev #the trait } } } } #Random joe for loc in case we got the deceitful trait random_attending_character = { limit = { 2000_adult_ai_follower_trigger = yes NOR = { this = scope:first_follower this = scope:second_follower } } save_scope_as = other_follower } } #For deceitful loc random_dummy_gender_effect = yes } #Focus on first follower option = { name = ep3_camp_party.2000.a reverse_add_opinion = { target = scope:first_follower modifier = camp_party_listened_to_me_opinion opinion = 20 } random = { chance = 40 progress_towards_friend_effect = { REASON = friend_bonded_over_personalities CHARACTER = scope:first_follower OPINION = 20 } } ai_chance = { base = 100 } } #Focus on second follower option = { name = ep3_camp_party.2000.b reverse_add_opinion = { target = scope:second_follower modifier = camp_party_listened_to_me_opinion opinion = 20 } random = { chance = 40 progress_towards_friend_effect = { REASON = friend_bonded_over_personalities CHARACTER = scope:second_follower OPINION = 20 } } ai_chance = { base = 100 } } #Triggered option: Let's debate! option = { name = ep3_camp_party.2000.c trigger = { domicile ?= { has_domicile_building = camp_fire_nightly_debates } } show_as_unavailable = { always = yes } reason = has_building_camp_fire_nightly_debates reverse_add_opinion = { target = scope:first_follower modifier = camp_party_listened_to_me_opinion opinion = 20 } reverse_add_opinion = { target = scope:second_follower modifier = camp_party_listened_to_me_opinion opinion = 20 } random = { chance = 20 progress_towards_friend_effect = { REASON = friend_bonded_over_personalities CHARACTER = scope:second_follower OPINION = 20 } } random = { chance = 20 progress_towards_friend_effect = { REASON = friend_bonded_over_personalities CHARACTER = scope:second_follower OPINION = 20 } } random = { chance = 20 add_learning_skill = 1 } ai_chance = { base = 100 } } #Triggered option: celebrate our companionship! option = { name = ep3_camp_party.2000.d trigger = { custom_tooltip = { text = ep3_camp_party.2000.d.tt domicile ?= { has_domicile_building_or_higher = mess_tent_03 } } } show_as_unavailable = { always = yes } reason = has_building_mess_tent_03_or_higher reverse_add_opinion = { target = scope:first_follower modifier = camp_party_reveled_opinion opinion = 40 } reverse_add_opinion = { target = scope:second_follower modifier = camp_party_reveled_opinion opinion = 40 } if = { limit = { NOT = { has_trait = lifestyle_reveler } } add_trait = lifestyle_reveler } else_if = { limit = { has_trait = lifestyle_reveler NOT = { has_trait_xp = { trait = lifestyle_reveler value >= 100 #Max } } } add_trait_xp = { trait = lifestyle_reveler value = { integer_range = { min = medium_trait_xp max = major_trait_xp } } } } else_if = { limit = { has_lifestyle = diplomacy_lifestyle } add_diplomacy_lifestyle_xp = medium_lifestyle_xp } else = { add_prestige = medium_prestige_gain } stress_impact = { base = minor_stress_impact_loss gluttonous = minor_stress_impact_loss } involved_activity = { activity_special_type_progression_variable = { NUM = 15 } } custom_tooltip = camp_party_tt_positive_medium ai_chance = { base = 100 } } after = { remove_variable ?= first_follower_trait_var remove_variable ?= second_follower_trait_var } } ep3_camp_party.2100 = { type = activity_event title = ep3_camp_party.2100.t desc = { random_valid = { triggered_desc = { trigger = { scope:char_spawn_type = flag:porters } #porters - himbos desc = ep3_laamps.8200.desc_1 } triggered_desc = { trigger = { scope:char_spawn_type = flag:fools } #capering fools - fools desc = ep3_laamps.8200.desc_2 } triggered_desc = { trigger = { scope:char_spawn_type = flag:locals } #hangers on - local ethos people desc = ep3_laamps.8200.desc_3 } } } theme = laamp left_portrait = { character = root triggered_animation = { trigger = { scope:char_spawn_type = flag:porters } animation = admiration } triggered_animation = { trigger = { scope:char_spawn_type = flag:fools } animation = laugh } triggered_animation = { trigger = { scope:char_spawn_type = flag:locals } animation = personality_rational } } right_portrait = { character = scope:new_person triggered_animation = { trigger = { scope:char_spawn_type = flag:porters } animation = hero_flex } triggered_animation = { trigger = { scope:char_spawn_type = flag:fools } animation = dancing } triggered_animation = { trigger = { scope:char_spawn_type = flag:locals } animation = beg } triggered_outfit = { trigger = { scope:char_spawn_type = flag:porters } outfit_tags = { beggar_rags } } triggered_outfit = { trigger = { scope:char_spawn_type = flag:fools } outfit_tags = { jester_outfit } } } override_background = { reference = ep3_campfire } trigger = { has_ep3_dlc_trigger = yes has_government = landless_adventurer_government has_activity_intent = fireside_chat_intent } weight_multiplier = { base = 1 modifier = { add = 0.5 domicile ?= { has_domicile_parameter = camp_recruit_porters_events } } modifier = { add = 0.5 domicile ?= { has_domicile_parameter = camp_recruit_fool_events } } modifier = { add = 0.5 domicile ?= { has_domicile_parameter = camp_recruit_locals_events } } } immediate = { location = { save_scope_as = location } location.county = { save_scope_as = location_county } location.county.holder.top_liege = { save_scope_as = location_top_liege } random_list = { 1 = { save_scope_value_as = { name = char_spawn_type value = flag:locals } } 1 = { save_scope_value_as = { name = char_spawn_type value = flag:porters } } 1 = { save_scope_value_as = { name = char_spawn_type value = flag:fools } } } if = { limit = { scope:char_spawn_type = flag:porters } #create a porter himbo create_character = { location = scope:location age = { 18 28 } random_traits_list = { count = 1 education_martial_prowess_2 = {} education_martial_prowess_3 = {} } random_traits_list = { count = 1 brave = {} diligent = {} humble = {} } random_traits_list = { honest = {} gregarious = {} trusting = {} compassionate = {} generous = {} calm = {} } random_traits_list = { count = 1 lustful = {} chaste = {} wrathful = {} arrogant = {} impatient = {} patient = {} impatient = {} ambitious = {} cynical = {} zealous = {} stubborn = {} } random_traits = no martial = { min_template_low_skill max_template_low_skill } prowess = { min_template_high_skill max_template_high_skill } faith = location.faith culture = location.culture gender_female_chance = { add = 25 } save_scope_as = new_person } hidden_effect = { scope:new_person = { random_list = { 2 = { add_trait = intellect_bad_2 add_trait = physique_good_1 add_trait = strong } 2 = { add_trait = strong } 2 = { add_trait = strong add_trait = giant } 2 = { add_trait = intellect_bad_1 add_trait = giant } 1 = { add_trait = giant add_trait = physique_good_2 add_trait = strong } } } } } else_if = { limit = { scope:char_spawn_type = flag:fools } create_character = { template = poet_template culture = location.culture faith = location.faith location = root.location save_scope_as = new_person } hidden_effect = { scope:new_person = { add_trait = fecund add_trait = lifestyle_traveler add_trait = loyal } } } else_if = { limit = { scope:char_spawn_type = flag:locals } create_character = { template = merchant_template culture = location.culture faith = location.faith location = root.location save_scope_as = new_person } hidden_effect = { scope:new_person = { random_list = { 8 = { add_trait = shrewd } 1 = { add_trait = intellect_good_1 } 1 = { add_trait = intellect_good_2 } } } } } } option = { #welcome, weary traveler name = ep3_laamps.8200.a add_courtier = scope:new_person add_character_flag = { flag = had_ep3_laamps_8200 years = 4 } ai_chance = 100 stress_impact = { compassionate = minor_stress_loss } } option = { #please go away name = ep3_laamps.8200.b add_character_flag = { flag = had_ep3_laamps_8200 years = 2 } scope:new_person = { silent_disappearance_effect = yes } stress_impact = { paranoid = medium_stress_loss shy = medium_stress_loss } } }