N3OW/events/lifestyles/warfare_lifestyle/martial_chivalry_events.txt
2026-01-06 14:25:21 +01:00

4562 lines
94 KiB
Text

#Events for chivalry lifestyle focus
#CHIVALRY REGULAR EVENTS
# 0001 - A practice duel gone terribly wrong, Peter Vilberg
# 0002-0007 - Horse Riding Accident, by Petter Vilberg
# 0010 - Train with your signature weapon, by Linnéa Thimrén
# 1011-1012 - Find an old castle, by Linnéa Thimrén
# 1021 - Stress triggers bad battle practice
# 2010 - Practice duel (Prowess skill challenge), Petter Vilberg
# 3000-3005 - Vassal struggling to train new recruits, Sean Hughes
# 4000 - A Ride at Midnight, by Jason Cantalini
# 4000-4001/5000? - (FP2) A Bard For A King By Hugo Cortell
# 5000 - Rumors about you sleeping with your liege's spouse, Veronica Pazos
# 6000-6003 - You find an abandoned church, Veronica Pazos
#CHIVALRY SPECIAL EVENTS
# 1201-1204 - Mounted Warrior Practice, by Petter Vilberg
# 1601-1699 - Train a warhorse, by Linnéa Thimrén
############################
# CHIVALRY: REGULAR EVENTS #
############################
namespace = martial_chivalry
#A practice duel gone terribly wrong
#by Petter Vilberg
martial_chivalry.0001 = {
type = character_event
title = martial_chivalry.0001.t
desc = {
desc = martial_chivalry.0001.opening
first_valid = {
triggered_desc = {
trigger = {
prowess < scope:duel_opponent.prowess
}
desc = martial_chivalry.0001.hard_fight
}
triggered_desc = {
desc = martial_chivalry.0001.easy_fight
}
}
desc = martial_chivalry.0001.conclusion
}
theme = martial_chivalry_focus
override_background = {
reference = courtyard
}
left_portrait = {
character = root
animation = celebrate_wooden_sword
}
right_portrait = {
character = scope:duel_opponent
animation = wrestling_yield_start
}
trigger = {
NOT = { has_character_flag = had_duel_gone_wrong_event }
}
weight_multiplier = {
base = 1
modifier = { #More likely to occur if the character has a little Dread
add = 1
dread > 10
}
modifier = { #More likely if you are into duels
add = 2
has_trait = lifestyle_blademaster
}
upweight_for_focus_modifier = { FOCUS = martial_chivalry_focus }
}
immediate = {
add_character_flag = {
flag = had_duel_gone_wrong_event
days = 3650
}
hidden_effect = {
create_character = {
location = root.capital_province
save_scope_as = duel_opponent
trait = brave
trait = wrathful
culture = root.culture
faith = root.faith
gender_female_chance = root_soldier_female_chance
prowess = 15
}
}
}
option = { #This person could serve me well!
name = martial_chivalry.0001.a
add_courtier = scope:duel_opponent
reverse_add_opinion = {
modifier = duel_mutual_respect_opinion
target = scope:duel_opponent
}
add_opinion = {
modifier = duel_mutual_respect_opinion
target = scope:duel_opponent
}
stress_impact = {
sadistic = minor_stress_impact_gain
paranoid = major_stress_impact_gain
vengeful = medium_stress_impact_gain
wrathful = minor_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = 0.25
ai_vengefulness = -1
ai_rationality = 0.5
}
}
}
option = { #Lecture them on honor
name = martial_chivalry.0001.b
add_prestige = medium_prestige_gain
add_piety = medium_piety_gain
stress_impact = {
sadistic = medium_stress_impact_gain
vengeful = medium_stress_impact_gain
paranoid = minor_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = 2
ai_compassion = 1
ai_energy = -0.25
ai_boldness = -0.25
}
}
}
option = { #Kill them
name = martial_chivalry.0001.c
scope:duel_opponent = {
death = {
death_reason = death_duel
killer = root
}
}
add_dread = medium_dread_gain
stress_impact = {
forgiving = major_stress_impact_gain
compassionate = medium_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_vengefulness = 1
ai_rationality = -0.25
ai_zeal = 0.25
ai_energy = 0.25
}
}
}
after = {
hidden_effect = { add_focus_progress = standard_lifestyle_focus_progress }
scope:duel_opponent = {
silent_disappearance_ai_effect = yes
}
}
}
#Horse Riding Accident
#by Petter Vilberg
martial_chivalry.0002 = {
type = character_event
title = martial_chivalry.0002.t
desc = martial_chivalry.0002.desc
theme = martial_chivalry_focus
override_background = {
reference = courtyard
}
left_portrait = {
character = root
animation = jockey_gallop
camera = camera_event_horse_left
}
trigger = {
NOT = { has_character_flag = had_horseriding_accident_event }
}
weight_multiplier = {
base = 1
#Less and less likely the more hurt you already are.
modifier = {
add = -0.5
has_trait_rank = {
trait = wounded
rank = 1
}
}
modifier = {
add = -0.8
has_trait_rank = {
trait = wounded
rank = 1
}
}
modifier = {
add = -1
has_trait_rank = {
trait = wounded
rank = 3
}
}
modifier = { #You really shouldn't go riding if you're wounded, but if you insist, my lord.
add = 0.5
has_trait = wounded
has_trait = stubborn
}
upweight_for_focus_modifier = { FOCUS = martial_chivalry_focus }
}
immediate = {
add_character_flag = {
flag = had_horseriding_accident_event
days = 3650
}
}
option = { #Try to stay on the horse!
name = martial_chivalry.0002.a
duel = {
skill = prowess
value = high_skill_rating
20 = {
desc = martial_chivalry.0002.a_success
compare_modifier = {
value = scope:duel_value
multiplier = 1
min = -19
}
show_as_tooltip = {
add_martial_lifestyle_xp = medium_lifestyle_experience
add_character_modifier = {
modifier = improved_horse_mastery_modifier
days = 3650
}
}
hidden_effect = {
trigger_event = martial_chivalry.0003 #Gain an improved horse mastery modifier
}
}
20 = {
desc = martial_chivalry.0002.a_failure
compare_modifier = {
value = scope:duel_value
multiplier = -1
min = -19
}
show_as_tooltip = {
increase_wounds_effect = {
REASON = horse_riding_accident
}
}
hidden_effect = {
trigger_event = { #Things don't go well
on_action = horse_riding_accident_outcome
}
}
}
}
stress_impact = {
craven = minor_stress_impact_gain
lazy = minor_stress_impact_gain
}
ai_chance = {
base = 10
modifier = {
add = -50
has_trait_rank = {
trait = wounded
rank >= 2
}
}
ai_value_modifier = {
ai_boldness = 0.5
ai_energy = 0.5
}
}
}
option = { #Make for a safe - if humble - landing
name = martial_chivalry.0002.b
add_prestige = miniscule_prestige_loss
stress_impact = {
arrogant = minor_stress_impact_gain
brave = medium_stress_impact_gain
}
ai_chance = {
base = 50
}
}
}
#You successfully rein in the horse and stay atop!
martial_chivalry.0003 = {
type = character_event
title = martial_chivalry.0003.t
desc = martial_chivalry.0003.desc
theme = martial_chivalry_focus
override_background = {
reference = courtyard
}
left_portrait = {
character = root
animation = jockey_walk
camera = camera_event_horse_left
}
immediate = {
add_character_modifier = {
modifier = improved_horse_mastery_modifier
days = 3650
}
#Chance at starting the warhorse story?
hidden_effect = {
random = {
chance = 25
compare_modifier = {
value = prowess
multiplier = 2
}
save_scope_value_as = {
name = warhorse
value = yes
}
}
}
}
option = { #I made it!
name = martial_chivalry.0003.a
add_martial_lifestyle_xp = medium_lifestyle_experience
ai_chance = {
base = 50
}
}
option = { #I made it! Start warhorse story
name = martial_chivalry.0003.b
trigger = {
exists = scope:warhorse
NOR = {
has_character_flag = had_event_martial_chivalry_special_1601
has_character_flag = had_warhorse_story
}
}
add_martial_lifestyle_xp = medium_lifestyle_experience
start_warhorse_story_cycle_effect = yes
stress_impact = {
base = minor_stress_impact_gain
lazy = minor_stress_impact_gain
}
ai_chance = {
base = 50
}
}
}
#You fall to the ground, hurting yourself a little
martial_chivalry.0004 = {
type = character_event
title = martial_chivalry.0004.t
desc = martial_chivalry.0004.desc
theme = martial_chivalry_focus
override_background = {
reference = courtyard
}
left_portrait = {
character = scope:duel_opponent
animation = pain
}
trigger = {
NOT = {
has_trait_rank = {
trait = wounded
rank > 0
}
}
}
immediate = {
increase_wounds_effect = {
REASON = horse_riding_accident
}
}
option = { #Damn horse!
name = martial_chivalry.0004.a
}
}
#You fall to the ground, hurting yourself severely
martial_chivalry.0005 = {
type = character_event
title = martial_chivalry.0005.t
desc = martial_chivalry.0005.desc
theme = martial_chivalry_focus
override_background = {
reference = courtyard
}
left_portrait = {
character = scope:duel_opponent
animation = pain
}
trigger = {
has_trait_rank = {
trait = wounded
rank = 1
}
}
immediate = {
increase_wounds_effect = {
REASON = horse_riding_accident
}
}
option = { #Damn horse!
name = martial_chivalry.0005.a
}
}
#You fall to the ground, nearly killing yourself
martial_chivalry.0006 = {
type = character_event
title = martial_chivalry.0006.t
desc = martial_chivalry.0006.desc
theme = martial_chivalry_focus
override_background = {
reference = courtyard
}
left_portrait = {
character = scope:duel_opponent
animation = pain
}
trigger = {
has_trait_rank = {
trait = wounded
rank = 2
}
}
immediate = {
increase_wounds_effect = {
REASON = horse_riding_accident
}
}
option = { #Damn horse!
name = martial_chivalry.0006.a
}
}
#You fall to the ground, dying
martial_chivalry.0007 = {
type = character_event
title = martial_chivalry.0007.t
desc = martial_chivalry.0007.desc
theme = martial_chivalry_focus
override_background = {
reference = courtyard
}
left_portrait = {
character = scope:duel_opponent
animation = pain
}
trigger = {
has_trait_rank = {
trait = wounded
rank = 3
}
}
option = { #Damn horse, for real this time!!
name = martial_chivalry.0007.a
increase_wounds_effect = {
REASON = horse_riding_accident
}
}
}
#Train with your signature weapon
#by Linnéa Thimrén
martial_chivalry.0010 = {
type = character_event
title = martial_chivalry.0010.t
desc = martial_chivalry.0010.desc
theme = martial_chivalry_focus
override_background = {
reference = armory
}
left_portrait = {
character = root
animation = personality_cynical
}
artifact = { # To display the artifact in the event-window
target = root.var:signature_weapon_scope
position = lower_center_portrait
trigger = { exists = root.var:signature_weapon_scope }
}
trigger = {
NOT = { has_character_flag = had_event_martial_chivalry_0010 }
}
weight_multiplier = {
base = 1
upweight_for_focus_modifier = { FOCUS = martial_chivalry_focus }
}
immediate = {
add_character_flag = {
flag = had_event_martial_chivalry_0010
days = 3650
}
set_signature_weapon_effect = yes
}
option = {
name = martial_chivalry.0010.a
hidden_effect = { add_focus_progress = standard_lifestyle_focus_progress }
add_character_modifier = {
modifier = respected_expertise
}
ai_chance = {
base = 50
modifier = {
add = 50
has_trait_rank = {
trait = wounded
rank >= 2
}
}
}
}
option = {
name = martial_chivalry.0010.b
hidden_effect = { add_focus_progress = standard_lifestyle_focus_progress }
random_list = {
70 = {
desc = martial_chivalry.0010.b.tt1
send_interface_toast = {
type = event_toast_effect_good
title = martial_chivalry.0010.b.tt1
left_icon = root
add_prestige = minor_prestige_gain
add_martial_lifestyle_xp = medium_lifestyle_experience
}
}
30 = {
desc = martial_chivalry.0010.b.tt2
send_interface_toast = {
type = event_toast_effect_bad
title = martial_chivalry.0010.b.tt2
left_icon = root
increase_wounds_effect = { REASON = training_accident }
add_martial_lifestyle_xp = minor_lifestyle_experience
}
}
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = 0.25
}
}
}
}
#Find an old castle, rt craven/at brave/prowess/gold or stress
#by Linnéa Thimrén
martial_chivalry.1011 = {
type = character_event
title = martial_chivalry.1011.t
desc = martial_chivalry.1011.desc
theme = martial_chivalry_focus
override_background = {
reference = terrain
}
left_portrait = {
character = root
animation = survey
}
trigger = {
NOT = { has_character_flag = had_haunted_castle_event }
}
weight_multiplier = {
base = 1
upweight_for_focus_modifier = { FOCUS = martial_chivalry_focus }
}
immediate = {
hidden_effect = {
get_quirk_character_effect = yes
}
add_character_flag = {
flag = had_haunted_castle_event
days = 3650
}
}
option = {
name = martial_chivalry.1011.a
stress_impact = {
craven = minor_stress_impact_gain
}
custom_tooltip = martial_chivalry.1011.a.tt
trigger_event = {
id = martial_chivalry.1012
}
ai_chance = {
base = 50
modifier = {
factor = 0.5
has_trait = brave
}
}
}
option = {
name = martial_chivalry.1011.b
add_character_modifier = {
modifier = hightened_troop_morale_modifier
days = 3650
}
ai_chance = {
base = 50
modifier = {
factor = 0.5
has_trait = craven
}
}
}
}
#You went inside, search cellar or upper floors?
martial_chivalry.1012 = {
type = character_event
title = martial_chivalry.1012.t
desc = martial_chivalry.1012.desc
theme = martial_chivalry_focus
override_background = {
reference = corridor_night
}
left_portrait = {
character = root
animation = personality_cynical
}
option = {
name = martial_chivalry.1012.a
ai_chance = {
base = 50
modifier = {
factor = 0.5
has_trait = greedy
}
}
duel = {
skill = stewardship
value = average_skill_rating
50 = {
desc = martial_chivalry.1012.a.success
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
type = event_toast_effect_good
title = martial_chivalry.1012.a.success
left_icon = root
add_gold = major_gold_value
}
}
50 = {
desc = martial_chivalry.1012.a.failure
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
type = event_toast_effect_bad
title = martial_chivalry.1012.a.failure
left_icon = root
add_gold = minor_gold_value
}
}
}
}
option = {
name = martial_chivalry.1012.b
ai_chance = {
base = 50
modifier = {
factor = 0.5
has_trait = brave
}
}
random_list = {
50 = {
desc = martial_chivalry.1012.b.success
compare_modifier = {
value = ai_boldness
multiplier = 0.5
min = -49
}
if = {
limit = {
AND = {
is_ai = no #no ai should be able to gain brave- to keep the type of characters in the game diverse
stress <= 25
NOT = { has_trait = brave }
number_of_personality_traits <= 3
}
}
send_interface_toast = {
type = event_toast_effect_good
title = martial_chivalry.1012.b.success
left_icon = root
add_trait_force_tooltip = brave
}
}
else_if = {
limit = {
OR = {
number_of_personality_traits = 4
is_ai = yes
stress > 25
has_trait = brave
}
}
send_interface_toast = {
type = event_toast_effect_good
title = martial_chivalry.1012.b.success
left_icon = root
add_character_modifier = {
modifier = faced_my_fears
years = 10
}
}
}
}
50 = {
desc = martial_chivalry.1012.b.tt1
compare_modifier = {
value = ai_boldness
multiplier = -0.5
min = -49
}
send_interface_toast = {
type = event_toast_effect_bad
title = martial_chivalry.1012.b.failure
left_icon = root
add_dread = medium_dread_loss
stress_impact = {
base = medium_stress_gain
}
}
}
}
stress_impact = {
craven = medium_stress_impact_gain
}
}
}
#Stress triggers bad battle practice
#by Linnéa Thimrén
martial_chivalry.1021 = {
type = character_event
title = martial_chivalry.1021.t
desc = martial_chivalry.1021.desc
theme = martial_chivalry_focus
override_background = {
reference = courtyard
}
left_portrait = {
character = root
scripted_animation = duel_wield_weapon
}
trigger = {
is_available_healthy_adult = yes
stress > 60
NOT = { has_character_flag = had_stressful_battle_event }
}
weight_multiplier = {
base = 1
compare_modifier = {
target = root
value = stress
multiplier = 0.01 # 1.4 total @ 100 Stress, 3.4 total @ 300 Stress.
offset = -60
}
modifier = {
factor = 0.5
has_trait_rank = {
trait = wounded
rank = 1
}
}
modifier = {
factor = 0.2
has_trait_rank = {
trait = wounded
rank = 2
}
}
modifier = {
factor = 0
has_trait_rank = {
trait = wounded
rank = 3
}
}
modifier = {
add = 0.5
has_trait = wounded
has_trait = stubborn
}
upweight_for_focus_modifier = { FOCUS = martial_chivalry_focus }
}
immediate = {
add_character_flag = {
flag = had_stressful_battle_event
days = 3650
}
add_character_flag = {
flag = single_combat_duel_armor
days = 30 # just in case
}
}
option = {
name = martial_chivalry.1021.b
add_martial_lifestyle_xp = medium_lifestyle_experience
stress_impact = {
craven = minor_stress_impact_gain
}
duel = {
skill = prowess
value = average_skill_rating
50 = {
desc = martial_chivalry.1021.b.success
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -19
}
send_interface_toast = {
type = event_toast_effect_good
title = martial_chivalry.1021.b.success
left_icon = root
add_character_modifier = {
modifier = respected_vigor
years = 5
}
}
}
20 = {
desc = martial_chivalry.1021.b.failure
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -19
}
compare_modifier = {
value = stress
multiplier = 0.5 # +30 at 60 Stress; +150 at 300 Stress
}
send_interface_toast = {
type = event_toast_effect_bad
title = martial_chivalry.1021.b.failure
left_icon = root
increase_wounds_effect = { REASON = training_accident }
}
}
}
ai_chance = {
base = 50
modifier = {
add = 20
OR = {
has_trait = brave
has_trait = aggressive_attacker
}
}
}
}
option = {
name = martial_chivalry.1021.a
stress_impact = {
base = medium_stress_impact_loss
craven = minor_stress_impact_loss
brave = minor_stress_impact_gain
wrathful = minor_stress_impact_gain
}
ai_chance = {
base = 50
}
}
after = { remove_character_flag = single_combat_duel_armor }
}
#Practice duel
#by Petter Vilberg
#Someone challenges you
martial_chivalry.2010 = {
type = character_event
title = martial_chivalry.2010.t
desc = {
desc = martial_chivalry.2010.start.desc
first_valid = {
triggered_desc = {
trigger = {
reverse_opinion = {
target = scope:challenger
value >= 0
}
}
desc = martial_chivalry.2010.like.desc
}
desc = martial_chivalry.2010.dislike.desc
}
}
theme = martial_chivalry_focus
override_background = {
reference = courtyard
}
left_portrait = {
character = root
scripted_animation = duel_wield_weapon
outfit_tags = { military_outfit }
}
right_portrait = {
character = scope:challenger
animation = personality_bold
outfit_tags = { military_outfit }
}
trigger = {
NOT = { has_character_flag = had_event_martial_chivalry_2010 }
NOT = {
has_trait_rank = {
trait = wounded
rank > 1
}
}
OR = {
any_relation = {
type = soldier_friend
is_available_healthy_ai_adult = yes
}
any_knight = {
is_available_healthy_ai_adult = yes
}
any_relation = { type = rival
target_is_liege_or_above = root
is_available_healthy_ai_adult = yes
}
}
}
weight_multiplier = {
base = 1
modifier = {
add = -0.5
has_trait_rank = {
trait = wounded
rank = 1
}
}
upweight_for_focus_modifier = { FOCUS = martial_chivalry_focus }
}
immediate = {
add_character_flag = {
flag = had_event_martial_chivalry_2010
years = 5
}
hidden_effect = {
random_list = {
40 = {
trigger = {
any_relation = {
type = soldier_friend
is_available_healthy_ai_adult = yes
}
}
random_relation = { type = soldier_friend
limit = {
is_available_healthy_ai_adult = yes
}
save_scope_as = challenger
}
}
30 = {
trigger = {
any_knight = {
is_available_healthy_ai_adult = yes
}
}
random_knight = {
limit = {
is_available_healthy_ai_adult = yes
}
save_scope_as = challenger
}
}
30 = {
trigger = {
any_relation = { type = rival
is_available_healthy_ai_adult = yes
OR = {
is_knight_of = root
is_knight_of = root.liege
target_is_liege_or_above = root
}
}
}
random_relation = {
type = rival
limit = {
is_available_healthy_ai_adult = yes
OR = {
is_knight_of = root
is_knight_of = root.liege
target_is_liege_or_above = root
}
}
save_scope_as = challenger
}
}
}
scope:challenger = { set_signature_weapon_effect = yes }
set_signature_weapon_effect = yes
}
}
option = { #Accept challenge
name = martial_chivalry.2010.a
duel = {
skill = prowess
target = scope:challenger
20 = { #You have the advantage
compare_modifier = {
value = scope:duel_value
multiplier = 1
min = -19
}
desc = martial_chivalry.2010.a.success.tt
trigger_event = martial_chivalry.2011
show_as_tooltip = {
add_martial_lifestyle_xp = medium_lifestyle_experience
add_character_modifier = {
modifier = won_practice_duel
years = 5
}
}
}
20 = { #They have the advantage (they are nice), mutually exclusive with other failure
trigger = {
reverse_opinion = {
target = scope:challenger
value >= 0
}
}
compare_modifier = {
value = scope:duel_value
multiplier = -1
min = -19
}
show_as_tooltip = {
add_martial_lifestyle_xp = minor_lifestyle_experience
}
trigger_event = martial_chivalry.2012 #They're nice about their advantage
desc = martial_chivalry.2010.a.failure1.tt
}
20 = { #They have the advantage (they are an ass), mutually exclusive with other failure
trigger = {
reverse_opinion = {
target = scope:challenger
value < 0
}
}
compare_modifier = {
value = scope:duel_value
multiplier = -1
min = -19
}
desc = martial_chivalry.2010.a.failure2.tt
trigger_event = martial_chivalry.2013 #They're an ass about their advantage
show_as_tooltip = {
increase_wounds_effect = { REASON = training_accident }
add_prestige = medium_prestige_loss
}
}
}
stress_impact = {
lazy = minor_stress_impact_gain
craven = medium_stress_impact_gain
}
ai_chance = {
base = 75
modifier = {
has_trait = brave
add = 75
}
}
}
option = { #Decline challenge
name = martial_chivalry.2010.b
if = {
limit = {
reverse_opinion = {
target = scope:challenger
value < 0
}
}
add_prestige = minor_prestige_loss
stress_impact = {
arrogant = medium_stress_impact_gain
brave = medium_stress_impact_gain
}
}
else = {
add_prestige = miniscule_prestige_loss
stress_impact = {
brave = medium_stress_impact_gain
}
}
scope:challenger = {
add_opinion = {
target = root
modifier = respect_opinion
opinion = -10
}
}
ai_chance = {
base = 25
modifier = {
has_trait = lazy
add = 50
}
modifier = {
has_trait = craven
add = 100
}
modifier = {
has_trait = wounded
add = 200
}
}
}
}
#You gained the upper hand in the mock duel
martial_chivalry.2011 = {
type = character_event
title = martial_chivalry.2011.t
desc = {
desc = martial_chivalry.2011.start.desc
desc = martial_chivalry.2011.end.desc
}
theme = martial_chivalry_focus
override_background = {
reference = courtyard
}
left_portrait = {
character = root
scripted_animation = duel_celebrate
}
right_portrait = {
character = scope:challenger
animation = fear
}
immediate = {
show_as_tooltip = {
add_martial_lifestyle_xp = medium_lifestyle_experience
add_character_modifier = {
modifier = won_practice_duel
years = 5
}
}
}
option = { #You end the duel gracefully
name = martial_chivalry.2011.a
add_prestige = minor_prestige_gain
reverse_add_opinion = {
target = scope:challenger
modifier = honorable_duelist
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_rationality = 0.25
}
}
}
option = { #You humiliate them
name = martial_chivalry.2011.b
add_dread = minor_dread_gain
scope:challenger = {
increase_wounds_effect = { REASON = training_accident }
add_opinion = {
target = root
modifier = dishonorable_duelist
}
add_prestige = medium_prestige_loss
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_vengefulness = 0.25
}
}
}
}
#The challenger gains the upper hand in the mock duel
martial_chivalry.2012 = {
type = character_event
title = martial_chivalry.2012.t
desc = {
desc = martial_chivalry.2011.start.desc
desc = martial_chivalry.2012.end.desc
}
theme = martial_chivalry_focus
override_background = {
reference = courtyard
}
left_portrait = {
character = root
animation = wrestling_yield_start
}
right_portrait = {
character = scope:challenger
scripted_animation = duel_celebrate
}
immediate = {
add_martial_lifestyle_xp = minor_lifestyle_experience
}
option = { #Yield
name = martial_chivalry.2012.a
reverse_add_opinion = {
target = scope:challenger
modifier = honorable_duelist
}
stress_impact = {
brave = minor_stress_impact_gain
vengeful = minor_stress_impact_gain
stubborn = minor_stress_impact_gain
}
ai_chance = {
base = 75
}
}
option = { #Keep fighting
name = martial_chivalry.2012.b
duel = {
skill = prowess
target = scope:challenger
10 = { #You win
compare_modifier = {
value = scope:duel_value
multiplier = 1
min = -9
}
desc = martial_chivalry.2010.a.success.tt
trigger_event = martial_chivalry.2014
show_as_tooltip = {
add_martial_lifestyle_xp = medium_lifestyle_experience
add_prestige = minor_prestige_gain
add_character_modifier = {
modifier = won_practice_duel
years = 5
}
}
}
20 = {
compare_modifier = {
value = scope:duel_value
multiplier = -1
min = -19
}
desc = martial_chivalry.2010.a.failure2.tt
trigger_event = martial_chivalry.2015
show_as_tooltip = {
increase_wounds_effect = { REASON = training_accident }
add_prestige = medium_prestige_loss
}
}
}
stress_impact = {
craven = medium_stress_impact_gain
}
ai_chance = {
base = 25
}
}
}
#The challenger gains the upper hand in the practice duel and they're being an ass about it!
martial_chivalry.2013 = {
type = character_event
title = martial_chivalry.2013.t
desc = {
desc = martial_chivalry.2011.start.desc
desc = martial_chivalry.2013.end.desc
}
theme = martial_chivalry_focus
override_background = {
reference = courtyard
}
left_portrait = {
character = root
animation = wrestling_yield_start
}
right_portrait = {
character = scope:challenger
scripted_animation = duel_celebrate
}
option = {
name = martial_chivalry.2013.a
increase_wounds_effect = { REASON = training_accident }
add_prestige = medium_prestige_loss
add_opinion = {
target = scope:challenger
modifier = dishonorable_duelist
}
}
}
#You won the duel, what a miracle!
martial_chivalry.2014 = {
type = character_event
title = martial_chivalry.2014.t
desc = martial_chivalry.2014.desc
theme = martial_chivalry_focus
override_background = {
reference = courtyard
}
left_portrait = {
character = root
scripted_animation = duel_celebrate
}
right_portrait = {
character = scope:challenger
animation = wrestling_yield_start
}
option = {
name = martial_chivalry.2014.a
add_martial_lifestyle_xp = medium_lifestyle_experience
add_prestige = minor_prestige_gain
add_character_modifier = {
modifier = won_practice_duel
years = 5
}
}
}
#You make a fool of yourself...
martial_chivalry.2015 = {
type = character_event
title = martial_chivalry.2015.t
desc = martial_chivalry.2015.desc
theme = martial_chivalry_focus
override_background = {
reference = courtyard
}
left_portrait = {
character = root
animation = pain
}
right_portrait = {
character = scope:challenger
scripted_animation = duel_celebrate
}
option = {
name = martial_chivalry.2015.a
increase_wounds_effect = { REASON = training_accident }
add_prestige = medium_prestige_loss
}
}
################################################################
# "A Bard For A King" By Hugo Cortell
# Originally an FP2 event, but reworked into martial lifestyle
# 5000 - 5000
################################################################
martial_chivalry.5100 = {
type = character_event
title = fp2_struggle.2023.t
desc = fp2_struggle.2023.desc
theme = martial_chivalry_focus # prev. friendly
override_background = { reference = army_camp }
left_portrait = {
character = root
animation = personality_cynical
}
right_portrait = {
character = scope:fp2_2023_enemy_knight
animation = ecstasy
}
lower_right_portrait = scope:fp2_2023_foreign_king
trigger = {
has_fp2_dlc_trigger = yes # Part of FP2 DLC
any_neighboring_top_liege_realm_owner = {
this != ROOT
any_knight = {
is_available_ai_adult = yes
is_landed = no
}
}
}
immediate = {
add_character_flag = single_combat_duel_armor # Visuals
random_neighboring_top_liege_realm_owner = {
limit = {
this != ROOT
any_knight = {
is_available_ai_adult = yes
is_landed = no
}
}
save_scope_as = fp2_2023_foreign_king
random_knight = {
limit = {
is_available_ai_adult = yes
is_landed = no
}
save_scope_as = fp2_2023_enemy_knight
}
}
}
option = { # Fool! Do you know who you are speaking to?
name = fp2_struggle.2023.a.a
flavor = fp2_struggle.2023.a.desc
send_interface_toast = {
type = event_toast_effect_good
title = fp2_struggle.2023.a.a
left_icon = root
right_icon = scope:fp2_2023_enemy_knight
reverse_add_opinion = {
target = scope:fp2_2023_enemy_knight
modifier = refusal_opinion
opinion = -30
}
add_prestige = minor_prestige_gain
add_dread = minor_dread_gain
}
remove_character_flag = single_combat_duel_armor
}
option = { # I will write mocking poetry against your liege
name = fp2_struggle.2023.b
flavor = fp2_struggle.2023.b.desc
duel = {
skill = learning
value = scope:fp2_2023_enemy_knight.learning
10 = { # Failure Outcome
compare_modifier = {
value = scope:duel_value
multiplier = -1.5
}
modifier = {
add = 20
has_trait = lifestyle_poet
}
send_interface_toast = {
type = event_toast_effect_bad
title = fp2_struggle.2023.b.b
left_icon = root
add_dread = medium_dread_loss
remove_short_term_gold = minor_gold_value
}
}
10 = { # Success Outcome
compare_modifier = {
value = scope:duel_value
multiplier = 1.5
}
modifier = {
add = 20
has_trait = lifestyle_poet
}
send_interface_toast = {
type = event_toast_effect_good
title = fp2_struggle.2023.b.a
left_icon = root
add_prestige = minor_prestige_gain
scope:fp2_2023_foreign_king = {
add_prestige = minor_prestige_loss
add_dread = minor_dread_loss
}
}
}
}
remove_character_flag = single_combat_duel_armor
}
option = { # Fight me! (mandatory stabbing option)
name = fp2_struggle.2023.c
flavor = fp2_struggle.2023.c.desc
custom_tooltip = engage_in_single_combat # removed start_bout_interaction due to it involving board games too
custom_tooltip = fp2_struggle.2023.c.exptooltip
root = { save_scope_as = fp2_2023_root_in_duel }
configure_start_single_combat_effect = {
SC_INITIATOR = root
SC_ATTACKER = scope:fp2_2023_enemy_knight
SC_DEFENDER = root
FATALITY = no
FIXED = no
LOCALE = army_camp
OUTPUT_EVENT = martial_chivalry.5101
INVALIDATION_EVENT = martial_chivalry.5101
}
}
option = { # Drink up!
name = fp2_struggle.2023.d
if = { # If the player's faith forbids drinking, notify the player to ensure they are not confused about why the cost is there
limit = { religion = religion:islam_religion }
custom_tooltip = action_considered_haram_warning
add_piety = medium_piety_loss
}
duel = {
skill = prowess
value = scope:fp2_2023_enemy_knight.prowess
10 = { # Failure Outcome
compare_modifier = {
value = scope:duel_value
multiplier = -1.5
}
modifier = {
add = -35
scope:fp2_2023_enemy_knight = { has_trait = drunkard }
}
modifier = {
add = -15
scope:fp2_2023_enemy_knight = { has_trait = gregarious }
}
modifier = {
add = -10
scope:fp2_2023_enemy_knight = { has_trait = gluttonous }
}
send_interface_toast = {
type = event_toast_effect_bad
title = fp2_struggle.2023.d.a
left_icon = root
add_prestige = medium_prestige_loss
remove_short_term_gold = minor_gold_value
hidden_effect = {
if = {
limit = {
has_any_nickname = no
has_trait = drunkard
}
random = {
chance = 45
give_nickname = nick_the_drunkard # A drunk who cannot hold their ale will be made mockery of, good sire!
}
}
}
}
}
10 = { # Success Outcome
compare_modifier = {
value = scope:duel_value
multiplier = 1.5
}
modifier = {
add = 35
has_trait = drunkard
}
modifier = {
add = 15
has_trait = gregarious
}
modifier = {
add = 10
has_trait = gluttonous
}
send_interface_toast = {
type = event_toast_effect_good
title = fp2_struggle.2023.d.b
left_icon = root
reverse_add_opinion = {
target = scope:fp2_2023_enemy_knight
modifier = respect_opinion
opinion = 30
}
add_prestige = medium_prestige_gain
}
}
}
remove_character_flag = single_combat_duel_armor
}
after = { add_martial_lifestyle_xp = minor_lifestyle_experience } # Removed remove_character_flag = single_combat_duel_armor due to issues with duel
}
martial_chivalry.5101 = {
hidden = yes
immediate = {
if = {
limit = { scope:sc_victor = root }
send_interface_toast = {
type = event_toast_effect_good
title = fp2_struggle.2023.c.a
right_icon = root
add_prestige = medium_prestige_gain
hidden_effect = { add_martial_lifestyle_xp = minor_lifestyle_experience } # We are adding an extra [minor] EXP, but already gave [minor] in the after
show_as_tooltip = {
add_martial_lifestyle_xp = { # So, to make the numbers add up on the UI, we show a [minor] + the extra [minor], even though we only add one [minor] here
value = minor_lifestyle_experience
add = minor_lifestyle_experience
}
}
}
}
else = {
send_interface_toast = {
type = event_toast_effect_bad
title = fp2_struggle.2023.c.b
right_icon = root
add_prestige = minor_prestige_loss
remove_short_term_gold = minor_gold_value
show_as_tooltip = { add_martial_lifestyle_xp = minor_lifestyle_experience } # Showing the one you gained before in the after
}
}
remove_character_flag = single_combat_duel_armor
}
}
##################################################
# Poor Commander
# by Sean Hughes
# 3000-3005
##################################################
scripted_trigger martial_chivalry_3000_is_valid_commander_trigger = {
can_be_combatant_based_on_gender_trigger = {ARMY_OWNER = root}
is_available_healthy_adult = yes
is_landed = yes
martial <= 9
any_liege_or_above = {
this = root
}
}
martial_chivalry.3000 = {
type = character_event
title = martial_chivalry.3000.t
desc = {
desc = martial_chivalry.3000.desc #Standard introduction text for all characters
first_valid = {
triggered_desc = { #Conclusion flavor text for Compassionate characters.
trigger = { has_trait = compassionate }
desc = martial_chivalry.3000.desc.compassionate
}
triggered_desc = { #Conclusion flavor text for Callous characters.
trigger = { has_trait = callous }
desc = martial_chivalry.3000.desc.callous
}
desc = martial_chivalry.3000.desc.fallback #Standard conclusion text for other characters.
}
}
theme = martial_chivalry_focus
override_background = {
reference = courtyard
}
left_portrait = {
character = root
triggered_animation = {
trigger = { has_trait = compassionate }
animation = personality_compassionate
}
triggered_animation = {
trigger = { has_trait = callous }
animation = disgust
}
animation = disapproval
}
right_portrait = {
character = scope:bad_commander
animation = stress
}
trigger = {
NOT = { has_character_flag = had_event_martial_chivalry_3000 } #Can only happen once every 5 years.
OR = {
any_vassal = {
martial_chivalry_3000_is_valid_commander_trigger = yes
}
player_heir ?= {
martial_chivalry_3000_is_valid_commander_trigger = yes
}
any_child = {
martial_chivalry_3000_is_valid_commander_trigger = yes
}
}
}
weight_multiplier = {
base = 1
modifier = {
add = 0.5
player_heir ?= {
martial_chivalry_3000_is_valid_commander_trigger = yes
}
}
modifier = {
add = 0.3
any_vassal = {
is_powerful_vassal_of = root
martial_chivalry_3000_is_valid_commander_trigger = yes
}
}
upweight_for_focus_modifier = { FOCUS = martial_chivalry_focus }
}
immediate = {
add_character_flag = {
flag = had_event_martial_chivalry_3000
days = 1825
}
save_scope_as = my_liege
every_child = {
limit = {
martial_chivalry_3000_is_valid_commander_trigger = yes
}
add_to_list = potential_important_people
}
every_heir = {
limit = {
martial_chivalry_3000_is_valid_commander_trigger = yes
}
add_to_list = potential_important_people
}
every_vassal = {
limit = {
martial_chivalry_3000_is_valid_commander_trigger = yes
}
add_to_list = potential_important_people
}
random_in_list = {
list = potential_important_people
weight = {
#Because the event can only fire on bad commanders, we need to make sure the event prefers firing on characters the player actually cares about.
base = 10
modifier = {
is_player_heir_of = root
factor = 10
}
modifier = {
is_child_of = root
factor = 10
}
modifier = {
is_powerful_vassal = yes
factor = 5
}
compare_modifier = {
value = highest_held_title_tier
multiplier = 2
}
#Even if the commander is bad, it would be nice if they weren't completely terrible.
compare_modifier = {
value = martial
multiplier = 5
}
}
save_scope_as = bad_commander
}
}
#Give advice(wanted or not) to the poor commander.
option = {
name = martial_chivalry.3000.b
add_martial_lifestyle_xp = medium_lifestyle_experience
#This list is purely to create an informational tooltip for the player; all the actual effects happen in the follow-up events.
random_list = {
desc = martial_chivalry.3000.b.attempt
1 = {
desc = martial_chivalry.3000.b.tt.s
show_chance = no
show_as_tooltip = {
scope:bad_commander = {
if = {
limit = {martial <= 4}
add_martial_skill = 3
}
else_if = {
limit = {martial <= 7}
add_martial_skill = 2
}
else = {
add_martial_skill = 1
}
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 20
}
}
}
}
1 = {
desc = martial_chivalry.3000.b.tt.f
show_chance = no
show_as_tooltip = {
scope:bad_commander = {
add_opinion = {
target = root
modifier = angry_opinion
opinion = -10
}
}
}
}
}
#Commander responds to advice given.
scope:bad_commander = {
trigger_event = { id = martial_chivalry.3002 days = 3 }
}
stress_impact = {
shy = medium_stress_impact_gain
wrathful = medium_stress_impact_gain
humble = minor_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_rationality = 1
ai_boldness = 0.5
}
}
}
#Ignore the poor commander's mediocrity, befriend him instead.
option = {
name = martial_chivalry.3000.c
show_as_tooltip = {
progress_towards_friend_effect = {
CHARACTER = scope:bad_commander
OPINION = 20
REASON = friend_encouraged_growth
}
}
scope:bad_commander = {
hidden_effect = { root = { save_scope_as = my_liege } }
trigger_event = { id = martial_chivalry.3005 days = 3 }
}
stress_impact = {
shy = medium_stress_impact_gain
wrathful = medium_stress_impact_gain
impatient = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_vengefulness = -1
ai_compassion = 1
}
}
}
#Berate the poor commander for his failure.
option = {
name = martial_chivalry.3000.a
add_dread = minor_dread_gain
#Only add opinion of other character if we are an AI(As player opinion has no effect).
if = {
limit = {
is_ai = yes
}
add_opinion = {
target = scope:bad_commander
modifier = disappointed_opinion
opinion = -20
}
}
reverse_add_opinion = {
target = scope:bad_commander
modifier = angry_opinion
opinion = -20
}
scope:bad_commander = {
show_as_tooltip = {
add_prestige = medium_prestige_loss
}
trigger_event = { id = martial_chivalry.3001 days = 3 }
}
stress_impact = {
forgiving = medium_stress_impact_gain
compassionate = medium_stress_impact_gain
calm = minor_stress_impact_gain
shy = minor_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_vengefulness = 1
ai_compassion = -1
}
}
}
}
#Bad commander responds to being berrated.
martial_chivalry.3001 = {
type = character_event
title = martial_chivalry.3001.t
desc = {
desc = martial_chivalry.3000.response.desc
desc = martial_chivalry.3001.desc
}
theme = martial_chivalry_focus
override_background = {
reference = courtyard
}
left_portrait = {
character = root
animation = shame
}
right_portrait = {
character = scope:my_liege
animation = anger
}
immediate = {
show_as_tooltip = {
#Only add opinion of other character if we are an AI(As player opinion has no effect).
scope:my_liege = {
if = {
limit = {
is_ai = yes
}
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -20
}
}
}
if = {
limit = {
is_ai = yes
}
add_opinion = {
target = scope:my_liege
modifier = angry_opinion
opinion = -20
}
}
}
#Prestige loss always happens(your liege watched you fail).
add_prestige = medium_prestige_loss
}
#Punish own troops for Dread.
option = {
name = martial_chivalry.3001.a
add_dread = minor_dread_gain
stress_impact = {
compassionate = medium_stress_impact_gain
forgiving = medium_stress_impact_gain
patient = medium_stress_impact_gain
just = medium_stress_impact_gain
ambitious = minor_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_vengefulness = 100
ai_compassion = -100
ai_honor = -100
}
}
}
#Use failure as reason to work harder.
option = {
name = martial_chivalry.3001.b
add_character_modifier = {
modifier = warfare_motivated_instructor_modifier
days = 365
}
stress_impact = {
arrogant = medium_stress_impact_gain
lazy = medium_stress_impact_gain
content = medium_stress_impact_gain
wrathful = minor_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_energy = 100
ai_boldness = 100
ai_greed = 100
ai_honor = 200
}
}
}
#Accept that you are just a bad commander.
option = {
name = martial_chivalry.3001.c
stress_impact = {
base = minor_stress_impact_gain
arrogant = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_energy = -100
ai_boldness = -100
}
}
}
}
#Bad commander responds to advice given.
martial_chivalry.3002 = {
type = character_event
title = martial_chivalry.3002.t
desc = {
desc = martial_chivalry.3000.response.desc
desc = martial_chivalry.3002.desc
}
theme = martial_chivalry_focus
override_background = {
reference = courtyard
}
left_portrait = {
character = root
animation = interested_left
}
right_portrait = {
character = scope:my_liege
animation = debating
}
trigger = {
scope:my_liege = {
is_alive = yes
}
}
#Accept advice gratefully.
option = {
name = martial_chivalry.3002.a
if = {
limit = { martial <= 4 }
add_martial_skill = 3
save_scope_value_as = {
name = martial_increase
value = 3
}
}
else_if = {
limit = { martial <= 7 }
add_martial_skill = 2
save_scope_value_as = {
name = martial_increase
value = 2
}
}
else = {
add_martial_skill = 1
save_scope_value_as = {
name = martial_increase
value = 1
}
}
#Only add opinion of other character if we are an AI(As player opinion has no effect).
if = {
limit = {
is_ai = yes
}
add_opinion = {
target = scope:my_liege
modifier = grateful_opinion
opinion = low_positive_opinion
}
}
reverse_add_opinion = {
target = scope:my_liege
modifier = pleased_opinion
opinion = low_positive_opinion
}
scope:my_liege = {
trigger_event = { id = martial_chivalry.3003 days = 1 }
}
stress_impact = {
arrogant = medium_stress_impact_gain
stubborn = medium_stress_impact_gain
vengeful = medium_stress_impact_gain
lazy = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 100
ai_rationality = 200
ai_vengefulness = -100
ai_energy = 100
}
}
}
#Rudly reject advice!
option = {
name = martial_chivalry.3002.b
add_dread = minor_dread_gain
#Only add opinion of other character if we are an AI(As player opinion has no effect).
if = {
limit = {
is_ai = yes
}
add_opinion = {
target = scope:my_liege
modifier = angry_opinion
opinion = -10
}
}
reverse_add_opinion = {
target = scope:my_liege
modifier = disappointed_opinion
opinion = -10
}
scope:my_liege = {
trigger_event = { id = martial_chivalry.3004 days = 1 }
}
stress_impact = {
eccentric = medium_stress_impact_loss
diligent = medium_stress_impact_gain
ambitious = medium_stress_impact_gain
humble = medium_stress_impact_gain
compassionate = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_rationality = -200
ai_vengefulness = 200
ai_energy = -100
}
}
}
}
#Original character hears about the bad commander accepting his advice.
martial_chivalry.3003 = {
type = character_event
title = martial_chivalry.3003.t
desc = {
desc = martial_chivalry.3003.desc.1
desc = martial_chivalry.3003.desc.2
}
theme = martial_chivalry_focus
override_background = {
reference = courtyard
}
left_portrait = {
character = root
animation = personality_compassionate
}
right_portrait = {
character = scope:bad_commander
animation = personality_bold
}
immediate = {
show_as_tooltip = {
scope:bad_commander = {
if = {
limit = {
scope:martial_increase = 3
}
add_martial_skill = 3
}
else_if = {
limit = {
scope:martial_increase = 2
}
add_martial_skill = 2
}
else = {
add_martial_skill = 1
}
}
reverse_add_opinion = {
target = scope:bad_commander
modifier = pleased_opinion
opinion = 20
}
}
}
option = {
name = martial_chivalry.3003.a
}
}
#Original character hears about the bad commander rejecting his advice.
martial_chivalry.3004 = {
type = character_event
title = martial_chivalry.3004.t
desc = martial_chivalry.3004.desc
theme = martial_chivalry_focus
override_background = {
reference = courtyard
}
left_portrait = {
character = root
animation = disappointed
}
right_portrait = {
character = scope:bad_commander
animation = anger
}
immediate = {
show_as_tooltip = {
#Only add opinion of other character if we are an AI(As player opinion has no effect).
if = {
limit = {
is_ai = yes
}
add_opinion = {
target = scope:bad_commander
modifier = angry_opinion
opinion = -10
}
}
reverse_add_opinion = {
target = scope:bad_commander
modifier = angry_opinion
opinion = -10
}
}
}
option = {
name = martial_chivalry.3004.a
}
}
#Bad commander hears about how nice his liege was to ignore his failure.
martial_chivalry.3005 = {
type = character_event
title = martial_chivalry.3005.t
desc = {
desc = martial_chivalry.3000.response.desc
desc = martial_chivalry.3005.desc
}
theme = martial_chivalry_focus
override_background = {
reference = courtyard
}
left_portrait = {
character = root
animation = admiration
}
right_portrait = {
character = scope:my_liege
animation = personality_compassionate
}
immediate = {
progress_towards_friend_effect = {
CHARACTER = scope:my_liege
OPINION = 20
REASON = friend_encouraged_growth
}
}
option = {
name = martial_chivalry.3005.a
add_opinion = {
target = scope:my_liege
modifier = friendliness_opinion
opinion = 20
}
add_stress = minor_stress_loss
}
}
##################################################
# A Ride At Midnight
# by Jason Cantalini
##################################################
scripted_trigger martial_chivalry_4000_raiding_neighbor_trigger = {
highest_held_title_tier >= tier_county
can_raid_trigger = yes
is_ai = yes
NOR = {
this = root
target_is_liege_or_above = root
target_is_vassal_or_below = root
is_allied_to = root
}
}
martial_chivalry.4000 = {
type = character_event
title = martial_chivalry.4000.t
desc = {
desc = martial_chivalry.4000.desc
# ROOT personality affects the last little bit of the desc
triggered_desc = {
trigger = {
root = {
OR = {
has_trait = lazy
has_trait = craven
has_trait = hashishiyah
has_trait = calm
}
}
}
desc = martial_chivalry.4000.sleepy
}
triggered_desc = {
trigger = {
root = {
NOR = {
has_trait = lazy
has_trait = craven
has_trait = hashishiyah
has_trait = calm
}
}
}
desc = martial_chivalry.4000.angry
}
}
theme = martial_chivalry_focus
left_portrait = {
character = root
animation = anger
}
lower_right_portrait = {
character = scope:raiders
}
cooldown = {
years = 5
}
trigger = {
has_focus = martial_chivalry_focus
NOT = { has_character_flag = is_in_martial_special_event }
is_available_healthy_adult = yes
is_landed = yes
highest_held_title_tier <= tier_duchy
highest_held_title_tier > tier_barony
any_knight = {
is_available_ai_adult = yes
}
#All the riding doesn't feel appropriate for a lot of Scandinavia
NOT = {
capital_province = {
geographical_region = ghw_region_scandinavia
}
}
trigger_if = {
limit = { top_liege != this }
any_neighboring_realm_same_rank_owner = {
martial_chivalry_4000_raiding_neighbor_trigger = yes
}
}
trigger_else = {
any_neighboring_top_liege_realm_owner = {
martial_chivalry_4000_raiding_neighbor_trigger = yes
}
}
}
immediate = {
play_music_cue = "mx_cue_combat_2"
# Who are you riding out with?
root = { add_to_list = your_warriors }
every_knight = {
limit = {
is_available_ai_adult = yes
}
add_to_list = your_warriors
}
# Grab a suitable neighbour
if = {
limit = {
top_liege != this
any_neighboring_realm_same_rank_owner = {
martial_chivalry_4000_raiding_neighbor_trigger = yes
}
}
random_neighboring_realm_same_rank_owner = {
limit = {
martial_chivalry_4000_raiding_neighbor_trigger = yes
}
save_scope_as = raiders
}
}
else = {
random_neighboring_top_liege_realm_owner = {
limit = {
martial_chivalry_4000_raiding_neighbor_trigger = yes
}
save_scope_as = raiders
}
}
}
option = {
name = martial_chivalry.4000.a
flavor = martial_chivalry_special.4000.a.tt
# Martial challenge as you try to outmaneuvre the thieves
duel = {
skill = martial
value = average_skill_rating
# You get them to flee
60 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3
}
desc = martial_chivalry_special.4000.a.tt_success
send_interface_toast = {
title = martial_chivalry_special.4000.a.tt_success
left_icon = root
add_martial_lifestyle_xp = medium_lifestyle_experience
add_prestige = minor_prestige_gain
}
}
# You and your knights are beaten
40 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3
}
desc = martial_chivalry_special.4000.a.tt_failure
hidden_effect = {
random_in_list = {
list = your_warriors
weight = {
base = 1
modifier = {
add = {
value = prowess
multiply = -2
}
}
}
increase_wounds_no_death_effect = { REASON = fight }
save_scope_as = wounded
}
}
send_interface_toast = {
title = martial_chivalry_special.4000.a.tt_failure
left_icon = root
custom_tooltip = martial_chivalry_special.4000.a.tt_failure_2
add_prestige = medium_prestige_loss
capital_county = {
change_county_control = medium_county_control_loss
}
stress_impact = {
arrogant = medium_stress_impact_gain
vengeful = minor_stress_impact_gain
}
}
hidden_effect = {
scope:raiders = {
add_gold = minor_gold_value
add_prestige = minor_prestige_gain
}
}
}
}
stress_impact = {
lazy = major_stress_impact_gain
craven = medium_stress_impact_gain
impatient = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 0.50
ai_energy = 0.50
ai_rationality = 0.25
}
compare_modifier = {
target = root
value = martial
multiplier = 1.5
}
modifier = {
has_trait = impatient
add = -75
}
modifier = {
has_trait = lazy
add = -50
}
modifier = {
has_trait = craven
add = -50
}
}
}
option = {
name = martial_chivalry.4000.b
flavor = martial_chivalry_special.4000.b.tt
# Prowess challenge as you attack the thieves' leader
duel = {
skill = prowess
value = average_skill_rating
# You slay the insolent boy!
60 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.1
}
desc = martial_chivalry_special.4000.b.tt_success
send_interface_toast = {
title = martial_chivalry_special.4000.b.tt_success
left_icon = root
add_martial_lifestyle_xp = medium_lifestyle_experience
add_prestige = medium_prestige_gain
add_dread = medium_dread_gain
scope:raiders = {
add_opinion = {
modifier = angry_opinion
target = root
opinion = -15
}
}
if = {
limit = {
can_set_relation_potential_rival_trigger = { CHARACTER = scope:raiders }
}
set_relation_potential_rival = scope:raiders
}
create_character_memory = {
type = slew_rustlers
participants = {
sent_rustlers = scope:raiders
}
}
stress_impact = {
vengeful = minor_stress_impact_loss
}
}
}
# You were over-confident
35 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.1
min = -33
}
desc = martial_chivalry_special.4000.b.tt_failure
send_interface_toast = {
title = martial_chivalry_special.4000.b.tt_failure
left_icon = root
increase_wounds_no_death_effect = { REASON = fight }
add_prestige = medium_prestige_loss
capital_county = {
change_county_control = medium_county_control_loss
}
stress_impact = {
arrogant = medium_stress_impact_gain
vengeful = minor_stress_impact_gain
}
}
hidden_effect = {
scope:raiders = {
add_gold = minor_gold_value
add_prestige = minor_prestige_gain
}
}
}
# You get yourself beaten, trampled and humiliated
5 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.1
min = -3
}
desc = martial_chivalry_special.4000.b.tt_critical_failure
add_internal_flag = dangerous
send_interface_toast = {
title = martial_chivalry_special.4000.b.tt_critical_failure
left_icon = root
custom_tooltip = martial_chivalry_special.4000.b.tt_critical_failure_2
add_prestige = major_prestige_loss
capital_county = {
change_county_control = medium_county_control_loss
}
hidden_effect = { maimed_in_battle_effect = yes }
stress_impact = {
arrogant = major_stress_impact_gain
vengeful = medium_stress_impact_gain
}
}
hidden_effect = {
scope:raiders = {
add_gold = minor_gold_value
add_prestige = minor_prestige_gain
}
}
create_character_memory = {
type = humiliated_by_rustlers
participants = {
sent_rustlers = scope:raiders
}
}
}
}
stress_impact = {
irritable = minor_stress_impact_loss
craven = massive_stress_impact_gain
lazy = massive_stress_impact_gain
forgiving = major_stress_impact_gain
compassionate = major_stress_impact_gain
patient = medium_stress_impact_gain
humble = medium_stress_impact_gain
calm = minor_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 1
ai_vengefulness = 1
ai_compassion = -0.75
ai_energy = 0.75
}
modifier = {
add = -100
has_trait_rank = {
trait = wounded
rank >= 2
}
}
modifier = {
has_trait = craven
add = -100
}
modifier = {
has_trait = arrogant
add = 25
}
modifier = {
has_trait = irritable
add = 25
}
modifier = {
has_trait = lazy
add = -100
}
compare_modifier = {
target = root
value = prowess
multiplier = 1.5
}
}
}
option = {
name = martial_chivalry.4000.c
flavor = martial_chivalry_special.4000.c.tt
capital_county = {
add_county_modifier = {
modifier = martial_chivalry_stolen_livestock_modifier
years = 5
}
}
add_prestige = minor_prestige_loss
hidden_effect = {
scope:raiders = {
add_gold = tiny_gold_value
add_prestige = minor_prestige_gain
}
}
stress_impact = {
lazy = minor_stress_impact_loss
impatient = massive_stress_impact_gain
wrathful = massive_stress_impact_gain
vengeful = massive_stress_impact_gain
diligent = major_stress_impact_gain
brave = medium_stress_impact_gain
stubborn = medium_stress_impact_gain
}
ai_chance = {
base = 60
ai_value_modifier = {
ai_vengefulness = -1
ai_energy = -1
ai_boldness = -0.50
ai_honor = -0.25
}
modifier = {
has_trait = wrathful
add = -75
}
modifier = {
has_trait = diligent
add = -50
}
modifier = {
has_trait = brave
add = -50
}
modifier = {
has_trait = impatient
add = -50
}
}
}
}
##################################################
# Unfounded Rumors
# by Veronica Pazos
# 5000
##################################################
scripted_trigger martial_chivalry_5000_is_valid_spouse_trigger = {
is_available_ai_adult = yes
is_attracted_to_gender_of = root
top_liege != this
NOR = {
has_trait = chaste
has_trait = celibate
}
save_temporary_scope_as = spouse_trigger
root = {
is_attracted_to_gender_of = scope:spouse_trigger
}
}
scripted_trigger martial_chivalry_5000_is_valid_liege_trigger = {
is_available_ai_adult = yes
is_landed = yes
is_married = yes
any_spouse = {
martial_chivalry_5000_is_valid_spouse_trigger = yes
}
}
martial_chivalry.5000 = {
type = character_event
title = martial_chivalry.5000.t
desc = {
desc = martial_chivalry.5000.intro #Standard introduction text for all characters
first_valid = {
triggered_desc = { #Flavor text for Lustful characters
trigger = { has_trait = lustful }
desc = martial_chivalry.5000.desc.lustful
}
triggered_desc = { #Flavor text for Honest/Chaste characters
trigger = {
OR = {
has_trait = honest
has_trait = chaste
has_trait = celibate
}
}
desc = martial_chivalry.5000.desc.honest_chaste
}
desc = martial_chivalry.5000.desc.fallback #Standard flavor text for other characters
}
desc = martial_chivalry.5000.desc.outro
}
theme = martial_chivalry_focus
cooldown = { years = 5 }
override_background = {
reference = corridor_night
}
left_portrait = {
character = root
triggered_animation = {
trigger = { has_trait = lustful }
animation = happiness
}
animation = stress
}
right_portrait = {
character = scope:spymaster
animation = worry
}
lower_right_portrait = scope:spouse
trigger = {
NOT = { has_character_flag = had_event_martial_chivalry_5000 } #adjusts cooldown for this specific character
is_available_healthy_adult = yes
is_landed = yes
has_lifestyle = martial_lifestyle
top_liege != this #you actually have a lieges
accepts_adultery_without_penalty_trigger = no
liege = { #your liege and their spouse meet the conditions
martial_chivalry_5000_is_valid_liege_trigger = yes
any_spouse = {
martial_chivalry_5000_is_valid_spouse_trigger = yes
}
any_powerful_vassal = { #at least one relevant vassal dislikes you a bit
opinion = {
target = root
value <= -10
}
}
}
}
weight_multiplier = {
base = 1
modifier = { #much more likely to happen if you go around trying to seduce people
add = 1
has_trait = lustful
}
modifier = { #more likely to happen if someone really dislikes you
add = 0.5
any_powerful_vassal = {
opinion = {
target = root
value <= -20
}
}
}
modifier = { #more likely to happen if you have a competent spymaster that finds out about the rumors
add = 0.3
exists = cp:councillor_spymaster
cp:councillor_spymaster = {
NOT = { is_spouse_of = root }
intrigue >= medium_skill_rating
}
}
upweight_for_focus_modifier = { FOCUS = martial_chivalry_focus }
}
immediate = {
add_character_flag = {
flag = had_event_martial_chivalry_5000
days = 3650
}
liege = {
save_scope_as = my_liege
random_spouse = {
limit = {
martial_chivalry_5000_is_valid_spouse_trigger = yes
}
save_scope_as = spouse
}
random_powerful_vassal = {
limit = {
opinion = {
target = root
value <= -10
}
}
save_scope_as = rumor_spreader
}
}
if = { #someone finds out about these rumors
limit = {
exists = cp:councillor_spymaster
cp:councillor_spymaster = { this != scope:spouse }
}
cp:councillor_spymaster = { save_scope_as = spymaster }
}
else = {
ordered_vassal = {
limit = {
this != scope:spouse
}
order_by = intrigue
save_scope_as = spymaster
}
}
}
#Deny the rumors immediately
option = {
name = martial_chivalry.5000.a
duel = {
skill = intrigue
target = scope:rumor_spreader
50 = {
desc = martial_chivalry.5000.a.success
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
}
add_martial_lifestyle_xp = medium_lifestyle_experience #you're being gallant
reverse_add_opinion = {
target = liege
modifier = pleased_opinion
opinion = 10
}
}
50 = {
desc = martial_chivalry.5000.a.failure
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
}
add_prestige = medium_prestige_loss
reverse_add_opinion = {
target = liege
modifier = suspicion_opinion
opinion = -20
}
}
}
stress_impact = {
base = medium_stress_impact_gain
honest = medium_stress_impact_loss
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 0.5
ai_compassion = 1
}
}
}
#Ignore the rumors
option = {
name = martial_chivalry.5000.b
add_prestige = minor_prestige_loss #your reputation is damaged
stress_impact = {
arrogant = medium_stress_impact_gain
honest = medium_stress_impact_gain
chaste = medium_stress_impact_gain
celibate = medium_stress_impact_gain
}
ai_chance = {
base = 80
ai_value_modifier = {
ai_compassion = 0.5
ai_vengefulness = -0.5
ai_honor = -1
}
}
}
#Go talk to your liege yourself
option = {
name = martial_chivalry.5000.c
duel = {
skills = { diplomacy intrigue }
target = scope:my_liege
50 = {
desc = martial_chivalry.5000.a.success
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
}
reverse_add_opinion = {
target = liege
modifier = pleased_opinion
opinion = 20
}
reverse_add_opinion = {
target = scope:spouse
modifier = grateful_opinion
opinion = 10
}
}
50 = {
desc = martial_chivalry.5000.a.failure
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
}
reverse_add_opinion = {
target = liege
modifier = suspicion_opinion
opinion = -30
}
}
}
stress_impact = {
base = minor_stress_impact_gain
shy = major_stress_impact_gain
craven = major_stress_impact_gain
}
ai_chance = {
base = 80
ai_value_modifier = {
ai_boldness = 1
ai_vengefulness = -0.5
}
}
}
#Use the rumors in your favor
option = {
name = martial_chivalry.5000.d
trigger = {
has_trait = lustful
}
flavor = martial_chivalry.5000.d.tt
custom_tooltip = martial_chivalry.5000.d.tt.warning
add_martial_lifestyle_xp = major_lifestyle_experience #you're being _extremely_ gallant (courtly love)
every_scheme = { #you drop everything to pursue her
limit = {
OR = {
scheme_type = befriend
scheme_type = sway
scheme_type = seduce
scheme_type = courting
scheme_type = elope
scheme_type = murder
scheme_type = abduct
scheme_type = claim_throne
scheme_type = fabricate_hook
scheme_type = convert_to_witchcraft
}
}
end_scheme = yes
}
start_scheme = {
target_character = scope:spouse
type = seduce
}
stress_impact = {
honest = major_stress_impact_gain
chaste = major_stress_impact_gain
celibate = major_stress_impact_gain
}
ai_chance = {
base = 200 #high weight since it only triggers if you have the lustful trait
ai_value_modifier = {
ai_vengefulness = 1
ai_boldness = 1
ai_compassion = -0.5
ai_honor = -1
}
}
}
}
##################################################
# The Church in the Woods
# by Veronica Pazos
# 6000-6003
##################################################
martial_chivalry.6000 = {
type = character_event
title = martial_chivalry.6000.t
desc = martial_chivalry.6000.desc
theme = martial_chivalry_focus
cooldown = { years = 10 }
override_background = {
reference = terrain
}
left_portrait = {
character = root
animation = shock
}
trigger = {
NOT = { has_character_flag = had_event_martial_chivalry_6000 }
is_available_healthy_adult = yes
OR = {
AND = {
has_government = landless_adventurer_government
capital_province = {
is_wooded_trigger = yes
}
}
any_sub_realm_county = {
any_county_province = {
is_wooded_trigger = yes
}
}
}
}
weight_multiplier = {
base = 1
upweight_for_focus_modifier = { FOCUS = martial_chivalry_focus }
}
immediate = {
add_character_flag = had_event_martial_chivalry_6000 #we stop the event from happening to the same character
if = {
limit = {
exists = cp:councillor_court_chaplain
}
cp:councillor_court_chaplain = {
save_scope_as = bishop
}
}
random_sub_realm_county = {
limit = {
any_county_province = {
is_wooded_trigger = yes
}
}
save_scope_as = church_county
random_county_province = {
limit = { is_wooded_trigger = yes }
save_scope_as = church_province #necessary for cool custom loc
}
}
}
option = { #explore it
name = martial_chivalry.6000.a
custom_tooltip = martial_chivalry.6000.a.tt
stress_impact = {
craven = medium_stress_impact_gain
lazy = minor_stress_impact_gain
}
hidden_effect = {
random_list = {
10 = { #you find a "monster"
trigger_event = martial_chivalry.6001
modifier = {
factor = 0.3
prowess >= high_skill_rating
}
}
10 = { #you find an artifact
trigger_event = martial_chivalry.6002
modifier = {
factor = 0.3
OR = {
has_trait = scholar
has_trait = education_learning_3
has_trait = education_learning_4
has_trait = education_learning_5
}
}
}
5 = { #you find a fair maiden/lad
trigger_event = martial_chivalry.6003
modifier = {
factor = 1
OR = {
has_focus = martial_chivalry_focus
has_trait = gallant
}
}
}
}
}
ai_chance = {
base = 50
modifier = {
factor = 0.5
has_trait = brave
}
modifier = {
factor = 0.5
has_focus = martial_chivalry_focus
}
}
}
option = { #inform the bishop
name = martial_chivalry.6000.b
trigger = {
exists = cp:councillor_court_chaplain
}
add_piety = minor_piety_gain
scope:bishop = {
add_opinion = {
target = ROOT
modifier = trust_opinion
opinion = 20
}
}
stress_impact = {
brave = medium_stress_impact_gain
}
ai_chance = {
base = 50
modifier = {
factor = 1.5
has_trait = zealous
}
}
}
option = { #leave
name = martial_chivalry.6000.c
if = {
limit = {
is_landed = yes
}
scope:church_county = {
add_county_modifier = {
modifier = ignored_church_modifier
years = 5
}
}
}
stress_impact = {
craven = minor_stress_impact_loss
brave = medium_stress_impact_gain
}
ai_chance = {
base = 50
modifier = {
factor = 0.5
has_trait = craven
}
}
}
}
# You find a "monster"
martial_chivalry.6001 = {
type = character_event
title = martial_chivalry.6001.t
desc = martial_chivalry.6001.desc
theme = martial_chivalry_focus
override_background = {
reference = temple
}
left_portrait = {
character = root
animation = rage
}
immediate = {
select_local_animal_effect = { TYPE = any } # Save scope to limit possible animals: any/big/small/dangerous/harmless/prowling
}
option = { #fight!
name = martial_chivalry.6001.a
duel = {
skill = prowess
value = medium_skill_rating
60 = {
desc = martial_chivalry.6001.a_success
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
}
if = {
limit = {
NOT = { has_trait = forest_fighter }
number_of_commander_traits < commander_trait_limit
}
send_interface_toast = {
type = event_toast_effect_good
title = martial_chivalry.6001.a_success_toast
left_icon = root
add_trait = forest_fighter
}
}
else = {
send_interface_toast = {
type = event_toast_effect_good
title = martial_chivalry.6001.a_success_toast
left_icon = root
add_martial_lifestyle_xp = major_lifestyle_experience
}
}
}
40 = {
desc = martial_chivalry.6001.a_failure
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
}
send_interface_toast = {
type = event_toast_effect_bad
title = martial_chivalry.6001.a_failure_toast
left_icon = root
add_martial_lifestyle_xp = medium_lifestyle_experience
increase_wounds_effect = { REASON = wild_animal }
}
}
}
stress_impact = {
base = minor_stress_impact_gain
brave = minor_stress_impact_loss
lazy = medium_stress_impact_gain
weak = medium_stress_impact_gain
physique_bad_2 = medium_stress_impact_gain
physique_bad_3 = major_stress_impact_gain
craven = major_stress_impact_gain
}
}
option = { #flee
name = martial_chivalry.6001.b
duel = {
skill = intrigue
value = low_skill_rating
50 = {
desc = martial_chivalry.6001.b_success
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
}
modifier = {
has_trait = athletic
factor = 2
}
send_interface_toast = {
type = event_toast_effect_good
title = martial_chivalry.6001.b_success_toast
left_icon = root
add_martial_lifestyle_xp = medium_lifestyle_experience
}
}
50 = {
desc = martial_chivalry.6001.b_failure
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
}
send_interface_toast = {
type = event_toast_effect_bad
title = martial_chivalry.6001.b_failure_toast
left_icon = root
add_martial_lifestyle_xp = minor_lifestyle_experience
increase_wounds_effect = { REASON = wild_animal }
}
}
}
stress_impact = {
base = minor_stress_impact_gain
brave = medium_stress_impact_gain
clubfooted = medium_stress_impact_gain
wheezing = medium_stress_impact_gain
}
}
}
# You find an artifact
martial_chivalry.6002 = {
type = character_event
title = martial_chivalry.6002.t
desc = martial_chivalry.6002.desc
theme = martial_chivalry_focus
override_background = {
reference = temple
}
left_portrait = {
character = root
animation = admiration
}
artifact = {
target = scope:church_artifact_scope
position = lower_center_portrait
}
immediate = {
random_list = {
50 = {
if = {
limit = { artifacts_use_indian_books_trigger = yes }
create_artifact = {
name = church_artifact_book
description = church_artifact_book_desc
type = journal
visuals = indian_book
modifier = artifact_prowess_1_modifier
modifier = artifact_monthly_piety_gain_per_knight_add_3_modifier
save_scope_as = church_artifact_scope
}
}
else = {
create_artifact = {
name = church_artifact_book
description = church_artifact_book_desc
type = journal
visuals = book
modifier = artifact_prowess_1_modifier
modifier = artifact_monthly_piety_gain_per_knight_add_3_modifier
save_scope_as = church_artifact_scope
}
}
set_variable = church_artifact_book_var
}
25 = {
create_artifact = {
name = church_artifact_sword
description = church_artifact_sword_desc
type = sword
visuals = sword
modifier = artifact_monthly_piety_gain_per_knight_add_1_modifier
modifier = artifact_prowess_2_modifier
save_scope_as = church_artifact_scope
}
set_variable = church_artifact_sword_var
}
25 = {
create_artifact = {
name = church_artifact_dagger
description = church_artifact_dagger_desc
type = dagger
visuals = dagger
modifier = artifact_monthly_piety_gain_per_knight_add_2_modifier
modifier = artifact_intrigue_1_modifier
save_scope_as = church_artifact_scope
}
set_variable = church_artifact_dagger_var
}
}
}
option = { #mine! mine!
name = martial_chivalry.6002.a
if = {
limit = {
OR = {
has_variable = church_artifact_sword_var
has_variable = church_artifact_dagger_var
}
}
add_martial_lifestyle_xp = minor_lifestyle_experience
}
stress_impact = {
generous = medium_stress_impact_gain
}
}
option = { #study it
name = martial_chivalry.6002.book
custom_tooltip = martial_chivalry.6002.book_tt
trigger = {
has_variable = church_artifact_book_var
}
add_martial_lifestyle_xp = major_lifestyle_experience
stress_impact = {
dull = medium_stress_impact_gain
intellect_bad_1 = medium_stress_impact_gain
intellect_bad_2 = medium_stress_impact_gain
intellect_bad_3 = major_stress_impact_gain
}
}
option = { #give it to bishop
name = martial_chivalry.6002.b
trigger = {
exists = scope:bishop
scope:bishop = { can_equip_artifact = scope:church_artifact_scope }
}
scope:church_artifact_scope = {
set_owner = scope:bishop
equip_artifact_to_owner_replace = yes
}
add_piety = minor_piety_gain
add_martial_lifestyle_xp = medium_lifestyle_experience
}
option = { #burn it!
name = martial_chivalry.6002.c
trigger = {
faith = {
has_doctrine = tenet_aniconism
}
}
add_martial_lifestyle_xp = medium_lifestyle_experience
add_piety = medium_piety_gain
}
after = {
remove_variable = church_artifact_book_var
}
}
# You find a fair maiden/lad
martial_chivalry.6003 = {
type = character_event
title = martial_chivalry.6003.t
desc = {
desc = martial_chivalry.6003.desc_intro
first_valid = {
triggered_desc = {
trigger = {
OR = {
has_trait = disfigured
has_trait = beauty_bad
}
}
desc = martial_chivalry.6003.desc_ugly
}
triggered_desc = {
trigger = {
NOR = {
has_trait = disfigured
has_trait = beauty_bad
}
}
desc = martial_chivalry.6003.desc_pretty
}
}
}
theme = martial_chivalry_focus
override_background = {
reference = temple
}
left_portrait = {
character = root
animation = admiration
}
immediate = {
dummy_attracted_gender_effect = { TARGET = root }
}
option = { #help them
name = martial_chivalry.6003.a
duel = {
skill = learning
value = medium_skill_rating
50 = {
desc = martial_chivalry.6003.a_success
compare_modifier = {
value = scope:duel_value
multiplier = 2
}
modifier = {
OR = {
has_trait = forest_fighter
has_trait = jungle_stalker
}
add = 500
}
modifier = {
OR = {
has_trait = physique_good
has_trait = strong
}
add = 100
}
send_interface_toast = {
type = event_toast_effect_good
title = martial_chivalry.6003.a_success
left_icon = root
add_martial_lifestyle_xp = major_lifestyle_experience #so gallant!
}
}
50 = {
desc = martial_chivalry.6003.a_failure
compare_modifier = {
value = scope:duel_value
multiplier = -2
}
send_interface_toast = {
type = event_toast_effect_bad
title = martial_chivalry.6003.a_failure
left_icon = root
increase_wounds_no_death_effect = { REASON = lost_in_the_forest }
add_martial_lifestyle_xp = minor_lifestyle_experience #you tried
}
}
}
if = {
limit = {
OR = {
has_trait = disfigured
has_trait = beauty_bad
}
}
stress_impact = {
disfigured = medium_stress_impact_gain
beauty_bad_3 = medium_stress_impact_gain
beauty_bad_1 = minor_stress_impact_gain
beauty_bad_2 = minor_stress_impact_gain
arrogant = major_stress_impact_gain
}
}
}
option = { #ignore
name = martial_chivalry.6003.b
trigger = {
NOR = {
has_trait = zealous
has_trait = lunatic
has_trait = paranoid
has_trait = disfigured
has_trait = beauty_bad
}
}
add_martial_lifestyle_xp = medium_lifestyle_experience
stress_impact = {
craven = minor_stress_impact_loss
trusting = minor_stress_impact_gain
gregarious = minor_stress_impact_gain
compassionate = medium_stress_impact_gain
brave = medium_stress_impact_gain
gallant = major_stress_impact_gain
}
}
option = { #a ghost!
name = martial_chivalry.6003.c
trigger = {
OR = { #not adding the ugly traits because you will still think they're a ghost
has_trait = zealous
has_trait = intellect_bad
has_trait = paranoid
}
}
add_piety = medium_piety_gain
stress_impact = {
base = medium_stress_impact_gain
brave = minor_stress_impact_gain
}
}
option = { #they refuse your help
name = martial_chivalry.6003.d
flavor = martial_chivalry.6003.d_tt
trigger = {
OR = {
has_trait = disfigured
has_trait = beauty_bad
}
}
add_martial_lifestyle_xp = medium_lifestyle_experience
stress_impact = {
base = medium_stress_impact_loss
}
}
}
############################
# CHIVALRY: SPECIAL EVENTS #
############################
namespace = martial_chivalry_special
###################################
# Mounted Warrior Practice Battle # by Petter Vilberg
###################################
#Watch your knights in mock battle before the stablemaster brings out the horses
martial_chivalry_special.1201 = {
type = character_event
title = martial_chivalry_special.1201.t
desc = martial_chivalry_special.1201.desc
theme = martial_chivalry_focus
override_background = {
reference = courtyard
}
left_portrait = {
character = root
animation = interested
}
trigger = {
OR = {
has_focus = martial_chivalry_focus
AND = {
has_lifestyle = martial_lifestyle
any_maa_regiment = {
OR = {
is_unit_type = light_cavalry
is_unit_type = heavy_cavalry
}
}
}
}
NOT = { has_character_flag = had_event_martial_chivalry_special_1201 }
NOT = { has_character_flag = is_in_martial_special_event }
any_knight = {
is_available_adult = yes
}
}
immediate = {
add_character_flag = {
flag = is_in_martial_special_event
days = 200
}
add_character_flag = had_event_martial_chivalry_special_1201
random_courtier = {
limit = { martial > 9 }
save_scope_as = soldier
}
random_knight = {
limit = {
is_available_adult = yes
}
weight = {
base = 0
compare_modifier = {
value = martial
}
compare_modifier = {
factor = martial
}
}
save_scope_as = soldier
}
}
option = { #Head out for a ride
name = martial_chivalry_special.1201.a
custom_tooltip = martial_lifestyle_perk_indication
hidden_effect = {
trigger_event = {
id = martial_chivalry_special.1202
days = { 1 5 }
}
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_energy = 0.25
}
}
}
option = { #Run the quintain
name = martial_chivalry_special.1201.b
add_character_modifier = {
modifier = mounted_warrior_practice_modifier
days = 1825
}
remove_character_flag = is_in_martial_special_event
ai_chance = {
base = 50
modifier = {
add = -50
has_trait_rank = {
trait = wounded
rank >= 1
}
}
}
}
}
#Planning a charge with your cavalry
martial_chivalry_special.1202 = {
type = character_event
title = martial_chivalry_special.1202.t
desc = martial_chivalry_special.1202.desc
theme = martial_chivalry_focus
override_background = {
reference = wilderness
}
left_portrait = {
character = root
animation = jockey_wave
camera = camera_event_horse_left
}
right_portrait = {
character = scope:soldier
animation = jockey_idle
camera = camera_event_horse_left
}
option = {
name = martial_chivalry_special.1202.a
hidden_effect = {
trigger_event = martial_chivalry_special.1203
}
show_as_tooltip = {
add_martial_lifestyle_perk_points = 1
}
ai_chance = {
base = 50
}
}
option = {
name = martial_chivalry_special.1202.b
duel = {
skill = prowess
value = medium_skill_rating
20 = {
desc = martial_chivalry_special.1202.b_success
compare_modifier = {
value = scope:duel_value
multiplier = 0.5
}
show_as_tooltip = {
if = {
limit = {
NOT = { has_trait = aggressive_attacker }
number_of_commander_traits < commander_trait_limit
}
add_trait = aggressive_attacker
}
else = {
add_character_modifier = {
modifier = cavalry_charge_exercise_modifier
days = 3650
}
}
}
hidden_effect = {
trigger_event = martial_chivalry_special.1204
}
}
10 = {
desc = martial_chivalry_special.1202.b_failure
compare_modifier = {
value = scope:duel_value
multiplier = -0.5
}
send_interface_toast = {
type = event_toast_effect_bad
title = martial_chivalry_special.1202.b_failure
left_icon = root
increase_wounds_effect = { REASON = horse_riding_accident }
}
}
}
ai_chance = {
base = 50
modifier = {
add = 25
NOT = { has_trait = aggressive_attacker }
number_of_commander_traits < commander_trait_limit
}
}
}
}
#Deft maneuvering - you rank up
martial_chivalry_special.1203 = {
type = character_event
title = martial_chivalry_special.1203.t
desc = martial_chivalry_special.1203.desc
theme = martial_chivalry_focus
override_background = {
reference = wilderness
}
left_portrait = {
character = root
animation = jockey_gallop
camera = camera_event_horse_left
}
immediate = {
add_martial_lifestyle_perk_points = 1
}
option = {
name = martial_chivalry_special.1203.a
}
after = {
remove_character_flag = is_in_martial_special_event
}
}
#Vicious charge - You improve your cavalry's attack ability
martial_chivalry_special.1204 = {
type = character_event
title = martial_chivalry_special.1204.t
desc = martial_chivalry_special.1204.desc
theme = martial_chivalry_focus
override_background = {
reference = wilderness
}
left_portrait = {
character = root
animation = jockey_gallop
camera = camera_event_horse_left
}
immediate = {
set_signature_weapon_effect = yes
if = {
limit = {
NOT = { has_trait = aggressive_attacker }
number_of_commander_traits < commander_trait_limit
}
add_trait = aggressive_attacker
}
else = {
add_character_modifier = {
modifier = cavalry_charge_exercise_modifier
days = 3650
}
}
}
option = {
name = martial_chivalry_special.1204.a
}
after = {
remove_character_flag = is_in_martial_special_event
}
}
#################################
# Train a warhorse, by Linnéa Thimrén
#################################
martial_chivalry_special.1601 = {
type = character_event
title = martial_chivalry_special.1601.t
desc = martial_chivalry_special.1601.desc
theme = martial_chivalry_focus
override_background = {
reference = courtyard
}
left_portrait = {
character = root
animation = interested_left
}
trigger = {
OR = {
has_focus = martial_chivalry_focus
domicile ?= {
has_domicile_building = baggage_train_ample_steeds
}
}
NOR = {
has_character_flag = had_event_martial_chivalry_special_1601
has_character_flag = had_warhorse_story
}
}
immediate = {
add_character_flag = {
flag = is_in_martial_special_event
days = 200
}
add_character_flag = had_event_martial_chivalry_special_1601
random_dummy_gender_effect = yes #for horse gender
if = {
limit = {
has_royal_court = yes
employs_court_position = master_of_horse_court_position
any_court_position_holder = {
type = master_of_horse_court_position
is_available_ai_adult = yes
}
}
random_court_position_holder = {
type = master_of_horse_court_position
limit = { is_available_ai_adult = yes }
save_scope_as = m_horse
}
save_scope_as = horse_owner # in part of the chain, the Master of the horse will become root, so I need to find the same liege
}
}
option = { #I'll do my best!
name = martial_chivalry_special.1601.a
custom_tooltip = martial_lifestyle_perk_indication
custom_tooltip = martial_chivalry_special.1601.a.tt
trigger_event = {
id = martial_chivalry_special.1603
days = { 7 10 }
}
ai_chance = {
base = 100
}
}
option = { #Call the Master of Horse
name = martial_chivalry_special.1601.d
trigger = {
exists = scope:m_horse
}
scope:m_horse = {
trigger_event = {
id = martial_chivalry_special.1603
}
}
custom_tooltip = martial_chivalry_special.1601.d.tt
ai_chance = {
base = 100
}
}
option = { #Opt out gold
name = martial_chivalry_special.1601.b
add_gold = medium_gold_value
ai_chance = {
base = 0
ai_value_modifier = {
ai_greed = 0.75
}
}
}
option = { #Opt out modifier
name = martial_chivalry_special.1601.c
trigger = {
NOT = {
exists = scope:m_horse
}
}
add_character_modifier = {
modifier = warfare_stablemaster_tamed_wild_horse_modifier
years = 15
}
ai_chance = {
base = 20
ai_energy_target_modifier = { VALUE = -50 }
}
}
}
#How will you try to tame the horse?
martial_chivalry_special.1603 = {
type = character_event
title = martial_chivalry_special.1601.t
desc = martial_chivalry_special.1603.desc
theme = martial_chivalry_focus
override_background = {
reference = courtyard
}
left_portrait = {
character = root
animation = personality_bold
}
option = { #Direct approach - prowess/boldness
name = martial_chivalry_special.1603.a
flavor = martial_chivalry_special.1603.a.tt
hidden_effect = {
random_list = {
10 = {
#"Guaranteed" success
modifier = {
OR = {
prowess >= very_high_skill_rating
has_trait = brave
}
add = 100
}
#Success increase
modifier = {
add = {
value = prowess
subtract = average_skill_rating
multiply = 2 #10 at high skill
}
}
modifier = {
add = {
value = ai_boldness
divide = high_positive_ai_value
multiply = 10 #10 at high positive value
}
}
save_scope_value_as = {
name = success
value = yes
}
}
5 = { }
}
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = 0.75
}
compare_modifier = {
target = root
value = martial
multiplier = 1.5
}
}
}
option = { #Get it to trust you - diplomacy/compassion
name = martial_chivalry_special.1603.b
flavor = martial_chivalry_special.1603.b.tt
hidden_effect = {
random_list = {
10 = {
#"Guaranteed" success
modifier = {
OR = {
diplomacy >= very_high_skill_rating
has_trait = compassionate
}
add = 100
}
#Success increase
modifier = {
add = {
value = diplomacy
subtract = average_skill_rating
multiply = 2 #10 at high skill
}
}
modifier = {
add = {
value = ai_compassion
divide = high_positive_ai_value
multiply = 10 #10 at high positive value
}
}
save_scope_value_as = {
name = success
value = yes
}
}
5 = { }
}
}
ai_chance = {
base = 50
compare_modifier = {
target = root
value = diplomacy
multiplier = 2
}
compare_modifier = {
target = root
value = intrigue
multiplier = 1
}
}
}
option = { #Bribe it - intrigue/generosity
name = martial_chivalry_special.1603.c
flavor = martial_chivalry_special.1603.c.tt
hidden_effect = {
random_list = {
10 = {
#"Guaranteed" success
modifier = {
OR = {
intrigue >= very_high_skill_rating
has_trait = generous
}
add = 1000
}
#Success increase
modifier = {
add = {
value = intrigue
subtract = average_skill_rating
multiply = 2 #10 at high skill
}
}
modifier = {
add = {
value = ai_greed
divide = high_negative_ai_value
multiply = 10 #10 at high negative value
}
}
save_scope_value_as = {
name = success
value = yes
}
}
5 = { }
}
}
ai_chance = {
base = 50
compare_modifier = {
target = root
value = stewardship
multiplier = 2
}
compare_modifier = {
target = root
value = intrigue
multiplier = 1
}
}
}
after = {
trigger_event = {
id = martial_chivalry_special.1604
days = { 3 5 }
}
}
}
#How did it go? Opportunity to start the warhorse story if you did well!
martial_chivalry_special.1604 = {
type = character_event
title = martial_chivalry_special.1601.t
desc = {
first_valid = {
triggered_desc = {
trigger = {
exists = scope:success
}
desc = martial_chivalry_special.1604.desc_success
}
desc = martial_chivalry_special.1604.desc_failure
}
}
theme = martial_chivalry_focus
override_background = {
reference = courtyard
}
left_portrait = {
character = root
trigger = { NOT = { exists = scope:success } }
animation = shame
}
#it should be the left portrait again, but we can't have triggered cameras or 2 left portraits
right_portrait = {
character = root
trigger = { exists = scope:success }
animation = jockey_victory
camera = camera_event_horse_left
}
option = {
name = martial_chivalry_special.1604.a
trigger = {
exists = scope:success
trigger_if = {
limit = {
exists = scope:m_horse
}
scope:m_horse != root
}
}
start_warhorse_story_cycle_effect = yes
random_owned_story = {
type = story_cycle_martial_lifestyle_warhorse
if = {
limit = { scope:dummy_gender = { is_female = yes } }
assign_horse_gender_effect = { GENDER = female }
}
else = {
assign_horse_gender_effect = { GENDER = male }
}
}
add_martial_lifestyle_perk_points = 1
ai_chance = {
base = 100
}
}
option = {
name = martial_chivalry_special.1604.a_2
trigger = {
exists = scope:success
trigger_if = {
limit = {
exists = scope:m_horse
}
NOT = {
scope:m_horse = {
this = root
}
}
}
}
add_character_modifier = {
modifier = warfare_tamer_of_horses_modifier
years = 10
}
add_martial_lifestyle_perk_points = 1
ai_chance = {
base = 0
}
}
option = {
name = martial_chivalry_special.1604.c
trigger = {
exists = scope:success
exists = scope:m_horse
scope:m_horse = {
this = root
}
}
ai_chance = {
base = 100
}
scope:horse_owner = {
random_owned_story = {
type = story_cycle_martial_lifestyle_warhorse
if = {
limit = { scope:dummy_gender = { is_female = yes } }
assign_horse_gender_effect = { GENDER = female }
}
else = {
assign_horse_gender_effect = { GENDER = male }
}
}
send_interface_message = {
type = event_martial_text_good
left_icon = root
title = martial_chivalry_special.1604.t
desc = martial_chivalry_special.1604.succcess
start_warhorse_story_cycle_effect = yes
}
}
add_martial_lifestyle_perk_points = 1
}
option = {
name = martial_chivalry_special.1604.b
trigger = {
NOT = { exists = scope:success }
}
add_character_modifier = {
modifier = warfare_almost_tamed_wild_horse_modifier
years = 5
}
add_stress = minor_stress_gain
if = {
limit = {
exists = scope:horse_owner
exists = scope:m_horse
scope:m_horse = {
this = root
}
}
scope:horse_owner = {
send_interface_message = {
type = event_martial_bad_with_text
left_icon = root
title = martial_chivalry_special.1604.t.2
desc = martial_chivalry_special.1604.failure
}
}
}
ai_chance = {
base = 100
}
}
after = {
if = {
limit = {
has_character_flag = is_in_martial_special_event
}
remove_character_flag = is_in_martial_special_event
}
if = {
limit = {
exists = scope:horse_owner
scope:horse_owner = { has_character_flag = is_in_martial_special_event }
}
scope:horse_owner = { remove_character_flag = is_in_martial_special_event }
}
}
}