N3OW/events/dlc/ep3/ep3_camp_party_events.txt
2026-01-06 14:25:21 +01:00

3727 lines
76 KiB
Text

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
}
}
}