N3OW_Western_eastern_europe/events/dlc/mpo/mpo_interactions_events.txt
2026-01-06 14:25:21 +01:00

1120 lines
25 KiB
Text

namespace = mpo_interactions_events
# # # OFFER CONFEDERATION # # #
#Handles effects of offer confederation and assigns events
mpo_interactions_events.0001 = {
hidden = yes
trigger = {
scope:actor = {
is_ruler = yes
is_landed = yes
}
scope:recipient = {
is_ruler = yes
is_landed = yes
}
}
immediate = {
#Confederation doesn't exist and actor is becoming liege
if = {
limit = {
scope:actor = {
is_confederation_member = no
}
}
scope:actor = {
#create culturally-named duchy title if you both have same culture
if = {
limit = {
culture = {
this = scope:recipient.culture
}
NOT = {
any_confederation = {
has_variable = confederation_culture
var:confederation_culture = scope:actor.culture
}
}
}
create_confederation = {
name = CONFEDERATION_CULTURE_NAME
}
scope:new_confederation = {
set_variable = {
name = confederation_culture
value = scope:actor.culture
}
}
}
#Duchy title fallback
else = {
#You two are in the same duchy, name it after that
if = {
limit = {
exists = scope:recipient.capital_county
capital_county.duchy = {
any_de_jure_county = {
this = scope:recipient.capital_county
}
}
}
capital_county = {
duchy = {
save_scope_as = capital_duchy
}
}
}
#You are a duke, name it after your duchy
else_if = {
limit = {
primary_title = {
tier = tier_duchy
any_de_jure_county = {
holder = scope:recipient
}
}
}
primary_title = {
save_scope_as = capital_duchy
}
}
#Name after your capital duchy
else = {
capital_county = {
duchy = {
save_scope_as = capital_duchy
}
}
}
create_confederation = {
name = CONFEDERATION_DUCHY_NAME
}
}
scope:recipient = {
save_scope_as = other_confederate
}
trigger_event = {
id = mpo_interactions_events.0002
days = 1
}
}
scope:new_confederation = {
add_confederation_member = scope:recipient
}
}
#Confederation already exists
else = {
scope:actor.confederation = {
add_confederation_member = scope:recipient
}
#letter event
scope:actor = {
trigger_event = {
id = mpo_interactions_events.0003
days = 1
}
}
}
#Vassal event
scope:actor = {
save_scope_as = other_confederate
}
scope:recipient = {
trigger_event = {
id = mpo_interactions_events.0002
days = 1
}
}
}
}
#Confederation event
mpo_interactions_events.0002 = {
type = character_event
theme = vassal
title = mpo_interactions_events.0002.t
desc = {
desc = mpo_interactions_events.0002.desc
first_valid = {
triggered_desc = {
trigger = {
exists = scope:new_confederation
}
desc = mpo_interactions_events.0002.desc_new
}
desc = mpo_interactions_events.0002.desc_joining
}
}
override_background = {
reference = bp1_bonfire
}
override_effect_2d = {
reference = smoke
}
left_portrait = {
character = root
animation = marshal_dagger
camera = camera_event_very_left
}
right_portrait = {
character = scope:other_confederate
animation = marshal_dagger
camera = camera_event_very_right
}
immediate = {
confederation = {
save_scope_as = confederation
}
if = {
limit = {
exists = scope:new_confederation
}
custom_tooltip = new_confederation_created_tt
}
else = {
custom_tooltip = joined_confederation_tt
}
custom_tooltip = confederation_defensive_wars_tt
custom_tooltip = unlock_leave_confederation_interaction_tt
show_as_tooltip = {
if = {
limit = {
government_has_flag = government_is_nomadic
}
add_character_modifier = {
modifier = mpo_confederation_member_modifier
years = 5
}
capital_county ?= {
change_county_fertility = major_county_fertility_level_gain
}
}
}
custom_tooltip = confederation_raiding_attacking_tt
if = {
limit = {
government_has_flag = government_is_nomadic
}
custom_tooltip = confederation_restrictions_warning_tt
}
else = {
custom_tooltip = confederation_restrictions_tribe_warning_tt
}
if = {
limit = {
government_has_flag = government_is_nomadic
}
custom_tooltip = confederation_migrating_leaving_warning_tt
}
}
#Accept
option = {
name = mpo_interactions_events.0002.a
}
}
#Confederation acceptance letter event
mpo_interactions_events.0003 = {
type = letter_event
sender = scope:recipient
opening = {
desc = mpo_interactions_events.0003.opening
}
desc = mpo_interactions_events.0003.desc
immediate = {
confederation = {
save_scope_as = confederation
}
custom_tooltip = recipient_joined_confederation_tt
}
#Accept
option = {
name = mpo_interactions_events.0003.a
}
}
#Confderation rejection letter event
mpo_interactions_events.0004 = {
type = letter_event
sender = scope:recipient
opening = {
desc = mpo_interactions_events.0004.opening
}
desc = {
desc = mpo_interactions_events.0004.desc
first_valid = {
triggered_desc = {
trigger = {
exists = scope:asking_to_join
}
desc = mpo_interactions_events.0004.desc_join
}
desc = mpo_interactions_events.0004.desc_offer
}
}
#Accept
option = {
name = mpo_interactions_events.0004.a
}
}
# # # TEACH COMMANDER TRAITS # # #
# Ward's Martial Drill - Success Event
mpo_interactions_events.0101 = {
type = character_event
title = mpo_interactions_events.0101.t
desc = {
desc = mpo_interactions_events.0101.desc_intro
first_valid = {
triggered_desc = {
trigger = { scope:target_trait = trait:logistician }
desc = mpo_interactions_events.0101.desc_logistician
}
triggered_desc = {
trigger = { scope:target_trait = trait:military_engineer }
desc = mpo_interactions_events.0101.desc_military_engineer
}
triggered_desc = {
trigger = { scope:target_trait = trait:aggressive_attacker }
desc = mpo_interactions_events.0101.desc_aggressive_attacker
}
triggered_desc = {
trigger = { scope:target_trait = trait:unyielding_defender }
desc = mpo_interactions_events.0101.desc_unyielding_defender
}
triggered_desc = {
trigger = { scope:target_trait = trait:forder }
desc = mpo_interactions_events.0101.desc_forder
}
triggered_desc = {
trigger = { scope:target_trait = trait:flexible_leader }
desc = mpo_interactions_events.0101.desc_flexible_leader
}
triggered_desc = {
trigger = { scope:target_trait = trait:desert_warrior }
desc = mpo_interactions_events.0101.desc_desert_warrior
}
triggered_desc = {
trigger = { scope:target_trait = trait:jungle_stalker }
desc = mpo_interactions_events.0101.desc_jungle_stalker
}
triggered_desc = {
trigger = { scope:target_trait = trait:reaver }
desc = mpo_interactions_events.0101.desc_reaver
}
triggered_desc = {
trigger = { scope:target_trait = trait:reckless }
desc = mpo_interactions_events.0101.desc_reckless
}
triggered_desc = {
trigger = { scope:target_trait = trait:holy_warrior }
desc = mpo_interactions_events.0101.desc_holy_warrior
}
triggered_desc = {
trigger = { scope:target_trait = trait:open_terrain_expert }
desc = mpo_interactions_events.0101.desc_open_terrain_expert
}
triggered_desc = {
trigger = { scope:target_trait = trait:rough_terrain_expert}
desc = mpo_interactions_events.0101.desc_rough_terrain_expert
}
triggered_desc = {
trigger = { scope:target_trait = trait:forest_fighter }
desc = mpo_interactions_events.0101.desc_forest_fighter
}
triggered_desc = {
trigger = { scope:target_trait = trait:cautious_leader }
desc = mpo_interactions_events.0101.desc_cautious_leader
}
triggered_desc = {
trigger = { scope:target_trait = trait:organizer }
desc = mpo_interactions_events.0101.desc_organizer
}
triggered_desc = {
trigger = { scope:target_trait = trait:winter_soldier }
desc = mpo_interactions_events.0101.desc_winter_soldier
}
}
}
theme = martial
override_background = {
trigger = { scope:target_trait = trait:open_terrain_expert }
reference = wilderness_steppe
}
override_background = {
trigger = { scope:target_trait = trait:rough_terrain_expert }
reference = wilderness_mountains
}
override_background = {
trigger = { scope:target_trait = trait:jungle_stalker }
reference = wilderness_jungle
}
override_background = {
trigger = { scope:target_trait = trait:winter_soldier }
reference = ep2_hunt_snowy_forest
}
override_background = {
trigger = { scope:target_trait = trait:desert_warrior }
reference = wilderness_desert
}
override_background = {
trigger = { scope:target_trait = trait:forest_fighter }
reference = wilderness_forest
}
override_background = {
trigger = {
OR = {
scope:target_trait = trait:reckless
scope:target_trait = trait:forder
}
}
reference = ep2_travel_bridge
}
override_background = {
reference = army_camp
}
widget = {
is_shown = {
location = { has_winter_trigger = yes }
scope:target_trait = trait:winter_soldier
}
gui = "event_window_widget_vfx_snow"
container = "foreground_shader_vfx_container"
}
left_portrait = {
character = root
animation = celebrate_wooden_sword
}
right_portrait = {
character = scope:recipient
animation = wooden_sword_coup_degrace
}
trigger = {
exists = scope:target_trait
}
immediate = {
}
option = {
name = mpo_interactions_events.0101.a
flavor = mpo_interactions_events.0101.a.flavor
add_opinion = {
target = scope:recipient
modifier = pleased_opinion
opinion = 20
}
scope:recipient = {
add_trait = scope:target_trait
add_opinion = {
target = root
modifier = admiration_opinion
opinion = 20
}
}
if = {
limit = {
scope:recipient = {
any_parent = {
NOT = { this = root }
is_ai = no
}
}
}
scope:recipient = {
every_parent = {
limit = {
NOT = { this = root }
is_ai = no
}
send_interface_message = {
type = event_childhood_good_text
title = guardian_influenced_commander
desc = guardian_influenced_commander_desc
left_icon = scope:recipient
right_icon = scope:actor
}
}
}
}
stress_impact = {
base = minor_stress_impact_gain
}
}
}
# Ward's Martial Drill - Failure Event
mpo_interactions_events.0102 = {
type = character_event
title = mpo_interactions_events.0102.t
desc = {
desc = mpo_interactions_events.0102.desc_intro
first_valid = {
triggered_desc = {
trigger = { scope:target_trait = trait:logistician }
desc = mpo_interactions_events.0102.desc_logistician
}
triggered_desc = {
trigger = { scope:target_trait = trait:military_engineer }
desc = mpo_interactions_events.0102.desc_military_engineer
}
triggered_desc = {
trigger = { scope:target_trait = trait:aggressive_attacker }
desc = mpo_interactions_events.0102.desc_aggressive_attacker
}
triggered_desc = {
trigger = { scope:target_trait = trait:unyielding_defender }
desc = mpo_interactions_events.0102.desc_unyielding_defender
}
triggered_desc = {
trigger = { scope:target_trait = trait:forder }
desc = mpo_interactions_events.0102.desc_forder
}
triggered_desc = {
trigger = { scope:target_trait = trait:flexible_leader }
desc = mpo_interactions_events.0102.desc_flexible_leader
}
triggered_desc = {
trigger = { scope:target_trait = trait:desert_warrior }
desc = mpo_interactions_events.0102.desc_desert_warrior
}
triggered_desc = {
trigger = { scope:target_trait = trait:jungle_stalker }
desc = mpo_interactions_events.0102.desc_jungle_stalker
}
triggered_desc = {
trigger = { scope:target_trait = trait:reaver }
desc = mpo_interactions_events.0102.desc_reaver
}
triggered_desc = {
trigger = { scope:target_trait = trait:reckless }
desc = mpo_interactions_events.0102.desc_reckless
}
triggered_desc = {
trigger = { scope:target_trait = trait:holy_warrior }
desc = mpo_interactions_events.0102.desc_holy_warrior
}
triggered_desc = {
trigger = { scope:target_trait = trait:open_terrain_expert }
desc = mpo_interactions_events.0102.desc_open_terrain_expert
}
triggered_desc = {
trigger = { scope:target_trait = trait:rough_terrain_expert}
desc = mpo_interactions_events.0102.desc_rough_terrain_expert
}
triggered_desc = {
trigger = { scope:target_trait = trait:forest_fighter }
desc = mpo_interactions_events.0102.desc_forest_fighter
}
triggered_desc = {
trigger = { scope:target_trait = trait:cautious_leader }
desc = mpo_interactions_events.0102.desc_cautious_leader
}
triggered_desc = {
trigger = { scope:target_trait = trait:organizer }
desc = mpo_interactions_events.0102.desc_organizer
}
triggered_desc = {
trigger = { scope:target_trait = trait:winter_soldier }
desc = mpo_interactions_events.0102.desc_winter_soldier
}
}
}
theme = martial
override_background = {
trigger = { scope:target_trait = trait:open_terrain_expert }
reference = wilderness_steppe
}
override_background = {
trigger = { scope:target_trait = trait:rough_terrain_expert }
reference = wilderness_mountains
}
override_background = {
trigger = { scope:target_trait = trait:jungle_stalker }
reference = wilderness_jungle
}
override_background = {
trigger = { scope:target_trait = trait:winter_soldier }
reference = ep2_hunt_snowy_forest
}
override_background = {
trigger = { scope:target_trait = trait:desert_warrior }
reference = wilderness_desert
}
override_background = {
trigger = { scope:target_trait = trait:forest_fighter }
reference = wilderness_forest
}
override_background = {
trigger = { scope:target_trait = trait:reckless }
reference = ep2_travel_bridge
}
override_background = {
reference = army_camp
}
widget = {
is_shown = {
location = { has_winter_trigger = yes }
scope:target_trait = trait:winter_soldier
}
gui = "event_window_widget_vfx_snow"
container = "foreground_shader_vfx_container"
}
left_portrait = {
character = root
animation = menacing_wooden_sword
}
right_portrait = {
character = scope:recipient
animation = wooden_sword_yield_start
}
option = {
name = mpo_interactions_events.0102.a
flavor = mpo_interactions_events.0102.a.flavor
scope:recipient = {
add_opinion = {
target = root
modifier = confused_opinion
opinion = -20
}
}
add_opinion = {
target = scope:recipient
modifier = disappointed_opinion
opinion = -20
}
if = {
limit = {
scope:recipient = {
any_parent = {
NOT = { this = root }
is_ai = no
}
}
}
scope:recipient = {
every_parent = {
limit = {
NOT = { this = root }
is_ai = no
}
send_interface_message = {
type = event_childhood_bad_text
title = guardian_influenced_commander_fail
desc = guardian_influenced_commander_fail_desc
left_icon = scope:recipient
right_icon = scope:actor
}
}
}
}
stress_impact = {
base = minor_stress_impact_gain
}
}
#force it
option = {
name = mpo_interactions_events.0102.b
flavor = mpo_interactions_events.0102.b.flavor
add_dread = 5
add_prestige = medium_prestige_loss
scope:recipient = {
add_trait = scope:target_trait
add_opinion = {
target = root
modifier = confused_opinion
opinion = -40
}
add_stress = medium_stress_impact_gain
}
if = {
limit = {
scope:recipient = {
any_parent = {
NOT = { this = root }
is_ai = no
}
}
}
scope:recipient = {
every_parent = {
limit = {
NOT = { this = root }
is_ai = no
}
send_interface_message = {
type = event_childhood_good_text
title = guardian_influenced_commander
desc = guardian_influenced_commander_desc
left_icon = scope:recipient
right_icon = scope:actor
}
}
}
}
stress_impact = {
base = medium_stress_impact_gain
}
ai_chance = {
base = 0 #ai shouldn't inflate the trait count, so no access to forcing it through
}
}
}
#Blood brother acceptance event for actor
mpo_interactions_events.0006 = {
type = character_event
theme = alliance
title = mpo_interactions_events.0006.t
desc = {
desc = mpo_interactions_events.0006.desc_intro
first_valid = {
triggered_desc = {
trigger = {
culture = {
has_cultural_pillar = heritage_mongolic
}
}
desc = mpo_interactions_events.0006.desc_anda
}
desc = mpo_interactions_events.0006.desc_no_anda
}
desc = mpo_interactions_events.0006.desc
first_valid = {
triggered_desc = {
trigger = {
exists = scope:shared_foe
}
desc = mpo_interactions_events.0006.desc_shared_foe
}
triggered_desc = {
trigger = {
always = scope:memories_together
}
desc = mpo_interactions_events.0006.desc_memories
}
triggered_desc = {
trigger = {
always = scope:war_allies
}
desc = mpo_interactions_events.0006.desc_war_allies
}
desc = mpo_interactions_events.0006.desc_outro
}
}
override_background = {
trigger = {
government_has_flag = government_is_nomadic
}
reference = mpo_campfire_steppe
}
override_background = {
trigger = {
NOT = { government_has_flag = government_is_nomadic }
location = {
OR = {
terrain = desert
terrain = drylands
terrain = oasis
terrain = floodplains
terrain = desert_mountains
}
}
}
reference = ce1_legendary_oasis
}
override_background = {
trigger = {
#NOT = { government_has_flag = government_is_nomadic }
location = {
NOR = {
terrain = desert
terrain = drylands
terrain = oasis
terrain = floodplains
terrain = desert_mountains
}
NAND = {
location_has_harsh_winter_trigger = yes
OR = {
current_month >= 11
current_month <= 4
}
}
}
}
reference = ce1_legendary_spring
}
override_background = {
trigger = {
#NOT = { government_has_flag = government_is_nomadic }
location = {
NOR = {
terrain = desert
terrain = drylands
terrain = oasis
terrain = floodplains
terrain = desert_mountains
}
location_has_harsh_winter_trigger = yes
OR = {
current_month >= 11
current_month <= 4
}
}
}
reference = sitting_room
}
left_portrait = {
character = root
animation = hunting_knife_start
}
right_portrait = {
character = scope:blood_bro
animation = celebrate_dagger
}
lower_right_portrait = scope:shared_foe
#Show the right tooltip based on who this is
immediate = {
if = {
limit = {
this = scope:actor
}
mpo_blood_brother_tooltip_actor_effect = yes
}
else = {
mpo_blood_brother_tooltip_recipient_effect = yes
}
if = {
limit = {
scope:blood_bro = {
mpo_blood_brother_august_trigger = { OTHER_BROTHER = root }
}
}
scope:blood_bro = {
add_character_flag = august_blood_brother
}
}
if = {
limit = {
scope:blood_bro = {
mpo_blood_brother_warrior_trigger = { OTHER_BROTHER = root }
}
}
scope:blood_bro = {
add_character_flag = warrior_blood_brother
}
}
if = {
limit = {
scope:blood_bro = {
mpo_blood_brother_clever_trigger = yes
}
}
scope:blood_bro = {
add_character_flag = clever_blood_brother
}
}
if = {
limit = {
scope:blood_bro = {
mpo_blood_brother_loving_trigger = yes
}
}
scope:blood_bro = {
add_character_flag = loving_blood_brother
}
}
}
#My blood brother will help me destroy our common foe
option = {
trigger = {
exists = scope:shared_foe
}
name = mpo_interactions_events.0006.a
flavor = mpo_interactions_events.0006.a.flavor
add_internal_flag = special
add_character_modifier = blood_brother_foe_modifier
custom_tooltip = blood_brother_foe_modifier_cb_reduction
custom_tooltip = blood_brother_modifier_lasts_tt
set_variable = {
name = blood_brother_foe
value = scope:shared_foe
}
stress_impact = {
vengeful = miniscule_stress_impact_loss
sadistic = miniscule_stress_impact_loss
wrathful = miniscule_stress_impact_loss
compassionate = miniscule_stress_impact_gain
forgiving = miniscule_stress_impact_gain
content = miniscule_stress_impact_gain
}
ai_chance = {
base = 150
ai_value_modifier = {
ai_vengefulness = 1
ai_compassion = -1
}
modifier = {
add = -50
OR = {
has_trait = compassionate
has_trait = forgiving
has_trait = content
}
}
}
}
#My blood brother is higher-ranked and influential
option = {
trigger = {
scope:blood_bro = {
has_character_flag = august_blood_brother
}
}
name = mpo_interactions_events.0006.b
add_internal_flag = special
if = {
limit = {
government_has_flag = government_is_nomadic
}
add_character_modifier = {
modifier = blood_brother_august_nomadic_modifier
}
}
else = {
add_character_modifier = {
modifier = blood_brother_august_modifier
}
}
custom_tooltip = blood_brother_modifier_lasts_tt
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = 1
ai_energy = 1
}
}
}
#My blood brother is a powerful defender and dread warrior
option = {
trigger = {
scope:blood_bro = {
has_character_flag = warrior_blood_brother
}
}
name = mpo_interactions_events.0006.c
add_internal_flag = special
add_character_modifier = {
modifier = blood_brother_warrior_modifier
}
custom_tooltip = blood_brother_modifier_lasts_tt
ai_chance = {
base = 100
ai_value_modifier = {
ai_rationality = 1
ai_zeal = 1
}
}
}
#My blood brother is clever and intelligent
option = {
trigger = {
scope:blood_bro = {
has_character_flag = clever_blood_brother
}
}
name = mpo_interactions_events.0006.d
add_internal_flag = special
if = {
limit = {
government_has_flag = government_is_nomadic
}
add_character_modifier = {
modifier = blood_brother_clever_nomadic_modifier
}
}
else = {
add_character_modifier = {
modifier = blood_brother_clever_modifier
}
}
custom_tooltip = blood_brother_modifier_lasts_tt
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 1
ai_sociability = 1
}
}
}
#My blood brother is loving and beloved
option = {
trigger = {
scope:blood_bro = {
has_character_flag = loving_blood_brother
}
}
name = mpo_interactions_events.0006.e
add_internal_flag = special
add_character_modifier = {
modifier = blood_brother_loving_modifier
}
custom_tooltip = blood_brother_modifier_lasts_tt
ai_chance = {
base = 50
ai_value_modifier = {
ai_honor = 1
ai_energy = -1
}
}
}
#My blood brother is just some guy, but he cool
option = {
trigger = {
scope:blood_bro = {
NOR = {
has_character_flag = warrior_blood_brother
has_character_flag = august_blood_brother
has_character_flag = loving_blood_brother
has_character_flag = clever_blood_brother
}
}
}
name = mpo_interactions_events.0006.f
ai_chance = {
base = 100
ai_value_modifier = {
ai_energy = -1
ai_vengefulness = -1
}
}
}
after = {
scope:blood_bro = {
remove_character_flag = warrior_blood_brother
remove_character_flag = august_blood_brother
remove_character_flag = loving_blood_brother
remove_character_flag = clever_blood_brother
}
}
}
# Pledge Tribute - Accepted
mpo_interactions_events.0010 = {
type = letter_event
sender = scope:recipient
opening = {
desc = mpo_interactions_events.0010.opening
}
desc = mpo_interactions_events.0010.desc
#Nice
option = {
name = mpo_interactions_events.0010.a
break_subject_contract_and_establish_tributary_effect = { SUZERAIN = scope:recipient TRIBUTARY = scope:actor }
}
}
# Pledge Tribute - Denied
mpo_interactions_events.0011 = {
type = letter_event
sender = scope:recipient
opening = {
desc = mpo_interactions_events.0011.opening
}
desc = mpo_interactions_events.0011.desc
#Ay
option = {
name = mpo_interactions_events.0011.a
scope:recipient = {
add_opinion = {
target = scope:actor
modifier = annoyed_opinion
opinion = -15
}
}
}
}
# Herd Gift Sent
mpo_interactions_events.0020 = {
type = letter_event
opening = {
desc = char_interaction.0030.opening # Positive greeting
}
desc = mpo_interactions_events.0020.desc
sender = scope:actor
option = {
name = mpo_interactions_events.0020.a
show_as_tooltip = {
scope:actor = {
pay_herd = {
target = scope:recipient
value = domicile.herd_gift_value
}
}
scope:recipient = {
add_opinion = {
target = scope:actor
modifier = sent_herd_opinion
opinion = 20
}
}
}
}
}
#Confederation acceptance letter event
mpo_interactions_events.0030 = {
type = letter_event
sender = scope:recipient
opening = {
desc = mpo_interactions_events.0030.opening
}
desc = mpo_interactions_events.0030.desc
immediate = {
scope:recipient.confederation = {
save_scope_as = confederation
}
scope:confederation = {
add_confederation_member = scope:actor
}
}
#Accept
option = {
name = mpo_interactions_events.0030.a
}
}