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

1118 lines
23 KiB
Text

namespace = ep3_laamp_flavor
####
# ep3_laamp_flavor.0001-0010 - Carrion Eaters
# ep3_laamp_flavor.0020-0029 - Thief!
# ep3_laamp_flavor.0030-0039 - Pleasant Dream
# ep3_laamp_flavor.0040-0049 - Stray Prince
# ep3_laamp_flavor.0050-0059 - Necromancer
# ep3_laamp_flavor.0060-0069 - Dead Weight
####
##################################################
# Carrion Eaters
# by Daniel Tolman
##################################################
scripted_trigger ep3_laamp_flavor_0001_is_in_desert = {
location = {
OR = {
terrain = desert
terrain = desert_mountains
terrain = drylands
}
}
}
# Carrion Eaters
ep3_laamp_flavor.0001 = {
type = character_event
title = {
first_valid = {
# Carrion Eaters
triggered_desc = {
trigger = {
OR = {
ep3_laamp_flavor_0001_is_in_desert = yes
location = {
is_sea_province = yes
}
}
}
desc = ep3_laamp_flavor.0001.t1
}
# Eating Crow
desc = ep3_laamp_flavor.0001.t2
}
}
desc = {
first_valid = {
# Vultures in the desert
triggered_desc = {
trigger = {
ep3_laamp_flavor_0001_is_in_desert = yes
}
desc = ep3_laamp_flavor.0001.desc1
}
# Gulls in the ocean
triggered_desc = {
trigger = {
location = {
is_sea_province = yes
}
}
desc = ep3_laamp_flavor.0001.desc2
}
# Generic crows
desc = ep3_laamp_flavor.0001.desc
}
}
theme = travel_danger
left_portrait = {
character = root
animation = sick_stomach
}
right_portrait = {
character = scope:vulture_shooter
scripted_animation = bow_drawn
camera = camera_event_right_forward
}
cooldown = { years = 10 }
trigger = {
government_has_flag = government_is_landless_adventurer
faith = {
NOR = {
religion = religion:jainism_religion
religion = religion:islam_religion
}
}
domicile ?= { provisions <= provisions_low_value }
is_available_travelling_adult = yes
NOT = { has_trait = ill }
any_courtier = {
is_available_travelling_ai_adult = yes
}
}
immediate = {
hidden_effect = {
change_current_weight = -25
every_courtier = {
change_current_weight = -25
}
}
if = {
limit = { enable_debug_laamp_event_logging_toggle_trigger = yes }
increment_global_variable_effect = {
VAR = tally_tolman_0001
VAL = 1
}
}
ordered_courtier = {
limit = {
is_available_travelling_ai_adult = yes
is_valid_active_event_recurrer_trigger = { LIEGE = ROOT }
}
alternative_limit = {
is_available_travelling_ai_adult = yes
}
order_by = prowess
save_scope_as = vulture_shooter
}
}
option = { # good idea
name = {
trigger = {
NOT = { has_trait = cannibal }
}
text = ep3_laamp_flavor.0001.a
}
name = {
trigger = { has_trait = cannibal }
text = ep3_laamp_flavor.0001.a.cannibal
}
trait = cannibal
progress_towards_friend_effect = {
REASON = agreed_to_shoot_vultures
CHARACTER = scope:vulture_shooter
OPINION = default_friend_opinion
}
random_list = {
1 = { # get sick
desc = ep3_laamp_flavor.0001.sick
send_interface_toast = {
title = ep3_laamp_flavor.0001.a.sick
left_icon = root
right_icon = scope:vulture_shooter
contract_disease_effect = { DISEASE = ill TREATMENT_EVENT = yes }
scope:vulture_shooter = { contract_disease_effect = { DISEASE = ill TREATMENT_EVENT = yes } }
domicile = { change_provisions = miniscule_provisions_gain }
}
}
1 = { # don't get sick
desc = ep3_laamp_flavor.0001.notsick
send_interface_toast = {
title = ep3_laamp_flavor.0001.a.fine
left_icon = root
right_icon = scope:vulture_shooter
domicile = { change_provisions = minor_provisions_gain }
}
}
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_rationality = -0.5
}
}
}
option = { # this will make us sick
name = ep3_laamp_flavor.0001.c
trigger = {
learning >= decent_skill_rating
}
skill = learning
add_learning_lifestyle_xp = medium_lifestyle_experience
add_character_modifier = {
modifier = emaciated_modifier
years = 3
}
ai_chance = { # AI should generally pick this if able
base = 100
}
}
option = { # no that sounds gross
name = ep3_laamp_flavor.0001.b
progress_towards_rival_effect = {
REASON = no_vulture_eating
CHARACTER = scope:vulture_shooter
OPINION = default_rival_opinion
}
add_character_modifier = {
modifier = emaciated_modifier
years = 3
}
ai_chance = { # Even if not especially learned, this is gross and sensible people should have some innate resistance to this idea
base = 1
ai_value_modifier = {
ai_rationality = 2
}
}
}
}
##################################################
# Thief!
# by Daniel Tolman
##################################################
scripted_trigger ep3_laamp_flavor_0020_valid_courtier = {
NOR = {
has_trait = just
has_trait = honest
}
OR = {
has_trait = greedy
has_trait = deceitful
has_trait = arbitrary
has_trait = eccentric
has_trait = profligate
has_trait = fickle
has_trait = callous
has_trait_xp = {
trait = gallowsbait
track = thief
value >= 10
}
}
}
# Follower caught stealing in local town
ep3_laamp_flavor.0020 = {
type = character_event
title = ep3_laamp_flavor.0020.t
desc = {
desc = ep3_laamp_flavor.0020.intro
first_valid = {
triggered_desc = {
trigger = {
has_trait = gallowsbait
}
desc = ep3_laamp_flavor.0020.desc1
}
desc = ep3_laamp_flavor.0020.desc
}
}
theme = unfriendly
left_portrait = {
character = scope:thieving_follower
animation = fear
}
right_portrait = {
character = scope:town_leader
animation = disapproval
}
lower_right_portrait = {
character = scope:duelist
trigger = {
this != scope:town_leader
}
}
override_background = { reference = gallows }
cooldown = { years = 10 }
trigger = {
has_government = landless_adventurer_government
location = {
has_holding = yes
}
is_available_at_peace_adult = yes
any_courtier = {
is_available_ai_adult = yes
ep3_laamp_flavor_0020_valid_courtier = yes
}
location.barony.holder = {
is_available_at_peace_ai_adult = yes
}
}
immediate = {
if = {
limit = { enable_debug_laamp_event_logging_toggle_trigger = yes }
increment_global_variable_effect = {
VAR = tally_tolman_0020
VAL = 1
}
}
random_courtier = {
limit = {
is_valid_active_event_recurrer_trigger = { LIEGE = ROOT }
is_available_at_peace_adult = yes
ep3_laamp_flavor_0020_valid_courtier = yes
}
alternative_limit = {
is_available_ai_adult = yes
ep3_laamp_flavor_0020_valid_courtier = yes
}
save_scope_as = thieving_follower
}
location.barony.holder = {
save_scope_as = town_leader
if = {
limit = { exists = court_position:champion_court_position }
court_position:champion_court_position = { save_scope_as = duelist }
}
else = { save_scope_as = duelist }
}
location = {
save_scope_as = town_location
}
}
# Pay the fine
option = {
name = ep3_laamp_flavor.0020.a
if = {
limit = {
has_trait = gallowsbait
}
pay_short_term_gold = {
target = scope:town_leader
gold = major_gold_value
}
stress_impact = {
greedy = major_stress_impact_gain
}
}
else = {
pay_short_term_gold = {
target = scope:town_leader
gold = medium_gold_value
}
stress_impact = {
greedy = medium_stress_impact_gain
}
}
progress_towards_friend_effect = {
REASON = thievery_helper_opinion
CHARACTER = scope:thieving_follower
OPINION = default_friend_opinion
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_compassion = 1
ai_greed = -1
}
}
}
# Thief must accept physical punishment
option = {
name = ep3_laamp_flavor.0020.b
if = {
limit = {
has_trait = gallowsbait
}
scope:thieving_follower = {
apply_maimed_trait_and_modifier_effect = yes
}
}
else = {
scope:thieving_follower = {
add_trait = wounded_1
}
}
progress_towards_rival_effect = {
REASON = thievery_rivalry_opinion
CHARACTER = scope:thieving_follower
OPINION = default_rival_opinion
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_compassion = -1
}
}
}
# Plead with town_leader
option = {
name = ep3_laamp_flavor.0020.c
trigger = {
scope:town_leader = {
opinion = {
target = root
value >= low_negative_opinion
}
}
}
if = {
limit = {
scope:town_leader = {
can_add_hook = {
target = root
type = indebted_hook
}
}
}
scope:town_leader = {
add_hook = {
target = root
type = indebted_hook
}
}
}
if = {
limit = {
has_trait = gallowsbait
}
add_prestige = major_prestige_loss
stress_impact = {
arrogant = medium_stress_impact_gain
ambitious = medium_stress_impact_gain
stubborn = medium_stress_impact_gain
callous = medium_stress_impact_gain
}
}
else = {
add_prestige = medium_prestige_loss
stress_impact = {
arrogant = minor_stress_impact_gain
ambitious = minor_stress_impact_gain
stubborn = minor_stress_impact_gain
callous = medium_stress_impact_gain
}
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_honor = -1
}
}
}
# Demand a trial by combat
option = {
name = ep3_laamp_flavor.0020.d
duel = {
skill = prowess
target = scope:duelist
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
min = 5
desc = ep3_laamp_flavor.0020.d.tt.success
send_interface_toast = {
title = ep3_laamp_flavor.0020.d.tt.success
left_icon = scope:thieving_follower
progress_towards_friend_effect = {
REASON = thievery_helper_opinion
CHARACTER = scope:thieving_follower
OPINION = default_friend_opinion
}
}
}
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
min = 5
desc = ep3_laamp_flavor.0020.d.tt.fail
send_interface_toast = {
title = ep3_laamp_flavor.0020.d.tt.fail
left_icon = scope:thieving_follower
add_prestige = medium_prestige_loss
scope:thieving_follower = {
scope:thieving_follower = {
apply_maimed_trait_and_modifier_effect = yes
}
}
}
}
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_honor = 2
}
}
}
}
##################################################
# Sweet Dreams
# by Daniel Tolman
##################################################
# Sweet Dreams
ep3_laamp_flavor.0030 = {
type = character_event
title = ep3_laamp_flavor.0030.t
desc = ep3_laamp_flavor.0030.desc
theme = court
left_portrait = {
character = scope:dream_friend
animation = toast_goblet
}
right_portrait = {
character = scope:dream_rival
animation = paranoia
outfit_tags = { beggar_rags }
}
override_background = { reference = feast }
cooldown = { years = 10 }
trigger = {
has_government = landless_adventurer_government
is_adult = yes
is_available_allow_travelling = yes
any_relation = {
type = friend
}
any_relation = {
type = rival
}
}
immediate = {
if = {
limit = { enable_debug_laamp_event_logging_toggle_trigger = yes }
increment_global_variable_effect = {
VAR = tally_tolman_0030
VAL = 1
}
}
random_relation = {
type = friend
save_scope_as = dream_friend
}
random_relation = {
type = rival
save_scope_as = dream_rival
}
}
# I will make my dream a reality
option = {
name = ep3_laamp_flavor.0030.a
# Stress gain but more lifestyle xp
add_character_modifier = {
modifier = dream_ambitious
years = 10
}
stress_impact = {
base = miniscule_stress_impact_loss
ambitious = minor_stress_impact_loss
impatient = minor_stress_impact_loss
arrogant = minor_stress_impact_loss
stubborn = minor_stress_impact_loss
vengeful = minor_stress_impact_loss
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_boldness = 1
}
}
}
# I long for the comforts of nobility
option = {
name = ep3_laamp_flavor.0030.b
# Stress but more diplomacy
add_character_modifier = {
modifier = dream_envious
years = 10
}
stress_impact = {
base = miniscule_stress_impact_loss
lifestyle_reveler = minor_stress_impact_loss
gluttonous = minor_stress_impact_loss
lazy = minor_stress_impact_loss
greedy = minor_stress_impact_loss
avaricious = minor_stress_impact_loss
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_sociability = 1
ai_honor = -0.5
}
}
}
# I'm glad I'm free of that life
option = {
name = ep3_laamp_flavor.0030.c
# less stress, you're happy with your life
add_character_modifier = {
modifier = dream_content
years = 10
}
stress_impact = {
base = miniscule_stress_impact_loss
temperate = minor_stress_impact_loss
calm = minor_stress_impact_loss
humble = minor_stress_impact_loss
content = minor_stress_impact_loss
paranoid = minor_stress_impact_loss
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_compassion = 1
}
}
}
}
##################################################
# Lost Lordling
# by Daniel Tolman
##################################################
# Lost Lordling
ep3_laamp_flavor.0040 = {
type = character_event
title = ep3_laamp_flavor.0040.t
desc = ep3_laamp_flavor.0040.desc
theme = landless_adventurer
override_background = { reference = wilderness }
left_portrait = {
character = root
animation = interested
}
right_portrait = {
character = scope:runaway_child
animation = crying
}
cooldown = { years = 20 }
trigger = {
has_government = landless_adventurer_government
is_available_at_peace_adult = yes
exists = location.barony.holder.capital_province
location = location.barony.holder.capital_province
location.barony.holder = {
save_temporary_scope_as = local_ruler_temp
highest_held_title_tier <= tier_county
is_available_at_peace_ai_adult = yes
any_courtier = {
is_child_of = scope:local_ruler_temp
NOT = { is_primary_heir_of = scope:local_ruler_temp }
age >= 12
age < 23
is_available_allow_travelling = yes
is_physically_able = yes
}
}
}
immediate = {
if = {
limit = { enable_debug_laamp_event_logging_toggle_trigger = yes }
increment_global_variable_effect = {
VAR = tally_tolman_0040
VAL = 1
}
}
location = {
save_scope_as = location_scope
}
location.barony.holder = {
save_scope_as = local_ruler
random_courtier = {
limit = {
is_child_of = scope:local_ruler
NOT = { is_primary_heir_of = scope:local_ruler }
age >= 12
age < 23
is_available_allow_travelling = yes
is_physically_able = yes
}
save_scope_as = runaway_child
}
}
}
# Join our merry band
option = {
name = ep3_laamp_flavor.0040.b
add_courtier = scope:runaway_child
ai_chance = {
base = 1
ai_value_modifier = {
ai_compassion = 0.5
ai_honor = -0.25
}
}
}
# Capture the child, they might be worth a good ransom
option = {
name = ep3_laamp_flavor.0040.c
imprison = {
target = scope:runaway_child
type = house_arrest
}
reverse_add_opinion = {
target = scope:local_ruler
modifier = stole_my_child_opinion
opinion = -50
}
laamp_rewards_apply_criminal_xp_effect = {
TRACK = marauder
XP_MIN = gallowsbait_xp_minor_gain
XP_MAX = gallowsbait_xp_minor_gain
}
stress_impact = {
callous = minor_stress_impact_loss
greedy = minor_stress_impact_loss
sadistic = minor_stress_impact_loss
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_honor = -1
ai_compassion = -1
ai_greed = 1
}
}
}
# We're taking you home
option = {
name = ep3_laamp_flavor.0040.a
reverse_add_opinion = {
target = scope:local_ruler
modifier = returned_my_child_opinion
opinion = 50
}
if = {
limit = {
has_trait = gallowsbait
has_trait_xp = {
trait = gallowsbait
track = marauder
value >= 1
}
}
laamp_rewards_apply_criminal_xp_effect = {
TRACK = marauder
XP_MIN = negative_small_lifestyle_random_xp_low
XP_MAX = negative_small_lifestyle_random_xp_low
}
}
add_prestige = minor_prestige_gain
ai_chance = {
base = 1
ai_value_modifier = {
ai_compassion = 0.25
ai_honor = 0.75
ai_greed = 0.25
}
}
}
}
##################################################
# Necromancer
# by Daniel Tolman
##################################################
# Necromancer
ep3_laamp_flavor.0050 = {
type = character_event
title = ep3_laamp_flavor.0050.t
desc = ep3_laamp_flavor.0050.desc
theme = landless_adventurer
right_portrait = {
character = root
animation = shock
}
left_portrait = {
character = scope:necromancer
animation = page_flipping
}
override_background = { reference = bp1_bonfire }
cooldown = { years = 30 }
trigger = {
location = { is_sea_province = no }
static_group_filter = {
group = ep3_laamp_flavor.0050
match = 0.5
}
has_government = landless_adventurer_government
is_adult = yes
is_available_allow_travelling = yes
faith = { religion_tag = christianity_religion }
location.faith = { religion_tag = christianity_religion }
NOR = {
has_trait = witch
any_secret = { type = secret_witch }
}
}
immediate = {
if = {
limit = { enable_debug_laamp_event_logging_toggle_trigger = yes }
increment_global_variable_effect = {
VAR = tally_tolman_0050
VAL = 1
}
}
location = {
save_scope_as = location_scope
}
create_character = {
template = priest_character_template
culture = root.location.culture
faith = root.location.faith
dynasty = none
location = root.location
gender = male
save_scope_as = necromancer
}
hidden_effect = {
scope:necromancer = {
add_trait = devoted
remove_character_flag = need_priest_outfit
}
}
if = {
limit = {
player_heir ?= {
is_courtier_of = root
is_child_of = root
}
}
player_heir = {
save_scope_as = player_heir_scope
}
}
}
# Your foul sorcery ends here
option = {
name = ep3_laamp_flavor.0050.a
add_piety = minor_piety_gain
duel = {
skill = prowess
target = scope:necromancer
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
min = 5
desc = ep3_laamp_flavor.0050.d.tt.success
send_interface_toast = {
title = ep3_laamp_flavor.0050.d.tt.success
left_icon = scope:necromancer
add_prestige = minor_prestige_gain
add_piety = minor_piety_gain
}
}
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
min = 5
desc = ep3_laamp_flavor.0050.d.tt.fail
send_interface_toast = {
title = ep3_laamp_flavor.0050.d.tt.fail
left_icon = scope:necromancer
add_trait = wounded_1
add_prestige = minor_prestige_loss
}
}
}
stress_impact = {
zealous = minor_stress_impact_loss
cynical = minor_stress_impact_gain
craven = medium_stress_impact_gain
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_zeal = 1
ai_rationality = -0.75
}
}
}
# Teach me magic
option = {
name = ep3_laamp_flavor.0050.b
add_character_modifier = {
modifier = learned_in_demonology
years = 10
}
stress_impact = {
zealous = medium_stress_impact_gain
cynical = minor_stress_impact_gain
craven = medium_stress_impact_gain
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_sociability = 0.25
ai_zeal = -1
ai_rationality = -0.5
}
}
}
# Teach my heir magic
option = {
name = ep3_laamp_flavor.0050.c
trigger = {
exists = scope:player_heir_scope
}
stress_impact = {
zealous = medium_stress_impact_gain
cynical = minor_stress_impact_gain
craven = medium_stress_impact_gain
}
scope:player_heir_scope = {
add_character_modifier = {
modifier = learned_in_demonology
years = 10
}
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_sociability = 0.25
ai_zeal = -1
ai_rationality = -0.5
}
}
}
# 3spooky5me
option = {
name = ep3_laamp_flavor.0050.d
stress_impact = {
craven = minor_stress_impact_loss
}
add_prestige = minor_prestige_loss
ai_chance = {
base = 1
ai_value_modifier = {
ai_boldness = -1
}
}
}
after = {
if = {
limit = {
is_ai = yes
}
scope:necromancer = {
silent_disappearance_effect = yes
}
}
}
}
##################################################
# Dead Weight
# by Daniel Tolman
##################################################
# Dead Weight
ep3_laamp_flavor.0060 = {
type = character_event
title = ep3_laamp_flavor.0060.t
desc = ep3_laamp_flavor.0060.desc
theme = travel_danger
right_portrait = {
character = scope:follower
animation = anger
}
left_portrait = {
character = scope:prisoner
animation = prisonhouse
}
cooldown = { years = 10 }
trigger = {
has_government = landless_adventurer_government
domicile ?= { provisions <= provisions_threshold_low_value }
is_available_travelling_adult = yes
any_courtier = { is_available_travelling_ai_adult = yes }
any_prisoner = {
age >= 6
is_ai = yes
}
}
immediate = {
hidden_effect = {
change_current_weight = -25
every_courtier = {
change_current_weight = -25
}
}
if = {
limit = { enable_debug_laamp_event_logging_toggle_trigger = yes }
increment_global_variable_effect = {
VAR = tally_tolman_0060
VAL = 1
}
}
random_courtier = {
# Get a recurring character if one exists that is suitably angry
limit = {
is_available_travelling_ai_adult = yes
is_valid_active_event_recurrer_trigger = { LIEGE = ROOT }
OR = {
has_trait = vengeful
has_trait = wrathful
}
}
# Otherwise, a random follower just snaps
alternative_limit = { is_available_travelling_ai_adult = yes }
save_scope_as = follower
}
random_prisoner = {
limit = {
age >= 6
is_ai = yes
}
save_scope_as = prisoner
}
}
# Execute the prisoner
option = {
name = ep3_laamp_flavor.0060.a
execute_prisoner_effect = {
VICTIM = scope:prisoner
EXECUTIONER = root
}
reverse_add_opinion = {
target = scope:follower
modifier = grateful_opinion
opinion = 25
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_vengefulness = 1
ai_compassion = -2
ai_honor = -2
}
}
}
# You don't have to go home but you can't stay here
option = {
name = ep3_laamp_flavor.0060.b
scope:prisoner = { release_from_prison = yes }
# you experience a loss of kidnapper street cred
if = {
limit = {
has_trait = gallowsbait
has_trait_xp = {
trait = gallowsbait
track = marauder
value >= 1
}
}
laamp_rewards_apply_criminal_xp_effect = {
TRACK = marauder
XP_MIN = negative_small_lifestyle_random_xp_low
XP_MAX = negative_small_lifestyle_random_xp_low
}
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_vengefulness = -0.5
ai_compassion = 1
}
}
}
# The prisoner is too valuable
option = {
name = ep3_laamp_flavor.0060.c
# your followers don't like giving the prisoner rations
add_character_modifier = {
modifier = burdensome_prisoner_modifier
years = 10
}
# follower is especially annoyed
reverse_add_opinion = {
modifier = unfriendly_opinion
target = scope:follower
opinion = -35
}
domicile = { change_provisions = minor_provisions_loss }
ai_chance = {
base = 1
ai_value_modifier = {
ai_greed = 1
}
}
}
}