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

14526 lines
313 KiB
Text

namespace = ep2_tournament_events
##################################################
# DUEL
# 0001 - 0999
#
# MELEE
# 1000 - 1499
#
# ARCHERY
# 1500 - 1999
#
# WRESTLING/FISTFIGHTING
# 2000 - 2999
#
# QUINTAIN (Locale)
# 3500 - 3999
#
# JOUST
# 4000 - 4499
#
# RACE
# 4500 - 4999
#
# RECITAL
# 5500 - 5999
#
##################################################
#########################
### SHARED EVENTS ###
#########################
##############
### DUEL ###
##############
# Opponent is limping... you think
ep2_tournament_events.0001 = {
type = activity_event
title = ep2_tournament_events.0001.t
desc = ep2_tournament_events.0001.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = personality_cynical
}
right_portrait = {
character = scope:versus_contestant
animation = pain
}
cooldown = { years = 1 }
trigger = {
contest_versus_player_vs_ai_trigger = yes
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Events/Grand_Activities/Tournaments/ConstructionKits/ep2_event_grand_tournament_ck_male_grunts"
contest_versus_player_vs_ai_scope_effect = yes
if = {
limit = {
scope:activity = { has_current_phase = tournament_phase_wrestling }
}
tournament_pivotal_flavor_variable_effect = { CONTEST = wrestling ID = 0001 }
}
else_if = {
limit = {
scope:activity = { has_current_phase = tournament_phase_duel }
}
tournament_pivotal_flavor_variable_effect = { CONTEST = duel ID = 0001 }
}
}
# Work it out via smarts
option = {
name = ep2_tournament_events.0001.a
trigger = {
OR = {
has_trait = intellect_good
has_trait = shrewd
}
}
activity_tournament_change_contestant_score_effect = { SCORE = increase_major }
custom_tooltip = ep2_tournament_events.0001.a.tt
stress_impact = {
base = miniscule_stress_impact_loss
paranoid = minor_stress_impact_loss
trusting = minor_stress_impact_gain
}
ai_chance = {
base = 100
}
}
# Go for their leg
option = {
name = ep2_tournament_events.0001.b
duel = {
skills = { intrigue prowess }
target = scope:versus_contestant
#Your intuition was correct
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = ep2_tournament_events.0001.b.tt.win
left_icon = root
right_icon = scope:versus_contestant
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
}
desc = ep2_tournament_events.0001.b.tt.win
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_medium_value
}
}
stress_impact = {
paranoid = minor_stress_impact_loss
trusting = minor_stress_impact_gain
}
}
#Your opponent was bluffing
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = ep2_tournament_events.0001.b.tt.lose
left_icon = root
right_icon = scope:versus_contestant
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
}
desc = ep2_tournament_events.0001.b.tt.lose
stress_impact = {
paranoid = minor_stress_impact_gain
trusting = minor_stress_impact_loss
}
}
}
ai_chance = {
base = 100
}
}
# Ignore it
option = {
name = ep2_tournament_events.0001.c
activity_tournament_change_contestant_score_effect = { SCORE = decrease_minor }
stress_impact = {
paranoid = minor_stress_impact_gain
trusting = minor_stress_impact_loss
}
ai_chance = {
base = 100
}
}
}
# Opponent plays to the crowd
ep2_tournament_events.0002 = {
type = activity_event
title = ep2_tournament_events.0002.t
desc = ep2_tournament_events.0002.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = personality_cynical
}
right_portrait = {
character = scope:versus_contestant
animation = throne_room_cheer_1
}
cooldown = { years = 1 }
trigger = {
contest_versus_player_vs_ai_trigger = yes
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Ambience/2D/ep2_amb_2d_crowd_positive_reaction"
contest_versus_player_vs_ai_scope_effect = yes
if = {
limit = {
scope:activity = { has_current_phase = tournament_phase_wrestling }
}
tournament_pivotal_flavor_variable_effect = { CONTEST = wrestling ID = 0002 }
}
else_if = {
limit = {
scope:activity = { has_current_phase = tournament_phase_duel }
}
tournament_pivotal_flavor_variable_effect = { CONTEST = duel ID = 0002 }
}
}
# I'll show you!
option = {
name = ep2_tournament_events.0002.a
trigger = {
OR = {
has_trait = physique_good
has_trait = strong
}
}
custom_tooltip = ep2_tournament_events.0002.a.tt
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
add_prestige = minor_prestige_gain
scope:activity = {
add_activity_log_entry = {
key = tournament_pose_off_log
tags = { good }
score = 5
character = root
target = scope:versus_contestant
}
}
stress_impact = {
base = minor_stress_impact_loss
arrogant = medium_stress_impact_loss
humble = medium_stress_impact_gain
}
ai_chance = {
base = 100
}
}
# Demand they face you
option = {
name = ep2_tournament_events.0002.b
stress_impact = {
arrogant = minor_stress_impact_loss
humble = minor_stress_impact_gain
}
ai_chance = {
base = 100
}
}
# Attack them from behind
option = {
name = ep2_tournament_events.0002.c
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
accolade_minimal_glory_loss_with_checks_effect = yes
reverse_add_opinion = {
target = scope:versus_contestant
modifier = angry_opinion
opinion = -30
}
stress_impact = {
craven = medium_stress_impact_loss
brave = medium_stress_impact_gain
}
ai_chance = {
base = 100
}
}
}
scripted_trigger contest_versus_wants_to_resign_trigger = {
OR = {
dread_modified_ai_boldness = {
dreaded_character = root
value <= medium_negative_ai_value
}
AND = {
has_trait = wounded
has_trait = craven
}
AND = {
NOT = { has_trait = brave }
has_trait_rank = {
trait = wounded
rank >= 2
}
}
}
}
# Opponent wants to quit
ep2_tournament_events.0003 = {
type = activity_event
title = ep2_tournament_events.0003.t
desc = {
desc = ep2_tournament_events.0003.desc
first_valid = {
triggered_desc = { # Dread
trigger = {
scope:versus_contestant = {
has_dread_level_towards = {
target = root
level > 0
}
}
}
desc = ep2_tournament_events.0003.desc.dread
}
triggered_desc = { #Wounded and Craven
trigger = {
scope:versus_contestant = {
has_trait = wounded
has_trait = craven
}
}
desc = ep2_tournament_events.0003.desc.craven
}
triggered_desc = { # Badly wounded, not brave
trigger = {
scope:versus_contestant = {
NOT = { has_trait = brave }
has_trait_rank = {
trait = wounded
rank >= 2
}
}
}
desc = ep2_tournament_events.0003.desc.wounded
}
}
}
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
cooldown = { years = 1 }
left_portrait = {
character = root
animation = personality_honorable
}
right_portrait = {
character = scope:versus_contestant
animation = pain
}
# Reasons for the opposition to quit:
# They dread you
# They have medium or high wounds and aren't brave
# They have any level of wounds and are craven
trigger = {
contest_versus_player_vs_ai_trigger = yes
trigger_if = {
limit = { this = scope:versus_matchee }
scope:versus_matcher = { contest_versus_wants_to_resign_trigger = yes }
}
trigger_else = {
scope:versus_matchee = { contest_versus_wants_to_resign_trigger = yes }
}
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Ambience/2D/ep2_amb_2d_crowd_negative_reaction"
contest_versus_player_vs_ai_scope_effect = yes
if = {
limit = {
scope:activity = { has_current_phase = tournament_phase_wrestling }
}
tournament_pivotal_flavor_variable_effect = { CONTEST = wrestling ID = 0003 }
}
else_if = {
limit = {
scope:activity = { has_current_phase = tournament_phase_duel }
}
tournament_pivotal_flavor_variable_effect = { CONTEST = duel ID = 0003 }
}
}
# Mock their cowardice
option = {
name = ep2_tournament_events.0003.a
trigger = {
NOT = { has_trait = craven }
scope:versus_contestant = { has_trait = craven }
}
accolade_minimal_glory_loss_with_checks_effect = yes
reverse_add_opinion = {
target = scope:versus_contestant
modifier = tournament_mocked_opinion
opinion = -30
}
add_prestige = minor_prestige_gain
scope:activity = {
add_activity_log_entry = {
key = tournament_mocked_cowardice_log
tags = { good }
score = 5
character = root
target = scope:versus_contestant
}
}
stress_impact = {
compassionate = minor_stress_impact_gain
sadistic = minor_stress_impact_loss
}
ai_chance = {
base = 100
}
}
# Understand their cowardice
option = {
name = ep2_tournament_events.0003.b
trigger = {
has_trait = craven
scope:versus_contestant = { has_trait = craven }
}
reverse_add_opinion = {
target = scope:versus_contestant
modifier = grateful_opinion
opinion = 20
}
stress_impact = {
craven = medium_stress_impact_loss
arrogant = minor_stress_impact_gain
compassionate = minor_stress_impact_loss
humble = minor_stress_impact_loss
}
ai_chance = {
base = 100
}
}
# Acknowledge their wounds
option = {
name = ep2_tournament_events.0003.c
trigger = {
scope:versus_contestant = {
NOT = { has_trait = brave }
OR = {
has_trait = wounded_2
has_trait = wounded_3
}
}
}
scope:activity = {
add_activity_log_entry = {
key = tournament_wounded_quit_log
tags = { good }
score = 5
character = root
target = scope:versus_contestant
}
}
reverse_add_opinion = {
target = scope:versus_contestant
modifier = respect_opinion
opinion = 20
}
stress_impact = {
compassionate = minor_stress_impact_loss
sadistic = minor_stress_impact_gain
}
ai_chance = {
base = 100
}
}
# Tell them never to challenge you again
option = {
name = ep2_tournament_events.0003.d
reverse_add_opinion = {
target = scope:versus_contestant
modifier = angry_opinion
opinion = -30
}
stress_impact = {
arrogant = minor_stress_impact_loss
compassionate = minor_stress_impact_gain
humble = minor_stress_impact_gain
}
scope:activity = {
add_activity_log_entry = {
key = tournament_mocked_cowardice_log
tags = { good }
score = 5
character = root
target = scope:versus_contestant
}
}
ai_chance = {
base = 100
modifier = {
factor = 0
NOR = {
has_trait = compassionate
has_trait = humble
}
}
}
}
# Tell them they fought well
option = {
name = ep2_tournament_events.0003.e
accolade_minimal_glory_gain_with_checks_effect = yes
reverse_add_opinion = {
target = scope:versus_contestant
modifier = compliment_opinion
opinion = 20
}
stress_impact = {
arrogant = minor_stress_impact_gain
compassionate = minor_stress_impact_loss
humble = minor_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
has_trait = arrogant
}
}
}
after = {
tournament_contest_versus_resignation_effect = { RESIGNER = scope:versus_contestant CONTEST = wrestling SKILL = pugilism }
}
}
# Sword flies into the crowd
ep2_tournament_events.0004 = {
type = activity_event
title = ep2_tournament_events.0004.t
desc = ep2_tournament_events.0004.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
cooldown = { years = 1 }
left_portrait = {
character = root
animation = worry
}
right_portrait = {
character = scope:versus_contestant
animation = shock
}
lower_center_portrait = {
character = scope:watching_crowd
}
trigger = {
contest_versus_player_vs_ai_trigger = yes
scope:activity = {
any_guest_subset_current_phase = {
name = spectator
is_alive = yes
}
}
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Ambience/2D/ep2_amb_2d_crowd_surprise_reaction"
contest_versus_player_vs_ai_scope_effect = yes
tournament_pivotal_flavor_variable_effect = { CONTEST = duel ID = 0004 }
scope:activity = {
random_guest_subset_current_phase = {
name = spectator
limit = { is_alive = yes }
save_scope_as = watching_crowd
}
}
scope:watching_crowd = {
increase_wounds_no_death_effect = { REASON = death_spectator_injured }
if = {
limit = {
NOT = {
has_trait = scarred
}
}
add_trait = scarred
}
add_trait_xp = {
trait = scarred
value = {
integer_range = {
min = 5
max = 25
}
}
}
}
}
# Blame your opponent
option = {
name = ep2_tournament_events.0004.a
trigger = {
has_trait = deceitful
}
scope:watching_crowd = {
add_opinion = {
target = scope:versus_contestant
modifier = hurt_opinion
opinion = -50
}
}
scope:versus_contestant = {
add_prestige = minor_prestige_loss
add_opinion = {
target = root
modifier = angry_opinion
opinion = -30
}
}
scope:activity = {
add_activity_log_entry = {
key = tournament_failed_defuse_duel_log
tags = { good }
score = 5
character = root
target = scope:versus_contestant
}
}
stress_impact = {
compassionate = medium_stress_impact_gain
just = medium_stress_impact_gain
sadistic = miniscule_stress_impact_loss
arbitrary = miniscule_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
NOR = {
has_trait = compassionate
has_trait = just
}
}
}
}
# Apologise
option = {
name = ep2_tournament_events.0004.b
duel = {
skill = diplomacy
value = high_skill_rating
50 = { #They accept your apology
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
desc = ep2_tournament_events.0004.b.success
send_interface_toast = {
title = ep2_tournament_events.0004.b.success
left_icon = root
right_icon = scope:watching_crowd
scope:watching_crowd = {
add_opinion = {
target = root
modifier = forgiven_opinion
opinion = 15
}
}
}
desc = ep2_tournament_events.1001.c.success
}
50 = { #They don't accept the apology
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
desc = ep2_tournament_events.0004.b.failure
send_interface_toast = {
title = ep2_tournament_events.0004.b.failure
left_icon = root
right_icon = scope:watching_crowd
scope:watching_crowd = {
add_opinion = {
target = root
modifier = angry_opinion
opinion = -35
}
}
}
}
}
scope:activity = {
add_activity_log_entry = {
key = tournament_duel_apology_log
tags = { bad }
score = 5
character = root
target = scope:watching_crowd
}
}
stress_impact = {
compassionate = miniscule_stress_impact_loss
just = miniscule_stress_impact_loss
honest = minor_stress_impact_loss
sadistic = medium_stress_impact_gain
arbitrary = medium_stress_impact_gain
deceitful = major_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
NOR = {
has_trait = sadistic
has_trait = arbitrary
has_trait = deceitful
}
}
}
}
# Take a swing at opponent whilst they're distracted
option = {
name = ep2_tournament_events.0004.c
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
accolade_minimal_glory_loss_with_checks_effect = yes
reverse_add_opinion = {
target = scope:versus_contestant
modifier = angry_opinion
opinion = -40
}
stress_impact = {
ambitious = miniscule_stress_impact_loss
craven = miniscule_stress_impact_loss
impatient = minor_stress_impact_loss
brave = medium_stress_impact_gain
patient = medium_stress_impact_gain
content = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
NOR = {
has_trait = content
has_trait = patient
has_trait = brave
}
}
}
}
}
# Kick opponent in the groin
ep2_tournament_events.0005 = {
type = activity_event
title = ep2_tournament_events.0005.t
desc = {
desc = ep2_tournament_events.0005.start
first_valid = {
triggered_desc = {
trigger = {
scope:versus_contestant = { is_eunuch_trigger = yes }
}
desc = ep2_tournament_events.0005.eunuch
}
triggered_desc = {
trigger = {
scope:versus_contestant = { is_eunuch_trigger = no }
}
desc = ep2_tournament_events.0005.pain
}
}
}
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
cooldown = { years = 1 }
left_portrait = {
character = root
animation = worry
}
right_portrait = {
character = scope:versus_contestant
triggered_animation = { # Normal
trigger = {
scope:versus_contestant = { is_eunuch_trigger = no }
}
animation = pain
}
triggered_animation = { # Unfettered by any weak spots. BUILT DIFFERENT.
trigger = {
scope:versus_contestant = { is_eunuch_trigger = yes }
}
animation = anger
}
}
trigger = {
contest_versus_player_vs_ai_trigger = yes
}
weight_multiplier = {
base = 1
modifier = {
OR = {
has_trait = just
has_trait = compassionate
has_trait = gallant
}
add = -0.5
}
modifier = {
OR = {
has_trait = arbitrary
has_trait = sadistic
has_trait = ambitious
}
add = 0.5
}
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Ambience/2D/ep2_amb_2d_crowd_negative_reaction"
contest_versus_player_vs_ai_scope_effect = yes
tournament_pivotal_flavor_variable_effect = { CONTEST = duel ID = 0005 }
}
# Follow up
option = {
name = ep2_tournament_events.0005.a
trigger = {
scope:versus_contestant = { is_eunuch_trigger = no }
}
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
accolade_minimal_glory_loss_with_checks_effect = yes
add_prestige = minor_prestige_loss
add_character_modifier = {
modifier = tournament_low_blower_modifier
years = 10
}
scope:versus_contestant = {
add_prestige = minor_prestige_loss
add_opinion = {
target = root
modifier = angry_opinion
opinion = -50
}
}
stress_impact = {
compassionate = medium_stress_impact_gain
just = medium_stress_impact_gain
honest = medium_stress_impact_gain
sadistic = miniscule_stress_impact_loss
arbitrary = miniscule_stress_impact_loss
deceitful = miniscule_stress_impact_loss
gallant = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = -1
ai_vengefulness = 1
}
}
}
# Apologise
option = {
name = ep2_tournament_events.0005.b
trigger = {
scope:versus_contestant = { is_eunuch_trigger = no }
}
accolade_minimal_glory_gain_with_checks_effect = yes
reverse_add_opinion = {
target = scope:versus_contestant
modifier = angry_opinion
opinion = -20
}
stress_impact = {
compassionate = miniscule_stress_impact_loss
just = miniscule_stress_impact_loss
honest = minor_stress_impact_loss
sadistic = medium_stress_impact_gain
arbitrary = medium_stress_impact_gain
deceitful = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 1
ai_vengefulness = -1
}
}
}
# Oh no, they're not susceptible to my secret technique!
option = {
name = ep2_tournament_events.0005.c
trigger = {
scope:versus_contestant = { is_eunuch_trigger = yes }
}
activity_tournament_change_contestant_score_effect = { SCORE = decrease_miniscule }
reverse_add_opinion = {
target = scope:versus_contestant
modifier = dismissive_opinion
opinion = -25
}
stress_impact = {
ambitious = miniscule_stress_impact_loss
craven = miniscule_stress_impact_loss
impatient = minor_stress_impact_loss
brave = medium_stress_impact_gain
patient = medium_stress_impact_gain
content = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 0.5
ai_vengefulness = -0.5
}
}
}
}
# You have a chance to end them rightly
ep2_tournament_events.0006 = {
type = activity_event
title = ep2_tournament_events.0006.t
desc = ep2_tournament_events.0006.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
cooldown = { years = 1 }
left_portrait = {
character = root
animation = scheme
}
right_portrait = {
character = scope:versus_contestant
animation = worry
}
trigger = {
contest_versus_player_vs_ai_trigger = yes
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Ambience/2D/ep2_amb_2d_crowd_positive_reaction"
contest_versus_player_vs_ai_scope_effect = yes
tournament_pivotal_flavor_variable_effect = { CONTEST = duel ID = 0006 }
}
# End them rightly!
option = {
name = ep2_tournament_events.0006.a
flavor = ep2_tournament_events.0006.a.tt
activity_tournament_change_contestant_score_effect = { SCORE = increase_miniscule }
accolade_minimal_glory_gain_with_checks_effect = yes
add_character_modifier = {
modifier = tournament_roguish_duelist_modifier
years = 25
}
scope:versus_contestant = {
send_interface_toast = { #Send an interface toast so it's not just completely random if it's not an AI
title = ep2_tournament_events.0006.a.toast
left_icon = scope:versus_contestant
right_icon = root
add_prestige = medium_prestige_loss
add_character_modifier = {
modifier = tournament_ended_rightly_modifier
years = 15
}
}
add_opinion = {
target = root
modifier = tournament_ended_rightly_opinion
opinion = -60
}
}
scope:activity = {
add_activity_log_entry = {
key = tournament_ended_rightly_log
tags = { good }
score = 5
character = root
target = scope:versus_contestant
}
}
stress_impact = {
compassionate = medium_stress_impact_gain
just = medium_stress_impact_gain
honest = medium_stress_impact_gain
sadistic = minor_stress_impact_loss
arbitrary = minor_stress_impact_loss
deceitful = minor_stress_impact_loss
}
ai_chance = {
base = 30 #Deliberately lowered to ensure we don't see too much of this
ai_value_modifier = {
ai_compassion = -1
ai_vengefulness = 1
}
}
}
# Just follow up normally
option = {
name = ep2_tournament_events.0006.b
flavor = ep2_tournament_events.0006.b.tt
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
stress_impact = {
just = miniscule_stress_impact_loss
arbitrary = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 1
ai_vengefulness = -1
}
}
}
# Let them recover
option = {
name = ep2_tournament_events.0006.c
activity_tournament_change_contestant_score_effect = { SCORE = decrease_miniscule }
accolade_minor_glory_gain_with_checks_effect = yes
progress_towards_friend_effect = {
REASON = friend_duel_recovered
CHARACTER = scope:versus_contestant
OPINION = default_friend_opinion
}
stress_impact = {
ambitious = medium_stress_impact_gain
craven = medium_stress_impact_gain
impatient = medium_stress_impact_gain
vengeful = minor_stress_impact_gain
brave = miniscule_stress_impact_loss
patient = miniscule_stress_impact_loss
content = miniscule_stress_impact_loss
forgiving = miniscule_stress_impact_loss
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 0.5
ai_vengefulness = -0.5
}
}
}
}
# Your opponent offers you money to take a dive
ep2_tournament_events.0007 = {
type = activity_event
title = ep2_tournament_events.0007.t
desc = ep2_tournament_events.0007.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
cooldown = { years = 1 }
left_portrait = {
character = root
animation = worry
}
right_portrait = {
character = scope:versus_contestant
animation = beg
}
trigger = {
contest_versus_player_vs_ai_trigger = yes
trigger_if = {
limit = { this = scope:versus_matcher }
scope:versus_matchee.gold > 100
}
trigger_else = { scope:versus_matcher.gold > 100 }
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Ambience/2D/ep2_amb_2d_crowd_surprise_reaction"
contest_versus_player_vs_ai_scope_effect = yes
activity_tournament_change_contestant_score_effect = { SCORE = increase_major }
tournament_pivotal_flavor_variable_effect = { CONTEST = duel ID = 0007 }
}
# Accept
option = {
name = ep2_tournament_events.0007.a
scope:versus_contestant = {
pay_short_term_gold = {
target = root
gold = {
value = scope:versus_contestant.major_gold_value
max = 100
}
}
add_opinion = {
target = root
modifier = relieved_opinion
opinion = 30
}
}
save_scope_as = resigner
tournament_contest_versus_resignation_effect = { RESIGNER = root CONTEST = duel SKILL = foot }
scope:activity = {
add_activity_log_entry = {
key = tournament_suspicious_loss_log
tags = { bad }
score = 5
character = root
target = scope:versus_contestant
}
}
stress_impact = {
honest = medium_stress_impact_gain
just = medium_stress_impact_gain
ambitious = medium_stress_impact_gain
greedy = minor_stress_impact_loss
arbitrary = miniscule_stress_impact_loss
content = miniscule_stress_impact_loss
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = -1
ai_greed = 1
}
}
}
# Accept, but for a hook and half the gold
option = {
name = ep2_tournament_events.0007.b
trigger = {
can_add_hook = { #Ensure they can be indebted to you
type = loyalty_hook
target = scope:versus_contestant
}
}
add_hook = {
type = loyalty_hook
target = scope:versus_contestant
}
save_scope_as = resigner
tournament_contest_versus_resignation_effect = { RESIGNER = root CONTEST = duel SKILL = foot }
scope:activity = {
add_activity_log_entry = {
key = tournament_suspicious_loss_log
tags = { bad }
score = 5
character = root
target = scope:versus_contestant
}
}
stress_impact = {
honest = medium_stress_impact_gain
greedy = minor_stress_impact_gain
deceitful = miniscule_stress_impact_loss
ambitious = miniscule_stress_impact_loss
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = -1
ai_energy = 1
}
}
}
# Refuse
option = {
name = ep2_tournament_events.0007.c
scope:versus_contestant = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -30
}
}
stress_impact = {
arbitrary = medium_stress_impact_gain
just = miniscule_stress_impact_loss
greedy = medium_stress_impact_gain
ambitious = miniscule_stress_impact_loss
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = 1
ai_vengefulness = -1
}
}
}
}
# You try to read your opponent's move
ep2_tournament_events.0010 = {
type = activity_event
title = ep2_tournament_events.0010.t
desc = ep2_tournament_events.0010.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
cooldown = { years = 1 }
left_portrait = {
character = root
animation = marshal
}
right_portrait = {
character = scope:versus_contestant
animation = sword_coup_degrace
}
trigger = {
contest_versus_player_vs_ai_trigger = yes
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Events/Grand_Activities/Tournaments/ConstructionKits/ep2_event_grand_tournament_ck_metal_clash"
contest_versus_player_vs_ai_scope_effect = yes
tournament_pivotal_flavor_variable_effect = { CONTEST = duel ID = 0010 }
}
# Attempt a risky counter
option = {
name = ep2_tournament_events.0010.a
duel = {
skills = { prowess intrigue }
target = scope:versus_contestant
50 = { #You guess right
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
desc = ep2_tournament_events.0010.a.success
modifier = {
has_trait = lifestyle_blademaster
add = 10
}
modifier = {
AND = {
has_trait = tourney_participant
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 50
}
}
add = 10
}
modifier = {
has_trait = shrewd
add = 2
}
send_interface_toast = {
title = ep2_tournament_events.0010.a.success
left_icon = root
right_icon = scope:versus_contestant
activity_tournament_change_contestant_score_effect = { SCORE = increase_major }
reverse_add_opinion = {
target = scope:versus_contestant
modifier = respect_opinion
opinion = 10
}
}
min = 10
}
50 = { #You guess wrong
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
desc = ep2_tournament_events.0010.a.failure
modifier = {
scope:versus_contestant = {
has_trait = lifestyle_blademaster
}
add = 5
}
modifier = {
scope:versus_contestant = {
AND = {
has_trait = tourney_participant
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 50
}
}
}
add = 5
}
send_interface_toast = {
title = ep2_tournament_events.0010.a.failure
left_icon = root
right_icon = scope:versus_contestant
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
increase_wounds_no_death_effect = { REASON = duel }
if = {
limit = {
NOT = {
has_trait = scarred
}
}
add_trait = scarred
}
add_trait_xp = {
trait = scarred
value = {
integer_range = {
min = 5
max = 25
}
}
}
}
min = 10
}
}
stress_impact = {
brave = miniscule_stress_impact_loss
ambitious = miniscule_stress_impact_loss
impatient = miniscule_stress_impact_loss
patient = minor_stress_impact_gain
content = minor_stress_impact_gain
craven = minor_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = 1
ai_honor = 1
}
}
}
# Block it
option = {
name = ep2_tournament_events.0010.b
duel = {
skills = { prowess martial }
target = scope:versus_contestant
75 = { #It succeeds
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
desc = ep2_tournament_events.0010.b.success
modifier = {
has_trait = lifestyle_blademaster
add = 10
}
modifier = {
AND = {
has_trait = tourney_participant
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 50
}
}
add = 10
}
send_interface_toast = {
title = ep2_tournament_events.0010.b.success
left_icon = root
right_icon = scope:versus_contestant
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
reverse_add_opinion = {
target = scope:versus_contestant
modifier = respect_opinion
opinion = 10
}
}
min = 10
}
25 = { #It fails
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
desc = ep2_tournament_events.0010.a.failure
modifier = {
scope:versus_contestant = {
has_trait = lifestyle_blademaster
}
add = 7
}
modifier = {
scope:versus_contestant = {
AND = {
has_trait = tourney_participant
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 50
}
}
}
add = 7
}
send_interface_toast = {
title = ep2_tournament_events.0010.a.failure
left_icon = root
right_icon = scope:versus_contestant
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
increase_wounds_no_death_effect = { REASON = duel }
}
min = 10
}
}
stress_impact = {
fickle = miniscule_stress_impact_loss
patient = miniscule_stress_impact_loss
humble = miniscule_stress_impact_loss
stubborn = minor_stress_impact_gain
impatient = minor_stress_impact_gain
arrogant = minor_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = 0.5
ai_honor = 0.5
}
}
}
# Sidestep the blow entirely
option = {
name = ep2_tournament_events.0010.c
flavor = ep2_tournament_events.0010.c.tt
accolade_minimal_glory_gain_with_checks_effect = yes
activity_tournament_change_contestant_score_effect = { SCORE = decrease_miniscule }
stress_impact = {
brave = minor_stress_impact_gain
ambitious = minor_stress_impact_gain
impatient = minor_stress_impact_gain
patient = miniscule_stress_impact_loss
content = miniscule_stress_impact_loss
craven = miniscule_stress_impact_loss
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = -1
ai_honor = -1
}
}
}
}
# You attempt to fight with your other hand to surprise your opponent
ep2_tournament_events.0011 = {
type = activity_event
title = ep2_tournament_events.0011.t
desc = ep2_tournament_events.0011.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
cooldown = { years = 1 }
left_portrait = {
character = root
animation = aggressive_sword
}
right_portrait = {
character = scope:versus_contestant
animation = sword_coup_degrace
}
trigger = {
contest_versus_player_vs_ai_trigger = yes
NOT = { #For obvious reasons
has_trait = maimed
}
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Events/Grand_Activities/Tournaments/ConstructionKits/ep2_event_grand_tournament_ck_metal_woosh"
contest_versus_player_vs_ai_scope_effect = yes
tournament_pivotal_flavor_variable_effect = { CONTEST = duel ID = 0011 }
save_scope_value_as = {
name = weapon_range
value = {
integer_range = {
min = 1
max = 15
}
}
}
}
# Pop it to your hand with the greatest of ease
option = {
name = ep2_tournament_events.0011.a
trigger = {
OR = {
AND = {
has_trait = tourney_participant
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 50
}
}
has_trait = lifestyle_blademaster
has_trait = education_martial_prowess
}
}
flavor = ep2_tournament_events.0011.a.tt
add_character_modifier = tournament_ambidextrous_modifier
accolade_minor_glory_gain_with_checks_effect = yes
activity_tournament_change_contestant_score_effect = { SCORE = increase_major }
scope:activity = {
add_activity_log_entry = {
key = tournament_ambidextrous_log
tags = { good }
score = 5
character = root
target = scope:versus_contestant
}
}
stress_impact = {
base = minor_stress_impact_loss
deceitful = miniscule_stress_impact_loss
arrogant = miniscule_stress_impact_loss
honest = minor_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = 1
}
}
}
# Attempt to throw your weapon to your other hand
option = {
name = ep2_tournament_events.0011.b
trigger = {
NOR = {
AND = {
has_trait = tourney_participant
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 50
}
}
has_trait = lifestyle_blademaster
has_trait = education_martial_prowess
}
}
flavor = ep2_tournament_events.0011.b.tt
duel = {
skills = { prowess intrigue }
target = scope:versus_contestant
50 = { #It succeeds
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
desc = ep2_tournament_events.0011.b.success
modifier = {
has_trait = athletic
add = 5
}
modifier = {
AND = {
has_trait = tourney_participant
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 15
}
}
add = 5
}
min = 5
modifier = {
has_trait = education_martial_prowess
add = 15
}
scope:activity = {
add_activity_log_entry = {
key = tournament_ambidextrous_log
tags = { good }
score = 5
character = root
target = scope:versus_contestant
}
}
send_interface_toast = {
title = ep2_tournament_events.0011.b.success
left_icon = root
right_icon = scope:versus_contestant
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
add_character_modifier = {
modifier = tournament_ambidextrous_modifier
years = 25
}
}
}
40 = { #It fails
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
desc = ep2_tournament_events.0011.b.failure
modifier = {
scope:versus_contestant = {
has_trait = lifestyle_blademaster
}
add = 7
}
modifier = {
scope:versus_contestant = {
AND = {
has_trait = tourney_participant
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 50
}
}
}
add = 7
}
min = 4
send_interface_toast = {
title = ep2_tournament_events.0011.b.failure
left_icon = root
right_icon = scope:versus_contestant
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
}
}
10 = { #It fails horrendously
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
min = 1
desc = ep2_tournament_events.0011.b.criticalfailure
scope:activity = {
add_activity_log_entry = {
key = tournament_ambisinister_log
tags = { bad }
score = 5
character = root
target = scope:versus_contestant
}
}
send_interface_toast = {
title = ep2_tournament_events.0011.b.criticalfailure
left_icon = root
right_icon = scope:versus_contestant
activity_tournament_change_contestant_score_effect = { SCORE = decrease_major }
add_character_modifier = {
modifier = tournament_ambisinister_modifier
years = 25
}
increase_wounds_no_death_effect = { REASON = duel }
if = {
limit = {
NOT = {
has_trait = scarred
}
}
add_trait = scarred
}
add_trait_xp = {
trait = scarred
value = {
integer_range = {
min = 5
max = 25
}
}
}
}
}
}
stress_impact = {
deceitful = miniscule_stress_impact_loss
arrogant = miniscule_stress_impact_loss
honest = minor_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = 1
}
}
}
# Attempt to fight on, using your sword with two hands
option = {
name = ep2_tournament_events.0011.c
flavor = ep2_tournament_events.0011.c.tt
random_list = {
50 = {
modifier = { #This is for fuzzying up the random list so it randomises it a bit
add = scope:weapon_range
}
send_interface_toast = {
title = ep2_tournament_events.0011.c.success
left_icon = root
right_icon = scope:versus_contestant
custom_tooltip = ep2_tournament_events.0011.c.opinion
scope:activity = {
random_guest_subset_current_phase = {
name = spectator
limit = { is_alive = yes }
hidden_effect = {
add_opinion = {
target = root
opinion = 5
modifier = impressed_opinion
}
}
}
}
}
}
50 = {
send_interface_toast = {
title = ep2_tournament_events.0011.c.failure
left_icon = root
right_icon = scope:versus_contestant
increase_wounds_no_death_effect = { REASON = duel }
activity_tournament_change_contestant_score_effect = { SCORE = decrease_miniscule }
}
}
}
stress_impact = {
brave = miniscule_stress_impact_loss
ambitious = miniscule_stress_impact_loss
wrathful = miniscule_stress_impact_loss
calm = minor_stress_impact_gain
content = minor_stress_impact_gain
craven = minor_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = -1
}
}
}
}
# GO GO GADGET DUELING CLOAK
# No but for real, it's taken from Di Grassi's manuals (yes, I know, slightly out of period, shhhh, rule of cool):
# "The cloak may be flung or thrown with the edge of the sword, when one standeth at the low ward,
# with the point of the sword turned backwards, on the left side and the left side with the cloak upon it,
# followed at large upon the arm up to the elbow: but not wrapped about it, and whilest he falseth a reverse,
# he may take the cloak on the edge of the sword and fling it towards his enemy,
# and then strike him with such a blow as shall be then most for his advantage deliver."
ep2_tournament_events.0012 = {
type = activity_event
title = ep2_tournament_events.0012.t
desc = ep2_tournament_events.0012.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = marshal
}
right_portrait = {
character = scope:versus_contestant
animation = laugh
}
cooldown = { years = 1 }
trigger = {
contest_versus_player_vs_ai_trigger = yes
has_character_flag = cloak_duelist_flag #Ensure you are wearing your DUELING CLOAK
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Ambience/2D/ep2_amb_2d_crowd_surprise_reaction"
contest_versus_player_vs_ai_scope_effect = yes
tournament_pivotal_flavor_variable_effect = { CONTEST = duel ID = 0012 }
}
# Proudly fight in the cloak
option = {
name = ep2_tournament_events.0012.a
trigger = {
has_trait = arrogant
}
if = {
limit = {
NOT = {
has_character_modifier = tournament_fashionable_duelist_modifier
}
}
add_character_modifier = {
modifier = tournament_fashionable_duelist_modifier
years = 20
}
}
else = {
add_prestige = medium_prestige_gain
}
accolade_medium_glory_gain_with_checks_effect = yes
activity_tournament_change_contestant_score_effect = { SCORE = decrease_miniscule }
stress_impact = {
base = medium_stress_impact_loss
stubborn = miniscule_stress_impact_loss
fickle = minor_stress_impact_gain
}
ai_chance = {
base = 75
ai_value_modifier = {
ai_boldness = 1
ai_vengefulness = 0.5
}
}
}
# Throw the cloak at your enemy
option = {
name = ep2_tournament_events.0012.b
trigger = {
intrigue > 8
}
show_as_unavailable = {
always = yes
}
flavor = ep2_tournament_events.0012.b.tt
activity_tournament_change_contestant_score_effect = { SCORE = increase_major }
scope:activity = {
add_activity_log_entry = {
key = tournament_dueling_cloak_log
tags = { good }
score = 5
character = root
target = scope:versus_contestant
}
}
stress_impact = {
deceitful = minor_stress_impact_loss
arbitrary = minor_stress_impact_loss
just = medium_stress_impact_gain
honest = medium_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = 0.5
ai_vengefulness = 1
}
}
}
# Dis-cloak thyself
option = {
name = ep2_tournament_events.0012.c
flavor = ep2_tournament_events.0012.c.tt
stress_impact = {
ambitious = miniscule_stress_impact_loss
fickle = miniscule_stress_impact_loss
humble = miniscule_stress_impact_loss
content = medium_stress_impact_gain
stubborn = medium_stress_impact_gain
arrogant = medium_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = -1
ai_honor = 0.5
}
}
}
# Insist on wearing it
option = {
name = ep2_tournament_events.0012.d
trigger = {
NOT = {
has_trait = arrogant
}
}
if = {
limit = {
NOT = {
has_character_modifier = tournament_fashionable_duelist_modifier
}
}
add_character_modifier = {
modifier = tournament_fashionable_duelist_modifier
years = 10
}
}
else = {
add_prestige = medium_prestige_gain
}
activity_tournament_change_contestant_score_effect = { SCORE = decrease_minor }
stress_impact = {
stubborn = miniscule_stress_impact_loss
fickle = minor_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = 1
ai_honor = 1
}
}
}
after = {
remove_character_flag = cloak_duelist_flag
}
}
# Try to distract your opponent with words
ep2_tournament_events.0020 = {
type = activity_event
title = ep2_tournament_events.0020.t
desc = {
desc = ep2_tournament_events.0020.desc
first_valid = {
triggered_desc = {
trigger = {
scope:secret = {
exists = this
}
}
desc = ep2_tournament_events.0020.secret
}
}
}
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = scheme
}
right_portrait = {
character = scope:versus_contestant
animation = aggressive_sword
}
cooldown = { years = 1 }
trigger = {
contest_versus_player_vs_ai_trigger = yes
}
immediate = {
contest_versus_player_vs_ai_scope_effect = yes
tournament_pivotal_flavor_variable_effect = { CONTEST = duel ID = 0020 }
scope:versus_contestant = {
random_secret = {
limit = {
is_known_by = root
}
save_scope_as = secret
}
}
}
# Loudly reveal their secret
option = {
name = ep2_tournament_events.0020.a
trigger = {
scope:secret = {
exists = this
}
OR = {
has_trait = sadistic
has_trait = callous
has_trait = arbitrary
}
}
scope:secret = {
expose_secret = root
}
scope:versus_contestant = {
activity_tournament_change_contestant_score_effect = { SCORE = decrease_major }
}
accolade_minor_glory_loss_with_checks_effect = yes
reverse_add_opinion = {
target = scope:versus_contestant
modifier = angry_opinion
opinion = -50
}
scope:activity = {
add_activity_log_entry = {
key = tournament_secret_exposed_log
tags = { good }
score = 5
character = root
target = scope:versus_contestant
}
}
stress_impact = {
compassionate = medium_stress_impact_gain
just = medium_stress_impact_gain
sadistic = miniscule_stress_impact_loss
callous = miniscule_stress_impact_loss
arbitrary = miniscule_stress_impact_loss
}
ai_chance = {
base = 50
modifier = {
factor = 0
NOR = {
has_trait = compassionate
has_trait = just
}
}
}
}
# I know your seeeecreeeet!
option = {
name = ep2_tournament_events.0020.b
trigger = {
scope:secret = {
exists = this
}
}
add_internal_flag = special
scope:versus_contestant = {
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
}
accolade_minimal_glory_loss_with_checks_effect = yes
reverse_add_opinion = {
target = scope:versus_contestant
modifier = angry_opinion
opinion = -30
}
stress_impact = {
compassionate = minor_stress_impact_gain
just = minor_stress_impact_gain
sadistic = miniscule_stress_impact_loss
callous = miniscule_stress_impact_loss
arbitrary = miniscule_stress_impact_loss
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_vengefulness = 2
ai_boldness = 2
ai_honor = -2
ai_compassion = -2
}
}
}
# Try to distract them
option = {
name = ep2_tournament_events.0020.c
duel = {
skill = diplomacy
value = high_skill_rating
50 = { #They accept your apology
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
desc = ep2_tournament_events.0020.c.success
send_interface_toast = {
title = ep2_tournament_events.0020.c.success
left_icon = root
right_icon = scope:versus_contestant
scope:versus_contestant = {
activity_tournament_change_contestant_score_effect = { SCORE = decrease_minor }
}
}
}
50 = { #They don't accept the apology
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
desc = ep2_tournament_events.0020.c.failure
send_interface_toast = {
title = ep2_tournament_events.0020.c.failure
left_icon = root
right_icon = scope:versus_contestant
activity_tournament_change_contestant_score_effect = { SCORE = decrease_minor }
}
}
}
stress_impact = {
just = medium_stress_impact_gain
honest = minor_stress_impact_gain
arbitrary = miniscule_stress_impact_gain
deceitful = miniscule_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = 1
ai_honor = -1
}
}
}
# Decide against such underhanded tactics
option = {
name = ep2_tournament_events.0020.d
accolade_minimal_glory_gain_with_checks_effect = yes
stress_impact = {
just = miniscule_stress_impact_loss
honest = miniscule_stress_impact_loss
arbitrary = minor_stress_impact_gain
deceitful = minor_stress_impact_gain
}
ai_chance = {
base = 75
ai_value_modifier = {
ai_boldness = -0.5
ai_honor = 1
}
}
}
}
# Remind your opponent you slept with their family member
ep2_tournament_events.0021 = {
type = activity_event
title = ep2_tournament_events.0021.t
desc = ep2_tournament_events.0021.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = scheme
}
right_portrait = {
character = scope:versus_contestant
animation = dismissal
}
cooldown = { years = 1 }
trigger = {
contest_versus_player_vs_ai_trigger = yes
trigger_if = {
limit = { this = scope:versus_matcher }
scope:versus_matchee = {
any_close_family_member = {
OR = {
has_relation_lover = root
has_relation_soulmate = root
is_spouse_of = root
}
}
}
}
trigger_else = {
scope:versus_matcher = {
any_close_family_member = {
OR = {
has_relation_lover = root
has_relation_soulmate = root
is_spouse_of = root
}
}
}
}
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Ambience/2D/ep2_amb_2d_crowd_surprise_reaction"
contest_versus_player_vs_ai_scope_effect = yes
tournament_pivotal_flavor_variable_effect = { CONTEST = duel ID = 0021 }
scope:versus_contestant = {
random_close_family_member = {
limit = {
OR = {
has_relation_lover = root
has_relation_soulmate = root
is_spouse_of = root
}
}
save_scope_as = family
}
}
}
# CoD lobby trash talk, 2009
option = {
name = ep2_tournament_events.0021.a
trigger = {
OR = {
has_trait = sadistic
has_trait = arrogant
}
NOR = {
has_trait = chaste
has_trait = celibate
}
}
scope:versus_contestant = {
activity_tournament_change_contestant_score_effect = { SCORE = decrease_major }
}
reverse_add_opinion = {
target = scope:versus_contestant
modifier = absolutely_horrified_opinion
opinion = -60
}
reverse_add_opinion = {
target = scope:family
modifier = insulted_opinion
opinion = -20
}
stress_impact = {
base = minor_stress_impact_loss
compassionate = medium_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_vengefulness = 2
ai_boldness = 2
ai_honor = -2
ai_compassion = -2
}
}
}
# Thou hast undone our mother!
option = {
name = ep2_tournament_events.0021.b
scope:versus_contestant = {
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
}
accolade_minimal_glory_gain_with_checks_effect = yes
reverse_add_opinion = {
target = scope:versus_contestant
modifier = angry_opinion
opinion = -40
}
stress_impact = {
compassionate = minor_stress_impact_gain
just = minor_stress_impact_gain
sadistic = miniscule_stress_impact_loss
arbitrary = miniscule_stress_impact_loss
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_vengefulness = 2
ai_boldness = 2
ai_honor = -2
ai_compassion = -2
}
}
}
# Stay out of it
option = {
name = ep2_tournament_events.0021.c
activity_tournament_change_contestant_score_effect = { SCORE = decrease_minor }
stress_impact = {
compassionate = miniscule_stress_impact_loss
just = miniscule_stress_impact_loss
content = miniscule_stress_impact_loss
ambitious = minor_stress_impact_gain
sadistic = minor_stress_impact_gain
arbitrary = minor_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_vengefulness = -2
ai_boldness = -2
ai_honor = 2
ai_compassion = 2
}
}
}
}
###############
### MELEE ###
###############
# Melee spills over into nearby town
ep2_tournament_events.1001 = {
type = activity_event
title = ep2_tournament_events.1001.t
desc = ep2_tournament_events.1001.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = worry
}
cooldown = { years = 1 }
trigger = {
NOT = {
has_variable = tournament_village_destroyed
}
OR = {
involved_activity.activity_location = {
has_holding_type = church_holding
barony = {
lessee = {
this != root #it's not you
is_ai = yes
is_adult = yes
}
}
}
scope:activity.activity_location.province_owner != root
}
}
immediate = {
play_sound_effect = "event:/SFX/Ambience/3DMapEmitters/Nature/sfx_amb_3d_fire"
scope:activity.activity_location.province_owner = { save_scope_as = mayor }
tournament_pivotal_flavor_variable_effect = { CONTEST = melee ID = 1001 }
}
# Make everyone stop
option = {
name = ep2_tournament_events.1001.a
trigger = {
has_trait = august
}
add_prestige = medium_prestige_value
stress_impact = {
craven = medium_stress_impact_gain
content = minor_stress_impact_gain
humble = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
NOR = {
has_trait = craven
has_trait = content
has_trait = humble
}
}
}
}
# Stubbornly refuse to leave
option = {
name = ep2_tournament_events.1001.b
trigger = {
has_trait = stubborn
}
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
scope:activity.activity_location = {
add_province_modifier = {
modifier = village_destroyed_modifier
years = 10
}
}
scope:activity = {
add_activity_log_entry = {
key = tournament_village_burned_log
tags = { bad }
score = 5
character = root
}
}
stress_impact = {
craven = medium_stress_impact_gain
content = minor_stress_impact_gain
humble = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
NOR = {
has_trait = craven
has_trait = content
has_trait = humble
}
}
}
}
# Attempt to call a truce
option = {
name = ep2_tournament_events.1001.c
duel = {
skill = diplomacy
value = high_skill_rating
50 = { #The contestants acquiesce
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = ep2_tournament_events.1001.c.success
left_icon = root
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
add_prestige = minor_prestige_gain
}
desc = ep2_tournament_events.1001.c.success
}
50 = { #Nobody listens
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = ep2_tournament_events.1001.c.success
left_icon = root
activity_tournament_change_contestant_score_effect = { SCORE = decrease_minor }
add_prestige = minor_prestige_loss
}
desc = ep2_tournament_events.1001.c.failure
scope:activity = {
add_activity_log_entry = {
key = tournament_village_burned_log
tags = { bad }
score = 5
character = root
}
}
scope:activity.activity_location = {
add_province_modifier = {
modifier = village_destroyed_modifier
years = 10
}
}
set_variable = {
days = 150 #Want it to last the entire duration of a tournament
name = tournament_village_destroyed
}
}
}
stress_impact = {
brave = medium_stress_impact_gain
ambitious = minor_stress_impact_gain
arrogant = minor_stress_impact_gain
}
ai_chance = {
base = 100
}
}
# Leave
option = {
name = ep2_tournament_events.1001.d
set_variable = {
days = 150 #Want it to last the entire duration of a tournament
name = tournament_village_destroyed
}
scope:activity.activity_location = {
add_province_modifier = {
modifier = village_destroyed_modifier
years = 10
}
}
scope:activity = {
add_activity_log_entry = {
key = tournament_village_burned_log
tags = { bad }
score = 5
character = root
}
}
stress_impact = {
craven = minor_stress_impact_loss
content = miniscule_stress_impact_loss
brave = medium_stress_impact_gain
ambitious = medium_stress_impact_gain
arrogant = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
NOR = {
has_trait = brave
has_trait = ambitious
has_trait = arrogant
}
}
}
}
}
# Village mayor approaches you furiously
ep2_tournament_events.1002 = {
type = activity_event
title = ep2_tournament_events.1002.t
desc = ep2_tournament_events.1002.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = worry
}
right_portrait = {
character = scope:mayor
animation = anger
}
cooldown = { years = 1 }
trigger = {
has_variable = tournament_village_destroyed # ensure village actually got ruined
scope:activity.activity_location.province_owner != root
}
immediate = {
scope:activity.activity_location.province_owner = { save_scope_as = mayor }
scope:activity.activity_location = { save_scope_as = holding }
}
# Offer to rebuild using your expertise
option = {
name = ep2_tournament_events.1002.a
trigger = {
has_trait = architect
}
reverse_add_opinion = {
target = scope:mayor
opinion = 20
modifier = pleased_opinion
}
if = {
limit = {
this != scope:host
}
reverse_add_opinion = {
target = scope:host
opinion = 20
modifier = pleased_opinion
}
}
scope:holding = {
remove_province_modifier = village_destroyed_modifier
add_province_modifier = {
modifier = village_rebuilt_modifier
years = 10
}
}
stress_impact = {
content = minor_stress_impact_gain
humble = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
NOR = {
has_trait = content
has_trait = humble
}
}
}
}
# Intimidate the mayor
option = {
name = ep2_tournament_events.1002.b
trigger = {
dread >= high_dread
}
add_internal_flag = special
reverse_add_opinion = {
target = scope:mayor
opinion = -30
modifier = scared_opinion
}
stress_impact = {
sadistic = minor_stress_impact_loss
content = minor_stress_impact_gain
humble = minor_stress_impact_gain
compassionate = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
NOR = {
has_trait = content
has_trait = humble
has_trait = compassionate
}
}
}
}
# Offer to pay for the damage
option = {
name = ep2_tournament_events.1002.c
remove_short_term_gold = medium_gold_value
scope:holding = {
remove_province_modifier = village_destroyed_modifier
}
reverse_add_opinion = {
target = scope:mayor
opinion = 10
modifier = kindness_opinion
}
scope:activity = {
add_activity_log_entry = {
key = tournament_village_paid_log
tags = { good }
score = 5
character = root
target = scope:mayor
}
}
stress_impact = {
greedy = major_stress_impact_gain
generous = miniscule_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
has_trait = greedy
}
}
}
# Send the mayor away
option = {
name = ep2_tournament_events.1002.d
progress_towards_rival_effect = {
REASON = rival_melee_dismissed_mayor
CHARACTER = scope:mayor
OPINION = default_rival_opinion
}
stress_impact = {
arrogant = miniscule_stress_impact_loss
compassionate = minor_stress_impact_gain
just = minor_stress_impact_gain
humble = minor_stress_impact_gain
honest = minor_stress_impact_gain
}
ai_chance = {
base = 100
}
}
}
# Your weapon is knocked from your grasp; retrieve it or switch to a reserve?
ep2_tournament_events.1003 = {
type = activity_event
title = ep2_tournament_events.1003.t
desc = ep2_tournament_events.1003.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = shock
}
artifact = {
target = scope:tournament_weapon
position = lower_center_portrait
}
cooldown = { years = 1 }
trigger = {
exists = var:contest_aptitude
scope:activity = {
any_guest_subset_current_phase = {
name = qualified
this = root
}
any_guest_subset_current_phase = { # Just to make sure there's still some alive people
name = qualified
contest_event_general_contestant_valid_trigger = yes
}
}
any_character_artifact = {
is_equipped = yes
artifact_slot_type = primary_armament
}
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Ambience/2D/ep2_amb_2d_crowd_surprise_reaction"
tournament_pivotal_flavor_variable_effect = { CONTEST = melee ID = 1003 }
random_character_artifact = {
limit = {
is_equipped = yes
artifact_slot_type = primary_armament
}
unequip_artifact_from_owner = yes
save_scope_as = tournament_weapon
}
save_scope_value_as = {
name = weapon_range
value = {
integer_range = {
min = 0
max = 5
}
}
}
activity_tournament_change_contestant_score_effect = { SCORE = decrease_minor }
}
# Dive for it
option = {
name = ep2_tournament_events.1003.a
random_list = {
10 = { #You successfully retrieve it
custom_tooltip = ep2_tournament_events.1003.a.tt.success
modifier = { #Strong and Athletic are nice catch-all traits for having quick reflexes
add = 5
OR = {
has_trait = strong
has_trait = athletic
}
}
modifier = { #add a good physique too, for the same reasons
add = 2
has_trait = physique_good
}
modifier = { #This is for fuzzying up the random list so it randomises it a bit
add = scope:weapon_range
}
send_interface_toast = {
title = ep2_tournament_events.1003.a.tt.success
left_icon = root
scope:tournament_weapon = {
equip_artifact_to_owner = yes
}
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
if = {
limit = { has_trait = tourney_participant }
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_minor_value
}
}
}
stress_impact = {
base = miniscule_stress_impact_loss
arrogant = miniscule_stress_impact_loss
content = minor_stress_impact_gain
lazy = minor_stress_impact_gain
}
}
10 = { #You have to go back later and find it
custom_tooltip = ep2_tournament_events.1003.a.tt.failure
send_interface_toast = {
title = ep2_tournament_events.1003.a.tt.failure
left_icon = root
}
stress_impact = {
base = miniscule_stress_impact_gain
arrogant = minor_stress_impact_gain
content = miniscule_stress_impact_loss
lazy = miniscule_stress_impact_loss
}
}
}
ai_chance = {
base = 100
modifier = {
factor = 0
NOT = {
has_trait = arrogant
}
}
}
}
# Switch to a different weapon
option = {
name = ep2_tournament_events.1003.b
flavor = ep2_tournament_events.1003.b.tt
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_medium_value
}
}
activity_tournament_change_contestant_score_effect = { SCORE = decrease_minor }
stress_impact = {
arrogant = medium_stress_impact_gain
content = minor_stress_impact_gain
humble = minor_stress_impact_gain
}
ai_chance = { #Get out option
base = 100
}
}
}
# A comely [non-martial gender] has taken a wrong turn and ended up in the melee!
ep2_tournament_events.1004 = {
type = activity_event
title = ep2_tournament_events.1004.t
desc = ep2_tournament_events.1004.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = personality_honorable
}
right_portrait = {
character = scope:comely_stray
animation = worry
}
lower_center_portrait = {
character = scope:rescuer_knight
}
cooldown = { years = 1 }
trigger = {
exists = var:contest_aptitude
scope:activity = {
any_attending_character = {
count < 240 #Max is 250 but attendance is open so leaving some space
}
any_guest_subset_current_phase = {
name = qualified
this = root
}
any_guest_subset_current_phase = {
name = qualified
contest_event_general_contestant_valid_trigger = yes
is_knight_of = root
}
}
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Events/Grand_Activities/Tournaments/ConstructionKits/ep2_event_grand_tournament_ck_metal_clash"
tournament_pivotal_flavor_variable_effect = { CONTEST = melee ID = 1004 }
create_character = {
template = beautiful_peasant_character
age = { age_compared_to_root_minus_ten_always_adult age_compared_to_root_plus_ten_always_adult }
gender_female_chance = root_attraction_based_female_chance
location = scope:activity.activity_location
faith = root.location.faith
culture = root.location.culture
save_scope_as = comely_stray
}
scope:comely_stray = {
hidden_effect = {
add_to_activity = scope:activity
}
}
scope:activity = {
random_guest_subset_current_phase = {
name = qualified
limit = {
contest_event_general_contestant_valid_trigger = yes
is_knight_of = root
}
save_scope_as = rescuer_knight
}
}
}
# Lustful/Seducer option that has you escort them completely off the field of battle
option = {
name = ep2_tournament_events.1004.a
trigger = {
OR = {
has_trait = lustful
has_trait = seducer
}
might_cheat_on_every_partner_trigger = yes
}
flavor = ep2_tournament_events.1004.a.tt
accolade_minor_glory_gain_with_checks_effect = yes
had_sex_with_effect = {
CHARACTER = scope:comely_stray
PREGNANCY_CHANCE = 50
}
if = {
limit = {
can_set_relation_lover_trigger = { CHARACTER = scope:comely_stray }
}
set_relation_lover = {
TARGET = scope:comely_stray
REASON = lover_saved_melee
}
}
remove_variable = contest_aptitude
scope:activity = {
add_activity_log_entry = {
key = tournament_seducer_log
tags = { good }
score = 5
character = root
target = scope:comely_stray
# Effect
custom_description = {
text = tournament_contest_withdraw_tt
subject = root
}
}
}
stress_impact = {
base = minor_stress_impact_loss
chaste = massive_stress_impact_gain #technically possible if you're a Seducer
content = minor_stress_impact_gain
lazy = minor_stress_impact_gain
compassionate = miniscule_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = chaste
has_trait = brave
}
}
}
}
# Well well, how would you like a dashing ladylord to sweep you off your feet?
option = {
name = ep2_tournament_events.1004.a # Same name as above to re-use loc
trigger = {
NOR = {
has_trait = lustful
has_trait = seducer
}
}
accolade_minimal_glory_gain_with_checks_effect = yes
scope:comely_stray = { #Goodness, so dashing!
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 40
}
}
add_courtier = scope:comely_stray
if = {
limit = {
can_start_scheme = {
type = seduce
target_character = scope:comely_stray
}
}
start_scheme = {
type = seduce
target_character = scope:comely_stray
}
}
scope:activity = {
add_activity_log_entry = {
key = tournament_swept_off_feet_log
tags = { good }
score = 5
character = root
target = scope:comely_stray
}
}
stress_impact = {
chaste = major_stress_impact_gain
content = minor_stress_impact_gain
lazy = minor_stress_impact_gain
compassionate = miniscule_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = chaste
has_trait = brave
}
}
}
}
# Send a knight to rescue them
option = {
name = ep2_tournament_events.1004.c
activity_tournament_change_contestant_score_effect = { SCORE = decrease_minor }
scope:rescuer_knight = {
accolade_minor_glory_gain_with_checks_effect = yes
}
scope:comely_stray = {
add_opinion = {
modifier = grateful_opinion
target = scope:rescuer_knight
opinion = 40
}
}
stress_impact = {
lustful = major_stress_impact_gain
arrogant = medium_stress_impact_gain
brave = medium_stress_impact_gain
humble = miniscule_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = arrogant
has_trait = lustful
}
}
}
}
# They can fend for themselves
option = {
name = ep2_tournament_events.1004.d
scope:comely_stray = {
add_opinion = {
modifier = cruelty_opinion
target = root
opinion = -30
}
}
random_list = {
7 = { #They escape unharmed
desc = ep2_tournament_events.1004.d.escape.tt
show_chance = no #Make it uncertain for all three
send_interface_toast = {
title = ep2_tournament_events.1004.d.escape.tt
left_icon = root
right_icon = scope:comely_stray
}
}
5 = { #They get injured
desc = ep2_tournament_events.1004.d.injured.tt
show_chance = no
send_interface_toast = {
title = ep2_tournament_events.1004.d.injured.tt
left_icon = root
right_icon = scope:comely_stray
scope:comely_stray = {
increase_wounds_effect = { REASON = battle }
if = {
limit = {
NOT = {
has_trait = scarred
}
}
add_trait = scarred
}
add_trait_xp = {
trait = scarred
value = {
integer_range = {
min = 35
max = 100
}
}
}
}
}
}
3 = { #They die
desc = ep2_tournament_events.1004.d.dead.tt
show_chance = no
scope:activity = {
add_activity_log_entry = {
key = tournament_melee_death_log
tags = { bad }
score = 5
character = root
target = scope:comely_stray
}
}
send_interface_toast = {
title = ep2_tournament_events.1004.d.dead.tt
left_icon = root
right_icon = scope:comely_stray
scope:comely_stray = {
death = { death_reason = death_wounds }
}
}
}
}
stress_impact = {
lustful = major_stress_impact_gain
brave = medium_stress_impact_gain
compassionate = medium_stress_impact_gain
lazy = minor_stress_impact_loss
arbitrary = miniscule_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = lustful
has_trait = brave
has_trait = compassionate
}
}
}
}
}
# Death Event: You step into a throat strike
ep2_tournament_events.1005 = {
type = activity_event
title = ep2_tournament_events.1005.t
desc = ep2_tournament_events.1005.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = poison
}
cooldown = { years = 5 }
trigger = {
scope:activity = {
any_guest_subset_current_phase = {
name = qualified
this = root
}
}
}
# Die
option = {
play_sound_effect = "event:/DLC/EP2/SFX/Events/Grand_Activities/Tournaments/ConstructionKits/ep2_event_grand_tournament_ck_metal_clash"
name = ep2_tournament_events.1005.a
remove_variable = contest_aptitude
scope:activity = {
add_activity_log_entry = {
key = tournament_melee_death_log
tags = { bad }
score = 10
character = root
}
}
death = {
death_reason = death_tournament_melee_throat
}
ai_chance = {
base = 100
}
}
}
# Ransom an opponent
ep2_tournament_events.1006 = {
type = activity_event
title = ep2_tournament_events.1006.t
desc = {
desc = ep2_tournament_events.1006.start
first_valid = {
triggered_desc = {
trigger = {
OR = {
has_relation_rival = scope:surrendering_knight
has_relation_nemesis = scope:surrendering_knight
}
}
desc = ep2_tournament_events.1006.rival
}
triggered_desc = {
trigger = {
AND = {
NOR = {
has_relation_rival = scope:surrendering_knight
has_relation_nemesis = scope:surrendering_knight
}
scope:surrendering_knight.gold < 5
}
}
desc = {
desc = ep2_tournament_events.1006.normal
desc = ep2_tournament_events.1006.broke
}
}
triggered_desc = {
trigger = {
NOR = {
has_relation_rival = scope:surrendering_knight
has_relation_nemesis = scope:surrendering_knight
}
}
desc = ep2_tournament_events.1006.normal
}
}
}
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = sword_coup_degrace
}
right_portrait = {
character = scope:surrendering_knight
animation = sword_yield_start
}
cooldown = { years = 5 }
trigger = {
scope:activity = {
any_guest_subset_current_phase = {
name = qualified
contest_event_general_contestant_valid_trigger = yes
root = this
}
any_guest_subset_current_phase = {
name = qualified
contest_event_general_contestant_valid_trigger = yes
is_ai = yes
}
}
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Ambience/2D/ep2_amb_2d_crowd_positive_reaction"
tournament_pivotal_flavor_variable_effect = { CONTEST = melee ID = 1006 }
scope:activity = {
random_guest_subset_current_phase = {
name = qualified
limit = {
contest_event_general_contestant_valid_trigger = yes
is_ai = yes
}
save_scope_as = surrendering_knight
}
}
save_scope_value_as = { #Save their gold
name = surrendering_knight_gold
value = scope:surrendering_knight.gold
}
save_scope_value_as = { #Save a fifth of their gold as a ransom
name = gold_percentage
value = {
value = scope:surrendering_knight.gold
multiply = 0.2
}
}
if = {
limit = {
scope:surrendering_knight ?= {
any_equipped_character_artifact = {
OR = {
artifact_slot_type = primary_armament
artifact_slot_type = armor
artifact_slot_type = helmet
}
}
}
}
scope:surrendering_knight = {
random_equipped_character_artifact = {
limit = {
OR = {
artifact_slot_type = primary_armament
artifact_slot_type = armor
artifact_slot_type = helmet
}
}
save_scope_as = artifact
}
}
}
else = {
create_artifact_brooch_effect = {
OWNER = scope:surrendering_knight
SMITH = scope:surrendering_knight
}
}
if = {
limit = { has_trait = tourney_participant }
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_minor_value
}
add_trait_xp = {
trait = tourney_participant
track = horse
value = tournament_hastiludes_xp_gain_minor_value
}
}
scope:surrendering_knight = {
accolade_medium_glory_loss_with_checks_effect = yes
}
}
# Take their eye
option = {
name = ep2_tournament_events.1006.a
trigger = {
OR = {
has_relation_rival = scope:surrendering_knight
has_relation_nemesis = scope:surrendering_knight
}
}
add_internal_flag = special
if = {
limit = {
scope:surrendering_knight = {
has_relation_nemesis = root
}
}
scope:surrendering_knight = {
add_trait = disfigured
}
}
else_if = {
limit = {
scope:surrendering_knight = {
has_relation_rival = root
}
}
scope:surrendering_knight = {
add_trait = one_eyed
}
}
stress_impact = {
base = miniscule_stress_impact_loss
compassionate = massive_stress_impact_gain
forgiving = massive_stress_impact_gain
vengeful = minor_stress_impact_loss
sadistic = minor_stress_impact_loss
}
ai_chance = {
base = 25
modifier = {
factor = 0
OR = {
has_trait = compassionate
has_trait = forgiving
}
}
}
}
# Take the ransom
option = {
name = ep2_tournament_events.1006.b
trigger = {
scope:surrendering_knight.gold > 4
}
scope:surrendering_knight = {
pay_short_term_gold = {
target = root
gold = scope:gold_percentage
}
}
scope:activity = {
add_activity_log_entry = {
key = tournament_ransom_log
tags = { good }
score = 5
character = root
target = scope:surrendering_knight
}
}
stress_impact = { # Deliberately low; we want the player to pick this option the most
greedy = miniscule_stress_impact_loss
just = miniscule_stress_impact_loss
generous = miniscule_stress_impact_gain
arbitrary = miniscule_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 0.5
ai_vengefulness = -0.5
}
}
}
# Take a piece of their armour/weaponry
option = {
name = ep2_tournament_events.1006.c
trigger = {
scope:surrendering_knight = {
any_equipped_character_artifact = {
count >= 1
OR = {
artifact_slot_type = primary_armament
artifact_slot_type = armor
artifact_slot_type = helmet
}
}
}
}
if = {
limit = {
scope:surrendering_knight = {
any_equipped_character_artifact = {
count >= 1
OR = {
artifact_slot_type = primary_armament
artifact_slot_type = armor
artifact_slot_type = helmet
}
save_temporary_scope_as = artifact
}
}
}
scope:artifact = {
set_owner = root
}
}
scope:activity = {
add_activity_log_entry = {
key = tournament_ransom_log
tags = { good }
score = 5
character = root
target = scope:surrendering_knight
}
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = 0.5
ai_vengefulness = -0.5
}
}
}
# Take a tiny amount of gold
option = {
name = ep2_tournament_events.1006.d
trigger = {
scope:surrendering_knight = {
any_equipped_character_artifact = {
count = 0
}
gold < 4
}
}
scope:surrendering_knight = {
pay_short_term_gold = {
target = root
gold = 5
}
}
scope:activity = {
add_activity_log_entry = {
key = tournament_ransom_log
tags = { good }
score = 5
character = root
target = scope:surrendering_knight
}
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = 0.5
ai_vengefulness = -0.5
}
}
}
# Let them go free
option = {
name = ep2_tournament_events.1006.e
add_prestige = 50 #Small bit of prestige for being gracious
reverse_add_opinion = {
modifier = grateful_opinion
target = scope:surrendering_knight
opinion = 25
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = -1
ai_vengefulness = -1
}
}
}
}
# You take a minute at a refuge
ep2_tournament_events.1007 = {
type = activity_event
title = ep2_tournament_events.1007.t
desc = ep2_tournament_events.1007.desc
theme = tournament_contest
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = thinking
}
right_portrait = {
character = scope:teammate_1
}
lower_right_portrait = {
character = scope:teammate_2
}
lower_left_portrait = {
character = scope:teammate_3
}
cooldown = { years = 5 }
trigger = {
scope:activity = {
any_guest_subset_current_phase = {
name = qualified
root = this
exists = var:progress_to_victory
}
#Ensure there are two teams with at least 3 people each
any_guest_subset_current_phase = {
name = team_alpha
contest_event_general_contestant_valid_trigger = yes
count >= 3
}
any_guest_subset_current_phase = {
name = team_beta
contest_event_general_contestant_valid_trigger = yes
count >= 3
}
}
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Events/Grand_Activities/Tournaments/ConstructionKits/ep2_event_grand_tournament_ck_horse_trotting"
tournament_pivotal_flavor_variable_effect = { CONTEST = melee ID = 1007 }
scope:activity = {
if = { # If you're in Team A, grab teammates
limit = {
any_guest_subset_current_phase = {
name = team_alpha
this = root
}
}
random_guest_subset_current_phase = {
name = team_alpha
limit = { contest_event_general_contestant_valid_trigger = yes }
save_scope_as = teammate_1
}
random_guest_subset_current_phase = {
name = team_alpha
limit = {
contest_event_general_contestant_valid_trigger = yes
this != scope:teammate_1
}
save_scope_as = teammate_2
}
random_guest_subset_current_phase = {
name = team_alpha
limit = {
contest_event_general_contestant_valid_trigger = yes
NOR = {
this = scope:teammate_1
this = scope:teammate_2
}
}
save_scope_as = teammate_3
}
}
else = { # If you're in team B, grab those teammates
random_guest_subset_current_phase = {
name = team_beta
limit = {
contest_event_general_contestant_valid_trigger = yes
}
save_scope_as = teammate_1
}
random_guest_subset_current_phase = {
name = team_beta
limit = {
contest_event_general_contestant_valid_trigger = yes
this != scope:teammate_1
}
save_scope_as = teammate_2
}
random_guest_subset_current_phase = {
name = team_beta
limit = {
contest_event_general_contestant_valid_trigger = yes
NOR = {
this = scope:teammate_1
this = scope:teammate_2
}
}
save_scope_as = teammate_3
}
}
}
}
# Pay for some food and drink
option = {
name = ep2_tournament_events.1007.a
remove_short_term_gold = medium_gold_value
random_list = {
10 = { #You are all somewhat refreshed
desc = ep2_tournament_events.1007.a.tt.success
show_chance = no
hidden_effect = {
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
scope:teammate_1 = {
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
}
scope:teammate_2 = {
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
}
scope:teammate_3 = {
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
}
}
send_interface_toast = {
title = ep2_tournament_events.1007.a.tt.success
left_icon = root
custom_tooltip = ep2_tournament_events.1007.a.result
}
}
2 = { #It refreshes all of you a lot
desc = ep2_tournament_events.1007.a.tt.bigsuccess
show_chance = no
hidden_effect = {
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
scope:teammate_1 = {
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
}
scope:teammate_2 = {
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
}
scope:teammate_3 = {
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
}
}
send_interface_toast = {
title = ep2_tournament_events.1007.a.tt.bigsuccess
left_icon = root
custom_tooltip = ep2_tournament_events.1007.a.bigresult
}
}
}
stress_impact = {
base = miniscule_stress_impact_loss
diligent = miniscule_stress_impact_gain
gluttonous = miniscule_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
NOR = {
has_trait = greedy
has_trait = avaricious
}
}
}
}
# Share some inspiring words
option = {
name = ep2_tournament_events.1007.b
flavor = ep2_tournament_events.1007.b.tt
duel = {
skill = diplomacy
value = decent_skill_rating
50 = { #You inspire your troops
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
desc = ep2_tournament_events.1007.b.tt.success
hidden_effect = {
scope:teammate_1 = {
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
}
scope:teammate_2 = {
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
}
scope:teammate_3 = {
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
}
}
send_interface_toast = {
title = ep2_tournament_events.1007.b.tt.success
left_icon = root
custom_tooltip = ep2_tournament_events.1007.b.result
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = wit
value = tournament_hastiludes_xp_gain_minor_value
}
}
}
}
50 = { #You fail to make an impact
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
desc = ep2_tournament_events.1007.b.tt.failure
send_interface_toast = {
title = ep2_tournament_events.1007.b.tt.failure
left_icon = root
add_stress = minor_stress_gain
}
}
}
stress_impact = {
shy = medium_stress_impact_gain
lazy = minor_stress_impact_gain
greedy = miniscule_stress_impact_loss
gregarious = miniscule_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
has_trait = shy
}
}
}
# Rest alone
option = {
name = ep2_tournament_events.1007.c
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
stress_impact = {
shy = minor_stress_impact_loss
lazy = miniscule_stress_impact_loss
greedy = miniscule_stress_impact_loss
gregarious = medium_stress_impact_gain
diligent = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
has_trait = gregarious
}
}
}
}
# You encounter a famous knight in the melee
ep2_tournament_events.1011 = {
type = activity_event
title = ep2_tournament_events.1011.t
desc = {
desc = ep2_tournament_events.1011.start
first_valid = {
triggered_desc = {
trigger = {
OR = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 50
}
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 50
}
}
}
desc = ep2_tournament_events.1011.equal
}
triggered_desc = {
trigger = {
NOR = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 50
}
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 50
}
}
}
desc = ep2_tournament_events.1011.unequal
}
}
}
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = personality_honorable
}
right_portrait = {
character = scope:famous_knight
animation = sword_coup_degrace
}
cooldown = { years = 1 }
trigger = {
exists = var:progress_to_victory_score
scope:activity = {
has_current_phase = tournament_phase_melee
OR = {
AND = { # If you're in Team A, they need to be in Team B
any_guest_subset_current_phase = {
name = team_alpha
this = root
}
any_guest_subset_current_phase = {
name = team_beta
contest_event_general_contestant_valid_trigger = yes
has_trait = tourney_participant
is_healthy = yes
OR = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 50
}
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 50
}
}
}
}
AND = { # If you're in Team B, they need to be in Team A
any_guest_subset_current_phase = {
name = team_beta
this = root
}
any_guest_subset_current_phase = {
name = team_alpha
contest_event_general_contestant_valid_trigger = yes
has_trait = tourney_participant
is_healthy = yes
OR = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 50
}
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 50
}
}
}
}
}
}
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Events/Grand_Activities/Tournaments/ConstructionKits/ep2_event_grand_tournament_ck_horse_neigh"
tournament_pivotal_flavor_variable_effect = { CONTEST = melee ID = 1011 }
scope:activity = {
if = {
limit = {
any_guest_subset_current_phase = {
name = team_alpha
this = root
}
}
random_guest_subset_current_phase = {
name = team_beta
limit = {
contest_event_general_contestant_valid_trigger = yes
has_trait = tourney_participant
is_healthy = yes
OR = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 50
}
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 50
}
}
}
save_scope_as = famous_knight
}
}
else = {
random_guest_subset_current_phase = {
name = team_alpha
limit = {
contest_event_general_contestant_valid_trigger = yes
has_trait = tourney_participant
is_healthy = yes
OR = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 50
}
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 50
}
}
}
save_scope_as = famous_knight
}
}
}
save_scope_value_as = {
name = fight_range
value = {
integer_range = {
min = 1
max = 9
}
}
}
}
# Throw dirt to give you an advantage before your duel
option = {
name = ep2_tournament_events.1011.a
flavor = ep2_tournament_events.1011.a.tt
trigger = {
OR = {
intrigue > 20
has_trait = deceitful
has_trait = arbitrary
}
}
random_list = {
75 = { #You win
modifier = { #This is for fuzzying up the random list so it randomises it a bit
add = scope:fight_range
}
modifier = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 60
}
add = 5
}
modifier = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 75
}
add = 10
}
modifier = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 90
}
add = 15
}
modifier = {
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 60
}
add = 5
}
modifier = {
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 75
}
add = 10
}
modifier = {
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 90
}
add = 15
}
desc = ep2_tournament_events.1011.a.success
send_interface_toast = {
title = ep2_tournament_events.1011.a.success
left_icon = root
right_icon = scope:famous_knight
activity_tournament_change_contestant_score_effect = { SCORE = increase_major }
if = {
limit = { has_trait = tourney_participant }
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_minor_value
}
}
}
}
25 = { #You lose
modifier = { #This is for fuzzying up the random list so it randomises it a bit
add = scope:fight_range
}
modifier = {
scope:famous_knight = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 60
}
}
add = 5
}
modifier = {
scope:famous_knight = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 75
}
}
add = 10
}
modifier = {
scope:famous_knight = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 90
}
}
add = 15
}
modifier = {
scope:famous_knight = {
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 60
}
}
add = 5
}
modifier = {
scope:famous_knight = {
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 75
}
}
add = 10
}
modifier = {
scope:famous_knight = {
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 90
}
}
add = 15
}
desc = ep2_tournament_events.1011.a.failure
send_interface_toast = {
title = ep2_tournament_events.1011.a.failure
left_icon = root
right_icon = scope:famous_knight
activity_tournament_change_contestant_score_effect = { SCORE = decrease_major }
}
}
}
scope:activity = {
add_activity_log_entry = {
key = tournament_dirt_thrown_log
tags = { good }
score = 5
character = root
target = scope:famous_knight
}
}
stress_impact = {
craven = minor_stress_impact_loss
deceitful = minor_stress_impact_loss
wrathful = miniscule_stress_impact_loss
arbitrary = miniscule_stress_impact_loss
brave = minor_stress_impact_gain
just = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = brave
has_trait = just
}
}
}
}
# Engage them head on
option = {
name = ep2_tournament_events.1011.b
trigger = {
OR = { #You are skilful in your own right
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 50
}
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 50
}
}
}
random_list = {
50 = { #You win
modifier = { #This is for fuzzying up the random list so it randomises it a bit
add = scope:fight_range
}
modifier = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 60
}
add = 5
}
modifier = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 75
}
add = 10
}
modifier = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 90
}
add = 15
}
modifier = {
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 60
}
add = 5
}
modifier = {
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 75
}
add = 10
}
modifier = {
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 90
}
add = 15
}
desc = ep2_tournament_events.1011.a.success
send_interface_toast = {
title = ep2_tournament_events.1011.a.success
left_icon = root
right_icon = scope:famous_knight
if = {
limit = { has_trait = tourney_participant }
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_medium_value
}
add_trait_xp = {
trait = tourney_participant
track = horse
value = tournament_hastiludes_xp_gain_medium_value
}
}
activity_tournament_change_contestant_score_effect = { SCORE = increase_major }
}
}
50 = { #You lose
modifier = {
scope:famous_knight = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 60
}
}
add = 5
}
modifier = {
scope:famous_knight = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 75
}
}
add = 10
}
modifier = {
scope:famous_knight = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 90
}
}
add = 15
}
modifier = {
scope:famous_knight = {
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 60
}
}
add = 5
}
modifier = {
scope:famous_knight = {
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 75
}
}
add = 10
}
modifier = {
scope:famous_knight = {
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 90
}
}
add = 15
}
desc = ep2_tournament_events.1011.a.failure
send_interface_toast = {
title = ep2_tournament_events.1011.a.failure
left_icon = root
right_icon = scope:famous_knight
activity_tournament_change_contestant_score_effect = { SCORE = decrease_major }
if = {
limit = { has_trait = tourney_participant }
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_minor_value
}
add_trait_xp = {
trait = tourney_participant
track = horse
value = tournament_hastiludes_xp_gain_minor_value
}
}
}
}
}
scope:activity = {
add_activity_log_entry = {
key = tournament_dirt_thrown_log
tags = { good }
score = 5
character = root
target = scope:famous_knight
}
}
stress_impact = {
craven = medium_stress_impact_gain
wrathful = miniscule_stress_impact_loss
brave = minor_stress_impact_loss
just = miniscule_stress_impact_loss
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 0.5
ai_energy = 0.5
ai_vengefulness = 0.5
}
}
}
# Ignore their challenge and slip away
option = {
name = ep2_tournament_events.1011.c
trigger = {
OR = { #You are skilful in your own right
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 50
}
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 50
}
}
}
reverse_add_opinion = {
modifier = disappointed_opinion
target = scope:famous_knight
opinion = -30
}
stress_impact = {
brave = major_stress_impact_gain
ambitious = medium_stress_impact_gain
arrogant = medium_stress_impact_gain
craven = medium_stress_impact_loss
content = miniscule_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = ambitious
has_trait = brave
has_trait = arrogant
}
}
}
}
# Try to fight them
option = {
name = ep2_tournament_events.1011.b #Re-use loc from above
trigger = {
NOR = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 50
}
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 50
}
}
}
random_list = {
20 = { #You win
modifier = { #This is for fuzzying up the random list so it randomises it a bit
add = scope:fight_range
}
modifier = {
has_trait = physique_good
add = 5
}
modifier = {
has_trait = strong
add = 5
}
modifier = {
has_trait = gallant
add = 5
}
modifier = {
has_trait = lifestyle_blademaster
add = 10
}
custom_tooltip = ep2_tournament_events.1011.a.success
send_interface_toast = {
title = ep2_tournament_events.1011.a.success
left_icon = root
right_icon = scope:famous_knight
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_medium_value
}
add_trait_xp = {
trait = tourney_participant
track = horse
value = tournament_hastiludes_xp_gain_medium_value
}
}
activity_tournament_change_contestant_score_effect = { SCORE = increase_major }
accolade_medium_glory_gain_with_checks_effect = yes
}
}
80 = { #You lose
modifier = { #This is for fuzzying up the random list so it randomises it a bit
add = scope:fight_range
}
custom_tooltip = ep2_tournament_events.1011.a.failure
send_interface_toast = {
title = ep2_tournament_events.1011.a.failure
left_icon = root
right_icon = scope:famous_knight
activity_tournament_change_contestant_score_effect = { SCORE = decrease_major }
scope:famous_knight = {
accolade_minor_glory_gain_with_checks_effect = yes
}
if = {
limit = { has_trait = tourney_participant }
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_minor_value
}
add_trait_xp = {
trait = tourney_participant
track = horse
value = tournament_hastiludes_xp_gain_minor_value
}
}
}
}
}
stress_impact = {
brave = medium_stress_impact_loss #In face of very unlikely odds!
ambitious = miniscule_stress_impact_loss
arrogant = miniscule_stress_impact_loss
craven = major_stress_impact_gain
humble = medium_stress_impact_gain
content = minor_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = 0.5
ai_energy = 0.5
ai_vengefulness = 0.5
}
}
}
# Try to escape
option = {
name = ep2_tournament_events.1011.c #Also re-using this
trigger = {
NOR = { #You are skilful in your own right
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 50
}
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 50
}
}
}
reverse_add_opinion = {
modifier = disappointed_opinion
target = scope:famous_knight
opinion = -30
}
duel = {
skill = intrigue
target = scope:famous_knight
50 = { #You escape
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
desc = ep2_tournament_events.1011.d.success
send_interface_toast = {
title = ep2_tournament_events.1011.d.success
left_icon = root
right_icon = scope:famous_knight
add_stress = medium_stress_loss
}
}
50 = { #They catch you and smack you about
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
desc = ep2_tournament_events.1011.d.failure
send_interface_toast = {
title = ep2_tournament_events.1011.d.failure
left_icon = root
right_icon = scope:famous_knight
activity_tournament_change_contestant_score_effect = { SCORE = decrease_major }
}
}
}
stress_impact = {
brave = major_stress_impact_gain
ambitious = medium_stress_impact_gain
arrogant = medium_stress_impact_gain
craven = medium_stress_impact_loss
content = miniscule_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = brave
has_trait = ambitious
has_trait = arrogant
}
}
}
}
}
# You attempt to ambush an opponent in the trees
ep2_tournament_events.1012 = {
type = activity_event
title = ep2_tournament_events.1012.t
desc = ep2_tournament_events.1012.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = scheme
}
right_portrait = {
character = scope:caught_opponent
animation = shock
}
cooldown = { years = 5 }
trigger = {
scope:activity = {
any_guest_subset_current_phase = {
name = qualified
this = root
}
any_guest_subset_current_phase = {
name = qualified
contest_event_general_contestant_valid_trigger = yes
}
}
scope:activity.activity_location = { #Ensure it's in a place where there could feasibly be some trees
NOR = {
terrain = desert
terrain = desert_mountains
terrain = drylands
terrain = floodplains
terrain = mountains
terrain = oasis
terrain = steppe
terrain = wetlands
}
}
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Events/Grand_Activities/Tournaments/ConstructionKits/ep2_event_grand_tournament_ck_wood_woosh"
tournament_pivotal_flavor_variable_effect = { CONTEST = melee ID = 1012 }
scope:activity = {
if = { # If you're in Team A, grab opponent
limit = {
any_guest_subset_current_phase = {
name = team_alpha
this = root
}
}
random_guest_subset_current_phase = {
name = team_beta
limit = { contest_event_general_contestant_valid_trigger = yes }
save_scope_as = caught_opponent
}
}
else = { # If you're in team B, grab that opponent
random_guest_subset_current_phase = {
name = team_alpha
limit = {
contest_event_general_contestant_valid_trigger = yes
}
save_scope_as = caught_opponent
}
}
}
}
# You, a forest fighter, take huge advantage
option = {
name = ep2_tournament_events.1012.a
trigger = {
OR = {
has_trait = forest_fighter
has_trait = jungle_stalker
}
}
activity_tournament_change_contestant_score_effect = { SCORE = increase_major }
scope:caught_opponent = {
pay_short_term_gold = {
target = root
gold = {
value = root.medium_gold_value
max = scope:caught_opponent.gold
}
}
}
if = {
limit = { has_trait = tourney_participant }
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_minor_value
}
add_trait_xp = {
trait = tourney_participant
track = horse
value = tournament_hastiludes_xp_gain_minor_value
}
}
scope:activity = {
add_activity_log_entry = {
key = tournament_ambush_sprung_log
tags = { good }
score = 5
character = root
target = scope:versus_contestant
}
}
stress_impact = {
brave = miniscule_stress_impact_loss
ambitious = miniscule_stress_impact_loss
deceitful = miniscule_stress_impact_loss
craven = medium_stress_impact_gain
content = minor_stress_impact_gain
honest = medium_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = 1
ai_honor = -1
ai_vengefulness = 1
}
}
}
# You are an honorable knight, and offer them fair duel
option = {
name = ep2_tournament_events.1012.b
trigger = {
OR = {
has_trait = gallant
has_trait = just
}
}
duel = {
skill = prowess
target = scope:caught_opponent
50 = { #You win
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
modifier = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 20
}
add = 5
}
modifier = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 40
}
add = 10
}
modifier = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 60
}
add = 15
}
modifier = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 80
}
add = 20
}
desc = ep2_tournament_events.1012.b.success
send_interface_toast = {
title = ep2_tournament_events.1012.b.success
left_icon = root
right_icon = scope:caught_opponent
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
accolade_minor_glory_gain_with_checks_effect = yes
if = {
limit = { has_trait = tourney_participant }
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_medium_value
}
add_trait_xp = {
trait = tourney_participant
track = horse
value = tournament_hastiludes_xp_gain_medium_value
}
}
}
}
50 = { #You lose
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
modifier = {
scope:caught_opponent = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 20
}
}
add = 5
}
modifier = {
scope:caught_opponent = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 40
}
}
add = 10
}
modifier = {
scope:caught_opponent = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 60
}
}
add = 15
}
modifier = {
scope:caught_opponent = {
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 80
}
}
add = 20
}
desc = ep2_tournament_events.1012.b.failure
send_interface_toast = {
title = ep2_tournament_events.1012.b.failure
left_icon = root
right_icon = scope:caught_opponent
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
scope:caught_opponent = {
accolade_minor_glory_gain_with_checks_effect = yes
}
}
}
}
reverse_add_opinion = {
modifier = respect_opinion
target = scope:caught_opponent
opinion = 25
}
stress_impact = {
brave = miniscule_stress_impact_loss
ambitious = miniscule_stress_impact_loss
deceitful = miniscule_stress_impact_loss
craven = medium_stress_impact_gain
content = minor_stress_impact_gain
honest = medium_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_compassion = 1
ai_honor = 1
ai_boldness = 1
}
}
}
# You attempt an ambush
option = {
name = ep2_tournament_events.1012.c
trigger = {
NOR = {
has_trait = forest_fighter
has_trait = jungle_stalker
}
}
duel = {
skills = { martial intrigue }
target = scope:caught_opponent
60 = { #It works
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
modifier = {
has_trait = deceitful #Happy to do it!
add = 5
}
modifier = {
has_trait = patient #Wait for the right time to strike
add = 5
}
modifier = {
has_trait = lifestyle_hunter
add = 5
}
modifier = {
has_trait = lifestyle_blademaster
add = 5
}
modifier = {
has_trait = strategist
add = 5
}
custom_tooltip = ep2_tournament_events.1012.c.success
scope:activity = {
add_activity_log_entry = {
key = tournament_ambush_sprung_log
tags = { good }
score = 5
character = root
target = scope:caught_opponent
}
}
send_interface_toast = {
title = ep2_tournament_events.1012.c.success
left_icon = root
right_icon = scope:caught_opponent
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
scope:caught_opponent = {
pay_short_term_gold = {
target = root
gold = {
value = root.minor_gold_value
max = scope:caught_opponent.gold
}
}
}
if = {
limit = { has_trait = tourney_participant }
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_minor_value
}
add_trait_xp = {
trait = tourney_participant
track = horse
value = tournament_hastiludes_xp_gain_minor_value
}
}
}
}
40 = { #It doesn't work
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
modifier = {
has_trait = impatient
add = 5
}
modifier = {
scope:caught_opponent = {
has_trait = strategist
}
add = 5
}
modifier = {
scope:caught_opponent = {
has_trait = paranoid #Always watching out of the corner of their eye
}
add = 5
}
custom_tooltip = ep2_tournament_events.1012.c.failure
send_interface_toast = {
title = ep2_tournament_events.1012.c.failure
left_icon = root
right_icon = scope:caught_opponent
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
pay_short_term_gold = {
target = scope:caught_opponent
gold = {
value = root.minor_gold_value
max = root.gold
}
}
}
}
}
stress_impact = {
brave = miniscule_stress_impact_loss
ambitious = miniscule_stress_impact_loss
deceitful = miniscule_stress_impact_loss
craven = medium_stress_impact_gain
content = minor_stress_impact_gain
honest = medium_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = 1
ai_honor = -1
ai_vengefulness = 1
}
}
}
# You let them go
option = {
name = ep2_tournament_events.1012.d
stress_impact = {
brave = medium_stress_impact_gain
ambitious = medium_stress_impact_gain
deceitful = medium_stress_impact_gain
craven = miniscule_stress_impact_loss
content = miniscule_stress_impact_loss
honest = miniscule_stress_impact_loss
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = -1
}
}
}
}
# An opponent has fallen from their horse
ep2_tournament_events.1013 = {
type = activity_event
title = ep2_tournament_events.1013.t
desc = ep2_tournament_events.1013.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = jockey_lance_couched_gallop
}
right_portrait = {
character = scope:felled_participant
animation = pain
}
cooldown = { years = 1 }
trigger = {
scope:activity = { #Ensure each team has at least one participant
any_guest_subset_current_phase = {
name = qualified
this = root
}
any_guest_subset_current_phase = {
name = team_alpha
contest_event_general_contestant_valid_trigger = yes
is_healthy = yes
}
any_guest_subset_current_phase = {
name = team_beta
contest_event_general_contestant_valid_trigger = yes
is_healthy = yes
}
}
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Events/Grand_Activities/Tournaments/ConstructionKits/ep2_event_grand_tournament_ck_horse_neigh"
tournament_pivotal_flavor_variable_effect = { CONTEST = melee ID = 1013 }
scope:activity = {
if = { #Ensure it picks an opponent
limit = {
any_guest_subset_current_phase = {
name = team_alpha
this = root
}
}
random_guest_subset_current_phase = {
name = team_beta
limit = {
contest_event_general_contestant_valid_trigger = yes
is_healthy = yes
}
save_scope_as = felled_participant
}
}
else = {
random_guest_subset_current_phase = {
name = team_alpha
limit = {
contest_event_general_contestant_valid_trigger = yes
is_healthy = yes
}
save_scope_as = felled_participant
}
}
}
scope:felled_participant = {
activity_tournament_change_contestant_score_effect = { SCORE = decrease_minor }
}
}
# You escort them out of the fray
option = {
name = ep2_tournament_events.1013.a
trigger = {
OR = {
has_trait = gallant
has_trait = just
}
}
scope:felled_participant = {
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 25
}
}
set_nickname_effect = { #To give you something roleplay-ish
NICKNAME = nick_the_honorable
}
stress_impact = {
base = minor_stress_impact_loss
compassionate = miniscule_stress_impact_loss
arbitrary = minor_stress_impact_gain
callous = medium_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_compassion = 1
ai_honor = 1
}
}
}
# You run them over
option = {
name = ep2_tournament_events.1013.b
activity_tournament_change_contestant_score_effect = { SCORE = increase_miniscule }
scope:felled_participant = {
activity_tournament_change_contestant_score_effect = { SCORE = decrease_minor }
increase_wounds_no_death_effect = { REASON = battle }
random = {
chance = 33
if = {
limit = {
NOT = {
has_trait = scarred
}
}
add_trait = scarred
}
add_trait_xp = {
trait = scarred
value = {
integer_range = {
min = 5
max = 25
}
}
}
}
add_opinion = {
modifier = angry_opinion
target = root
opinion = -25
}
}
stress_impact = {
brave = minor_stress_impact_gain
just = medium_stress_impact_gain
compassionate = medium_stress_impact_gain
sadistic = miniscule_stress_impact_loss
craven = miniscule_stress_impact_loss
arbitrary = minor_stress_impact_loss
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_honor = -1
ai_compassion = -1
}
}
}
# You dismount to offer them fair duel
option = {
name = ep2_tournament_events.1013.c
duel = {
skills = { prowess martial }
target = scope:felled_participant
50 = { #You win
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
modifier = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 25
}
add = 10
}
modifier = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 50
}
add = 20
}
modifier = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 75
}
add = 30
}
desc = ep2_tournament_events.1013.c.success
send_interface_toast = {
title = ep2_tournament_events.1013.c.success
left_icon = root
right_icon = scope:felled_participant
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
scope:felled_participant = {
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
}
if = {
limit = { has_trait = tourney_participant }
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_minor_value
}
add_trait_xp = {
trait = tourney_participant
track = horse
value = tournament_hastiludes_xp_gain_minor_value
}
}
}
}
50 = { #You lose
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
modifier = {
scope:felled_participant = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 25
}
}
add = 10
}
modifier = {
scope:felled_participant = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 50
}
}
add = 20
}
modifier = {
scope:felled_participant = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 75
}
}
add = 30
}
desc = ep2_tournament_events.1013.c.failure
send_interface_toast = {
title = ep2_tournament_events.1013.c.failure
left_icon = root
right_icon = scope:felled_participant
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
scope:felled_participant = {
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
}
}
}
}
stress_impact = {
brave = miniscule_stress_impact_loss
just = miniscule_stress_impact_loss
craven = minor_stress_impact_gain
arbitrary = medium_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_compassion = 0.5
ai_honor = 1
ai_boldness = 1
}
}
}
# You let them go
option = {
name = ep2_tournament_events.1013.d
stress_impact = {
brave = miniscule_stress_impact_gain
sadistic = minor_stress_impact_gain
craven = miniscule_stress_impact_loss
just = miniscule_stress_impact_loss
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_compassion = 0.5
ai_honor = 0.5
ai_boldness = -0.5
}
}
}
}
# A mysterious knight is doing incredibly well
ep2_tournament_events.1015 = {
type = activity_event
title = ep2_tournament_events.1015.t
desc = ep2_tournament_events.1015.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = shock
}
cooldown = { years = 5 }
trigger = {
scope:activity = {
OR = {
AND = {
any_guest_subset_current_phase = {
name = team_alpha
this = root
}
any_guest_subset_current_phase = {
name = team_alpha
contest_event_general_contestant_valid_trigger = yes
OR = { #Ensure it's someone meaningful to you
is_close_family_or_spouse_of_root_trigger = yes
has_relation_lover = root
has_relation_soulmate = root
has_character_modifier = ignores_gender_army_rules #In case Mulan ends up really good!
}
}
}
AND = {
any_guest_subset_current_phase = {
name = team_beta
this = root
}
any_guest_subset_current_phase = {
name = team_beta
contest_event_general_contestant_valid_trigger = yes
OR = { #Ensure it's someone meaningful to you
is_close_family_or_spouse_of_root_trigger = yes
has_relation_lover = root
has_relation_soulmate = root
has_character_modifier = ignores_gender_army_rules #In case Mulan ends up really good!
}
}
}
}
}
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Events/Grand_Activities/Tournaments/ConstructionKits/ep2_event_grand_tournament_ck_metal_clash"
tournament_pivotal_flavor_variable_effect = { CONTEST = melee ID = 1015 }
scope:activity = {
if = { #Ensure it picks a member of your team
limit = {
any_guest_subset_current_phase = {
name = team_alpha
this = root
}
}
random_guest_subset_current_phase = {
name = team_alpha
limit = {
contest_event_general_contestant_valid_trigger = yes
OR = {
is_close_family_or_spouse_of_root_trigger = yes
has_relation_soulmate = root
has_relation_lover = root
has_character_modifier = ignores_gender_army_rules
}
}
save_scope_as = mysterious_knight
}
}
else = {
random_guest_subset_current_phase = {
name = team_beta
limit = {
contest_event_general_contestant_valid_trigger = yes
OR = {
is_close_family_or_spouse_of_root_trigger = yes
has_relation_soulmate = root
has_relation_lover = root
has_character_modifier = ignores_gender_army_rules
}
}
save_scope_as = mysterious_knight
}
}
}
hidden_effect = {
scope:mysterious_knight = {
activity_tournament_change_contestant_score_effect = { SCORE = increase_major }
}
}
save_scope_value_as = { #For the chase scene number fuzzying
name = chase_range
value = {
integer_range = {
min = 1
max = 9
}
}
}
}
# Follow along behind them to clean up in their wake
option = {
name = ep2_tournament_events.1015.a
trigger = {
intrigue >= 15
}
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
add_gold = { minor_gold_value medium_gold_value }
if = {
limit = { has_trait = tourney_participant }
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_minor_value
}
add_trait_xp = {
trait = tourney_participant
track = horse
value = tournament_hastiludes_xp_gain_minor_value
}
}
stress_impact = {
ambitious = miniscule_stress_impact_loss
deceitful = miniscule_stress_impact_loss
craven = miniscule_stress_impact_loss
arbitrary = miniscule_stress_impact_loss
brave = medium_stress_impact_gain
just = medium_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = -1
ai_honor = -1
ai_compassion = -1
}
}
}
# You must know who it is! Chase after them!
option = {
name = ep2_tournament_events.1015.b
random_list = {
50 = { #You catch them
modifier = { #This is for fuzzying up the random list so it randomises it a bit
add = scope:chase_range
}
modifier = {
has_trait = athletic
add = 10
}
modifier = {
has_trait = stubborn
add = 5
}
desc = ep2_tournament_events.1015.b.success
custom_tooltip = ep2_tournament_events.1015.b.success.tt
trigger_event = ep2_tournament_events.1016
}
50 = { #They get away
modifier = { #This is for fuzzying up the random list so it randomises it a bit
add = scope:chase_range
}
modifier = {
OR = {
has_trait = wheezing
has_trait = spindly
}
add = 10
}
modifier = {
OR = {
has_trait = clubfooted
has_trait = dwarf
}
add = 10
}
modifier = {
current_weight > 80
add = 5
}
modifier = {
scope:mysterious_knight = {
has_trait = athletic
}
add = 10
}
desc = ep2_tournament_events.1015.b.failure
send_interface_toast = {
title = ep2_tournament_events.1015.b.failure
left_icon = root
right_icon = scope:caught_opponent
activity_tournament_change_contestant_score_effect = { SCORE = decrease_miniscule }
}
}
}
stress_impact = {
diligent = miniscule_stress_impact_loss
stubborn = miniscule_stress_impact_loss
lazy = medium_stress_impact_gain
fickle = minor_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = 1
}
}
}
# You let them go
option = {
name = ep2_tournament_events.1015.c
stress_impact = {
diligent = minor_stress_impact_gain
stubborn = medium_stress_impact_gain
lazy = miniscule_stress_impact_loss
fickle = miniscule_stress_impact_loss
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = -0.5
}
}
}
}
# Followup to 1015: it's your (notable person!)
ep2_tournament_events.1016 = {
type = activity_event
title = ep2_tournament_events.1016.t
desc = {
desc = ep2_tournament_events.1016.start
first_valid = {
triggered_desc = {
trigger = {
has_character_flag = knows_mulan_flag
scope:mysterious_knight = {
has_character_modifier = ignores_gender_army_rules
}
}
desc = ep2_tournament_events.1016.mulan
}
triggered_desc = {
trigger = {
NOT = {
has_character_flag = knows_mulan_flag
}
scope:mysterious_knight = {
has_character_modifier = ignores_gender_army_rules
}
}
desc = ep2_tournament_events.1016.mulanunknown
}
triggered_desc = {
trigger = {
scope:mysterious_knight = {
OR = { #Catchall for relations
is_close_family_or_spouse_of_root_trigger = yes
has_relation_lover = root
has_relation_soulmate = root
}
}
}
desc = ep2_tournament_events.1016.relation
}
}
}
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = shock
}
right_portrait = {
character = scope:mysterious_knight
animation = marshal
}
cooldown = { years = 5 }
immediate = {
hidden_effect = {
if = {
limit = {
scope:mysterious_knight = {
NOT = {
has_trait = tourney_participant
}
}
}
add_trait = tourney_participant
}
if = { #Give them a stealthy big boost, so in-universe they don't look weird
limit = {
scope:mysterious_knight = {
has_trait = tourney_participant
}
}
scope:mysterious_knight = {
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_major_value
}
add_trait_xp = {
trait = tourney_participant
track = horse
value = tournament_hastiludes_xp_gain_major_value
}
}
}
else = {
scope:mysterious_knight = {
add_trait = tourney_participant
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_major_value
}
add_trait_xp = {
trait = tourney_participant
track = horse
value = tournament_hastiludes_xp_gain_major_value
}
}
}
}
save_scope_value_as = { #For the chase scene number fuzzying
name = ability_range
value = {
integer_range = {
min = 1
max = 9
}
}
}
}
# Protect me!
option = {
name = ep2_tournament_events.1016.a
add_character_modifier = { #Add a powerful but temporary modifier
modifier = tournament_melee_protector_modifier
years = 1
}
stress_impact = {
ambitious = miniscule_stress_impact_loss
paranoid = miniscule_stress_impact_loss
craven = miniscule_stress_impact_loss
humble = miniscule_stress_impact_loss
brave = minor_stress_impact_gain
arrogant = medium_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = -0.5
ai_rationality = 1
}
}
}
# You must teach me!
option = {
name = ep2_tournament_events.1016.b
flavor = ep2_tournament_events.1016.b.tt
random_list = {
20 = { #You learn a lot
modifier = { #This is for fuzzying up the random list so it randomises it a bit
add = scope:ability_range
}
modifier = {
learning > 10
add = 10
}
modifier = {
has_trait = shrewd
add = 5
}
modifier = {
has_trait = lifestyle_blademaster
add = 5
}
desc = ep2_tournament_events.1016.b.success
send_interface_toast = {
title = ep2_tournament_events.1016.b.success
left_icon = root
right_icon = scope:mysterious_knight
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_major_value
}
add_trait_xp = {
trait = tourney_participant
track = horse
value = tournament_hastiludes_xp_gain_major_value
}
}
else = {
add_trait = tourney_participant
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_major_value
}
add_trait_xp = {
trait = tourney_participant
track = horse
value = tournament_hastiludes_xp_gain_major_value
}
}
}
}
80 = { #You learn a little
modifier = { #This is for fuzzying up the random list so it randomises it a bit
add = scope:ability_range
}
desc = ep2_tournament_events.1016.b.failure
send_interface_toast = {
title = ep2_tournament_events.1016.b.failure
left_icon = root
right_icon = scope:mysterious_knight
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_minor_value
}
add_trait_xp = {
trait = tourney_participant
track = horse
value = tournament_hastiludes_xp_gain_minor_value
}
}
else = {
add_trait = tourney_participant
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_minor_value
}
add_trait_xp = {
trait = tourney_participant
track = horse
value = tournament_hastiludes_xp_gain_minor_value
}
}
}
}
}
stress_impact = {
humble = miniscule_stress_impact_loss
diligent = miniscule_stress_impact_loss
arrogant = medium_stress_impact_gain
lazy = minor_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = 0.5
ai_energy = 1
}
}
}
# I forbid this!
option = {
name = ep2_tournament_events.1016.c
if = { #If you are their liege, demand they resign
limit = {
scope:mysterious_knight.liege = root
}
scope:mysterious_knight = {
if = {
limit = { exists = var:progress_to_victory }
remove_variable = progress_to_victory
}
if = {
limit = { exists = var:progress_to_victory_score }
remove_variable = progress_to_victory_score
}
if = {
limit = { exists = var:contest_aptitude }
remove_variable = contest_aptitude
}
}
}
reverse_add_opinion = {
modifier = disappointed_opinion
target = scope:mysterious_knight
opinion = -25
}
stress_impact = {
humble = minor_stress_impact_gain
compassionate = minor_stress_impact_gain
fickle = medium_stress_impact_gain
callous = miniscule_stress_impact_loss
stubborn = miniscule_stress_impact_loss
arrogant = miniscule_stress_impact_loss
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = 0.5
ai_energy = 1
}
}
}
}
# Cornered by three opposing knights
ep2_tournament_events.1017 = {
type = activity_event
title = ep2_tournament_events.1017.t
desc = ep2_tournament_events.1017.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = pain
}
right_portrait = {
character = scope:knight_1
animation = sword_coup_degrace
}
lower_right_portrait = {
character = scope:knight_2
}
lower_left_portrait = {
character = scope:knight_3
}
cooldown = { years = 5 }
trigger = {
scope:activity = {
OR = {
AND = {
any_guest_subset_current_phase = {
name = team_alpha
this = root
}
any_guest_subset_current_phase = {
name = team_alpha
contest_event_general_contestant_valid_trigger = yes
this != root
}
}
AND = {
any_guest_subset_current_phase = {
name = team_beta
this = root
}
any_guest_subset_current_phase = {
name = team_beta
contest_event_general_contestant_valid_trigger = yes
this != root
}
}
}
}
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Events/Grand_Activities/Tournaments/ConstructionKits/ep2_event_grand_tournament_ck_metal_woosh"
tournament_pivotal_flavor_variable_effect = { CONTEST = melee ID = 1017 }
scope:activity = {
if = { # If you're in Team A, grab opponents in B
limit = {
any_guest_subset_current_phase = {
name = team_alpha
this = root
}
}
random_guest_subset_current_phase = {
name = team_beta
limit = { contest_event_general_contestant_valid_trigger = yes }
save_scope_as = knight_1
}
random_guest_subset_current_phase = {
name = team_beta
limit = {
contest_event_general_contestant_valid_trigger = yes
this != scope:knight_1
}
save_scope_as = knight_2
}
random_guest_subset_current_phase = {
name = team_beta
limit = {
contest_event_general_contestant_valid_trigger = yes
NOR = {
this = scope:knight_1
this = scope:knight_2
}
}
save_scope_as = knight_3
}
}
else = { # If you're in team B, grab opponents in A
random_guest_subset_current_phase = {
name = team_alpha
limit = {
contest_event_general_contestant_valid_trigger = yes
}
save_scope_as = knight_1
}
random_guest_subset_current_phase = {
name = team_alpha
limit = {
contest_event_general_contestant_valid_trigger = yes
this != scope:knight_1
}
save_scope_as = knight_2
}
random_guest_subset_current_phase = {
name = team_alpha
limit = {
contest_event_general_contestant_valid_trigger = yes
NOR = {
this = scope:knight_1
this = scope:knight_2
}
}
save_scope_as = knight_3
}
}
}
save_scope_value_as = { #Combine the knights' prowess
name = knight_prowess
value = {
add = scope:knight_1.prowess
add = scope:knight_3.prowess
add = scope:knight_3.prowess
}
}
save_scope_value_as = { #Simulate your backups' combined prowess
name = prowess_range
value = {
integer_range = {
min = 10
max = 35
}
}
}
}
# Take them all on!
option = {
name = ep2_tournament_events.1017.a
duel = {
skill = prowess
value = scope:knight_prowess
# Success
50 = {
desc = ep2_tournament_events.1017.a.success
show_chance = yes
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
}
send_interface_toast = {
title = ep2_tournament_events.1017.a.success
left_icon = root
activity_tournament_change_contestant_score_effect = { SCORE = increase_massive }
add_prestige = 250
if = {
limit = { has_trait = tourney_participant }
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_medium_value
}
add_trait_xp = {
trait = tourney_participant
track = horse
value = tournament_hastiludes_xp_gain_medium_value
}
}
}
}
# Failure
50 = {
desc = ep2_tournament_events.1017.a.failure
show_chance = yes
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
}
send_interface_toast = {
title = ep2_tournament_events.1017.a.failure
left_icon = root
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
increase_wounds_effect = { REASON = battle }
}
}
}
stress_impact = {
ambitious = minor_stress_impact_loss
brave = minor_stress_impact_loss
stubborn = miniscule_stress_impact_loss
content = medium_stress_impact_gain
craven = medium_stress_impact_gain
fickle = minor_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = 1
ai_honor = 0.5
}
}
}
# Call for backup
option = {
name = ep2_tournament_events.1017.b
duel = {
skills = { prowess martial }
value = decent_skill_rating
# Success
50 = {
desc = ep2_tournament_events.1017.b.success
show_chance = yes
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = ep2_tournament_events.1017.b.success
left_icon = root
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
if = {
limit = { has_trait = tourney_participant }
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_minor_value
}
add_trait_xp = {
trait = tourney_participant
track = horse
value = tournament_hastiludes_xp_gain_minor_value
}
}
}
}
# Failure
50 = {
desc = ep2_tournament_events.1017.b.failure
show_chance = yes
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = ep2_tournament_events.1017.b.failure
left_icon = root
add_stress = minor_stress_gain
}
}
}
stress_impact = {
ambitious = minor_stress_impact_gain
brave = minor_stress_impact_gain
stubborn = minor_stress_impact_gain
content = miniscule_stress_impact_loss
craven = miniscule_stress_impact_loss
fickle = miniscule_stress_impact_loss
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = -1
ai_honor = -0.5
}
}
}
}
scripted_trigger contest_house_united_trigger = {
contest_event_general_contestant_valid_trigger = yes
this != root
exists = house
house ?= {
this = root.house
any_house_member = { is_alive = yes }
}
}
# You save a house member
ep2_tournament_events.1018 = {
type = activity_event
title = ep2_tournament_events.1018.t
desc = ep2_tournament_events.1018.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = jockey_gallop
}
right_portrait = {
character = scope:family
animation = admiration
}
cooldown = { years = 5 }
trigger = {
exists = house
scope:activity = {
OR = {
AND = {
any_guest_subset_current_phase = {
name = team_alpha
this = root
}
any_guest_subset_current_phase = {
name = team_alpha
contest_house_united_trigger = yes
}
}
AND = {
any_guest_subset_current_phase = {
name = team_beta
this = root
}
any_guest_subset_current_phase = {
name = team_beta
contest_house_united_trigger = yes
}
}
}
}
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Events/Grand_Activities/Tournaments/ConstructionKits/ep2_event_grand_tournament_ck_horse_flyby"
scope:activity = {
if = { # If you're in Team A, grab teammate
limit = {
any_guest_subset_current_phase = {
name = team_alpha
this = root
}
}
random_guest_subset_current_phase = {
name = team_alpha
limit = { contest_house_united_trigger = yes }
save_scope_as = family
}
}
else = { # If you're in Team B, grab teammate
random_guest_subset_current_phase = {
name = team_beta
limit = { contest_house_united_trigger = yes }
save_scope_as = family
}
}
}
if = {
limit = { has_trait = tourney_participant }
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_minor_value
}
add_trait_xp = {
trait = tourney_participant
track = horse
value = tournament_hastiludes_xp_gain_minor_value
}
}
scope:activity = {
add_activity_log_entry = {
key = tournament_ambush_sprung_log
tags = { good }
score = 5
character = root
target = scope:family
}
}
}
# House unity!
option = {
name = ep2_tournament_events.1018.a
if = {
limit = {
house = {
NOT = {
has_house_modifier = tournament_house_unity_modifier
}
}
}
house = {
add_house_modifier = {
modifier = tournament_house_unity_modifier
years = 15
desc = tournament_house_unity_modifier_desc
}
}
}
else = {
add_prestige = medium_prestige_value
}
reverse_add_opinion = {
target = scope:family
opinion = 15
modifier = respect_opinion
}
stress_impact = {
ambitious = miniscule_stress_impact_loss
shy = miniscule_stress_impact_loss
content = minor_stress_impact_gain
callous = minor_stress_impact_gain
}
ai_chance = {
base = 25 #Deliberately low to keep the else from occurring too much for AI
ai_value_modifier = {
ai_boldness = 0.5
ai_honor = 0.5
}
}
}
# Love u fam
option = {
name = ep2_tournament_events.1018.b
if = {
limit = {
NOT = { #Ensure that you're not AI, to avoid massive proliferation of the Loyal trait
is_ai = yes
}
scope:family = {
is_ai = yes
NOR = {
has_trait = disloyal
has_trait = loyal
}
}
}
scope:family = {
add_trait = loyal
}
}
if = {
limit = {
can_add_hook = {
type = loyalty_hook
target = scope:family
}
}
add_hook = {
type = loyalty_hook
target = scope:family
}
}
reverse_add_opinion = {
target = scope:family
opinion = 15
modifier = loyalty_opinion
}
stress_impact = {
gregarious = miniscule_stress_impact_loss
compassionate = miniscule_stress_impact_loss
callous = miniscule_stress_impact_loss
sadistic = miniscule_stress_impact_loss
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = 1
ai_honor = 1
}
}
}
}
###################
### ARCHERY ###
###################
# Attempt to put off an opponent by coughing
ep2_tournament_events.1501 = {
type = activity_event
title = ep2_tournament_events.1501.t
desc = {
desc = ep2_tournament_events.1501.desc
first_valid = {
triggered_desc = {
trigger = {
scope:competitor = {
has_any_secrets = yes
}
intrigue > 10
}
desc = ep2_tournament_events.1501.secret
}
}
}
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
scripted_animation = bow_closed
}
right_portrait = {
character = scope:competitor
scripted_animation = bow_drawn
}
cooldown = { years = 1 }
trigger = {
scope:activity = {
any_guest_subset_current_phase = {
name = qualified
is_alive = yes
is_ai = yes # To ensure we don't reveal player secrets
}
}
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Events/Grand_Activities/Tournaments/ConstructionKits/ep2_event_grand_tournament_ck_arrow_flyby"
tournament_pivotal_flavor_variable_effect = { CONTEST = archery ID = 1501 }
scope:activity = {
random_guest_subset_current_phase = {
name = qualified
limit = {
is_alive = yes
is_ai = yes # To ensure we don't reveal player secrets
}
save_scope_as = competitor
}
}
if = {
limit = {
scope:competitor = {
any_secret = {
OR = {
secret_type = secret_deviant
secret_type = secret_witch
secret_type = secret_murder
secret_type = secret_disputed_heritage
secret_type = secret_non_believer
secret_type = secret_cannibal
}
}
}
}
scope:competitor = {
random_secret = {
limit = {
OR = {
secret_type = secret_deviant
secret_type = secret_witch
secret_type = secret_murder
secret_type = secret_disputed_heritage
secret_type = secret_non_believer
secret_type = secret_cannibal
}
}
save_scope_as = competitor_secret
}
}
}
}
# Spread a rumour amongst the crowd
option = {
name = ep2_tournament_events.1501.a
trigger = {
exists = scope:competitor_secret
intrigue > 10 # Ensure you have decent enough intrigue to do this
}
flavor = ep2_tournament_events.1501.a.tt
scope:competitor_secret = {
expose_secret = root
}
scope:competitor = {
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
}
scope:activity = {
add_activity_log_entry = {
key = tournament_archery_rumour_log
tags = { good }
score = 5
character = root
target = scope:competitor
}
}
stress_impact = {
deceitful = minor_stress_impact_loss
arbitrary = miniscule_stress_impact_loss
vengeful = miniscule_stress_impact_loss
just = medium_stress_impact_gain
honest = medium_stress_impact_gain
forgiving = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
NOR = {
has_trait = just
has_trait = honest
has_trait = forgiving
}
}
}
}
# Cough loudly
option = {
name = ep2_tournament_events.1501.b
flavor = ep2_tournament_events.1501.b.tt
add_prestige = -25
scope:competitor = {
activity_tournament_change_contestant_score_effect = { SCORE = decrease_minor }
}
scope:activity = {
add_activity_log_entry = {
key = tournament_archery_cough_log
tags = { good }
score = 5
character = root
target = scope:competitor
}
}
stress_impact = {
arbitrary = miniscule_stress_impact_loss
deceitful = miniscule_stress_impact_loss
just = medium_stress_impact_gain
honest = medium_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = 1
ai_vengefulness = 1
}
}
}
# Stay silent
option = {
name = ep2_tournament_events.1501.c
scope:competitor = {
activity_tournament_change_contestant_score_effect = { SCORE = increase_miniscule }
}
stress_impact = {
deceitful = medium_stress_impact_gain
arbitrary = medium_stress_impact_gain
vengeful = medium_stress_impact_gain
just = miniscule_stress_impact_loss
honest = miniscule_stress_impact_loss
forgiving = miniscule_stress_impact_loss
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = -1
ai_vengefulness = -1
}
}
}
}
# It's a bit windy as you step up to shoot!
ep2_tournament_events.1502 = {
type = activity_event
title = ep2_tournament_events.1502.t
desc = ep2_tournament_events.1502.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
scripted_animation = bow_closed
}
cooldown = { years = 1 }
trigger = {
is_in_guest_subset = { name = qualified }
scope:activity = {
any_guest_subset_current_phase = { #random qualified participant
name = qualified
contest_event_general_contestant_valid_trigger = yes
}
}
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Events/Grand_Activities/Tournaments/ConstructionKits/ep2_event_grand_tournament_ck_arrow_flyby"
tournament_pivotal_flavor_variable_effect = { CONTEST = archery ID = 1502 }
scope:activity = {
random_guest_subset_current_phase = {
name = qualified
limit = { contest_event_general_contestant_valid_trigger = yes }
save_scope_as = contestant
}
}
}
# Take the shot anyway, because you're an experienced marksman
option = {
name = ep2_tournament_events.1502.a
trigger = {
OR = { #Make sure you're good at shooting a bow!
AND = {
has_trait = lifestyle_hunter
has_trait_xp = {
trait = lifestyle_hunter
track = hunter
value >= 50
}
}
AND = {
has_trait = tourney_participant
has_trait_xp = {
trait = tourney_participant
track = bow
value >= 50
}
}
}
}
activity_tournament_change_contestant_score_effect = { SCORE = increase_major }
add_prestige = medium_prestige_gain
if = {
limit = { has_trait = tourney_participant }
add_trait_xp = {
trait = tourney_participant
track = bow
value = tournament_hastiludes_xp_gain_major_value
}
}
stress_impact = {
base = miniscule_stress_impact_loss
ambitious = miniscule_stress_impact_loss
diligent = miniscule_stress_impact_loss
arrogant = miniscule_stress_impact_loss
content = minor_stress_impact_gain
lazy = minor_stress_impact_gain
humble = minor_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_energy = 1
ai_honor = 1
}
}
}
# Try and pin it on someone else
option = {
name = ep2_tournament_events.1502.b
flavor = ep2_tournament_events.1502.b.tt
duel = {
skill = diplomacy
value = medium_skill_rating
# Success
1 = {
desc = ep2_tournament_events.1502.b.success
show_chance = yes
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = ep2_tournament_events.1502.b.success
left_icon = root
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
scope:contestant = {
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
}
}
}
# Failure
1 = {
desc = ep2_tournament_events.1502.b.failure
show_chance = yes
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = ep2_tournament_events.1502.b.failure
left_icon = root
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
}
}
}
stress_impact = {
ambitious = miniscule_stress_impact_loss
deceitful = miniscule_stress_impact_loss
arbitrary = miniscule_stress_impact_loss
content = minor_stress_impact_gain
honest = medium_stress_impact_gain
just = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = -1
ai_honor = -1
}
}
}
# Have a go despite the wind
option = {
name = ep2_tournament_events.1502.c
duel = {
skill = prowess
value = high_skill_rating
# Success
1 = {
desc = ep2_tournament_events.1502.c.success
show_chance = yes
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = ep2_tournament_events.1502.c.success
left_icon = root
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
if = {
limit = { has_trait = tourney_participant }
add_trait_xp = {
trait = tourney_participant
track = bow
value = tournament_hastiludes_xp_gain_major_value
}
}
}
}
# Failure
1 = {
desc = ep2_tournament_events.1502.c.failure
show_chance = yes
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = ep2_tournament_events.1502.c.success
left_icon = root
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
}
}
}
stress_impact = {
ambitious = minor_stress_impact_gain
deceitful = minor_stress_impact_gain
arbitrary = minor_stress_impact_gain
content = miniscule_stress_impact_loss
honest = miniscule_stress_impact_loss
just = miniscule_stress_impact_loss
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 1
ai_honor = 1
}
}
}
}
# Bored waiting for your turn, try some mischief?
ep2_tournament_events.1503 = {
type = activity_event
title = ep2_tournament_events.1503.t
desc = ep2_tournament_events.1503.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = boredom
}
right_portrait = {
character = scope:contestant
scripted_animation = bow_closed
}
cooldown = { years = 1 }
trigger = {
is_in_guest_subset = { name = qualified }
scope:activity = {
any_guest_subset_current_phase = { #random qualified participant
name = qualified
contest_event_general_contestant_valid_trigger = yes
NOT = {
any_secret = {
NOT = { is_known_by = root }
}
}
save_temporary_scope_as = participant_1
}
any_guest_subset_current_phase = { #random qualified participant with a secret
name = qualified
this != scope:participant_1
contest_event_general_contestant_valid_trigger = yes
# Won't reveal a secret to you which you already know.
any_secret = {
NOT = { is_known_by = root }
}
}
}
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Events/Grand_Activities/Tournaments/ConstructionKits/ep2_event_grand_tournament_ck_wood_woosh"
tournament_pivotal_flavor_variable_effect = { CONTEST = archery ID = 1503 }
scope:activity = {
random_guest_subset_current_phase = { #random qualified participant
name = qualified
limit = {
contest_event_general_contestant_valid_trigger = yes
NOT = {
any_secret = {
NOT = { is_known_by = root }
}
}
}
save_scope_as = contestant
}
random_guest_subset_current_phase = { #random qualified participant with a secret
name = qualified
limit = {
contest_event_general_contestant_valid_trigger = yes
this != scope:contestant
# Won't reveal a secret to you which you already know.
any_secret = {
NOT = { is_known_by = root }
}
}
save_scope_as = secret_haver
random_secret = {
limit = {
NOT = { is_known_by = root }
}
save_scope_as = secret
}
}
}
}
# Move the line back a few feet
option = {
name = ep2_tournament_events.1503.a
flavor = ep2_tournament_events.1503.a.tt
duel = {
skill = intrigue
target = scope:contestant
# Success
1 = {
desc = ep2_tournament_events.1503.a.success
show_chance = yes
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = ep2_tournament_events.1503.a.success
left_icon = root
right_icon = scope:contestant
scope:contestant = {
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
}
}
}
# Failure
1 = {
desc = ep2_tournament_events.1503.a.failure
show_chance = yes
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
scope:activity = {
add_activity_log_entry = {
key = tournament_cheating_caught_log
tags = { good }
score = 5
character = root
target = scope:contestant
}
}
send_interface_toast = {
title = ep2_tournament_events.1503.a.failure
left_icon = root
right_icon = scope:contestant
add_prestige = medium_prestige_loss
}
}
}
stress_impact = {
ambitious = miniscule_stress_impact_loss
arbitrary = miniscule_stress_impact_loss
content = minor_stress_impact_gain
just = minor_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_energy = 0.5
ai_honor = -1
}
}
}
# Go and talk to the crowd
option = {
name = ep2_tournament_events.1503.b
flavor = ep2_tournament_events.1503.b.flavor
# Success, find a secret
duel = {
skills = { diplomacy intrigue }
value = medium_skill_rating
# Find a
1 = {
desc = ep2_tournament_events.1503.b.success
show_chance = yes
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
custom_tooltip = ep2_tournament_events.1503.b.tt
hidden_effect = { #So at to hide the secret until toast pops
send_interface_toast = {
title = ep2_tournament_events.1503.b.success
left_icon = root
scope:secret = {
reveal_to_without_events_effect = {
CHARACTER = root
}
}
}
}
}
# Failure, find nothing
1 = {
desc = ep2_tournament_events.1503.b.failure
show_chance = yes
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = ep2_tournament_events.1503.b.failure
left_icon = root
add_stress = minor_stress_loss
}
}
}
stress_impact = {
lazy = miniscule_stress_impact_loss
gregarious = miniscule_stress_impact_loss
shy = minor_stress_impact_gain
diligent = minor_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_compassion = 1
ai_honor = 1
}
}
}
# Bah, just wait it out
option = {
name = ep2_tournament_events.1503.c
stress_impact = {
gregarious = miniscule_stress_impact_gain
deceitful = miniscule_stress_impact_gain
impatient = miniscule_stress_impact_gain
shy = miniscule_stress_impact_loss
honest = miniscule_stress_impact_loss
patient = miniscule_stress_impact_loss
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = -1
ai_honor = 1
}
}
}
}
###################
### WRESTLING ###
###################
# You can use dirt to blind your opponent
ep2_tournament_events.2001 = {
type = activity_event
title = ep2_tournament_events.2001.t
desc = ep2_tournament_events.2001.desc
theme = tournament_contest
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = aggressive_unarmed
}
right_portrait = {
character = scope:versus_contestant
animation = rage
}
cooldown = { years = 1 }
trigger = {
contest_versus_player_vs_ai_trigger = yes
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Events/Grand_Activities/Tournaments/ConstructionKits/ep2_event_grand_tournament_ck_male_grunts"
contest_versus_player_vs_ai_scope_effect = yes
tournament_pivotal_flavor_variable_effect = { CONTEST = wrestling ID = 2001 }
}
# Throw dirt at them
option = {
name = ep2_tournament_events.2001.a
custom_tooltip = ep2_tournament_events.2001.a.tt
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
stress_impact = {
craven = medium_stress_impact_gain
brave = medium_stress_impact_loss
content = minor_stress_impact_gain
ambitious = minor_stress_impact_loss
arrogant = minor_stress_impact_loss
humble = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
NOR = {
has_trait = craven
has_trait = content
has_trait = humble
}
}
}
}
# Don't throw the dirt
option = {
name = ep2_tournament_events.2001.b
duel = {
skill = prowess
target = scope:versus_contestant
40 = { #You fight your way out
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
desc = ep2_tournament_events.2004.d.tt.success
send_interface_toast = {
title = ep2_tournament_events.2004.d.tt.success
left_icon = root
right_icon = scope:versus_contestant
activity_tournament_change_contestant_score_effect = { SCORE = increase_major }
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_medium_value
}
}
}
}
60 = { #You struggle fruitlessly
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
desc = ep2_tournament_events.2004.d.tt.failure
send_interface_toast = {
title = ep2_tournament_events.2004.d.tt.failure
left_icon = root
right_icon = scope:versus_contestant
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
}
}
}
stress_impact = {
craven = medium_stress_impact_loss
brave = medium_stress_impact_gain
content = minor_stress_impact_loss
ambitious = minor_stress_impact_gain
arrogant = minor_stress_impact_gain
humble = minor_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
NOR = {
has_trait = brave
has_trait = ambitious
has_trait = arrogant
}
}
}
}
}
# You go for the ol' oil check
ep2_tournament_events.2002 = {
type = activity_event
title = ep2_tournament_events.2002.t
desc = ep2_tournament_events.2002.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = personality_dishonorable
}
right_portrait = {
character = scope:versus_contestant
animation = shock
}
cooldown = { years = 1 }
trigger = {
NOT = { #Make sure player has two hands with which to fight
has_trait = maimed
}
contest_versus_player_vs_ai_trigger = yes
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Ambience/2D/ep2_amb_2d_crowd_surprise_reaction"
contest_versus_player_vs_ai_scope_effect = yes
save_scope_value_as = {
name = xp_range
value = {
integer_range = {
min = 1
max = 5
}
}
}
tournament_pivotal_flavor_variable_effect = { CONTEST = wrestling ID = 2002 }
}
# Pokey poke
option = {
name = ep2_tournament_events.2002.a
give_nickname = nick_the_dirty
scope:versus_contestant = {
add_character_modifier = {
modifier = tournament_walking_funny_modifier
years = 3
}
}
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
every_close_family_member = {
custom = ep2_tournament_events.2002.a.tt
add_opinion = {
target = root
opinion = -10
modifier = disgusted_opinion
}
}
stress_impact = {
honest = major_stress_impact_gain
just = major_stress_impact_gain
arbitrary = minor_stress_impact_loss
deceitful = minor_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
NOR = {
has_trait = honest
has_trait = just
}
}
}
}
# I'd rather not
option = {
name = ep2_tournament_events.2002.b
flavor = ep2_tournament_events.2002.b.tt
activity_tournament_change_contestant_score_effect = { SCORE = decrease_minor }
if = {
limit = { has_trait = tourney_participant }
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_minor_value
}
}
else = {
add_trait = tourney_participant
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_minor_value
}
}
stress_impact = {
honest = minor_stress_impact_loss
just = minor_stress_impact_loss
arbitrary = major_stress_impact_gain
deceitful = major_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
NOR = {
has_trait = arbitrary
has_trait = deceitful
}
}
}
}
}
# Your friend distracts the ref; use the chair?
ep2_tournament_events.2003 = {
type = activity_event
title = ep2_tournament_events.2003.t
desc = ep2_tournament_events.2003.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = scheme
}
right_portrait = {
character = scope:versus_contestant
animation = worry
}
lower_left_portrait = {
character = scope:friend
}
cooldown = { years = 1 }
trigger = {
contest_versus_player_vs_ai_trigger = yes
scope:activity = {
any_attending_character = {
is_alive = yes
NOR = {
this = scope:versus_matchee
this = scope:versus_matcher
}
OR = {
has_relation_friend = root
has_relation_best_friend = root
}
}
}
}
immediate = {
contest_versus_player_vs_ai_scope_effect = yes
tournament_pivotal_flavor_variable_effect = { CONTEST = wrestling ID = 2003 }
involved_activity = {
random_attending_character = {
limit = {
is_alive = yes
NOR = {
this = scope:versus_matchee
this = scope:versus_matcher
}
OR = {
has_relation_friend = root
has_relation_best_friend = root
}
}
save_scope_as = friend
}
}
save_scope_value_as = {
name = xp_range
value = {
integer_range = {
min = 1
max = 5
}
}
}
scope:activity = {
add_activity_log_entry = {
key = tournament_ref_distracted_log
tags = { good }
score = 5
character = root
target = scope:friend
}
}
}
# Viva la raza!
option = {
name = ep2_tournament_events.2003.a
trigger = {
OR = {
has_trait = deceitful
has_trait = arbitrary
}
}
custom_tooltip = ep2_tournament_events.2003.a.tt
give_nickname = nick_the_cheater
reverse_add_opinion = {
modifier = cheater_opinion
target = scope:versus_contestant
opinion = -40
}
activity_tournament_change_contestant_score_effect = { SCORE = increase_major }
stress_impact = {
base = minor_stress_impact_loss
brave = minor_stress_impact_gain
compassionate = minor_stress_impact_gain
just = major_stress_impact_gain
honest = major_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
NOR = {
has_trait = just
has_trait = brave
has_trait = honest
}
}
}
}
# Hit them with the chair
option = {
name = ep2_tournament_events.2003.b
flavor = ep2_tournament_events.2003.b.tt
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_minor_value
}
}
stress_impact = {
craven = medium_stress_impact_loss
brave = medium_stress_impact_gain
content = minor_stress_impact_gain
ambitious = minor_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
NOR = {
has_trait = brave
has_trait = content
}
}
}
}
# Choose the honourable route
option = {
name = ep2_tournament_events.2003.c
activity_tournament_change_contestant_score_effect = { SCORE = decrease_minor }
if = {
limit = { has_trait = tourney_participant }
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_minor_value
}
}
else = {
add_trait = tourney_participant
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_minor_value
}
}
stress_impact = {
base = miniscule_stress_impact_loss
compassionate = medium_stress_impact_loss
craven = medium_stress_impact_gain
brave = medium_stress_impact_loss
just = medium_stress_impact_loss
sadistic = medium_stress_impact_gain
callous = minor_stress_impact_gain
content = minor_stress_impact_loss
ambitious = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
NOR = {
has_trait = craven
has_trait = ambitious
}
}
}
}
}
# Opponent has a high weight
ep2_tournament_events.2004 = {
type = activity_event
title = ep2_tournament_events.2004.t
desc = ep2_tournament_events.2004.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = personality_rational
}
right_portrait = {
character = scope:versus_contestant
animation = personality_bold
}
cooldown = { years = 1 }
trigger = {
contest_versus_player_vs_ai_trigger = yes
trigger_if = {
limit = { this = scope:versus_matchee }
scope:versus_matcher = { current_weight >= 70 }
}
trigger_else = {
scope:versus_matchee = { current_weight >= 70 }
}
}
immediate = {
contest_versus_player_vs_ai_scope_effect = yes
tournament_pivotal_flavor_variable_effect = { CONTEST = wrestling ID = 2004 }
}
# Tire them out by moving them around
option = {
name = ep2_tournament_events.2004.a
trigger = {
OR = {
has_trait = shrewd
has_trait = intellect_good
scope:versus_contestant = {
has_trait = wheezing
}
}
}
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_medium_value
}
}
ai_chance = {
base = 100
}
}
# Just pick them up lol
option = {
name = ep2_tournament_events.2004.b
trigger = {
OR = {
has_trait = strong
has_trait = physique_good_1
has_trait = physique_good_2
has_trait = physique_good_3
}
}
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_medium_value
}
}
stress_impact = {
base = miniscule_stress_impact_loss
}
ai_chance = {
base = 100
}
}
# Medieval sumo
option = {
name = ep2_tournament_events.2004.c
trigger = {
current_weight > 50
NOT = {
has_trait = strong
has_trait = physique_good
}
}
add_internal_flag = special
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_medium_value
}
}
scope:activity = {
add_activity_log_entry = {
key = tournament_sumo_wrestling_log
tags = { good }
score = 5
character = root
target = scope:versus_contestant
}
}
stress_impact = {
base = miniscule_stress_impact_loss
craven = minor_stress_impact_gain
brave = minor_stress_impact_loss
}
ai_chance = {
base = 100
}
}
# Attempt to target their legs
option = {
name = ep2_tournament_events.2004.d
duel = {
skill = prowess
target = scope:versus_contestant
50 = { #You wear them down
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
desc = ep2_tournament_events.2004.d.tt.success
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_medium_value
}
}
}
50 = { #You fail to make an impact
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
desc = ep2_tournament_events.2004.d.tt.failure
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
}
}
ai_chance = {
base = 100
}
}
# Take them head-on
option = {
name = ep2_tournament_events.2004.e
add_prestige = minor_prestige_gain
activity_tournament_change_contestant_score_effect = { SCORE = decrease_minor }
stress_impact = {
craven = minor_stress_impact_gain
brave = minor_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
has_trait = craven
}
}
}
}
scripted_trigger suitably_amorous_opponent = {
is_physically_able_adult = yes
can_marry_trigger = yes
is_concubine = no
is_attracted_to_gender_of = root
NOT = {
has_trait = chaste
has_trait = celibate
}
}
# You and your opponent end up in a rather amorous position
ep2_tournament_events.2005 = {
type = activity_event
title = ep2_tournament_events.2005.t
desc = ep2_tournament_events.2005.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = flirtation_left
}
right_portrait = {
character = scope:versus_contestant
animation = flirtation
}
cooldown = { years = 1 }
trigger = {
contest_versus_player_vs_ai_trigger = yes
scope:versus_matcher = {
is_attracted_to_gender_of = scope:versus_matchee
might_cheat_on_every_partner_trigger = yes
}
scope:versus_matchee = {
is_attracted_to_gender_of = scope:versus_matcher
might_cheat_on_every_partner_trigger = yes
}
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Events/Grand_Activities/Tournaments/ConstructionKits/ep2_event_grand_tournament_ck_male_grunts"
contest_versus_player_vs_ai_scope_effect = yes
tournament_pivotal_flavor_variable_effect = { CONTEST = wrestling ID = 2005 }
}
# Give 'em a good tumble
option = {
name = ep2_tournament_events.2005.a
trigger = {
OR = {
has_trait = rakish
has_trait = seducer
has_trait = lustful
}
NOT = {
has_trait = chaste
}
}
had_sex_with_effect = {
CHARACTER = scope:versus_contestant
PREGNANCY_CHANCE = 50
}
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
stress_impact = {
base = minor_stress_impact_loss
}
tournament_contest_versus_resignation_effect = { RESIGNER = scope:versus_contestant CONTEST = wrestling SKILL = pugilism }
ai_chance = {
base = 100
}
}
# See if they're interested
option = {
name = ep2_tournament_events.2005.b
trigger = {
NOR = {
has_trait = rakish
has_trait = seducer
has_trait = lustful
}
}
random_list = {
5 = { #They are amenable to your advances
custom_tooltip = ep2_tournament_events.2005.b.tt.success
had_sex_with_effect = {
CHARACTER = scope:versus_contestant
PREGNANCY_CHANCE = 50
}
modifier = {
add = 5
scope:versus_contestant = {
has_trait = lustful
}
}
modifier = {
add = 5
scope:versus_contestant = {
has_trait = seducer
}
}
modifier = {
add = 5
scope:versus_contestant = {
has_trait = rakish
}
}
modifier = {
add = 1
scope:versus_contestant = {
trait_compatibility = {
target = root
value >= medium_positive_trait_compatibility
}
}
}
modifier = {
add = -100
scope:versus_contestant = {
has_trait = celibate
}
}
send_interface_toast = {
title = ep2_tournament_events.2005.b.tt.success
left_icon = root
right_icon = scope:versus_contestant
}
stress_impact = {
base = minor_stress_impact_loss
lustful = minor_stress_impact_loss
arrogant = minor_stress_impact_loss
rakish = minor_stress_impact_loss
seducer = minor_stress_impact_loss
}
tournament_contest_versus_resignation_effect = { RESIGNER = scope:versus_contestant CONTEST = wrestling SKILL = pugilism }
}
6 = { #They are flattered but decline
custom_tooltip = ep2_tournament_events.2005.b.tt.failure
modifier = {
add = 5
scope:versus_contestant = {
trait_compatibility = {
target = root
value >= medium_positive_trait_compatibility
}
}
}
modifier = {
add = 5
scope:versus_contestant = {
has_trait = celibate
}
}
send_interface_toast = {
title = ep2_tournament_events.2005.b.tt.failure
left_icon = root
right_icon = scope:versus_contestant
}
stress_impact = {
lustful = minor_stress_impact_gain
stubborn = minor_stress_impact_gain
arrogant = minor_stress_impact_gain
}
}
4 = { #They are horrified and angry
custom_tooltip = ep2_tournament_events.2005.b.tt.criticalfailure
modifier = {
add = 5
scope:versus_contestant = {
has_trait = chaste
}
}
modifier = {
add = 5
scope:versus_contestant = {
has_trait = celibate
}
}
send_interface_toast = {
title = ep2_tournament_events.2005.b.tt.criticalfailure
left_icon = root
right_icon = scope:versus_contestant
}
stress_impact = {
base = minor_stress_impact_gain
lustful = medium_stress_impact_gain
arrogant = medium_stress_impact_gain
}
}
}
stress_impact = {
chaste = major_stress_impact_gain
celibate = massive_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
NOR = {
has_trait = celibate
has_trait = chaste
}
}
}
}
# Take advantage to win the contest
option = {
name = ep2_tournament_events.2005.c
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
stress_impact = {
just = medium_stress_impact_gain
deceitful = minor_stress_impact_loss
arbitrary = minor_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
has_trait = just
}
}
}
}
# Death Event: Your opponent piledrivers you on to your head
ep2_tournament_events.2006 = {
type = activity_event
title = ep2_tournament_events.2006.t
desc = ep2_tournament_events.2006.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = shock
}
right_portrait = {
character = scope:versus_contestant
animation = rage
}
trigger = {
contest_versus_player_vs_ai_trigger = yes
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Ambience/2D/ep2_amb_2d_crowd_negative_reaction"
contest_versus_player_vs_ai_scope_effect = yes
tournament_pivotal_flavor_variable_effect = { CONTEST = wrestling ID = 2006 }
}
# Die
option = {
name = ep2_tournament_events.2006.a
hidden_effect = {
tournament_contest_versus_resignation_effect = { RESIGNER = root CONTEST = wrestling SKILL = pugilism }
}
death = {
death_reason = death_tournament_piledriver
}
scope:activity = {
add_activity_log_entry = {
key = tournament_wrestling_death_log
tags = { bad }
score = 10
character = root
}
}
ai_chance = {
base = 100
}
}
}
# A person storms the ring to protest a decision in your favour
ep2_tournament_events.2007 = {
type = activity_event
title = ep2_tournament_events.2007.t
desc = ep2_tournament_events.2007.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = shock
}
right_portrait = {
character = scope:versus_contestant
animation = worry
}
lower_right_portrait = {
character = scope:opponent_friend
}
cooldown = { years = 1 }
trigger = {
contest_versus_player_vs_ai_trigger = yes
scope:activity = {
any_attending_character = {
is_alive = yes
is_adult = yes
NOR = {
this = scope:versus_matchee
this = scope:versus_matcher
}
trigger_if = {
limit = { root = scope:versus_matchee }
has_relation_friend = scope:versus_matcher
}
trigger_else = { has_relation_friend = scope:versus_matchee }
}
}
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Ambience/2D/ep2_amb_2d_crowd_negative_reaction"
contest_versus_player_vs_ai_scope_effect = yes
scope:activity = {
random_guest_subset_current_phase = {
name = spectator
limit = {
is_alive = yes
is_adult = yes
NOR = {
this = scope:versus_matchee
this = scope:versus_matcher
}
trigger_if = {
limit = { root = scope:versus_matchee }
has_relation_friend = scope:versus_matcher
}
trigger_else = { has_relation_friend = scope:versus_matchee }
}
save_scope_as = opponent_friend
}
}
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
scope:activity = {
add_activity_log_entry = {
key = tournament_ring_stormed_log
tags = { good }
score = 5
character = root
target = scope:opponent_friend
}
}
}
# Guards! Have this miscreant removed!
option = {
name = ep2_tournament_events.2007.a
add_prestige = -50
progress_towards_rival_effect = {
REASON = rival_wrestling_liar
CHARACTER = scope:opponent_friend
OPINION = 0
}
stress_impact = {
wrathful = miniscule_stress_impact_loss
ambitious = miniscule_stress_impact_loss
deceitful = miniscule_stress_impact_loss
arbitrary = miniscule_stress_impact_loss
calm = medium_stress_impact_gain
content = medium_stress_impact_gain
honest = major_stress_impact_gain
just = major_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
NOR = {
has_trait = just
has_trait = honest
}
}
}
}
# Argue with them
option = {
name = ep2_tournament_events.2007.b
duel = {
skill = diplomacy
target = scope:opponent_friend
#You win the debate
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
desc = ep2_tournament_events.2007.b.tt.success
send_interface_toast = {
title = ep2_tournament_events.2007.b.tt.success
left_icon = root
right_icon = scope:opponent_friend
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = wit
value = tournament_hastiludes_xp_gain_medium_value
}
}
}
}
#They win the debate
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
desc = ep2_tournament_events.2007.b.tt.failure
send_interface_toast = {
title = ep2_tournament_events.2007.b.tt.failure
left_icon = root
right_icon = scope:opponent_friend
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
}
}
}
stress_impact = {
stubborn = miniscule_stress_impact_loss
diligent = miniscule_stress_impact_loss
fickle = medium_stress_impact_gain
lazy = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
NOR = {
has_trait = fickle
has_trait = lazy
}
}
}
}
# Admit it, gain nickname
option = {
name = ep2_tournament_events.2007.c
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
give_nickname = nick_the_honest
add_prestige = medium_prestige_value
reverse_add_opinion = {
modifier = impressed_opinion
target = scope:opponent_friend
opinion = 20
}
reverse_add_opinion = {
modifier = grateful_opinion
target = scope:versus_contestant
opinion = 20
}
stress_impact = {
honest = minor_stress_impact_loss
just = minor_stress_impact_loss
arbitrary = medium_stress_impact_gain
deceitful = medium_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_honor = 1
ai_vengefulness = -0.5
}
}
}
}
# What part of your opponent's body do you focus on?
ep2_tournament_events.2501 = {
type = activity_event
title = ep2_tournament_events.2501.t
desc = ep2_tournament_events.2501.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = shock
}
right_portrait = {
character = scope:versus_contestant
animation = throne_room_cheer_1
}
cooldown = { years = 1 }
trigger = {
contest_versus_player_vs_ai_trigger = yes
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Events/Grand_Activities/Tournaments/ConstructionKits/ep2_event_grand_tournament_ck_male_grunts"
contest_versus_player_vs_ai_scope_effect = yes
tournament_pivotal_flavor_variable_effect = { CONTEST = wrestling ID = 2501 }
}
# Aim for the head
option = {
name = ep2_tournament_events.2501.a
random_list = {
5 = { #You knock them out!
custom_tooltip = ep2_tournament_events.2501.a.tt.criticalsuccess
modifier = {
add = 5
prowess > high_skill_rating
}
modifier = {
add = -5
prowess < low_skill_rating
}
send_interface_toast = {
title = ep2_tournament_events.2501.a.tt.criticalsuccess
left_icon = root
right_icon = scope:versus_contestant
activity_tournament_change_contestant_score_effect = { SCORE = increase_major }
add_prestige = minor_prestige_gain
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_medium_value
}
}
}
}
20 = { #It works reasonably well
custom_tooltip = ep2_tournament_events.2501.a.tt.success
modifier = {
add = 10
prowess > high_skill_rating
}
send_interface_toast = {
title = ep2_tournament_events.2501.a.tt.success
left_icon = root
right_icon = scope:versus_contestant
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_minor_value
}
}
}
}
20 = { #Your opponent sees it coming
custom_tooltip = ep2_tournament_events.2501.a.tt.failure
send_interface_toast = {
title = ep2_tournament_events.2501.a.tt.failure
left_icon = root
right_icon = scope:versus_contestant
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
}
}
}
ai_chance = {
base = 100
}
}
# Aim for the body
option = {
name = ep2_tournament_events.2501.b
random_list = {
10 = { #It works well
custom_tooltip = ep2_tournament_events.2501.a.tt.criticalsuccess
modifier = {
add = 5
prowess > high_skill_rating
}
add_prestige = minor_prestige_gain
send_interface_toast = {
title = ep2_tournament_events.2501.a.tt.criticalsuccess
left_icon = root
right_icon = scope:versus_contestant
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_minor_value
}
}
}
}
10 = { #It works reasonably well
custom_tooltip = ep2_tournament_events.2501.a.tt.success
modifier = {
add = 10
prowess > high_skill_rating
}
send_interface_toast = {
title = ep2_tournament_events.2501.a.tt.success
left_icon = root
right_icon = scope:versus_contestant
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
}
}
10 = { #Your opponent sees it coming
custom_tooltip = ep2_tournament_events.2501.a.tt.failure
modifier = {
add = 10
prowess < low_skill_rating
}
send_interface_toast = {
title = ep2_tournament_events.2501.a.tt.failure
left_icon = root
right_icon = scope:versus_contestant
add_prestige = minor_prestige_loss
activity_tournament_change_contestant_score_effect = { SCORE = decrease_minor }
}
}
}
ai_chance = {
base = 100
}
}
# Attack their legs
option = {
name = ep2_tournament_events.2501.c
random_list = {
1 = { #It works well
custom_tooltip = ep2_tournament_events.2501.a.tt.criticalsuccess
modifier = {
add = -5
prowess < low_skill_rating
}
add_prestige = minor_prestige_gain
send_interface_toast = {
title = ep2_tournament_events.2501.a.tt.criticalsuccess
left_icon = root
right_icon = scope:versus_contestant
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_minor_value
}
}
}
}
30 = { #It works reasonably well
custom_tooltip = ep2_tournament_events.2501.a.tt.success
modifier = {
add = 10
prowess > high_skill_rating
}
send_interface_toast = {
title = ep2_tournament_events.2501.a.tt.success
left_icon = root
right_icon = scope:versus_contestant
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
}
}
5 = { #Your opponent sees it coming
custom_tooltip = ep2_tournament_events.2501.a.tt.failure
modifier = {
add = 10
prowess < low_skill_rating
}
send_interface_toast = {
title = ep2_tournament_events.2501.a.tt.failure
left_icon = root
right_icon = scope:versus_contestant
add_prestige = minor_prestige_loss
activity_tournament_change_contestant_score_effect = { SCORE = decrease_minor }
}
}
}
ai_chance = {
base = 100
}
}
}
# Your finger pops out of its socket!
ep2_tournament_events.2502 = {
type = activity_event
title = ep2_tournament_events.2502.t
desc = ep2_tournament_events.2502.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = pain
}
right_portrait = {
character = scope:versus_contestant
animation = personality_dishonorable
}
cooldown = { years = 1 }
trigger = {
contest_versus_player_vs_ai_trigger = yes
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Events/Grand_Activities/Tournaments/ConstructionKits/ep2_event_grand_tournament_ck_male_grunts"
contest_versus_player_vs_ai_scope_effect = yes
tournament_pivotal_flavor_variable_effect = { CONTEST = wrestling ID = 2502 }
}
# Try and pop it back in
option = {
name = ep2_tournament_events.2502.a
custom_tooltip = ep2_tournament_events.2502.a.tt
random_list = {
5 = { #It works
desc = ep2_tournament_events.2502.a.tt.success
modifier = {
add = 30
has_trait = lifestyle_physician
}
modifier = {
add = 10
has_trait = lifestyle_herbalist
}
send_interface_toast = {
title = ep2_tournament_events.2502.a.tt.success
left_icon = root
right_icon = scope:versus_contestant
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
add_prestige = minor_prestige_gain
}
}
20 = { #It doesn't work
desc = ep2_tournament_events.2502.a.tt.failure
modifier = {
add = 10
has_trait = physique_bad
}
send_interface_toast = {
title = ep2_tournament_events.2502.a.tt.failure
left_icon = root
right_icon = scope:versus_contestant
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
add_character_modifier = {
modifier = tournament_dislocated_finger_modifier
years = 1
}
}
}
}
scope:activity = {
add_activity_log_entry = {
key = tournament_finger_popped_log
tags = { good }
score = 5
character = root
target = scope:versus_contestant
}
}
stress_impact = {
craven = medium_stress_impact_gain
impatient = minor_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
has_trait = craven
}
}
}
# Work around it
option = {
name = ep2_tournament_events.2502.b
activity_tournament_change_contestant_score_effect = { SCORE = decrease_minor }
add_character_modifier = {
modifier = tournament_dislocated_finger_modifier
years = 1
}
ai_chance = {
base = 100
}
}
# Concede
option = {
name = ep2_tournament_events.2502.c
tournament_contest_versus_resignation_effect = { RESIGNER = root CONTEST = wrestling SKILL = pugilism }
stress_impact = {
craven = medium_stress_impact_loss
brave = medium_stress_impact_gain
content = minor_stress_impact_loss
ambitious = minor_stress_impact_gain
arrogant = minor_stress_impact_gain
humble = minor_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = brave
has_trait = ambitious
}
}
}
}
}
scripted_trigger contest_wrestling_eye_poke_trigger = {
OR = {
has_trait = sadistic
has_trait = deceitful
ai_compassion <= low_positive_ai_value
}
}
# Your opponent tries eye-poking you
ep2_tournament_events.2503 = {
type = activity_event
title = ep2_tournament_events.2503.t
desc = ep2_tournament_events.2503.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = grief
}
right_portrait = {
character = scope:versus_contestant
animation = personality_cynical
}
cooldown = { years = 1 }
trigger = {
contest_versus_player_vs_ai_trigger = yes
trigger_if = {
limit = { this = scope:versus_matchee }
scope:versus_matcher = { contest_wrestling_eye_poke_trigger = yes }
}
trigger_else = {
scope:versus_matchee = { contest_wrestling_eye_poke_trigger = yes }
}
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Events/Grand_Activities/Tournaments/ConstructionKits/ep2_event_grand_tournament_ck_male_grunts"
contest_versus_player_vs_ai_scope_effect = yes
tournament_pivotal_flavor_variable_effect = { CONTEST = wrestling ID = 2503 }
}
# Poke them back
option = {
name = ep2_tournament_events.2503.a
trigger = {
OR = {
has_trait = wrathful
has_trait = vengeful
has_trait = deceitful
has_trait = arbitrary
has_trait = callous
has_trait = sadistic
}
NOT = {
has_trait = one_eyed
}
}
custom_tooltip = ep2_tournament_events.2503.a.tt
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_minor_value
}
}
add_prestige = minor_prestige_loss
add_character_modifier = {
modifier = tournament_blurry_vision_modifier
years = 3
}
scope:versus_contestant = {
add_character_modifier = {
modifier = tournament_blurry_vision_modifier
years = 3
}
}
stress_impact = {
base = miniscule_stress_impact_loss
vengeful = minor_stress_impact_gain
wrathful = minor_stress_impact_gain
craven = medium_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = vengeful
has_trait = wrathful
}
}
}
}
# Complain to get them disqualified, and take some time to recover
option = {
name = ep2_tournament_events.2503.b
trigger = {
NOT = {
has_trait = one_eyed
}
}
duel = {
skill = diplomacy
target = scope:versus_contestant
#You get them disqualified
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
desc = ep2_tournament_events.2503.b.tt.success
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
}
#You fail to get them disqualified
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
desc = ep2_tournament_events.2503.b.tt.failure
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
}
}
}
# Continue the fight
option = {
name = ep2_tournament_events.2503.c
trigger = {
NOT = {
has_trait = one_eyed
}
}
custom_tooltip = ep2_tournament_events.2503.c.tt
activity_tournament_change_contestant_score_effect = { SCORE = decrease_minor }
add_character_modifier = {
modifier = tournament_blurry_vision_modifier
years = 3
}
}
# Continue the fight but with no working eyes
option = {
name = ep2_tournament_events.2503.d
trigger = {
has_trait = one_eyed
}
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
add_character_modifier = {
modifier = tournament_really_blurry_vision_modifier
years = 5
}
}
}
# Your berserker opponent bites your nose off
ep2_tournament_events.2504 = {
type = activity_event
title = ep2_tournament_events.2504.t
desc = ep2_tournament_events.2504.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = grief
}
right_portrait = {
character = scope:versus_contestant
animation = rage
}
cooldown = { years = 1 }
trigger = {
contest_versus_player_vs_ai_trigger = yes
trigger_if = {
limit = { this = scope:versus_matchee }
scope:versus_matcher = { has_trait = berserker }
}
trigger_else = {
scope:versus_matchee = { has_trait = berserker }
}
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Ambience/2D/ep2_amb_2d_crowd_negative_reaction"
contest_versus_player_vs_ai_scope_effect = yes
tournament_pivotal_flavor_variable_effect = { CONTEST = wrestling ID = 2504 }
random_court_position_holder = {
type = court_physician_court_position
save_scope_as = physician
}
add_stress = major_stress_gain
}
# Aaaaaaaaagggghhhh! Disqualify them!
option = {
name = ep2_tournament_events.2504.a
custom_tooltip = ep2_tournament_events.2504.a.tt
activity_tournament_change_contestant_score_effect = { SCORE = increase_major }
add_trait = disfigured
tournament_contest_versus_disqualification_effect = { DISQUALIFIED = scope:versus_contestant MATCH = root CONTEST = wrestling SKILL = pugilism }
scope:activity = {
add_activity_log_entry = {
key = tournament_berserker_log
tags = { bad }
score = 5
character = root
target = scope:versus_contestant
}
}
ai_chance = {
base = 100
}
}
# Get me my physician! I don't need to participate any further!
option = {
name = ep2_tournament_events.2504.b
trigger = {
court_physician_available_trigger = yes
}
custom_tooltip = ep2_tournament_events.2504.b.tt
random_list = {
#Your physician works miracles
2 = {
modifier = {
add = 5
scope:physician = {
learning > average_skill_rating
}
}
modifier = {
add = 10
scope:physician = {
learning > high_skill_rating
}
}
modifier = {
add = 10
scope:physician = {
has_trait = lifestyle_herbalist
}
}
modifier = {
add = 20
scope:physician = {
has_trait = lifestyle_physician
}
}
custom_tooltip = ep2_tournament_events.2504.b.tt.criticalsuccess
increase_wounds_effect = { REASON = fight }
}
#Your physician saves your nose
10 = {
modifier = {
add = 5
scope:physician = {
learning > average_skill_rating
}
}
modifier = {
add = 10
scope:physician = {
learning > high_skill_rating
}
}
modifier = {
add = 10
scope:physician = {
has_trait = lifestyle_herbalist
}
}
modifier = {
add = 20
scope:physician = {
has_trait = lifestyle_physician
}
}
custom_tooltip = ep2_tournament_events.2504.b.tt.success
increase_wounds_effect = { REASON = fight }
add_trait = scarred
add_trait_xp = {
trait = scarred
value = {
integer_range = {
min = 25
max = 60
}
}
}
}
#Your physician is unable to save your nose
10 = {
modifier = {
add = 5
scope:physician = {
learning < average_skill_rating
}
}
modifier = {
add = 10
scope:physician = {
learning < low_skill_rating
}
}
custom_tooltip = ep2_tournament_events.2504.b.tt.failure
increase_wounds_effect = { REASON = fight }
add_trait = disfigured
}
}
stress_impact = {
base = miniscule_stress_impact_loss
vengeful = minor_stress_impact_gain
wrathful = minor_stress_impact_gain
craven = medium_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = vengeful
has_trait = wrathful
}
}
}
}
# Find me a physician! I don't need to participate any further!
option = {
name = ep2_tournament_events.2504.c
trigger = {
court_physician_available_trigger = no
}
custom_tooltip = ep2_tournament_events.2504.c.tt
increase_wounds_effect = { REASON = fight }
add_trait = disfigured
tournament_contest_versus_resignation_effect = { RESIGNER = root CONTEST = wrestling SKILL = pugilism }
stress_impact = {
base = miniscule_stress_impact_loss
vengeful = minor_stress_impact_gain
wrathful = minor_stress_impact_gain
craven = medium_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = vengeful
has_trait = wrathful
}
}
}
}
}
# Death event: opponent kicks your head through 180 degrees
ep2_tournament_events.2506 = {
type = activity_event
title = ep2_tournament_events.2506.t
desc = ep2_tournament_events.2506.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = pain
}
right_portrait = {
character = scope:versus_contestant
animation = shock
}
trigger = {
contest_versus_player_vs_ai_trigger = yes
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Ambience/2D/ep2_amb_2d_crowd_surprise_reaction"
contest_versus_player_vs_ai_scope_effect = yes
}
# Urk!
option = {
name = ep2_tournament_events.2506.a
hidden_effect = {
tournament_contest_versus_resignation_effect = { RESIGNER = root CONTEST = wrestling SKILL = pugilism }
}
scope:activity = {
add_activity_log_entry = {
key = tournament_wrestling_death_log
tags = { bad }
score = 10
character = root
}
}
death = {
death_reason = death_tournament_roundhouse
}
ai_chance = {
base = 100
}
}
}
# Discombobulate
ep2_tournament_events.2507 = {
type = activity_event
title = ep2_tournament_events.2507.t
desc = ep2_tournament_events.2507.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = personality_callous
}
right_portrait = {
character = scope:versus_contestant
animation = rage
}
cooldown = { years = 1 }
trigger = {
contest_versus_player_vs_ai_trigger = yes
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Ambience/2D/ep2_amb_2d_crowd_surprise_reaction"
contest_versus_player_vs_ai_scope_effect = yes
tournament_pivotal_flavor_variable_effect = { CONTEST = wrestling ID = 2507 }
}
# ...do it again
option = {
name = ep2_tournament_events.2507.a
trigger = {
OR = {
has_trait = callous
has_trait = sadistic
has_trait = wrathful
}
}
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_medium_value
}
}
scope:versus_contestant = {
add_character_modifier = {
modifier = tournament_discombobulated_modifier
years = 10
}
add_opinion = {
modifier = hate_opinion
target = root
opinion = -60
}
}
activity_tournament_change_contestant_score_effect = { SCORE = increase_major }
stress_impact = {
base = minor_stress_impact_loss
}
ai_chance = {
base = 100
}
}
# Finish the fight quickly
option = {
name = ep2_tournament_events.2507.b
flavor = ep2_tournament_events.2507.b.tt
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_minor_value
}
}
add_prestige = minor_prestige_gain
reverse_add_opinion = {
modifier = grateful_opinion
target = scope:versus_contestant
opinion = 10
}
stress_impact = {
compassionate = minor_stress_impact_loss
sadistic = minor_stress_impact_gain
}
ai_chance = {
base = 100
}
}
# Persuade them to give up
option = {
name = ep2_tournament_events.2507.c
duel = {
skill = diplomacy
value = medium_skill_rating
# Success
1 = {
desc = ep2_tournament_events.2507.c.success
modifier = {
add = 10
has_trait = compassionate
}
modifier = {
add = 2
has_trait = humble
}
modifier = {
add = 5
has_trait = patient
}
modifier = {
add = 5
has_trait = education_diplomacy
}
modifier = {
add = 10
has_trait = intellect_good
}
modifier = {
add = 15
has_trait = shrewd
}
modifier = {
add = 20
has_trait = diplomat
}
compare_modifier = {
value = scope:duel_value
multiplier = 5
}
send_interface_toast = {
title = ep2_tournament_events.2507.c.success
left_icon = root
right_icon = scope:versus_contestant
add_prestige = minor_prestige_gain
reverse_add_opinion = {
modifier = kindness_opinion
target = scope:versus_contestant
opinion = 20
}
tournament_contest_versus_resignation_effect = { RESIGNER = scope:versus_contestant CONTEST = wrestling SKILL = pugilism }
}
min = 5
}
# Failure
1 = {
desc = ep2_tournament_events.2507.c.failure
compare_modifier = {
value = scope:duel_value
multiplier = -5
}
modifier = {
add = 10
has_trait = callous
}
modifier = {
add = 5
has_trait = arrogant
}
modifier = {
add = 2
has_trait = impatient
}
modifier = {
add = 5
has_trait = intellect_bad
}
modifier = {
add = 10
has_trait = lisping
}
send_interface_toast = {
title = ep2_tournament_events.2507.c.failure
left_icon = root
right_icon = scope:versus_contestant
add_prestige = minor_prestige_loss
reverse_add_opinion = {
modifier = insult_opinion
target = scope:versus_contestant
opinion = -30
}
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
}
min = 5
}
}
ai_chance = {
base = 100
}
}
}
##################
### QUINTAIN ###
##################
scripted_trigger tournament_events_3501_knight_trigger = {
age < 25 #Need to be young to prove themselves!
is_ai = yes #No players!
can_be_knight_trigger = { ARMY_OWNER = root } # CAN be a knight...
is_knight = no #...but isn't currently
is_landed = no #is not landed, to avoid taking anyone good
NOR = { #is not employed, to avoid taking anyone useful
has_council_position = councillor_spouse
has_council_position = councillor_marshal
has_council_position = councillor_court_chaplain
has_council_position = councillor_steward
has_council_position = councillor_spymaster
}
this != root #isn't you, or the either knight
}
# Two young knights vie for your attention
ep2_tournament_events.3501 = {
type = activity_event
title = ep2_tournament_events.3501.t
desc = ep2_tournament_events.3501.desc
theme = tournament_contest
left_portrait = {
character = root
animation = personality_callous
}
lower_right_portrait = {
character = scope:knight1
}
lower_left_portrait = {
character = scope:knight2
}
cooldown = { years = 1 }
trigger = {
this = scope:host
scope:activity = {
any_guest_subset_current_phase = {
name = contestant
count >= 2
tournament_events_3501_knight_trigger = yes
is_alive = yes
}
has_current_phase = tournament_phase_joust
}
}
immediate = {
scope:activity = {
random_guest_subset_current_phase = {
name = contestant
limit = {
tournament_events_3501_knight_trigger = yes
is_alive = yes
}
save_scope_as = knight1
}
random_guest_subset_current_phase = {
name = contestant
limit = {
tournament_events_3501_knight_trigger = yes
is_alive = yes
this != scope:knight1
}
save_scope_as = knight2
}
}
}
# Pick Knight 1
option = {
name = ep2_tournament_events.3501.a
add_courtier = scope:knight1
scope:knight1 = {
add_opinion = {
target = root
modifier = flattered_opinion
opinion = 50
}
accolade_medium_glory_gain_with_checks_effect = yes
scope:knight2 = {
add_opinion = {
modifier = hate_opinion
target = scope:knight1
opinion = -60
}
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -10
}
}
}
scope:activity = {
add_activity_log_entry = {
key = tournament_quintain_choice_log_1
tags = { good }
score = 5
character = root
target = scope:knight1
}
}
ai_chance = {
base = 100
}
}
# Pick Knight 2
option = {
name = ep2_tournament_events.3501.b
add_courtier = scope:knight2
scope:knight2 = {
add_opinion = {
target = root
modifier = flattered_opinion
opinion = 50
}
accolade_medium_glory_gain_with_checks_effect = yes
scope:knight1 = {
add_opinion = {
modifier = hate_opinion
target = scope:knight2
opinion = -60
}
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -10
}
}
}
scope:activity = {
add_activity_log_entry = {
key = tournament_quintain_choice_log_2
tags = { good }
score = 5
character = root
target = scope:knight2
}
}
ai_chance = {
base = 100
}
}
# Pick whoever wins the next match!
option = {
name = ep2_tournament_events.3501.c
scope:knight1 = {
duel = {
skill = prowess
target = scope:knight2
50 = {
show_chance = no
compare_modifier = {
value = scope:duel_value
multiplier = 1.5
}
desc = ep2_tournament_events.knight_1_wins
scope:activity = {
add_activity_log_entry = {
key = tournament_quintain_choice_log_1
tags = { good }
score = 5
character = root
target = scope:knight1
}
}
send_interface_toast = {
title = ep2_tournament_events.knight_1_wins
left_icon = root
right_icon = scope:knight1
add_courtier = scope:knight1
scope:knight1 = {
accolade_minor_glory_gain_with_checks_effect = yes
}
}
}
50 = {
show_chance = no
compare_modifier = {
value = scope:duel_value
multiplier = -1.5
}
desc = ep2_tournament_events.knight_2_wins
scope:activity = {
add_activity_log_entry = {
key = tournament_quintain_choice_log_2
tags = { good }
score = 5
character = root
target = scope:knight2
}
}
send_interface_toast = {
title = ep2_tournament_events.knight_2_wins
left_icon = root
right_icon = scope:knight2
add_courtier = scope:knight2
scope:knight2 = {
accolade_minor_glory_gain_with_checks_effect = yes
}
}
}
}
}
ai_chance = {
base = 100
}
}
# Pick neither
option = {
name = ep2_tournament_events.3501.d
if = {
limit = { activity_is_competing_trigger = yes }
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
}
scope:knight1 = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -20
}
progress_towards_rival_effect = {
REASON = rival_quintain_knight_anger
CHARACTER = scope:knight2
OPINION = 0
}
}
scope:knight2 = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -20
}
progress_towards_rival_effect = {
REASON = rival_quintain_knight_anger
CHARACTER = scope:knight1
OPINION = 0
}
}
ai_chance = {
base = 100
}
}
}
# Quintain breaks
ep2_tournament_events.3502 = {
type = activity_event
title = ep2_tournament_events.3502.t
desc = ep2_tournament_events.3502.desc
theme = tournament_contest
left_portrait = {
character = root
animation = shock
}
right_portrait = {
character = scope:competitor
animation = personality_honorable
}
cooldown = { years = 1 }
trigger = {
this = scope:host
scope:activity = {
any_guest_subset_current_phase = {
name = contestant
contest_event_general_contestant_valid_trigger = yes
}
has_current_phase = tournament_phase_joust
}
}
immediate = {
scope:activity = {
random_guest_subset_current_phase = {
name = contestant
limit = { contest_event_general_contestant_valid_trigger = yes }
save_scope_as = competitor
}
activity_location.province_owner = { save_scope_as = mayor }
}
scope:activity = {
add_activity_log_entry = {
key = tournament_broken_quintain_log
tags = { bad }
score = 5
character = scope:mayor
}
}
}
option = { # Punish the builder
name = ep2_tournament_events.3502.a
trigger = {
this = scope:host
}
if = {
limit = { activity_is_competing_trigger = yes}
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
}
add_prestige = medium_prestige_loss
progress_towards_rival_effect = {
REASON = rival_quintain_collapse_blame
CHARACTER = scope:mayor
OPINION = default_rival_opinion
}
stress_impact = {
base = miniscule_stress_impact_gain
calm = minor_stress_impact_gain
wrathful = miniscule_stress_impact_loss
vengeful = miniscule_stress_impact_loss
forgiving = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
has_trait = forgiving
}
}
}
option = { # Criticise the host
name = ep2_tournament_events.3502.b
trigger = {
this != scope:host
}
progress_towards_rival_effect = {
REASON = rival_quintain_collapse_blame
CHARACTER = scope:mayor
OPINION = default_rival_opinion
}
reverse_add_opinion = {
target = scope:host
modifier = angry_opinion
opinion = -30
}
stress_impact = {
forgiving = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
has_trait = forgiving
}
}
}
option = { # Pay for its repair
name = ep2_tournament_events.3502.c
remove_short_term_gold = medium_gold_value
add_prestige = minor_prestige_gain
if = {
limit = {
this != scope:host
}
reverse_add_opinion = {
target = scope:host
modifier = grateful_opinion
opinion = 30
}
}
stress_impact = {
greedy = medium_stress_impact_gain
generous = miniscule_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
has_trait = greedy
}
}
}
option = { # Pull out
name = ep2_tournament_events.3502.d
reverse_add_opinion = {
target = scope:competitor
modifier = compliment_opinion
opinion = 20
}
stress_impact = {
arrogant = minor_stress_impact_gain
humble = miniscule_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = ambitious
has_trait = stubborn
has_trait = arrogant
has_trait = brave
}
}
}
}
}
# Hapless knight ends up on the quintain
ep2_tournament_events.3503 = {
type = activity_event
title = ep2_tournament_events.3503.t
desc = ep2_tournament_events.3503.desc
theme = tournament_contest
left_portrait = {
character = root
animation = laugh
}
right_portrait = {
character = scope:hapless_knight
animation = pain
}
cooldown = { years = 1 }
trigger = {
this = scope:host
scope:activity = {
any_guest_subset_current_phase = {
name = contestant
contest_event_general_contestant_valid_trigger = yes
is_landed = no #Make sure they're not a noble
is_lowborn = yes #...and again
prowess < medium_skill_rating #Make sure they're likely to actually be bad
is_alive = yes #duh
}
has_current_phase = tournament_phase_joust
}
}
immediate = {
scope:activity = {
random_guest_subset_current_phase = {
name = contestant
limit = {
contest_event_general_contestant_valid_trigger = yes
is_landed = no #Make sure they're not a noble
is_lowborn = yes #...and again
prowess < medium_skill_rating #Make sure they're likely to actually be bad
is_alive = yes #duh
}
save_scope_as = hapless_knight
activity_tournament_change_contestant_score_effect = { SCORE = decrease_major }
}
add_activity_log_entry = {
key = tournament_hapless_knight_log
tags = { good }
score = 5
character = root
target = scope:hapless_knight
}
}
scope:hapless_knight = { accolade_minor_glory_loss_with_checks_effect = yes }
}
option = { # Offer them a place as a jester
name = ep2_tournament_events.3503.a
trigger = {
#Make sure you can actually offer them a jester position
can_appoint_char_to_court_position = {
CHAR = scope:hapless_knight
COURT_POS = court_jester_court_position
}
}
random_list = {
24 = { #They accept
modifier = { #A humble person might be more likely to accept
add = 40
scope:hapless_knight = {
has_trait = humble
}
}
modifier = { #A fickle person is less likely to adhere to their profession
add = 20
scope:hapless_knight = {
has_trait = fickle
}
}
modifier = { #A lazy person sees the opportunity for a comfortable life with minimal effort
add = 20
scope:hapless_knight = {
has_trait = lazy
}
}
modifier = { #Perhaps more likely if they're good at it
add = 10
scope:hapless_knight = {
aptitude:court_jester_court_position >= 2
}
}
modifier = { #A gregarious person loves interacting with people
add = 5
scope:hapless_knight = {
has_trait = gregarious
}
}
desc = ep2_tournament_events.3503.a.tt.success
send_interface_toast = {
title = ep2_tournament_events.3503.a.tt.success
left_icon = root
right_icon = scope:hapless_knight
hidden_effect = {
scope:hapless_knight = { set_employer = root }
}
court_position_grant_effect = {
EMPLOYER = root
POS = court_jester
CANDIDATE = scope:hapless_knight
}
scope:hapless_knight = {
save_scope_as = resigner
tournament_contest_versus_resignation_effect = { RESIGNER = scope:hapless_knight CONTEST = joust SKILL = horse }
}
}
}
76 = { #They refuse
modifier = { #An arrogant person would almost never accept
add = 200
scope:hapless_knight = {
has_trait = arrogant
}
}
modifier = { #A stubborn person doesn't want a career change
add = 50
scope:hapless_knight = {
has_trait = stubborn
}
}
desc = ep2_tournament_events.3503.a.tt.failure
send_interface_toast = {
title = ep2_tournament_events.3503.a.tt.failure
left_icon = root
right_icon = scope:hapless_knight
progress_towards_rival_effect = {
REASON = rival_quintain_collapse_blame
CHARACTER = scope:hapless_knight
OPINION = default_rival_opinion
}
}
}
}
ai_chance = {
base = 100
}
}
option = { # Try to get them banned
name = ep2_tournament_events.3503.b
progress_towards_rival_effect = {
REASON = rival_tournament_attempted_banning
CHARACTER = scope:hapless_knight
OPINION = default_rival_opinion
}
duel = {
skill = diplomacy
target = scope:hapless_knight
# Success
50 = {
show_chance = yes
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
desc = ep2_tournament_events.3503.b.tt.success
send_interface_toast = {
title = ep2_tournament_events.3503.b.tt.success
left_icon = root
right_icon = scope:enemy
if = {
limit = { activity_is_competing_trigger = yes }
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
}
scope:hapless_knight = {
add_prestige = minor_prestige_loss
add_character_flag = tournament_not_competing
custom_tooltip = tournament_not_competing_tt
}
scope:activity = {
remove_from_guest_subset = {
name = contestant
target = scope:hapless_knight
}
add_to_guest_subset = {
name = spectator
target = scope:hapless_knight
}
}
}
}
# Failure
50 = {
show_chance = yes
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
desc = ep2_tournament_events.3503.b.tt.failure
send_interface_toast = {
title = ep2_tournament_events.3503.b.tt.failure
left_icon = root
right_icon = scope:enemy
add_prestige = minor_prestige_loss
}
}
}
ai_chance = {
base = 100
}
}
option = { # You decide you quite like them
name = ep2_tournament_events.3503.c
if = {
limit = { activity_is_competing_trigger = yes }
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
}
progress_towards_friend_effect = {
REASON = friend_joust_endearment
CHARACTER = scope:hapless_knight
OPINION = default_friend_opinion
}
stress_impact = {
sadistic = medium_stress_impact_gain
callous = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = callous
has_trait = sadistic
}
}
}
}
option = { # Laugh at them
name = ep2_tournament_events.3503.d
custom_tooltip = available_because_intent_tt
trigger = { has_activity_intent = reduce_stress_intent }
progress_towards_rival_effect = {
REASON = rival_contest_mockery
CHARACTER = scope:hapless_knight
OPINION = default_rival_opinion
}
scope:hapless_knight = {
add_prestige = medium_prestige_loss
activity_tournament_change_contestant_score_effect = { SCORE = decrease_major }
}
stress_impact = {
base = major_stress_impact_loss
compassionate = minor_stress_impact_gain
}
ai_chance = {
base = 100
}
}
}
#Death event: Quintain hits you
ep2_tournament_events.3504 = {
type = activity_event
title = ep2_tournament_events.3504.t
desc = ep2_tournament_events.3504.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = pain
}
trigger = {
is_participant_in_activity = scope:activity
scope:activity = {
has_current_phase = tournament_phase_joust
}
}
option = { # Ouch!
name = ep2_tournament_events.3504.a
random_list = {
1 = {
show_chance = no
increase_wounds_effect = { REASON = accident }
}
1 = {
show_chance = no
add_trait = incapable
}
1 = {
show_chance = no
death = {
death_reason = death_tournament_quintain_hit
}
scope:activity = {
add_activity_log_entry = {
key = tournament_quintain_death_log
tags = { bad }
score = 10
character = root
}
}
}
}
ai_chance = {
base = 100
}
}
}
#################
### JOUST ###
#################
# You get injured
ep2_tournament_events.4001 = {
type = activity_event
title = ep2_tournament_events.4001.t
desc = ep2_tournament_events.4001.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = jockey_loss
}
right_portrait = {
character = scope:versus_contestant
animation = jockey_lance_couched_gallop
}
cooldown = { months = 2 }
trigger = {
#DLC check.
#has_ep2_dlc_trigger = yes
#Standard checks.
contest_versus_player_vs_ai_trigger = yes
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Ambience/2D/ep2_amb_2d_crowd_surprise_reaction"
contest_versus_player_vs_ai_scope_effect = yes
tournament_pivotal_flavor_variable_effect = { CONTEST = joust ID = 4001 }
scope:activity = {
add_activity_log_entry = {
key = tournament_joust_injury_log
tags = { bad }
score = 5
character = root
}
}
}
option = { # Pull through
name = ep2_tournament_events.4001.a
trigger = {
OR = {
has_trait = physique_good
has_trait = strong
}
}
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = horse
value = tournament_hastiludes_xp_gain_medium_value
}
}
increase_wounds_no_death_effect = { REASON = battle }
add_prestige = medium_prestige_gain
stress_impact = {
base = miniscule_stress_impact_gain
fickle = minor_stress_impact_gain
stubborn = minor_stress_impact_loss
}
ai_chance = {
base = 100
}
}
option = { # Stay in, get wounded
name = ep2_tournament_events.4001.b
increase_wounds_no_death_effect = { REASON = battle }
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = horse
value = tournament_hastiludes_xp_gain_minor_value
}
}
add_prestige = medium_prestige_gain
stress_impact = {
base = minor_stress_impact_gain
fickle = minor_stress_impact_gain
stubborn = minor_stress_impact_loss
}
ai_chance = {
base = 100
}
}
option = { # Pull out
name = ep2_tournament_events.4001.c
tournament_contest_versus_resignation_effect = { RESIGNER = root CONTEST = joust SKILL = horse }
stress_impact = {
base = miniscule_stress_impact_loss
brave = minor_stress_impact_gain
craven = minor_stress_impact_loss
ambitious = minor_stress_impact_gain
stubborn = minor_stress_impact_gain
arrogant = minor_stress_impact_gain
humble = minor_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = ambitious
has_trait = stubborn
has_trait = arrogant
has_trait = brave
}
}
}
}
}
# Your opponent is knocked off their horse
ep2_tournament_events.4002 = {
type = activity_event
title = ep2_tournament_events.4002.t
desc = ep2_tournament_events.4002.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = jockey_lance_tilted
}
right_portrait = {
trigger = {
this != involved_activity.activity_host
}
character = scope:versus_contestant
animation = pain
}
cooldown = { months = 2 }
trigger = {
contest_versus_player_vs_ai_trigger = yes
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Events/Grand_Activities/Tournaments/ConstructionKits/ep2_event_grand_tournament_ck_horse_neigh"
contest_versus_player_vs_ai_scope_effect = yes
tournament_pivotal_flavor_variable_effect = { CONTEST = joust ID = 4002 }
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = horse
value = tournament_hastiludes_xp_gain_medium_value
}
}
scope:activity = {
add_activity_log_entry = {
key = tournament_knocked_off_log
tags = { good }
score = 5
character = root
target = scope:versus_contestant
}
}
}
option = { # Help them up and give them a shield
name = ep2_tournament_events.4002.a
trigger = {
OR = {
has_trait = just
has_trait = gregarious
has_trait = compassionate
}
}
reverse_add_opinion = {
target = scope:versus_contestant
modifier = grateful_opinion
opinion = 40
}
add_prestige = medium_prestige_gain
custom_tooltip = ep2_tournament_events.4001.a.tt
hidden_effect = {
every_courtier_or_guest = {
add_opinion = {
target = root
opinion = 10
modifier = reputation_opinion
}
}
}
stress_impact = {
base = miniscule_stress_impact_loss
ambitious = minor_stress_impact_gain
}
ai_chance = {
base = 100
}
}
option = { # Help them up
name = ep2_tournament_events.4002.b
reverse_add_opinion = {
target = scope:versus_contestant
modifier = grateful_opinion
opinion = 15
}
add_prestige = minor_prestige_gain
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
stress_impact = {
just = miniscule_stress_impact_loss
compassionate = miniscule_stress_impact_loss
callous = minor_stress_impact_gain
sadistic = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = callous
has_trait = sadistic
}
}
}
}
option = { # Ah well
name = ep2_tournament_events.4002.c
activity_tournament_change_contestant_score_effect = { SCORE = increase_major }
stress_impact = {
just = minor_stress_impact_gain
brave = minor_stress_impact_gain
}
ai_chance = {
base = 100
}
}
}
# Your opponent is using a massive lance
ep2_tournament_events.4003 = {
type = activity_event
title = ep2_tournament_events.4003.t
desc = ep2_tournament_events.4003.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = jockey_loss
}
right_portrait = {
trigger = {
this != involved_activity.activity_host
}
character = scope:versus_contestant
animation = jockey_lance_couched_gallop
}
cooldown = { months = 2 }
trigger = {
contest_versus_player_vs_ai_trigger = yes
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Events/Grand_Activities/Tournaments/ConstructionKits/ep2_event_grand_tournament_ck_horse_trotting"
contest_versus_player_vs_ai_scope_effect = yes
tournament_pivotal_flavor_variable_effect = { CONTEST = joust ID = 4003 }
}
option = { # Protest to the authorities
name = ep2_tournament_events.4003.a
trigger = {
OR = {
has_trait = just
has_trait = honest
has_trait = irritable
}
}
flavor = ep2_tournament_events.4003.a.tt
reverse_add_opinion = {
target = scope:versus_contestant
modifier = annoyed_opinion
opinion = -40
}
activity_tournament_change_contestant_score_effect = { SCORE = increase_major }
add_prestige = minor_prestige_loss
stress_impact = {
base = miniscule_stress_impact_loss
ambitious = minor_stress_impact_gain
just = minor_stress_impact_loss
craven = minor_stress_impact_loss
brave = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = brave
has_trait = ambitious
}
}
}
}
option = { # Ask them not to use it
name = ep2_tournament_events.4003.b
duel = {
skill = diplomacy
target = scope:versus_contestant
# Success
50 = {
show_chance = yes
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = ep2_tournament_events.4003.b.tt.win
left_icon = root
right_icon = scope:versus_contestant
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
}
}
# Failure
50 = {
show_chance = yes
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = ep2_tournament_events.4003.b.tt.lose
left_icon = root
right_icon = scope:versus_contestant
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
}
}
}
stress_impact = {
ambitious = minor_stress_impact_gain
just = minor_stress_impact_loss
craven = minor_stress_impact_loss
brave = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = brave
has_trait = ambitious
}
}
}
}
option = { # Joust them anyway
name = ep2_tournament_events.4003.c
add_prestige = medium_prestige_gain
duel = {
skills = { prowess martial }
value = decent_skill_rating
# Success
50 = {
show_chance = yes
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = ep2_tournament_events.4003.c.tt.win
left_icon = root
right_icon = scope:versus_contestant
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = horse
value = tournament_hastiludes_xp_gain_medium_value
}
}
}
}
# Failure
50 = {
show_chance = yes
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = ep2_tournament_events.4003.c.tt.lose
left_icon = root
right_icon = scope:versus_contestant
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
}
}
}
stress_impact = {
ambitious = minor_stress_impact_loss
just = minor_stress_impact_gain
craven = minor_stress_impact_gain
brave = minor_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = just
has_trait = craven
}
}
}
}
}
# Your opponent challenges you to a duel on foot
ep2_tournament_events.4004 = {
type = activity_event
title = ep2_tournament_events.4004.t
desc = ep2_tournament_events.4004.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = jockey_lance_tilted
}
right_portrait = {
trigger = {
this != involved_activity.activity_host
}
character = scope:versus_contestant
animation = marshal
}
cooldown = { months = 2 }
trigger = {
contest_versus_player_vs_ai_trigger = yes
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Events/Grand_Activities/Tournaments/ConstructionKits/ep2_event_grand_tournament_ck_horse_neigh"
contest_versus_player_vs_ai_scope_effect = yes
tournament_pivotal_flavor_variable_effect = { CONTEST = joust ID = 4004 }
}
option = { # Accept
name = ep2_tournament_events.4004.a
reverse_add_opinion = {
target = scope:versus_contestant
modifier = respect_opinion
opinion = 30
}
duel = {
skill = prowess
target = scope:versus_contestant
# Success
50 = {
show_chance = yes
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = ep2_tournament_events.4004.a.success
left_icon = root
right_icon = scope:versus_contestant
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_medium_value
}
}
}
}
# Failure
50 = {
show_chance = yes
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = ep2_tournament_events.4004.a.failure
left_icon = root
right_icon = scope:versus_contestant
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
}
}
}
add_prestige = minor_prestige_loss
stress_impact = {
ambitious = medium_stress_impact_loss
paranoid = medium_stress_impact_gain
craven = minor_stress_impact_gain
brave = minor_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = paranoid
has_trait = craven
}
}
}
}
option = { # Refuse
name = ep2_tournament_events.4004.b
reverse_add_opinion = {
target = scope:versus_contestant
modifier = disappointed_opinion
opinion = -30
}
ai_chance = {
base = 100
}
}
option = { # Accept, but insist upon fighting WITH LANCES
name = ep2_tournament_events.4004.c
trigger = {
OR = {
has_trait = dull
has_trait = intellect_bad
}
}
reverse_add_opinion = {
target = scope:versus_contestant
modifier = tournament_confused_opinion
opinion = -40
}
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
add_prestige = minor_prestige_loss
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = foot
value = tournament_hastiludes_xp_gain_minor_value
}
}
stress_impact = {
base = minor_stress_impact_loss
}
ai_chance = {
base = 100
}
}
}
# Your opponent is injured but tilts anyway
ep2_tournament_events.4005 = {
type = activity_event
title = ep2_tournament_events.4005.t
desc = ep2_tournament_events.4005.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = jockey_lance_tilted
}
right_portrait = {
character = scope:versus_contestant
animation = jockey_loss
}
cooldown = { months = 2 }
trigger = {
contest_versus_player_vs_ai_trigger = yes
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Events/Grand_Activities/Tournaments/ConstructionKits/ep2_event_grand_tournament_ck_wood_clash"
contest_versus_player_vs_ai_scope_effect = yes
tournament_pivotal_flavor_variable_effect = { CONTEST = joust ID = 4005 }
scope:activity = {
add_activity_log_entry = {
key = tournament_joust_injury_log
tags = { bad }
score = 5
character = scope:versus_contestant
}
}
}
option = { # Tilt against them
name = ep2_tournament_events.4005.a
flavor = ep2_tournament_events.4005.a.tt
if = { # If they're a coward they'll like you less
limit = {
scope:versus_contestant = {
has_trait = craven
}
}
reverse_add_opinion = {
target = scope:versus_contestant
modifier = cruelty_opinion
opinion = -10
}
}
else_if = { # If they're brave, stubborn or chivalric they'll respect you for respecting their wishes
limit = {
scope:versus_contestant = {
OR = {
has_trait = brave
has_trait = stubborn
has_trait = gallant
}
}
}
reverse_add_opinion = {
target = scope:versus_contestant
modifier = tournament_respected_wishes_opinion
opinion = 30
}
}
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
add_prestige = miniscule_prestige_loss
ai_chance = {
base = 100
}
}
option = { # Refuse to tilt against them
name = ep2_tournament_events.4005.b
flavor = ep2_tournament_events.4005.b.tt
if = { # If they're chivalric they'll respect you even more for being knightly
limit = {
scope:versus_contestant = {
has_trait = gallant
}
}
reverse_add_opinion = {
target = scope:versus_contestant
modifier = respect_opinion
opinion = 50
}
}
else_if = { # If they're not chivalric they'll still respect you
limit = {
scope:versus_contestant = {
NOT = {
has_trait = gallant
}
}
}
reverse_add_opinion = {
target = scope:versus_contestant
modifier = respect_opinion
opinion = 20
}
}
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
add_prestige = medium_prestige_gain
stress_impact = {
compassionate = medium_stress_impact_loss
sadistic = medium_stress_impact_gain
callous = medium_stress_impact_gain
just = medium_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = sadistic
has_trait = callous
}
}
}
}
option = { # Tilt against them in an underhanded way that guarantees victory
name = ep2_tournament_events.4005.c
flavor = ep2_tournament_events.4005.c.tt
activity_tournament_change_contestant_score_effect = { SCORE = increase_major }
add_prestige = medium_prestige_loss
if = { # If they're chivalric they'll hate you you even more for being knightly
limit = {
scope:versus_contestant = {
has_trait = gallant
}
}
reverse_add_opinion = {
target = scope:versus_contestant
modifier = angry_opinion
opinion = -60
}
}
else_if = { # If they're not chivalric they'll still hate you, just less so
limit = {
scope:versus_contestant = {
NOT = {
has_trait = gallant
}
}
}
reverse_add_opinion = {
target = scope:versus_contestant
modifier = angry_opinion
opinion = -40
}
}
stress_impact = {
compassionate = medium_stress_impact_gain
sadistic = medium_stress_impact_loss
callous = medium_stress_impact_loss
just = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = compassionate
has_trait = just
}
}
}
}
}
# Your opponent asks for a mercy pass
ep2_tournament_events.4006 = {
type = activity_event
title = ep2_tournament_events.4006.t
desc = ep2_tournament_events.4006.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = jockey_lance_tilted
}
right_portrait = {
trigger = {
this != involved_activity.activity_host
}
character = scope:versus_contestant
animation = jockey_idle
}
cooldown = { months = 2 }
trigger = {
contest_versus_player_vs_ai_trigger = yes
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Events/Grand_Activities/Tournaments/ConstructionKits/ep2_event_grand_tournament_ck_horse_flyby"
contest_versus_player_vs_ai_scope_effect = yes
tournament_pivotal_flavor_variable_effect = { CONTEST = joust ID = 4006 }
scope:activity = {
add_activity_log_entry = {
key = tournament_mercy_pass_log
tags = { good }
score = 5
character = root
target = scope:versus_contestant
}
}
}
option = { # Show mercy
name = ep2_tournament_events.4006.a
reverse_add_opinion = {
target = scope:versus_contestant
modifier = tournament_mercy_opinion
opinion = 30
}
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
add_prestige = minor_prestige_gain
stress_impact = {
compassionate = medium_stress_impact_loss
sadistic = medium_stress_impact_gain
callous = medium_stress_impact_gain
just = medium_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = callous
has_trait = sadistic
}
}
}
}
option = { # No mercy
name = ep2_tournament_events.4006.b
reverse_add_opinion = {
target = scope:versus_contestant
modifier = cruelty_opinion
opinion = -30
}
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
stress_impact = {
compassionate = medium_stress_impact_gain
sadistic = medium_stress_impact_loss
callous = minor_stress_impact_loss
just = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = just
has_trait = compassionate
}
}
}
}
}
# Your opponent is mistreating their groom
ep2_tournament_events.4007 = {
type = activity_event
title = ep2_tournament_events.4007.t
desc = ep2_tournament_events.4007.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = jockey_idle
}
right_portrait = {
character = scope:groom
outfit_tags = { beggar_rags }
animation = admiration
}
lower_right_portrait = {
character = scope:versus_contestant
}
cooldown = { months = 2 }
trigger = {
contest_versus_player_vs_ai_trigger = yes
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Ambience/2D/ep2_amb_2d_crowd_negative_reaction"
contest_versus_player_vs_ai_scope_effect = yes
tournament_pivotal_flavor_variable_effect = { CONTEST = joust ID = 4007 }
create_character = {
location = root.location
faith = scope:versus_contestant.faith
culture = scope:versus_contestant.culture
random_traits_list = {
count = 1
education_martial_1 = {}
education_martial_2 = {}
}
dynasty = none
age = { 18 22 }
random_traits = yes
gender_female_chance = {
if = {
limit = { scope:versus_contestant.faith = { has_doctrine = doctrine_gender_male_dominated } }
add = 0
}
else_if = {
limit = { scope:versus_contestant.faith = { has_doctrine = doctrine_gender_female_dominated } }
add = 100
}
else = {
add = 50
}
}
save_scope_as = groom
}
}
option = { # Laugh at the groom
name = ep2_tournament_events.4007.a
trigger = {
has_trait = callous
}
reverse_add_opinion = {
target = scope:versus_contestant
modifier = tournament_agreed_opinion
opinion = 30
}
reverse_add_opinion = {
target = root
modifier = tournament_mocked_opinion
opinion = -30
}
stress_impact = {
base = minor_stress_impact_loss
gregarious = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
has_trait = gregarious
}
}
}
option = { # Offer the groom a job
name = ep2_tournament_events.4007.b
flavor = ep2_tournament_events.4007.b.tt
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
reverse_add_opinion = {
target = scope:versus_contestant
modifier = angry_opinion
opinion = -30
}
scope:groom = {
reverse_add_opinion = {
target = scope:versus_contestant
modifier = angry_opinion
opinion = -30
}
}
add_courtier = scope:groom
ai_chance = {
base = 100
}
}
option = { # Pay groom to unsettle opponent's horse
name = ep2_tournament_events.4007.c
flavor = ep2_tournament_events.4007.c.tt
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
scope:groom = {
reverse_add_opinion = {
target = scope:versus_contestant
modifier = angry_opinion
opinion = -50
}
}
pay_short_term_gold = {
target = scope:groom
gold = minor_gold_value
}
stress_impact = {
just = medium_stress_impact_gain
ambitious = minor_stress_impact_loss
greedy = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = just
has_trait = greedy
}
}
}
}
option = { # Let it go
name = ep2_tournament_events.4007.d
ai_chance = {
base = 100
}
}
}
# Crowd heckles you
ep2_tournament_events.4008 = {
type = activity_event
title = ep2_tournament_events.4008.t
desc = ep2_tournament_events.4008.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
cooldown = { months = 2 }
left_portrait = {
character = root
animation = jockey_loss
}
right_portrait = {
character = scope:versus_contestant
animation = jockey_lance_tilted
}
trigger = {
contest_versus_player_vs_ai_trigger = yes
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Events/Grand_Activities/Tournaments/ConstructionKits/ep2_amb_2d_crowd_negative_reaction"
contest_versus_player_vs_ai_scope_effect = yes
tournament_pivotal_flavor_variable_effect = { CONTEST = joust ID = 4008 }
scope:activity = {
add_activity_log_entry = {
key = tournament_crowd_heckled_log
tags = { bad }
score = 5
character = root
}
}
}
# Continue with the contest
option = {
name = ep2_tournament_events.4008.a
random_list = {
45 = { #You win
modifier = { #Skill buff
add = 15
prowess > high_skill_rating
}
modifier = {
add = 10
has_trait = brave #Brave enough to ignore it
}
modifier = {
add = 10
has_trait = calm #Calm enough to ignore the abuse
}
modifier = {
add = -10
OR = {
has_trait = wrathful #Too angry to not care
has_trait = arrogant #How dare they!
has_trait = craven #Aaahhh, scary!
}
}
desc = ep2_tournament_events.4008.a.success
send_interface_toast = {
title = ep2_tournament_events.4008.a.success
left_icon = root
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = horse
value = tournament_hastiludes_xp_gain_medium_value
}
}
stress_impact = {
base = miniscule_stress_impact_loss
}
}
}
25 = { #You lose
desc = ep2_tournament_events.4008.a.failure
send_interface_toast = {
title = ep2_tournament_events.4008.a.failure
left_icon = root
activity_tournament_change_contestant_score_effect = { SCORE = decrease_minor }
stress_impact = {
base = miniscule_stress_impact_gain
}
}
}
15 = { #You get injured by the crowd throwing stuff at you
modifier = {
add = 10
has_trait = sadistic
}
modifier = {
add = 10
has_trait = callous
}
modifier = {
add = 15
OR = {
has_trait = murderer
has_trait = incestuous
has_trait = sodomite
has_trait = cannibal
has_trait = deviant
has_trait = kinslayer
has_trait = adulterer
has_trait = fornicator
has_trait = excommunicated
}
}
desc = ep2_tournament_events.4008.a.criticalfailure
send_interface_toast = {
title = ep2_tournament_events.4008.a.criticalfailure
left_icon = root
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
add_prestige = minor_prestige_loss
increase_wounds_effect = { REASON = fight }
random = {
chance = 25
if = {
limit = {
NOT = {
has_trait = scarred
}
}
add_trait = scarred
}
add_trait_xp = {
trait = scarred
value = {
integer_range = {
min = 5
max = 25
}
}
}
}
stress_impact = {
base = minor_stress_impact_gain
}
}
}
}
ai_chance = {
base = 100
}
}
# Throw the contest
option = {
name = ep2_tournament_events.4008.b
add_prestige = minor_prestige_loss
tournament_contest_versus_resignation_effect = { RESIGNER = root CONTEST = joust SKILL = horse }
stress_impact = {
brave = medium_stress_impact_gain
craven = minor_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
has_trait = brave
}
}
}
}
# Lend opponent a lance
ep2_tournament_events.4009 = {
type = activity_event
title = ep2_tournament_events.4009.t
desc = ep2_tournament_events.4009.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
cooldown = { months = 2 }
left_portrait = {
character = root
animation = jockey_lance_tilted
}
right_portrait = {
character = scope:versus_contestant
animation = jockey_idle
}
trigger = {
contest_versus_player_vs_ai_trigger = yes
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Events/Grand_Activities/Tournaments/ConstructionKits/ep2_event_grand_tournament_ck_horse_neigh"
contest_versus_player_vs_ai_scope_effect = yes
tournament_pivotal_flavor_variable_effect = { CONTEST = joust ID = 4009 }
}
# Mock them
option = {
name = ep2_tournament_events.4009.a
trigger = {
OR = {
has_trait = sadistic
has_trait = arrogant
}
}
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
progress_towards_rival_effect = {
REASON = rival_contest_mockery
CHARACTER = scope:hapless_knight
OPINION = default_rival_opinion
}
stress_impact = {
sadistic = minor_stress_impact_loss
arrogant = minor_stress_impact_loss
just = medium_stress_impact_loss
gregarious = medium_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = just
has_trait = gregarious
}
}
}
}
# Lend them a lance
option = {
name = ep2_tournament_events.4009.b
activity_tournament_change_contestant_score_effect = { SCORE = decrease_minor }
add_prestige = medium_prestige_gain
scope:activity = {
add_activity_log_entry = {
key = tournament_lent_lance_log
tags = { good }
score = 5
character = root
target = scope:versus_contestant
}
}
reverse_add_opinion = {
target = scope:versus_contestant
modifier = grateful_opinion
opinion = 30
}
stress_impact = {
compassionate = minor_stress_impact_loss
generous = minor_stress_impact_loss
just = minor_stress_impact_loss
arbitrary = minor_stress_impact_gain
callous = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = callous
has_trait = arbitrary
}
}
}
}
# Continue
option = {
name = ep2_tournament_events.4009.c
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
add_prestige = minor_prestige_loss
stress_impact = {
compassionate = minor_stress_impact_gain
generous = minor_stress_impact_gain
just = minor_stress_impact_gain
arbitrary = minor_stress_impact_loss
callous = minor_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = compassionate
has_trait = generous
has_trait = just
}
}
}
}
}
#################
### RECITAL ###
##################
# Previous entrant's verse is similar to yours
ep2_tournament_events.5501 = {
type = activity_event
title = ep2_tournament_events.5501.t
desc = ep2_tournament_events.5501.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = worry
}
right_portrait = {
character = scope:enemy
animation = scheme
}
cooldown = { years = 1 }
trigger = {
exists = var:contest_aptitude
scope:activity = {
any_guest_subset_current_phase = {
name = qualified
this = root
}
any_guest_subset_current_phase = {
name = qualified
contest_event_general_contestant_valid_trigger = yes
this != root
}
}
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Ambience/2D/ep2_amb_2d_crowd_positive_reaction"
scope:activity = {
random_guest_subset_current_phase = {
name = qualified
limit = { contest_event_general_contestant_valid_trigger = yes }
save_scope_as = enemy
}
}
tournament_pivotal_flavor_variable_effect = { CONTEST = recital ID = 5501 }
}
# Show them it's all about the delivery
option = {
name = ep2_tournament_events.5501.a
trigger = {
OR = {
has_trait = lifestyle_poet
has_trait = education_learning_3
has_trait = education_learning_4
has_trait = education_learning_5
has_trait = shrewd
}
}
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = wit
value = tournament_hastiludes_xp_gain_medium_value
}
}
stress_impact = {
base = miniscule_stress_impact_loss
arrogant = minor_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
}
}
}
# Improvise
option = {
name = ep2_tournament_events.5501.b
random_list = {
9 = { #It goes well
modifier = { #Skill buff
add = 15
diplomacy > high_skill_rating
}
modifier = { #Big buff if you're a poet
add = 15
has_trait = lifestyle_poet
}
modifier = { #More diplo!
add = 10
OR = {
has_trait = education_learning_3
has_trait = education_learning_4
has_trait = education_learning_5
}
}
modifier = { #Being learned helps
add = 5
learning > high_skill_rating
}
modifier = { #Always good to be an extrovert in these situations
add = 5
has_trait = gregarious
}
modifier = { #Blanket coverage for smarts
add = 5
OR = {
has_trait = shrewd
has_trait = intellect_good
}
}
desc = ep2_tournament_events.5501.b.success
send_interface_toast = {
title = ep2_tournament_events.5501.b.success
left_icon = root
right_icon = scope:enemy
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = wit
value = tournament_hastiludes_xp_gain_minor_value
}
}
stress_impact = {
base = miniscule_stress_impact_loss
}
}
}
10 = { #It doesn't go well
desc = ep2_tournament_events.5501.b.failure
send_interface_toast = {
title = ep2_tournament_events.5501.b.failure
left_icon = root
right_icon = scope:enemy
activity_tournament_change_contestant_score_effect = { SCORE = decrease_minor }
stress_impact = {
base = miniscule_stress_impact_gain
}
}
}
}
ai_chance = {
base = 100
}
}
# Protest
option = {
name = ep2_tournament_events.5501.c
add_prestige = minor_prestige_loss
duel = {
skills = { diplomacy intrigue }
target = scope:enemy
#They DID plan it!
40 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = ep2_tournament_events.5501.c.success
left_icon = root
right_icon = scope:enemy
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
add_prestige = minor_prestige_gain
}
desc = ep2_tournament_events.5501.c.success
stress_impact = {
base = miniscule_stress_impact_loss
paranoid = major_stress_impact_loss #I KNEW IT!
just = minor_stress_impact_loss
}
}
#You look like a fool
60 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = ep2_tournament_events.5501.c.failure
left_icon = root
right_icon = scope:enemy
activity_tournament_change_contestant_score_effect = { SCORE = decrease_minor }
add_prestige = minor_prestige_loss
}
desc = ep2_tournament_events.5501.c.failure
stress_impact = {
base = miniscule_stress_impact_gain
paranoid = medium_stress_impact_gain
just = medium_stress_impact_gain
}
}
}
ai_chance = {
base = 100
}
}
}
# Contestant plagiarises verse
ep2_tournament_events.5502 = {
type = activity_event
title = ep2_tournament_events.5502.t
desc = {
desc = ep2_tournament_events.5502.start
first_valid = {
triggered_desc = {
trigger = {
scope:contestant = {
has_friendly_relationship_trigger = {
CHARACTER = root
}
culture != scope:activity.activity_location.culture
}
}
desc = ep2_tournament_events.5502.friend
}
triggered_desc = {
trigger = {
scope:contestant = {
culture != scope:activity.activity_location.culture
}
}
desc = ep2_tournament_events.5502.culture
}
}
desc = ep2_tournament_events.5502.end
}
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = worry
}
right_portrait = {
character = scope:contestant
animation = shock
}
cooldown = { years = 1 }
trigger = {
scope:activity = {
any_guest_subset_current_phase = {
name = qualified
contest_event_general_contestant_valid_trigger = yes
culture != scope:activity.activity_location.culture
this != root
}
}
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Ambience/2D/ep2_amb_2d_crowd_negative_reaction"
scope:activity = {
random_guest_subset_current_phase = {
name = qualified
limit = {
contest_event_general_contestant_valid_trigger = yes
culture != scope:activity.activity_location.culture
}
save_scope_as = contestant
}
}
tournament_pivotal_flavor_variable_effect = { CONTEST = recital ID = 5502 }
scope:activity = {
add_activity_log_entry = {
key = tournament_plagiarism_log
tags = { good }
score = 5
character = root
target = scope:versus_contestant
}
}
}
# This isn't their fault!
option = {
name = ep2_tournament_events.5502.a
duel = {
skills = { diplomacy }
value = decent_skill_rating
#You convince the crowd
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = ep2_tournament_events.5502.c.success
left_icon = root
right_icon = scope:contestant
scope:contestant = {
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 35
}
}
}
desc = ep2_tournament_events.5502.c.success
stress_impact = {
base = miniscule_stress_impact_loss
gregarious = miniscule_stress_impact_loss
just = minor_stress_impact_loss
lazy = minor_stress_impact_gain
callous = medium_stress_impact_gain
}
}
#The crowd turn against them
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = ep2_tournament_events.5502.c.failure
left_icon = root
right_icon = scope:contestant
scope:contestant = {
activity_tournament_change_contestant_score_effect = { SCORE = decrease_minor }
}
}
desc = ep2_tournament_events.5502.c.failure
stress_impact = {
base = miniscule_stress_impact_gain
}
}
}
ai_chance = {
base = 100
}
}
# Join in with the booing
option = {
name = ep2_tournament_events.5502.b
scope:contestant = {
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
add_prestige = minor_prestige_loss
}
progress_towards_rival_effect = {
REASON = rival_recital_booing
CHARACTER = scope:contestant
OPINION = default_rival_opinion
}
stress_impact = {
gregarious = minor_stress_impact_gain
just = medium_stress_impact_gain
lazy = miniscule_stress_impact_loss
callous = miniscule_stress_impact_loss
ambitious = miniscule_stress_impact_loss
honest = major_stress_impact_gain
deceitful = miniscule_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = just
has_trait = honest
}
}
}
}
# Leave the contestant to suffer
option = {
name = ep2_tournament_events.5502.c
scope:contestant = {
activity_tournament_change_contestant_score_effect = { SCORE = decrease_minor }
}
stress_impact = {
gregarious = miniscule_stress_impact_gain
just = miniscule_stress_impact_gain
honest = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
has_trait = honest
}
}
}
}
# Stage fright
ep2_tournament_events.5503 = {
type = activity_event
title = ep2_tournament_events.5503.t
desc = {
desc = ep2_tournament_events.5503.desc
first_valid = {
triggered_desc = {
trigger = {
OR = {
has_trait = avaricious
has_trait = education_stewardship_3
has_trait = education_stewardship_4
has_trait = education_stewardship_5
}
}
desc = ep2_tournament_events.5503.rich
}
triggered_desc = {
trigger = {
OR = {
has_trait = seducer
AND = {
has_trait = deviant
has_trait = lustful
}
}
}
desc = ep2_tournament_events.5503.seducer
}
triggered_desc = {
desc = ep2_tournament_events.5503.fallback
}
}
}
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = shock
}
cooldown = { years = 1 }
trigger = {
exists = var:contest_aptitude
scope:activity = {
any_guest_subset_current_phase = {
name = qualified
this = root
}
any_guest_subset_current_phase = {
name = qualified
contest_event_general_contestant_valid_trigger = yes
}
}
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Ambience/2D/ep2_amb_2d_crowd_surprise_reaction"
scope:activity = {
random_guest_subset_current_phase = {
name = qualified
limit = { contest_event_general_contestant_valid_trigger = yes }
save_scope_as = contestant
}
}
tournament_pivotal_flavor_variable_effect = { CONTEST = recital ID = 5503 }
}
# Fall back on a stock poem
option = {
name = ep2_tournament_events.5503.a
trigger = {
has_trait = lifestyle_poet
}
flavor = ep2_tournament_events.5503.a.tt
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = wit
value = tournament_hastiludes_xp_gain_minor_value
}
}
stress_impact = {
base = miniscule_stress_impact_loss
}
ai_chance = {
base = 200
}
}
# Behold! Free coin!
option = {
name = ep2_tournament_events.5503.b
trigger = {
OR = {
has_trait = avaricious
has_trait = education_stewardship_3
has_trait = education_stewardship_4
has_trait = education_stewardship_5
}
}
flavor = ep2_tournament_events.5503.b.tt
remove_short_term_gold = tiny_gold_value
stress_impact = {
base = miniscule_stress_impact_loss
greedy = major_stress_impact_gain
generous = minor_stress_impact_loss
just = minor_stress_impact_gain
}
ai_chance = {
base = 200
}
}
# Give the crowd what they want
option = {
name = ep2_tournament_events.5503.c
trigger = {
OR = {
has_trait = seducer
AND = {
has_trait = deviant
has_trait = lustful
}
}
}
flavor = ep2_tournament_events.5503.c.tt
if = {
limit = {
faith = {
NOR = {
trait_is_virtue = lustful
trait_is_sin = lustful
}
}
}
add_prestige = minor_prestige_loss
add_character_modifier = {
modifier = tournament_performative_sensuousness_modifier
years = 5
}
}
else_if = {
limit = {
faith = {
trait_is_sin = lustful
}
}
add_piety = medium_piety_loss
add_character_modifier = {
modifier = tournament_performative_sensuousness_modifier
years = 10
}
}
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
ai_chance = {
base = 200
}
}
# Distract the crowd
option = {
name = ep2_tournament_events.5503.d
duel = {
skills = { intrigue diplomacy }
value = decent_skill_rating
#You successfully distract the crowd
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = ep2_tournament_events.5503.d.win
left_icon = root
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
}
desc = ep2_tournament_events.5503.d.win
stress_impact = {
base = miniscule_stress_impact_loss
deceitful = minor_stress_impact_loss
}
}
#The crowd aren't fooled
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = ep2_tournament_events.5503.d.lose
left_icon = root
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
}
desc = ep2_tournament_events.5503.d.lose
stress_impact = {
base = minor_stress_impact_gain
arrogant = minor_stress_impact_gain
shy = minor_stress_impact_gain
}
}
}
ai_chance = {
base = 100
}
}
# Try and fail
option = {
name = ep2_tournament_events.5503.e
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
stress_impact = {
base = miniscule_stress_impact_gain
arrogant = minor_stress_impact_gain
shy = minor_stress_impact_gain
}
ai_chance = {
base = 100
}
}
}
# A downpour begins
ep2_tournament_events.5504 = {
type = activity_event
title = ep2_tournament_events.5504.t
desc = ep2_tournament_events.5504.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = worry
}
cooldown = { years = 1 }
trigger = {
exists = var:contest_aptitude
scope:activity = {
any_guest_subset_current_phase = {
name = qualified
this = root
}
activity_location = { is_drylands_or_desert_trigger = no }
}
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Ambience/2D/ep2_amb_2d_crowd_negative_reaction"
tournament_pivotal_flavor_variable_effect = { CONTEST = recital ID = 5504 }
scope:activity = {
add_activity_log_entry = {
key = tournament_downpour_begins_log
tags = { good }
score = 5
character = root
}
}
}
# Continue
option = {
name = ep2_tournament_events.5504.a
duel = {
skills = { diplomacy }
value = decent_skill_rating
50 = { #You utilise the rain successfully
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
modifier = { #Skill buff
add = 15
diplomacy > high_skill_rating
}
modifier = { #Big buff if you're a poet
add = 15
has_trait = lifestyle_poet
}
modifier = { #More diplo!
add = 10
OR = {
has_trait = education_learning_3
has_trait = education_learning_4
has_trait = education_learning_5
}
}
modifier = { #Being learned helps
add = 5
learning > high_skill_rating
}
modifier = { #Not scared of a bit of thunder
add = 5
has_trait = brave
}
modifier = { #Blanket coverage for smarts
add = 5
OR = {
has_trait = shrewd
has_trait = intellect_good
}
}
send_interface_toast = {
title = ep2_tournament_events.5504.a.success
left_icon = root
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = wit
value = tournament_hastiludes_xp_gain_medium_value
}
}
}
desc = ep2_tournament_events.5504.a.success
stress_impact = {
base = miniscule_stress_impact_loss
brave = miniscule_stress_impact_loss
}
}
50 = { #You are drowned out by the downpour
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
modifier = { #Skill debuff
add = -10
diplomacy < high_skill_rating
}
modifier = { #Aaahhhh, loud noises!
add = -5
has_trait = craven
}
send_interface_toast = {
title = ep2_tournament_events.5504.a.failure
left_icon = root
activity_tournament_change_contestant_score_effect = { SCORE = decrease_minor }
}
desc = ep2_tournament_events.5504.a.failure
stress_impact = {
base = miniscule_stress_impact_gain
craven = medium_stress_impact_gain
}
}
}
ai_chance = {
base = 100
}
}
# Run away scared
option = {
name = ep2_tournament_events.5504.b
activity_tournament_change_contestant_score_effect = { SCORE = decrease_minor }
stress_impact = {
brave = medium_stress_impact_gain
shy = miniscule_stress_impact_loss
craven = minor_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
has_trait = brave
}
}
}
}
# You see a chance to insult an opponent
ep2_tournament_events.5505 = {
type = activity_event
title = ep2_tournament_events.5505.t
desc = {
desc = ep2_tournament_events.5505.desc
first_valid = {
triggered_desc = {
trigger = {
scope:enemy = {
AND = {
is_female = no
OR = {
has_trait = chaste
has_trait = celibate
}
}
}
}
desc = ep2_tournament_events.5505.start.malevirgin
}
triggered_desc = {
trigger = {
scope:enemy = {
AND = {
is_female = yes
OR = {
has_trait = chaste
has_trait = celibate
}
}
}
}
desc = ep2_tournament_events.5505.start.femalevirgin
}
triggered_desc = {
trigger = {
scope:enemy = {
age > 60
}
}
desc = ep2_tournament_events.5505.start.old
}
triggered_desc = {
trigger = {
scope:enemy = {
current_weight > 50
}
}
desc = ep2_tournament_events.5505.start.fat
}
triggered_desc = {
trigger = {
scope:enemy = {
has_trait = compassionate
}
NOT = {
has_trait = compassionate
}
}
desc = ep2_tournament_events.5505.start.soft
}
triggered_desc = {
trigger = {
has_trait = compassionate
}
desc = ep2_tournament_events.5505.start.compassionate
}
triggered_desc = {
desc = ep2_tournament_events.5505.start.fallback
}
}
desc = ep2_tournament_events.5505.end
}
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = happiness
}
right_portrait = {
character = scope:enemy
animation = anger
}
cooldown = { years = 1 }
trigger = {
exists = var:contest_aptitude
scope:activity = {
any_guest_subset_current_phase = {
name = qualified
this = root
}
any_guest_subset_current_phase = {
name = qualified
contest_event_general_contestant_valid_trigger = yes
this != root
}
}
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Ambience/2D/ep2_amb_2d_crowd_surprise_reaction"
scope:activity = {
random_guest_subset_current_phase = {
name = qualified
limit = { contest_event_general_contestant_valid_trigger = yes }
save_scope_as = enemy
}
}
tournament_pivotal_flavor_variable_effect = { CONTEST = recital ID = 5505 }
}
# Call them a virgin
option = {
name = ep2_tournament_events.5505.maidenless
trigger = {
scope:enemy = {
OR = {
has_trait = chaste
has_trait = celibate
}
}
}
add_internal_flag = special
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = wit
value = tournament_hastiludes_xp_gain_medium_value
}
}
progress_towards_rival_effect = {
REASON = rival_recital_insult
CHARACTER = scope:enemy
OPINION = default_rival_opinion
}
scope:activity = {
add_activity_log_entry = {
key = tournament_insulted_opponent_log
tags = { good }
score = 5
character = root
target = scope:enemy
}
}
stress_impact = {
chaste = medium_stress_impact_gain
celibate = medium_stress_impact_gain
sadistic = minor_stress_impact_loss
arrogant = minor_stress_impact_loss
gregarious = medium_stress_impact_gain
compassionate = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = compassionate
has_trait = gregarious
has_trait = chaste
has_trait = celibate
}
}
}
}
# Call them old
option = {
name = ep2_tournament_events.5505.old
trigger = {
scope:enemy = {
age > 60
}
}
add_internal_flag = special
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = wit
value = tournament_hastiludes_xp_gain_medium_value
}
}
progress_towards_rival_effect = {
REASON = rival_recital_insult
CHARACTER = scope:enemy
OPINION = default_rival_opinion
}
scope:activity = {
add_activity_log_entry = {
key = tournament_insulted_opponent_log
tags = { good }
score = 5
character = root
target = scope:enemy
}
}
stress_impact = {
sadistic = minor_stress_impact_loss
arrogant = minor_stress_impact_loss
gregarious = medium_stress_impact_gain
compassionate = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = compassionate
has_trait = gregarious
}
}
}
}
# Call them fat
option = {
name = ep2_tournament_events.5505.fat
trigger = {
scope:enemy = {
current_weight > 50
}
NOT = {
current_weight > 50
}
}
add_internal_flag = special
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = wit
value = tournament_hastiludes_xp_gain_medium_value
}
}
progress_towards_rival_effect = {
REASON = rival_recital_insult
CHARACTER = scope:enemy
OPINION = default_rival_opinion
}
scope:activity = {
add_activity_log_entry = {
key = tournament_insulted_opponent_log
tags = { good }
score = 5
character = root
target = scope:enemy
}
}
stress_impact = {
sadistic = minor_stress_impact_loss
arrogant = minor_stress_impact_loss
gregarious = medium_stress_impact_gain
compassionate = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = compassionate
has_trait = gregarious
}
}
}
}
# Try, and fail, to insult them
option = {
name = ep2_tournament_events.5505.idiot
trigger = {
OR = {
has_trait = dull
has_trait = intellect_bad
}
}
add_internal_flag = special
activity_tournament_change_contestant_score_effect = { SCORE = decrease_minor }
reverse_add_opinion = {
target = scope:enemy
modifier = tournament_confused_opinion
opinion = -5
}
stress_impact = {
base = medium_stress_impact_loss
}
ai_chance = {
base = 100
}
}
# Imply you'll flay them
option = {
name = ep2_tournament_events.5505.torturer
trigger = {
has_trait = torturer
}
add_internal_flag = special
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
progress_towards_rival_effect = {
REASON = rival_recital_insult
CHARACTER = scope:enemy
OPINION = default_rival_opinion
}
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = wit
value = tournament_hastiludes_xp_gain_minor_value
}
}
reverse_add_opinion = {
target = scope:enemy
modifier = disgusted_opinion
opinion = -40
}
every_close_family_member = {
custom = ep2_tournament_events.5505.opinion.tt
limit = {
NOT = {
has_trait = sadistic
}
location = root.location
}
add_opinion = {
target = root
opinion = -20
modifier = disgusted_opinion
}
}
stress_impact = {
base = minor_stress_impact_loss
sadistic = medium_stress_impact_loss
gregarious = major_stress_impact_gain
compassionate = major_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = compassionate
has_trait = gregarious
}
}
}
}
# Be nice
option = {
name = ep2_tournament_events.5505.compassionate
trigger = {
has_trait = compassionate
}
add_internal_flag = special
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
progress_towards_friend_effect = {
REASON = friend_recital_compliment
CHARACTER = scope:enemy
OPINION = default_friend_opinion
}
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = wit
value = tournament_hastiludes_xp_gain_minor_value
}
}
stress_impact = {
sadistic = medium_stress_impact_gain
arrogant = medium_stress_impact_gain
compassionate = minor_stress_impact_loss
gregarious = minor_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = sadistic
has_trait = arrogant
}
}
}
}
# Insult them
option = {
name = ep2_tournament_events.5505.fallback
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
progress_towards_rival_effect = {
REASON = rival_recital_insult
CHARACTER = scope:enemy
OPINION = default_rival_opinion
}
stress_impact = {
compassionate = medium_stress_impact_gain
humble = medium_stress_impact_gain
gregarious = minor_stress_impact_gain
}
scope:activity = {
add_activity_log_entry = {
key = tournament_insulted_opponent_log
tags = { good }
score = 5
character = root
target = scope:enemy
}
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = compassionate
has_trait = gregarious
}
}
}
}
# ...never mind
option = {
name = ep2_tournament_events.5505.getout
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
stress_impact = {
sadistic = medium_stress_impact_gain
arrogant = medium_stress_impact_gain
compassionate = minor_stress_impact_loss
gregarious = minor_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = sadistic
has_trait = arrogant
}
}
}
}
}
#########################
### HONSE RANCING ###
#########################
# Choose your ~~fighter~~ jockey
ep2_tournament_events.4500 = {
type = activity_event
title = ep2_tournament_events.4500.t
desc = {
desc = ep2_tournament_events.4500.desc
triggered_desc = { # Knight
trigger = {
scope:jockey1 = {
is_knight_of = root
}
}
desc = ep2_tournament_events.4500.knight
}
triggered_desc = { # Guest
trigger = {
scope:jockey1 = {
is_knight_of = root
}
scope:jockey2 = { is_in_the_same_court_as_or_guest = root }
}
desc = ep2_tournament_events.4500.guest
}
triggered_desc = {
trigger = {
scope:jockey1 = {
is_knight_of = root
}
scope:jockey2 = {
is_in_the_same_court_as_or_guest = root
}
}
desc = ep2_tournament_events.4500.nobody
}
triggered_desc = { # Nobody
trigger = {
NOR = {
scope:jockey1 = {
is_knight_of = root
}
scope:jockey2 = {
is_in_the_same_court_as_or_guest = root
}
}
}
desc = ep2_tournament_events.4500.fallback
}
}
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = worry
}
right_portrait = scope:jockey1
lower_right_portrait = scope:jockey2
lower_left_portrait = scope:jockey3
trigger = {
is_ai = no
}
immediate = {
#Knight
if = {
limit = {
any_knight = {
location = root.location
is_participant_in_activity = scope:activity
is_adult = yes
is_landed = no
is_healthy = yes
NOT = {
is_in_guest_subset = { name = qualified }
}
}
}
random_knight = {
limit = {
location = root.location
is_participant_in_activity = scope:activity
is_adult = yes
is_landed = no
is_healthy = yes
NOT = {
is_in_guest_subset = { name = qualified }
}
}
weight = {
base = 1
modifier = { add = prowess }
}
save_scope_as = jockey1
}
}
else = {
create_character = {
template = tournament_locale_character
culture = root.location.culture
faith = root.location.faith
location = root.location
gender_female_chance = root_soldier_female_chance
save_scope_as = jockey1
}
scope:jockey1 = {
add_character_flag = generated_jockey
add_to_list = potential_jockeys
}
}
# Courtiers/Guests
if = {
limit = {
any_courtier_or_guest = {
location = root.location
is_participant_in_activity = scope:activity
is_adult = yes
is_healthy = yes
NOR = {
is_in_guest_subset = { name = qualified }
this = scope:jockey1
is_spouse_of = root
is_concubine = yes
}
can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:host }
}
}
random_courtier_or_guest = {
limit = {
location = root.location
is_participant_in_activity = scope:activity
is_adult = yes
is_healthy = yes
NOR = {
is_in_guest_subset = { name = qualified }
this = scope:jockey1
is_spouse_of = root
is_concubine = yes
}
}
weight = {
base = 1
modifier = { add = prowess }
}
save_scope_as = jockey2
}
}
else = {
create_character = {
template = tournament_locale_character
culture = root.location.culture
faith = root.location.faith
location = root.location
gender_female_chance = root_soldier_female_chance
save_scope_as = jockey2
}
scope:jockey2 = {
add_character_flag = generated_jockey
add_to_list = potential_jockeys
}
}
#Randos
create_character = {
template = tournament_locale_character
culture = root.location.culture
faith = root.location.faith
location = root.location
gender_female_chance = root_soldier_female_chance
save_scope_as = jockey3
}
scope:jockey3 = {
add_character_flag = generated_jockey
add_to_list = potential_jockeys
}
}
# Choose Jockey 1
option = {
name = ep2_tournament_events.4500.a
flavor = ep2_tournament_events.4500.knight.tt
scope:jockey1 = {
tournament_choose_jockey_effect = yes
accolade_medium_glory_gain_with_checks_effect = yes
}
ai_chance = {
base = 1
modifier = { add = scope:jockey1.contest_horse_aptitude_value }
}
}
# Choose Jockey 2
option = {
name = ep2_tournament_events.4500.b
flavor = ep2_tournament_events.4500.guest.tt
scope:jockey2 = {
tournament_choose_jockey_effect = yes
accolade_medium_glory_gain_with_checks_effect = yes
}
ai_chance = {
base = 1
modifier = { add = scope:jockey2.contest_horse_aptitude_value }
}
}
# Choose Jockey 3
option = {
name = ep2_tournament_events.4500.c
flavor = ep2_tournament_events.4500.nobody.tt
scope:jockey3 = {
tournament_choose_jockey_effect = yes
accolade_medium_glory_gain_with_checks_effect = yes
}
ai_chance = {
base = 1
modifier = { add = scope:jockey3.contest_horse_aptitude_value }
}
}
after = {
# Cull spare jockeys
every_in_list = {
list = potential_jockeys
limit = {
has_character_flag = generated_jockey
NOT = { root.var:horse_race_jockey ?= this }
}
silent_disappearance_effect = yes
}
}
}
#########################
### EXTRA ARCHERY ###
#########################
# You try to liven up the Contest
# Archery
ep2_tournament_events.6501 = {
type = activity_event
title = ep2_tournament_events.6501.t
desc = ep2_tournament_events.6501.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = bow_closed
}
cooldown = { years = 1 }
trigger = {
exists = var:contest_aptitude
scope:activity = {
any_guest_subset_current_phase = {
name = qualified
this = root
}
}
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Events/Grand_Activities/Tournaments/ConstructionKits/ep2_event_grand_tournament_ck_arrow_flyby"
tournament_pivotal_flavor_variable_effect = { CONTEST = archery ID = 6501 }
}
# Stand on one leg a fencepost
option = {
name = ep2_tournament_events.6501.a
trigger = {
has_trait = arrogant
}
duel = {
skill = prowess
value = high_skill_rating
#You succeed!
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
modifier = { # I'm used to this :sunglasses:
factor = 2
has_trait = one_legged
}
send_interface_toast = {
title = ep2_tournament_events.6501.a.tt.win
left_icon = root
activity_tournament_change_contestant_score_effect = { SCORE = increase_major }
add_prestige = major_prestige_value
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = bow
value = tournament_hastiludes_xp_gain_major_value
}
}
}
if = {
limit = {
OR = {
location = {
OR = {
geographical_region = world_europe
geographical_region = world_asia_minor
}
}
OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion }
}
}
give_nickname = nick_monopod
}
else = {
give_nickname = nick_sure_footed
}
desc = ep2_tournament_events.6501.a.tt.win
stress_impact = {
arrogant = medium_stress_impact_loss
shy = medium_stress_impact_gain
brave = minor_stress_impact_loss
stubborn = minor_stress_impact_loss
}
}
#You slip and fall
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = ep2_tournament_events.6501.a.tt.lose
left_icon = root
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
increase_wounds_effect = { REASON = wounds }
}
desc = ep2_tournament_events.6501.a.tt.lose
stress_impact = {
base = minor_stress_impact_gain
arrogant = major_stress_impact_gain
}
}
}
scope:activity = {
add_activity_log_entry = {
key = tournament_archery_livened_log
tags = { good }
score = 5
character = root
}
}
stress_impact = {
craven = minor_stress_impact_gain
shy = minor_stress_impact_gain
humble = minor_stress_impact_gain
}
ai_chance = {
base = 30
}
}
# Try to fire an arrow blindfolded
option = {
name = ep2_tournament_events.6501.b
duel = {
skill = prowess
value = high_skill_rating
#You succeed!
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = ep2_tournament_events.6501.b.tt.win
left_icon = root
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
add_prestige = medium_prestige_value
if = {
limit = {
has_trait = tourney_participant
}
add_trait_xp = {
trait = tourney_participant
track = bow
value = tournament_hastiludes_xp_gain_medium_value
}
}
}
desc = ep2_tournament_events.6501.b.tt.win
stress_impact = {
arrogant = minor_stress_impact_loss
shy = minor_stress_impact_gain
brave = miniscule_stress_impact_loss
stubborn = miniscule_stress_impact_loss
}
}
#You slip and fall
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = ep2_tournament_events.6501.a.tt.lose
left_icon = root
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
add_prestige = minor_prestige_loss
}
desc = ep2_tournament_events.6501.b.tt.lose
stress_impact = {
arrogant = medium_stress_impact_gain
}
}
}
scope:activity = {
add_activity_log_entry = {
key = tournament_archery_livened_log
tags = { good }
score = 5
character = root
}
}
ai_chance = {
base = 100
}
}
# Leave it
option = {
name = ep2_tournament_events.6501.c
stress_impact = {
stubborn = minor_stress_impact_gain
arrogant = minor_stress_impact_gain
ambitious = minor_stress_impact_gain
}
ai_chance = {
base = 100
}
}
}
# A competitor injures themself
# Joust
ep2_tournament_events.6502 = {
type = activity_event
title = ep2_tournament_events.6502.t
desc = ep2_tournament_events.6502.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = personality_honorable
}
right_portrait = {
character = scope:versus_contestant
animation = loss_1
}
cooldown = { years = 1 }
trigger = {
contest_versus_player_vs_ai_trigger = yes
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Events/Grand_Activities/Tournaments/ConstructionKits/ep2_event_grand_tournament_ck_male_grunts"
contest_versus_player_vs_ai_scope_effect = yes
tournament_pivotal_flavor_variable_effect = { CONTEST = joust ID = 6502 }
random_court_position_holder = {
type = court_physician_court_position
save_scope_as = physician
}
scope:activity = {
add_activity_log_entry = {
key = tournament_joust_injury_log
tags = { bad }
score = 5
character = scope:versus_contestant
}
}
}
# Slyly delight in their fall and injure them further
option = {
name = ep2_tournament_events.6502.a
trigger = {
OR = {
has_trait = sadistic
has_trait = callous
}
}
flavor = ep2_tournament_events.6502.a.tt
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
scope:versus_contestant = {
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
increase_wounds_no_death_effect = { REASON = wounds }
if = {
limit = {
NOT = {
has_trait = scarred
}
}
add_trait = scarred
}
add_trait_xp = {
trait = scarred
value = {
integer_range = {
min = 5
max = 65
}
}
}
}
reverse_add_opinion = {
target = scope:versus_contestant
modifier = hurt_opinion
opinion = -40
}
stress_impact = {
sadistic = miniscule_stress_impact_loss
callous = miniscule_stress_impact_loss
just = medium_stress_impact_gain
gregarious = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = just
has_trait = gregarious
}
}
}
}
# Fetch your doctor
option = {
name = ep2_tournament_events.6502.b
trigger = {
court_physician_available_trigger = yes
}
add_prestige = minor_prestige_gain
random_list = {
#Your physician does well
2 = {
modifier = {
add = 5
scope:physician = {
learning > average_skill_rating
}
}
modifier = {
add = 10
scope:physician = {
learning > high_skill_rating
}
}
modifier = {
add = 10
scope:physician = {
has_trait = lifestyle_herbalist
}
}
modifier = {
add = 20
scope:physician = {
has_trait = lifestyle_physician
}
}
desc = ep2_tournament_events.6502.b.tt.success
send_interface_toast = {
title = ep2_tournament_events.6502.b.tt.success
left_icon = root
right_icon = scope:versus_contestant
reverse_add_opinion = {
target = scope:versus_contestant
modifier = grateful_opinion
opinion = 30
}
}
}
#Your physician doesn't do so hot
10 = {
modifier = {
add = 5
scope:physician = {
learning < average_skill_rating
}
}
modifier = {
add = 10
scope:physician = {
learning < high_skill_rating
}
}
desc = ep2_tournament_events.6502.b.tt.failure
send_interface_toast = {
title = ep2_tournament_events.6502.b.tt.failure
left_icon = root
right_icon = scope:versus_contestant
scope:competitor = {
if = {
limit = {
NOT = {
scope:versus_contestant = {
has_trait = scarred
}
}
}
add_trait = scarred
}
add_trait_xp = {
trait = scarred
value = {
integer_range = {
min = 5
max = 25
}
}
}
}
}
}
}
scope:versus_contestant = {
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
}
reverse_add_opinion = {
target = scope:versus_contestant
modifier = grateful_opinion
opinion = 20
}
stress_impact = {
compassionate = miniscule_stress_impact_loss
generous = miniscule_stress_impact_loss
just = miniscule_stress_impact_loss
callous = minor_stress_impact_gain
arbitrary = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = callous
has_trait = arbitrary
}
}
}
}
# Help them up
option = {
name = ep2_tournament_events.6502.c
trigger = {
NOT = {
has_trait = callous
has_trait = sadistic
}
}
scope:versus_contestant = {
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
increase_wounds_no_death_effect = { REASON = wounds }
}
add_prestige = minor_prestige_gain
stress_impact = {
compassionate = miniscule_stress_impact_loss
generous = miniscule_stress_impact_loss
just = miniscule_stress_impact_loss
arbitrary = minor_stress_impact_gain
callous = minor_stress_impact_gain
}
ai_chance = {
base = 100
}
}
# Shake your head and move on
option = {
name = ep2_tournament_events.6502.d
scope:versus_contestant = {
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
increase_wounds_no_death_effect = { REASON = wounds }
if = {
limit = {
NOT = {
has_trait = scarred
}
}
add_trait = scarred
}
add_trait_xp = {
trait = scarred
value = {
integer_range = {
min = 5
max = 25
}
}
}
}
stress_impact = {
compassionate = minor_stress_impact_gain
}
ai_chance = {
base = 100
}
}
}
# A wayward arrow hits a bystander
# Archery
ep2_tournament_events.6503 = {
type = activity_event
title = ep2_tournament_events.6503.t
desc = ep2_tournament_events.6503.desc
window = widget_activity_locale_fullscreen_event
theme = tournament_contest
left_portrait = {
character = root
animation = shock
}
right_portrait = {
character = scope:competitor1
animation = shame
}
lower_right_portrait = {
character = scope:competitor2
}
cooldown = { years = 1 }
trigger = {
scope:activity = {
any_guest_subset_current_phase = {
count >= 2
name = qualified
contest_event_general_contestant_valid_trigger = yes
}
}
}
immediate = {
play_sound_effect = "event:/DLC/EP2/SFX/Events/Grand_Activities/Tournaments/ConstructionKits/ep2_event_grand_tournament_ck_arrow_impact"
tournament_pivotal_flavor_variable_effect = { CONTEST = archery ID = 6503 }
scope:activity = {
random_guest_subset_current_phase = {
name = qualified
limit = { contest_event_general_contestant_valid_trigger = yes }
save_scope_as = competitor1
tournament_pivotal_flavor_variable_effect = { CONTEST = archery ID = 6503 }
}
random_guest_subset_current_phase = {
name = qualified
limit = {
contest_event_general_contestant_valid_trigger = yes
this != scope:competitor1
}
save_scope_as = competitor2
tournament_pivotal_flavor_variable_effect = { CONTEST = archery ID = 6503 }
}
}
scope:competitor2 = {
increase_wounds_no_death_effect = {
REASON = spectator_injured
}
}
scope:activity = {
add_activity_log_entry = {
key = tournament_wayward_arrow_log
tags = { bad }
score = 5
character = scope:competitor2
}
}
}
# Heal the person
option = {
name = ep2_tournament_events.6503.a
trigger = {
has_trait = lifestyle_herbalist
}
reverse_add_opinion = {
target = scope:competitor2
modifier = grateful_opinion
opinion = 40
}
reverse_add_opinion = {
target = scope:competitor1
modifier = relieved_opinion
opinion = 10
}
scope:competitor2 = {
add_character_modifier = {
modifier = safe_wound_treatment_success_low_modifier
years = 2
}
}
progress_towards_friend_effect = {
REASON = friend_treated_wounds
CHARACTER = scope:competitor2
OPINION = 0
}
stress_impact = {
base = miniscule_stress_impact_loss
arbitrary = minor_stress_impact_gain
callous = minor_stress_impact_gain
sadistic = minor_stress_impact_gain
}
ai_chance = {
base = 100
}
}
# Call for a medic
option = {
name = ep2_tournament_events.6503.b
remove_short_term_gold = minor_gold_value
reverse_add_opinion = {
target = scope:competitor2
modifier = grateful_opinion
opinion = 40
}
reverse_add_opinion = {
target = scope:competitor1
modifier = relieved_opinion
opinion = 10
}
scope:competitor2 = {
add_character_modifier = {
modifier = safe_wound_treatment_success_low_modifier
years = 2
}
}
progress_towards_friend_effect = {
REASON = friend_treated_wounds
CHARACTER = scope:competitor2
OPINION = 0
}
stress_impact = {
base = miniscule_stress_impact_gain
greedy = minor_stress_impact_gain
callous = minor_stress_impact_gain
sadistic = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = { #More likely if you don't have a lot of gold
factor = 0
gold < root.minor_gold_value
}
}
}
# This isn't my concern
option = {
name = ep2_tournament_events.6503.c
scope:competitor1 = {
activity_tournament_change_contestant_score_effect = { SCORE = decrease_minor }
}
scope:competitor2 = {
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
add_stress = minor_stress_gain
progress_towards_rival_effect = {
REASON = rival_refused_to_help_wound
CHARACTER = scope:competitor1
OPINION = default_rival_opinion
}
}
ai_chance = {
base = 100
}
}
}