N3OW/events/activities/tour_activity/tour_phase_cultural_festival.txt
2026-01-06 14:25:21 +01:00

10202 lines
224 KiB
Text

# Events for the cultural festival portion of the Tour grand activity
namespace = cultural_festival
############################
## Tour Mini-Activity: Cultural Festival
############################
## Vassal Events
## 1000-1999
## by Veronica Pazos
############################
#
############################
## Liege Events
## 2000-2999
## by Veronica Pazos
############################
# cultural_festival.2000 - Cultural Festival Arrival Event (big variation)
# cultural_festival.2001-2002 - Performer messes up in front of you
# cultural_festival.2010 - King/Queen of Love and Beauty / Grim and Grievance
# cultural_festival.2020 - You enjoy a cultural demonstration based on the time of the year/culture
# cultural_festival.2030 - You tax people that go into the cultural festival
# cultural_festival.2040 - You are horrified by the culture in the cultural festival
# cultural_festival.2050 - Local dance is too scandalous - or not
# cultural_festival.2060 - You bring sophisticated entertainments from the capital to a low-dev county
# cultural_festival.2070 - You encounter a band of mercenaries enjoying the festivities, recruit?
# cultural_festival.2080 - Weird guy offers you a mysterious bag of liquids
# cultural_festival.2090 - Imprison performers on made up accussations
# cultural_festival.2100 - A guild is contributing to the festival
# cultural_festival.2110 - A dog breaks into a performance - Adopt?
#
#
############################
## Bilateral Events
## 3000-3999
## by Veronica Pazos
############################
# cultural_festival.3000-3002 - Big play based on liege
# cultural_festival.3010-3011 - Alcohol/Juice fountain
# cultural_festival.3020-3022 - Host a lavish ceremony to make your vassal formally repledge homage to you
# cultural_festival.3030-3031 - Crown the best pig/cow/local_farm_animal
# cultural_festival.3040-3042 - Sword in the stone
# cultural_festival.3050-3051 - You struggle to stay awake during a boring performance
# cultural_festival.3060-3061 - Take your spouse/vassal's spouse for a dance
# cultural_festival.3070-3071 - Hold a feast of fools-esque ceremony
#
#
############################
## 4000-4999
## by Arkadiusz Majewski
############################
# cultural_festival.4000 - As Liege you end up in a conversation in a language you don't know
# cultural_festival.4100 - Your courtier makes a cultural faux pas
# cultural_festival.4200-4203 - Vassal does a parade, liege attends
# cultural_festival.4300-4312 - Vassal initiates gift exchange custom, both can follow up on the gifts years later
#####################################################################################
######################
## Liege Events
## 2000-2999
## by Veronica Pazos
######################
######################
## Liege: Arrival event
## 2000
## by Veronica Pazos
######################
cultural_festival.2000 = {
type = activity_event
title = cultural_festival.2000.t
desc = {
desc = cultural_festival.2000.desc.intro
random_valid = {
triggered_desc = {
trigger = {
NOT = {
is_target_in_variable_list = {
name = visited_cultural_festival_province_var
target = scope:cultural_festival_scope
}
}
has_relation_lover = scope:stop_host_scope
}
desc = cultural_festival.2000.desc.first_time_lovers
}
triggered_desc = {
trigger = {
NOT = {
is_target_in_variable_list = {
name = visited_cultural_festival_province_var
target = scope:cultural_festival_scope
}
}
has_relation_rival = scope:stop_host_scope
}
desc = cultural_festival.2000.desc.first_time_rivals
}
triggered_desc = {
trigger = {
NOT = {
is_target_in_variable_list = {
name = visited_cultural_festival_province_var
target = scope:cultural_festival_scope
}
}
opinion = {
target = scope:stop_host_scope
value >= -10
}
opinion = {
target = scope:stop_host_scope
value <= 15
}
}
desc = cultural_festival.2000.desc.first_time_neutral
}
triggered_desc = {
trigger = {
NOT = {
is_target_in_variable_list = {
name = visited_cultural_festival_province_var
target = scope:cultural_festival_scope
}
}
OR = {
opinion = {
target = scope:stop_host_scope
value > 15
}
has_any_good_relationship_with_character_trigger = { CHARACTER = scope:stop_host_scope }
}
}
desc = cultural_festival.2000.desc.first_time_good
}
triggered_desc = {
trigger = {
NOT = {
is_target_in_variable_list = {
name = visited_cultural_festival_province_var
target = scope:cultural_festival_scope
}
}
opinion = {
target = scope:stop_host_scope
value < -10
}
}
desc = cultural_festival.2000.desc.first_time_bad
}
triggered_desc = {
trigger = {
is_target_in_variable_list = {
name = visited_cultural_festival_province_var
target = scope:cultural_festival_scope
}
has_relation_lover = scope:stop_host_scope
}
desc = cultural_festival.2000.desc.again_lovers
}
triggered_desc = {
trigger = {
is_target_in_variable_list = {
name = visited_cultural_festival_province_var
target = scope:cultural_festival_scope
}
has_relation_rival = scope:stop_host_scope
}
desc = cultural_festival.2000.desc.again_rivals
}
triggered_desc = {
trigger = {
is_target_in_variable_list = {
name = visited_cultural_festival_province_var
target = scope:cultural_festival_scope
}
OR = {
opinion = {
target = scope:stop_host_scope
value > 15
}
has_any_good_relationship_with_character_trigger = { CHARACTER = scope:stop_host_scope }
}
}
desc = cultural_festival.2000.desc.again_good
}
triggered_desc = {
trigger = {
is_target_in_variable_list = {
name = visited_cultural_festival_province_var
target = scope:cultural_festival_scope
}
opinion = {
target = scope:stop_host_scope
value >= -10
}
opinion = {
target = scope:stop_host_scope
value <= 15
}
}
desc = cultural_festival.2000.desc.again_neutral
}
triggered_desc = {
trigger = {
is_target_in_variable_list = {
name = visited_cultural_festival_province_var
target = scope:cultural_festival_scope
}
opinion = {
target = scope:stop_host_scope
value < -10
}
}
desc = cultural_festival.2000.desc.again_bad
}
}
random_valid = {
triggered_desc = {
trigger = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_majesty
}
}
}
desc = cultural_festival.2000.desc.majesty
}
triggered_desc = {
trigger = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_intimidation
}
}
}
desc = cultural_festival.2000.desc.intimidation
}
triggered_desc = {
trigger = {
is_target_in_variable_list = {
name = visited_cultural_festival_province_var
target = scope:cultural_festival_scope
}
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_intimidation
}
}
}
desc = cultural_festival.2000.desc.again_intimidation
}
triggered_desc = {
trigger = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_taxation
}
}
}
desc = cultural_festival.2000.desc.taxation
}
}
}
theme = tour_arrival
window = tour_arrival_event
left_portrait = {
character = root
triggered_animation = {
trigger = {
has_relation_lover = scope:stop_host_scope
}
animation = flirtation_left
}
triggered_animation = {
trigger = {
OR = {
opinion = {
target = scope:stop_host_scope
value > 15
}
has_any_good_relationship_with_character_trigger = { CHARACTER = scope:stop_host_scope }
}
}
animation = ecstasy
}
triggered_animation = {
trigger = {
OR = {
opinion = {
target = scope:stop_host_scope
value < -10
}
has_relation_rival = scope:stop_host_scope
}
}
animation = dismissal
}
triggered_animation = {
trigger = {
OR = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_taxation
}
}
has_trait = ambitious
has_trait = greedy
has_trait = avaricious
}
}
animation = dismissal
}
triggered_animation = {
trigger = {
OR = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_intimidation
}
}
has_trait = callous
has_trait = sadistic
dread >= high_dread
}
}
animation = personality_vengeful
}
animation = personality_rational
}
right_portrait = {
character = scope:stop_host_scope
triggered_animation = {
trigger = {
has_relation_lover = scope:stop_host_scope
}
animation = flirtation
}
triggered_animation = {
trigger = {
scope:stop_host_scope = {
opinion = {
target = scope:stop_host_scope
value > 15
}
has_any_good_relationship_with_character_trigger = { CHARACTER = root }
}
}
animation = happiness
}
triggered_animation = {
trigger = {
scope:stop_host_scope = {
OR = {
opinion = {
target = scope:stop_host_scope
value < -10
}
has_relation_rival = root
}
}
}
animation = boredom
}
animation = personality_honorable
}
immediate = {
if = {
limit = {
root.location.county.holder = {
OR = {
has_relation_friend = root
opinion = {
target = root
value >= low_positive_opinion
}
}
}
}
play_arrival_music_effect = {
WELCOME_LEVEL = welcome
}
}
else = {
play_arrival_music_effect = {
WELCOME_LEVEL = neutral
}
}
}
option = {
name = cultural_festival.2000.a
custom_tooltip = cultural_festival_begins_tt
if = {
limit = {
root.culture != root.location.culture
}
culture = {
change_cultural_acceptance = {
target = root.location.culture
value = minor_cultural_acceptance_gain
desc = cultural_acceptance_embraced_festival
}
}
}
else = {
root.location.county = {
add_county_modifier = {
modifier = recent_cultural_festival
years = 20
}
}
}
tour_generic_arrival_effect = yes
}
after = {
add_to_variable_list = {
name = visited_cultural_festival_province_var
target = scope:cultural_festival_scope
}
}
}
######################
## Liege: Performer messes up in front of you, gets injured
## 2001
## by Veronica Pazos
######################
scripted_trigger cultural_festival_2001_has_wrathful_trait = {
OR = {
has_trait = callous
has_trait = sadistic
has_trait = wrathful
}
}
cultural_festival.2001 = {
type = activity_event
title = cultural_festival.2001.t
desc = {
desc = cultural_festival.2001.desc.intro
first_valid = {
triggered_desc = {
trigger = {
has_variable = child_in_disguise_var
}
desc = cultural_festival.2001.desc.child
}
triggered_desc = {
trigger = {
NOT = { has_variable = child_in_disguise_var }
}
desc = cultural_festival.2001.desc.normal
}
}
}
theme = cultural_festival
cooldown = { years = 2 }
left_portrait = {
character = root
triggered_animation = {
trigger = {
cultural_festival_2001_has_wrathful_trait = yes
}
animation = schadenfreude
}
animation = shock
}
right_portrait = {
character = scope:injured_artist
animation = pain
}
trigger = {
#triggered in the on_action
}
weight_multiplier = {
base = 1
}
immediate = {
location = { save_scope_as = injured_artist_location }
random_list = {
35 = {
trigger = { # if host has a child there's a tiny chance they'll be the artist
scope:stop_host_scope = {
any_child = { is_available_ai_adult = yes }
}
}
set_variable = child_in_disguise_var
scope:stop_host_scope = {
random_child = {
limit = { is_available_ai_adult = yes }
increase_wounds_effect = { REASON = fall }
save_scope_as = injured_artist
}
}
}
65 = {
create_character = {
gender_female_chance = 50
culture = location.culture
faith = location.faith
random_traits = yes
dynasty = none
age = { 18 50 }
employer = scope:stop_host_scope
save_scope_as = injured_artist
after_creation = {
increase_wounds_effect = { REASON = fall }
}
}
}
}
}
option = { # So unfortunate
name = cultural_festival.2001.a
stress_impact = {
compassionate = minor_stress_impact_gain
forgiving = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = compassionate
has_trait = forgiving
}
}
}
}
option = { # Help them!
name = cultural_festival.2001.b
remove_short_term_gold = tiny_gold_value
scope:cultural_festival_scope = {
add_county_modifier = {
modifier = festival_helped_injured_artist_modifier
years = 5
}
}
if = {
limit = { has_variable = child_in_disguise_var }
scope:stop_host_scope = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 20
}
}
}
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_majesty
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
hidden_effect = {
trigger_event = {
id = cultural_festival.2002
days = { 10 15 }
}
}
stress_impact = {
arrogant = minor_stress_impact_gain
wrathful = minor_stress_impact_gain
sadistic = medium_stress_impact_gain
callous = medium_stress_impact_gain
}
ai_chance = {
base = 50
modifier = {
factor = 0
OR = {
has_trait = arrogant
has_trait = sadistic
has_trait = callous
has_trait = wrathful
}
}
}
}
option = { # Have them whipped
name = cultural_festival.2001.c
trigger = {
cultural_festival_2001_has_wrathful_trait = yes
}
add_dread = medium_dread_gain
scope:injured_artist = {
increase_wounds_effect = { REASON = whipping }
}
scope:cultural_festival_scope = {
add_county_modifier = {
modifier = festival_whipped_injured_artist_modifier
years = 5
}
}
if = {
limit = { has_variable = child_in_disguise_var }
scope:stop_host_scope = {
progress_towards_rival_effect = {
CHARACTER = root
REASON = rival_whipped_my_kid
OPINION = -30
}
}
}
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_intimidation
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_majesty
}
}
}
decrease_tour_success_effect = { POINTS = 1 }
}
stress_impact = {
gregarious = minor_stress_impact_gain
compassionate = medium_stress_impact_gain
just = medium_stress_impact_gain
calm = medium_stress_impact_gain
forgiving = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 2
OR = {
has_trait = arrogant
has_trait = sadistic
has_trait = callous
has_trait = wrathful
}
}
modifier = {
factor = 0
OR = {
has_trait = compassionate
has_trait = just
has_trait = calm
has_trait = forgiving
}
}
}
}
}
# Follow up: The person gives you a reward for your kindness
scripted_trigger cultural_festival_2002_valid_secret_owner = {
is_adult = yes
is_ai = yes
this != ROOT
any_secret = {
exists = this
NOT = { is_known_by = root }
}
}
cultural_festival.2002 = {
type = activity_event
title = cultural_festival.2002.t
desc = {
desc = cultural_festival.2002.desc.intro
first_valid = {
triggered_desc = {
trigger = {
exists = var:secret_var
}
desc = cultural_festival.2002.desc.secret
}
triggered_desc = {
trigger = {
exists = var:hunting_var
}
desc = cultural_festival.2002.desc.hunting
}
triggered_desc = {
trigger = {
exists = var:savings_var
}
desc = cultural_festival.2002.desc.savings
}
}
}
theme = cultural_festival
override_background = { reference = market }
left_portrait = {
character = root
animation = personality_honorable
}
right_portrait = {
character = scope:injured_artist
animation = beg
}
lower_center_portrait = {
trigger = { has_variable = secret_var }
character = scope:secret_target
}
trigger = {
location = scope:injured_artist_location #you haven't left for the next stop
}
weight_multiplier = {
base = 1
}
immediate = {
random_list = { #we select your reward
1 = {
trigger = {
scope:activity = {
any_attending_character = {
cultural_festival_2002_valid_secret_owner = yes
}
}
}
set_variable = secret_var
}
1 = { set_variable = hunting_var }
1 = { set_variable = savings_var }
}
if = { #we get the secret scopes
limit = { has_variable = secret_var }
scope:activity = {
random_attending_character = {
limit = { cultural_festival_2002_valid_secret_owner = yes }
save_scope_as = secret_target
random_secret = {
limit = { NOT = { is_known_by = root } }
save_scope_as = secret_secret
}
}
}
}
}
option = { # Thanks!
name = cultural_festival.2002.a
if = {
limit = { has_variable = secret_var }
scope:secret_secret = { reveal_to = root }
}
else_if = {
limit = { has_variable = hunting_var }
add_character_modifier = { #skirmishers_damage_mult
modifier = terrain_knowledge_modifier
years = 10
}
}
else = {
add_treasury_or_gold = {
value = minor_treasury_or_gold_value
max = 10
}
}
stress_impact = {
compassionate = minor_stress_impact_gain
forgiving = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = compassionate
has_trait = forgiving
}
}
}
}
option = { # I can't accept this
name = cultural_festival.2002.b
add_piety = medium_piety_gain
stress_impact = {
arrogant = minor_stress_impact_gain
wrathful = minor_stress_impact_gain
sadistic = medium_stress_impact_gain
callous = medium_stress_impact_gain
}
ai_chance = {
base = 50
modifier = {
factor = 0
OR = {
has_trait = arrogant
has_trait = sadistic
has_trait = callous
has_trait = wrathful
}
}
}
}
after = {
remove_variable = secret_var
remove_variable = hunting_var
remove_variable = savings_var
}
}
######################
## Liege: You're being crowned the Ugliest/Prettiest person
## 2010
## by Veronica Pazos
######################
cultural_festival.2010 = {
type = activity_event
title = cultural_festival.2010.t
desc = {
first_valid = {
triggered_desc = {
trigger = {
has_conventionally_ugly_trigger = yes
}
desc = cultural_festival.2010.desc_bad
}
triggered_desc = {
trigger = {
has_conventionally_attractive_trigger = yes
}
desc = cultural_festival.2010.desc_good
}
}
}
theme = cultural_festival
cooldown = { years = 2 }
left_portrait = {
character = root
triggered_animation = {
trigger = {
has_conventionally_ugly_trigger = yes
OR = {
has_trait = arrogant
has_trait = wrathful
has_trait = vengeful
has_trait = callous
has_trait = sadistic
}
}
animation = rage
}
triggered_animation = {
trigger = {
has_conventionally_ugly_trigger = yes
NOR = {
has_trait = arrogant
has_trait = wrathful
has_trait = vengeful
has_trait = callous
has_trait = sadistic
}
}
animation = grief
}
animation = ecstasy
}
right_portrait = {
character = scope:stop_host_scope
triggered_animation = {
trigger = {
has_conventionally_ugly_trigger = yes
}
animation = schadenfreude
}
animation = happiness
}
trigger = {
is_landed_or_landless_administrative = yes
NOT = { has_variable = was_monarch_good_bad_var }
OR = {
AND = {
has_conventionally_attractive_trigger = yes #you're pretty
scope:stop_host_scope = { #and the host doesn't hate you
NOT = { has_relation_rival = root }
}
}
AND = {
has_conventionally_ugly_trigger = yes #or not pretty
scope:stop_host_scope = { #and the host has something against you
OR = {
has_relation_rival = root
has_relation_potential_rival = root
AND = {
has_hook_of_type = {
target = root
type = weak_blackmail_hook
}
opinion = {
target = root
value >= medium_negative_opinion
}
}
has_hook_of_type = {
target = root
type = strong_blackmail_hook
}
}
}
}
}
}
weight_multiplier = {
base = 1
modifier = {
factor = 2
scope:stop_host_scope = {
has_relation_soulmate = root
}
}
modifier = {
factor = 2
scope:stop_host_scope = {
has_relation_nemesis = root
}
}
modifier = {
factor = 1.5
scope:stop_host_scope = {
has_relation_lover = root
}
}
modifier = {
factor = 1.5
OR = {
has_trait = arrogant #more likely to happen if you care about this stuff
has_trait = gregarious
}
}
modifier = {
factor = 0.5
OR = {
has_trait = humble #less likely to happen if you don't like this
has_trait = shy
}
}
}
immediate = {
set_variable = was_monarch_good_bad_var #so you don't get the same event again
}
option = { # you're the king/queen of beauty - yass king/queen
name = cultural_festival.2010.a
trigger = {
has_conventionally_attractive_trigger = yes
}
scope:activity = {
add_activity_log_entry = {
key = crowned_monarch_of_beauty_log
tags = { good }
character = scope:visiting_liege
target = scope:stop_host_scope
root = {
if = {
limit = { is_male = yes }
give_nickname = nick_monarch_of_beauty_and_noblesse_masc
}
else = {
give_nickname = nick_monarch_of_beauty_and_noblesse
}
scope:cultural_festival_scope = {
add_county_modifier = {
modifier = king_of_beauty_modifier
years = 5
}
}
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_majesty
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
}
}
}
stress_impact = {
base = minor_stress_impact_loss
arrogant = minor_stress_impact_loss #you like this even more!
humble = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
}
}
}
option = { # you're king/queen of the homely - sigh
name = cultural_festival.2010.b
trigger = {
has_conventionally_ugly_trigger = yes
}
scope:activity = {
add_activity_log_entry = {
key = crowned_monarch_of_ugly_log
tags = { bad }
character = scope:visiting_liege
target = scope:stop_host_scope
root = {
if = {
limit = { is_male = yes }
give_nickname = nick_monarch_of_grim_and_grievance_masc
}
else = {
give_nickname = nick_monarch_of_grim_and_grievance
}
add_opinion = {
target = scope:stop_host_scope
modifier = insult_opinion
opinion = -50
}
}
}
}
stress_impact = {
base = minor_stress_impact_gain
wrathful = minor_stress_impact_gain
vengeful = minor_stress_impact_gain
arrogant = medium_stress_impact_gain
}
ai_chance = {
base = 50
modifier = {
factor = 0
}
}
}
option = { #you're the king/queen of the homely - rage
name = cultural_festival.2010.c
trigger = {
has_conventionally_ugly_trigger = yes
}
scope:activity = {
add_activity_log_entry = {
key = crowned_monarch_of_ugly_log
tags = { bad }
character = scope:visiting_liege
target = scope:stop_host_scope
root = {
if = {
limit = { has_relation_nemesis = scope:stop_host_scope }
add_opinion = {
target = scope:stop_host_scope
modifier = insult_opinion
opinion = -50
}
}
else_if = {
limit = { has_relation_rival = scope:stop_host_scope }
set_relation_nemesis = { #this is bad enough to make you nemesis
target = scope:stop_host_scope
copy_reason = rival
reason = nemesis_monarch_of_grim_and_grievance
}
}
else = {
progress_towards_rival_effect = {
CHARACTER = scope:stop_host_scope
REASON = rival_king_of_ugly
OPINION = -10
}
}
scope:cultural_festival_scope = {
add_county_modifier = {
modifier = king_of_ugly_modifier
years = 5
}
}
}
}
}
duel = {
skill = prowess
target = scope:stop_host_scope
50 = { #you win
desc = cultural_festival.2010.c.success
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
}
send_interface_toast = {
title = cultural_festival.2010.c.success
left_icon = root
right_icon = scope:stop_host_scope
scope:stop_host_scope = {
increase_wounds_effect = {
REASON = fight
}
}
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_intimidation
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
}
}
50 = {
desc = cultural_festival.2010.c.failure
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
}
send_interface_toast = {
title = cultural_festival.2010.c.failure
left_icon = root
increase_wounds_effect = {
REASON = fight
}
}
}
}
stress_impact = {
content = minor_stress_impact_gain
forgiving = minor_stress_impact_gain
calm = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = content
has_trait = forgiving
has_trait = calm
}
}
}
}
}
######################
## Liege: You enjoy a cultural demonstration
## 2020
## by Veronica Pazos
######################
cultural_festival.2020 = {
type = activity_event
title = cultural_festival.2020.t
desc = {
desc = cultural_festival.2020.desc.intro
first_valid = {
triggered_desc = { #Christmas
trigger = {
OR = {
location.faith.religion = religion:eastern_orthodox_religion
location.faith.religion = religion:catholic_religion
location.faith.religion = religion:protestant_religion
}
OR = { #we take the broader Christmaside season
current_month = 11
current_month = 12
current_month = 1
}
}
desc = cultural_festival.2020.desc.christmas
}
triggered_desc = { #Eid al-Fitr
trigger = {
location.faith.religion = religion:islam_religion
OR = {
current_month = 3
current_month = 4
current_month = 5
}
}
desc = cultural_festival.2020.desc.eid
}
triggered_desc = { #Midsommar
trigger = {
root.culture = { NOT = { has_cultural_pillar = heritage_north_germanic } }
location.culture = { has_cultural_pillar = heritage_north_germanic }
OR = {
current_month = 5
current_month = 6
current_month = 7
current_month = 8
}
}
desc = cultural_festival.2020.desc.midsommar
}
triggered_desc = { #Regular Summer Solstice
trigger = {
NOT = {
location.culture = { has_cultural_pillar = heritage_north_germanic }
}
OR = {
current_month = 5
current_month = 6
current_month = 7
current_month = 8
}
}
desc = cultural_festival.2020.desc.summer_solstice
}
triggered_desc = { #Harvest Festival
trigger = {
OR = {
current_month = 9
current_month = 10
current_month = 11
}
}
desc = cultural_festival.2020.desc.harvest
}
desc = cultural_festival.2020.desc.generic
}
}
theme = cultural_festival
left_portrait = {
character = root
animation = ecstasy
}
right_portrait = {
character = scope:stop_host_scope
animation = personality_forgiving
}
cooldown = { years = 2 }
trigger = {
is_landed_or_landless_administrative = yes
location.culture = { NOT = { has_variable = cultural_festival_culture_var } } #you haven't seen this festival in a while
}
weight_multiplier = {
base = 1
modifier = {
factor = 2
involved_activity = {
has_activity_option = {
category = special_type
option = tour_type_majesty
}
}
}
}
immediate = {
location.culture = {
set_variable = {
name = cultural_festival_culture_var
days = 1825 # 5 years
}
save_scope_as = festival_culture_scope
}
}
option = { # I love this culture!
name = cultural_festival.2020.a
if = {
limit = {
location.culture != root.culture #they're not of your same culture
}
culture = {
change_cultural_acceptance = {
target = scope:festival_culture_scope
value = major_cultural_acceptance_gain
desc = cultural_acceptance_embraced_festival
}
}
}
else = {
scope:cultural_festival_scope = {
add_county_modifier = {
modifier = enjoyed_culture_modifier
years = 10
}
}
}
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_majesty
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
stress_impact = {
lifestyle_reveler = minor_stress_impact_gain
drunkard = minor_stress_impact_gain
stubborn = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = lifestyle_reveler
has_trait = drunkard
has_trait = stubborn
}
}
}
}
option = { # I like the festival itself
name = {
trigger = {
drinks_alcohol_trigger = yes
is_adult = yes
scope:stop_host_scope = {
drinks_alcohol_trigger = yes
}
}
text = cultural_festival.2020.b.drink
}
name = {
trigger = {
OR = {
drinks_alcohol_trigger = no
AND = {
drinks_alcohol_trigger = yes
scope:stop_host_scope = {
drinks_alcohol_trigger = no
}
}
}
}
text = cultural_festival.2020.b.no_drink
}
add_character_modifier = { #stress gain -
modifier = festival_tis_the_season
years = 10
}
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_majesty
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
stress_impact = {
base = major_stress_impact_loss
lifestyle_reveler = minor_stress_impact_loss
drunkard = minor_stress_impact_loss
callous = minor_stress_impact_gain
temperate = minor_stress_impact_gain
content = minor_stress_impact_gain
}
ai_chance = {
base = 50
modifier = {
factor = 0
OR = {
has_trait = callous
has_trait = temperate
has_trait = content
}
}
}
}
}
######################
## Liege: Taxes?
## 2030
## by Veronica Pazos
######################
cultural_festival.2030 = {
type = activity_event
title = cultural_festival.2030.t
desc = cultural_festival.2030.desc
theme = cultural_festival
cooldown = { years = 2 }
left_portrait = {
character = root
triggered_animation = {
trigger = {
OR = {
has_trait = greedy
has_trait = avaricious
}
}
animation = personality_greedy
}
animation = personality_rational
}
right_portrait = {
character = scope:stop_host_scope
animation = worry
}
trigger = {
is_landed_or_landless_administrative = yes
location.county ?= {
development_level >= bad_development_level
}
}
weight_multiplier = {
base = 1
modifier = {
factor = 2
location.county = { development_level >= medium_development_level }
}
}
option = { # Tax the people
name = cultural_festival.2030.a
add_treasury_or_gold = medium_treasury_or_gold_value
scope:cultural_festival_scope = {
add_county_modifier = {
modifier = festival_taxation_modifier
years = 5
}
}
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_taxation
}
}
}
increase_tour_success_effect = { POINTS = 2 }
}
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_majesty
}
}
}
decrease_tour_success_effect = { POINTS = 1 }
}
stress_impact = {
compassionate = medium_stress_impact_gain
generous = medium_stress_impact_gain
forgiving = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = compassionate
has_trait = forgiving
has_trait = generous
}
}
}
}
option = { # Let them go
name = cultural_festival.2030.b
scope:cultural_festival_scope = {
add_county_modifier = {
modifier = no_taxation_modifier
years = 5
}
}
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_majesty
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
stress_impact = {
callous = minor_stress_impact_gain
sadistic = minor_stress_impact_gain
greedy = medium_stress_impact_gain
avaricious = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = callous
has_trait = sadistic
has_trait = greedy
has_trait = avaricious
}
}
}
}
option = { # Tax them MORE
name = cultural_festival.2030.c
trigger = {
OR = {
has_trait = greedy
has_trait = avaricious
}
}
add_treasury_or_gold = major_treasury_or_gold_value
location.county = {
change_development_level = -1
}
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_taxation
}
}
}
increase_tour_success_effect = { POINTS = 2 }
}
stress_impact = {
compassionate = medium_stress_impact_gain
generous = medium_stress_impact_gain
forgiving = medium_stress_impact_gain
just = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 2
OR = {
has_trait = greedy
has_trait = avaricious
}
}
modifier = {
factor = 0
OR = {
has_trait = compassionate
has_trait = forgiving
has_trait = just
has_trait = generous
}
}
}
}
}
######################
## Liege: You're horrified by this (lack of) culture
## 2040
## by Veronica Pazos
######################
cultural_festival.2040 = {
type = activity_event
title = cultural_festival.2040.t
desc = cultural_festival.2040.desc
theme = cultural_festival
cooldown = { years = 2 }
left_portrait = {
character = root
animation = personality_rational
}
right_portrait = {
character = scope:stop_host_scope
animation = worry
}
trigger = {
is_landed_or_landless_administrative = yes
is_available_in_activity_trigger = yes
location.county.culture != root.culture #this is not your culture
exists = root.capital_county
location = {
county = {
culture != root.capital_county.culture #this is not the capital's culture
}
}
}
immediate = {
location.county.culture = { save_scope_as = festival_culture_scope }
}
weight_multiplier = {
base = 1
modifier = {
factor = 2
root.culture = {
cultural_acceptance = {
target = scope:stop_host_scope.culture
value < hybridization_threshold_value
}
}
}
}
option = { # This is AWFUL
name = cultural_festival.2040.a
if = {
limit = {
location.culture != root.culture
}
culture = {
change_cultural_acceptance = {
target = scope:festival_culture_scope
value = minor_cultural_acceptance_loss
desc = cultural_acceptance_insulted_festival
}
}
}
else = {
scope:cultural_festival_scope = {
add_county_modifier = {
modifier = no_culture_modifier
years = 10
}
}
}
scope:cultural_festival_scope = {
add_county_modifier = {
modifier = helped_culture_modifier
years = 5
}
}
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_intimidation
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
stress_impact = {
compassionate = minor_stress_impact_gain
gregarious = minor_stress_impact_gain
humble = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = compassionate
has_trait = gregarious
has_trait = humble
}
}
}
}
option = { # It's not that bad
name = cultural_festival.2040.b
if = {
limit = {
location.culture != root.culture
}
culture = {
change_cultural_acceptance = {
target = scope:festival_culture_scope
value = minor_cultural_acceptance_gain
desc = cultural_acceptance_embraced_festival
}
}
}
else = {
scope:cultural_festival_scope = {
add_county_modifier = {
modifier = appreciated_culture_modifier
years = 5
}
}
}
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_majesty
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
stress_impact = {
zealous = minor_stress_impact_gain
callous = minor_stress_impact_gain
arrogant = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = zealous
has_trait = callous
has_trait = arrogant
}
}
}
}
option = { # I'll show them what a good culture actually looks like
name = cultural_festival.2040.c
trigger = {
has_trait = arrogant
}
duel = {
skill = diplomacy
value = average_skill_level
50 = {
desc = cultural_festival.2040.c.success
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
}
send_interface_toast = {
title = cultural_festival.2040.c.success
left_icon = root
if = {
limit = {
location.culture != root.culture
}
culture = {
change_cultural_acceptance = {
target = scope:festival_culture_scope
value = minor_cultural_acceptance_gain
desc = cultural_acceptance_insulted_festival
}
}
}
add_prestige = minor_prestige_gain
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_majesty
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_intimidation
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
}
}
50 = {
desc = cultural_festival.2040.c.failure
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
}
send_interface_toast = {
title = cultural_festival.2040.c.failure
left_icon = root
add_prestige = medium_prestige_loss
}
}
}
stress_impact = {
gregarious = minor_stress_impact_gain
temperate = minor_stress_impact_gain
shy = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 2
has_trait = arrogant
}
modifier = {
factor = 0
OR = {
has_trait = gregarious
has_trait = temperate
has_trait = shy
}
}
}
}
}
######################
## Liege: Local dance is too scandalous for you
## 2050
## by Veronica Pazos
######################
scripted_trigger cultural_festival_2050_scandalous_trigger = {
culture = { NOT = { has_cultural_tradition = tradition_modest } } #they need to not be modest AND
NOR = { #their liege is into this
has_trait = chaste
has_trait = celibate
}
OR = {
faith = { #there are many ways you can be scandalous
OR = {
has_doctrine_parameter = naked_adherents_active
has_doctrine_parameter = deviancy_accepted
NOT = { trait_is_sin = lustful }
trait_is_sin = chaste
trait_is_sin = celibate
}
}
}
}
scripted_trigger cultural_festival_2050_modest_trigger = {
faith = { trait_is_sin = lustful } #this is a sin
OR = {
culture = { has_cultural_tradition = tradition_modest } #you can just be modest
faith = { #or you don't have these tenets
NOR = {
has_doctrine_parameter = naked_adherents_active
has_doctrine_parameter = deviancy_accepted
}
}
}
}
cultural_festival.2050 = {
type = activity_event
title = cultural_festival.2050.t
desc = {
desc = cultural_festival.2050.desc_intro
first_valid = {
triggered_desc = {
trigger = {
OR = {
has_trait = lustful
has_trait = deviant
}
}
desc = cultural_festival.2050.desc_lustful
}
triggered_desc = {
trigger = {
NOR = {
has_trait = lustful
has_trait = deviant
}
}
desc = cultural_festival.2050.desc_fallback
}
}
desc = cultural_festival.2050.desc_outro
}
theme = cultural_festival
cooldown = { years = 2 }
left_portrait = {
character = root
animation = shock
}
right_portrait = {
character = scope:stop_host_scope
animation = ecstasy
}
trigger = {
is_landed_or_landless_administrative = yes
is_available_in_activity_trigger = yes
location != root.capital_county.title_province #this is not happening in your capital
scope:stop_host_scope = {
cultural_festival_2050_scandalous_trigger = yes #they're scandalous
}
cultural_festival_2050_modest_trigger = yes #you're not
# Probably best not for kids to be involved in this event at all
scope:stop_host_scope = { is_adult = yes }
scope:visiting_liege = { is_adult = yes }
}
immediate = {
location.culture ?= { save_scope_as = festival_culture_scope }
}
weight_multiplier = {
base = 1
modifier = {
factor = 2
OR = {
has_trait = lustful
scope:stop_host_scope = {
OR = {
has_trait = lustful
has_trait = deviant
}
}
}
}
}
option = { # OH MY GOD
name = cultural_festival.2050.a
scope:activity = {
add_activity_log_entry = {
key = culture_shock_log
tags = { bad }
character = scope:visiting_liege
target = scope:stop_host_scope
root = {
culture = { #Decrease
change_cultural_acceptance = {
target = scope:festival_culture_scope
value = minor_cultural_acceptance_loss
desc = cultural_acceptance_insulted_festival
}
}
}
}
}
stress_impact = {
lustful = minor_stress_impact_gain
deviant = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 2
OR = {
has_trait = chaste
has_trait = celibate
has_trait = zealous
}
}
modifier = {
factor = 0
OR = {
has_trait = lustful
has_trait = deviant
}
}
}
}
option = { # I shall defend their culture
name = cultural_festival.2050.b
scope:activity = {
add_activity_log_entry = {
key = culture_exchange_log
tags = { good }
character = scope:visiting_liege
target = scope:stop_host_scope
root = {
culture = {
change_cultural_acceptance = {
target = scope:festival_culture_scope
value = medium_cultural_acceptance_gain
desc = cultural_acceptance_embraced_festival
}
}
add_piety = minor_piety_loss
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_majesty
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
}
}
}
stress_impact = {
shy = minor_stress_impact_gain
chaste = medium_stress_impact_gain
celibate = medium_stress_impact_gain
zealous = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = shy
has_trait = chaste
has_trait = celibate
has_trait = zealous
}
}
}
}
option = { # This is amazing!
name = cultural_festival.2050.c
trigger = {
has_trait = lustful
has_trait = deviant
}
scope:activity = {
add_activity_log_entry = {
key = culture_exchange_log
tags = { good }
character = scope:visiting_liege
target = scope:stop_host_scope
root = {
culture = {
change_cultural_acceptance = {
target = scope:festival_culture_scope
value = medium_cultural_acceptance_gain
desc = cultural_acceptance_embraced_festival
}
}
scope:stop_host_scope = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 35
}
}
add_piety = medium_piety_loss
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_majesty
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
}
}
}
stress_impact = {
shy = medium_stress_impact_gain
zealous = medium_stress_impact_gain
chaste = major_stress_impact_gain
celibate = major_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 2
OR = {
has_trait = lustful
has_trait = deviant
}
}
modifier = {
factor = 0
OR = {
has_trait = shy
has_trait = chaste
has_trait = celibate
has_trait = zealous
}
}
}
}
}
######################
## Liege: You bring sophisticated entertainments from the capital
## 2060
## by Veronica Pazos
######################
scripted_trigger cultural_festival_2060_arrogant_trigger = {
OR = {
has_trait = arrogant
has_trait = wrathful
has_trait = vengeful
has_trait = sadistic
has_trait = callous
has_trait = stubborn
}
}
cultural_festival.2060 = {
type = activity_event
title = cultural_festival.2060.t
desc = cultural_festival.2060.desc
theme = cultural_festival
cooldown = { years = 2 }
left_portrait = {
character = root
animation = personality_rational
}
right_portrait = {
character = scope:stop_host_scope
triggered_animation = {
trigger = {
scope:stop_host_scope = { cultural_festival_2060_arrogant_trigger = yes }
}
animation = dismissal
}
animation = ecstasy
}
artifact = {
target = scope:sophisticated_artifact
position = lower_center_portrait
}
trigger = {
is_landed_or_landless_administrative = yes
location.county ?= {
development_level <= bad_development_level
}
any_character_artifact = { #you bring something with you
is_equipped = no
}
}
weight_multiplier = {
base = 1
modifier = {
factor = 2
location.county = {
development_level <= terrible_development_level
}
}
modifier = {
factor = 1.5
involved_activity = {
has_activity_option = {
category = special_type
option = tour_type_majesty
}
}
}
}
immediate = {
random_character_artifact = {
limit = {
is_equipped = no
trigger_if = {
limit = {
scope:stop_host_scope = {
highest_held_title_tier > tier_kingdom #No point in giving a court artifact if this is a character without a court.
}
}
ep1_artifact_is_court_artifact_trigger = no
}
rarity = common
}
alternative_limit = {
is_equipped = no
trigger_if = {
limit = {
scope:stop_host_scope = {
highest_held_title_tier > tier_kingdom #No point in giving a court artifact if this is a character without a court.
}
}
ep1_artifact_is_court_artifact_trigger = no
}
rarity = masterwork
}
alternative_limit = {
is_equipped = no
trigger_if = {
limit = {
scope:stop_host_scope = {
highest_held_title_tier > tier_kingdom #No point in giving a court artifact if this is a character without a court.
}
}
ep1_artifact_is_court_artifact_trigger = no
}
rarity = famed
}
alternative_limit = {
is_equipped = no
trigger_if = {
limit = {
scope:stop_host_scope = {
highest_held_title_tier > tier_kingdom #No point in giving a court artifact if this is a character without a court.
}
}
ep1_artifact_is_court_artifact_trigger = no
}
}
save_scope_as = sophisticated_artifact
}
if = {
limit = {
scope:stop_host_scope = {
any_sponsored_inspiration = {
count > 0
inspiration_owner.location = root.location
}
}
}
scope:stop_host_scope = {
random_sponsored_inspiration = {
limit = {
inspiration_owner.location = root.location
}
inspiration_owner = {
save_scope_as = inspired_character
}
}
}
}
}
option = { # Give it to them
name = cultural_festival.2060.a
scope:activity = {
add_activity_log_entry = {
key = gave_away_artifact_log
tags = { good }
character = scope:visiting_liege
target = scope:stop_host_scope
artifact = scope:sophisticated_artifact
root.location.county = {
change_development_progress = 2
}
scope:sophisticated_artifact = {
set_owner = scope:stop_host_scope
}
scope:stop_host_scope = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 15
}
}
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_majesty
}
}
}
increase_tour_success_effect = { POINTS = 2 }
}
}
}
stress_impact = {
callous = minor_stress_impact_gain
greedy = medium_stress_impact_gain
avaricious = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = greedy
has_trait = avaricious
has_trait = callous
}
}
}
}
option = { # Ask to have it back
name = cultural_festival.2060.b
scope:stop_host_scope = {
add_opinion = {
target = root
modifier = annoyed_opinion
opinion = -15
}
}
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_intimidation
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
stress_impact = {
compassionate = minor_stress_impact_gain
gregarious = minor_stress_impact_gain
generous = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = compassionate
has_trait = gregarious
has_trait = generous
}
}
}
}
option = { # Find a local to craft a similar artifact
name = cultural_festival.2060.c
trigger = {
exists = scope:inspired_character
exists = scope:inspired_character.inspiration
}
pay_short_term_gold = {
target = scope:inspired_character
gold = minor_gold_value
}
location.county = {
change_development_progress = 2
}
scope:inspired_character = {
inspiration = {
change_inspiration_progress = 20
}
}
stress_impact = {
callous = minor_stress_impact_gain
greedy = medium_stress_impact_gain
avaricious = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = greedy
has_trait = avaricious
has_trait = callous
}
}
}
}
}
######################
## Liege: You encounter a band of mercenaries enjoying the festivities, recruit?
## 2070
## by Veronica Pazos
######################
scripted_trigger cultural_festival_2070_valid_mercenary = {
is_available_healthy_ai_adult = yes
prowess >= high_skill_rating
trigger_if = {
limit = { #your vassal and you can use these mercenaries
can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:stop_host_scope }
can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = root }
}
is_female = yes
}
trigger_else = {
is_female = no
}
}
cultural_festival.2070 = {
type = activity_event
title = cultural_festival.2070.t
desc = cultural_festival.2070.desc
theme = cultural_festival
left_portrait = {
character = root
triggered_animation = {
trigger = {
OR = {
has_trait = deceitful
has_trait = disloyal
has_trait = schemer
}
}
animation = scheme
}
triggered_animation = {
trigger = {
OR = {
has_trait = gregarious
has_trait = lifestyle_reveler
has_trait = drunkard
}
}
animation = toast_goblet
}
animation = personality_honorable
}
right_portrait = {
character = scope:retired_mercenary
animation = drink_goblet
}
lower_center_portrait = scope:stop_host_scope
cooldown = { years = 2 }
trigger = {
location.county ?= { county_control <= medium_county_control }
}
immediate = {
#if there's an appropiate pool character pick them
if = {
limit = {
any_pool_character = {
province = root.location
cultural_festival_2070_valid_mercenary = yes
}
}
random_pool_character = {
province = root.location
limit = { cultural_festival_2070_valid_mercenary = yes }
save_scope_as = retired_mercenary
}
}
#otherwise create new character
else = {
create_character = {
template = retired_mercenary
location = root.location
culture = root.location.culture
faith = root.location.faith
gender_female_chance = root_soldier_female_chance
dynasty = none
save_scope_as = retired_mercenary
}
}
}
weight_multiplier = {
base = 1
modifier = {
factor = 2
location.county = { county_control < low_county_control }
}
}
option = { # hire them to keep the area controlled
name = cultural_festival.2070.a
pay_short_term_gold = {
target = scope:retired_mercenary
gold = minor_gold_value
}
add_character_modifier = {
modifier = festival_hired_mercenaries #county_control
years = 10
}
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_intimidation
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
stress_impact = {
drunkard = minor_stress_impact_gain
gregarious = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = drunkard
has_trait = gregarious
}
}
}
}
option = { # challenge them to a game, if you win they must serve you for free, if they win you pay them double
name = cultural_festival.2070.b
random_list = {
50 = {
send_interface_toast = {
title = cultural_festival.2070.b.success
left_icon = scope:retired_mercenary
add_character_modifier = {
modifier = festival_luck_mercenaries
years = 10
}
if = {
limit = {
scope:activity = {
OR = {
has_activity_option = {
category = special_type
option = tour_type_taxation
}
has_activity_option = {
category = special_type
option = tour_type_intimidation
}
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
}
}
50 = {
send_interface_toast = {
title = cultural_festival.2070.b.failure
left_icon = scope:retired_mercenary
pay_short_term_gold = {
target = scope:retired_mercenary
gold = minor_gold_value
}
}
}
}
stress_impact = {
drunkard = minor_stress_impact_gain
gregarious = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = drunkard
has_trait = gregarious
}
}
}
}
option = { # challenge them to a game, if you win they must serve you for free, if they win you pay them double - but you cheat
name = cultural_festival.2070.c
trigger = {
OR = {
has_trait = deceitful
has_trait = schemer
}
}
duel = {
skill = intrigue
target = scope:retired_mercenary
70 = {
compare_modifier = {
value = scope:duel_value
multiplier = 5
}
send_interface_toast = {
title = cultural_festival.2070.b.success
left_icon = scope:retired_mercenary
add_character_modifier = {
modifier = festival_luck_mercenaries
years = 10
}
if = {
limit = {
scope:activity = {
OR = {
has_activity_option = {
category = special_type
option = tour_type_taxation
}
has_activity_option = {
category = special_type
option = tour_type_intimidation
}
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
}
}
30 = {
compare_modifier = {
value = scope:duel_value
multiplier = -5
}
send_interface_toast = {
title = cultural_festival.2070.c.failure
left_icon = scope:retired_mercenary
pay_short_term_gold = {
target = scope:retired_mercenary
gold = minor_gold_value
}
#they also beat you up
increase_wounds_no_death_effect = { REASON = fight }
}
}
}
stress_impact = {
drunkard = minor_stress_impact_gain
gregarious = minor_stress_impact_gain
honest = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = drunkard
has_trait = gregarious
has_trait = honest
}
}
}
}
option = { # have a nice one, gents
name = cultural_festival.2070.d
add_character_modifier = {
modifier = festival_drank_with_mercenaries
years = 10
}
stress_impact = {
temperate = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
has_trait = temperate
}
}
}
}
######################
## Liege: You encounter a mysterious merchant
## 2080
## by Veronica Pazos
######################
scripted_trigger cultural_festival_2080_merchant = {
is_ai = yes
is_adult = yes
is_landed_or_landless_administrative = no
is_lowborn = yes
is_councillor = no
NOT = { is_courtier_of = root }
NOR = {
has_trait = zealous
has_trait = cynical
}
}
cultural_festival.2080 = {
type = activity_event
title = cultural_festival.2080.t
desc = cultural_festival.2080.desc
theme = cultural_festival
cooldown = { years = 5 }
left_portrait = {
character = root
animation = personality_rational
}
right_portrait = {
character = scope:mysterious_merchant
animation = ecstasy
}
weight_multiplier = {
base = 1
modifier = {
factor = 2
has_trait = arbitrary
}
}
immediate = {
if = {
limit = {
any_pool_character = {
province = root.location
cultural_festival_2080_merchant = yes
}
}
random_pool_character = {
province = root.location
limit = { cultural_festival_2080_merchant = yes }
save_scope_as = mysterious_merchant
}
}
else = {
create_character = {
template = merchant_template
location = root.location
dynasty = none
faith = root.location.faith
culture = root.location.culture
save_scope_as = mysterious_merchant
}
}
}
option = { # Buy the red liquid
name = cultural_festival.2080.a
remove_short_term_gold = 1 #symbolic prize, you're buying one bottle
custom_tooltip = {
text = cultural_festival.2080.tt
random_list = {
1 = {
send_interface_toast = {
left_icon = root
title = cultural_festival_2080.a.health
add_character_modifier = festival_2080_red_health
}
}
1 = {
send_interface_toast = {
left_icon = root
title = cultural_festival_2080.a.prowess
add_character_modifier = festival_2080_red_prowess
}
}
1 = {
send_interface_toast = {
left_icon = root
title = cultural_festival_2080.a.fertility
add_character_modifier = festival_2080_red_fertility
}
}
1 = {
send_interface_toast = {
left_icon = root
title = cultural_festival_2080.a.prowess_bad
add_character_modifier = festival_2080_red_prowess_bad
}
}
1 = {
send_interface_toast = {
left_icon = root
title = cultural_festival_2080.a.fertility_bad
add_character_modifier = festival_2080_red_fertility_bad
}
}
}
}
stress_impact = {
greedy = miniscule_stress_impact_gain
avaricious = miniscule_stress_impact_gain
cynical = minor_stress_impact_gain
paranoid = minor_stress_impact_gain
craven = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 1.25
has_trait = arbitrary
}
modifier = {
factor = 0.5
OR = {
has_trait = greedy
has_trait = avaricious
has_trait = cynical
}
}
modifier = {
factor = 0
OR = {
gold <= tiny_gold_value
has_trait = craven
has_trait = paranoid
}
}
}
}
option = { # Buy the green liquid
name = cultural_festival.2080.b
remove_short_term_gold = 1
custom_tooltip = {
text = cultural_festival.2080.tt
random_list = {
1 = {
send_interface_toast = {
left_icon = root
title = cultural_festival_2080.b.health_bad
add_character_modifier = festival_2080_blue_health_bad
}
}
1 = {
send_interface_toast = {
left_icon = root
title = cultural_festival_2080.b.stress
add_character_modifier = festival_2080_blue_stress
}
}
1 = {
send_interface_toast = {
left_icon = root
title = cultural_festival_2080.b.stress_bad
add_character_modifier = festival_2080_blue_stress_bad
}
}
1 = {
send_interface_toast = {
left_icon = root
title = cultural_festival_2080.b.attraction
add_character_modifier = festival_2080_blue_attraction
}
}
1 = {
send_interface_toast = {
left_icon = root
title = cultural_festival_2080.b.stress_loss
add_character_modifier = festival_2080_blue_stress_loss
}
}
}
}
stress_impact = {
greedy = miniscule_stress_impact_gain
avaricious = miniscule_stress_impact_gain
cynical = minor_stress_impact_gain
craven = minor_stress_impact_gain
paranoid = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 1.25
has_trait = arbitrary
}
modifier = {
factor = 0.5
OR = {
has_trait = greedy
has_trait = avaricious
has_trait = cynical
}
}
modifier = {
factor = 0
OR = {
gold <= tiny_gold_value
has_trait = craven
has_trait = paranoid
}
}
}
}
option = { # Leave
name = cultural_festival.2080.c
stress_impact = {
brave = minor_stress_impact_gain
trusting = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = brave
has_trait = trusting
}
}
}
}
}
######################
## Liege: Make a point of arresting performers on made-up allegations
## 2090
## by Veronica Pazos
######################
scripted_trigger cultural_festival_2090_peasant = {
is_ai = yes
is_adult = yes
is_landed_or_landless_administrative = no
is_lowborn = yes
is_councillor = no
NOT = { is_courtier_of = root }
}
scripted_trigger cultural_festival_2090_faction = {
exists = yes
NOT = { exists = faction_war }
faction_is_type = peasant_faction
faction_leader ?= {
location = root.location
}
}
cultural_festival.2090 = {
type = activity_event
title = cultural_festival.2090.t
desc = cultural_festival.2090.desc
theme = cultural_festival
cooldown = { years = 2 }
left_portrait = {
character = root
animation = personality_vengeful
}
right_portrait = {
character = scope:arrested_performer
animation = fear
}
lower_right_portrait = {
trigger = { exists = scope:faction_leader_scope }
character = scope:faction_leader_scope
}
trigger = {
OR = {
involved_activity = {
has_activity_option = {
category = special_type
option = tour_type_intimidation
}
}
has_trait = callous
has_trait = sadistic
dread >= high_dread
}
}
weight_multiplier = {
base = 1
modifier = {
factor = 2
involved_activity = {
has_activity_option = {
category = special_type
option = tour_type_intimidation
}
}
}
modifier = {
factor = 2
any_targeting_faction = {
faction_type = peasant_faction
exists = yes
NOT = { exists = faction_war }
}
}
}
immediate = {
if = {
limit = {
any_pool_character = {
province = root.location
cultural_festival_2090_peasant = yes
}
}
random_pool_character = {
province = root.location
limit = { cultural_festival_2090_peasant = yes }
save_scope_as = arrested_performer
}
}
else = {
create_character = {
template = generic_peasant_character
location = root.location
dynasty = none
culture = root.location.culture
faith = root.location.faith
save_scope_as = arrested_performer
}
}
if = {
limit = {
any_targeting_faction = {
cultural_festival_2090_faction = yes
}
}
random_targeting_faction = {
limit = { cultural_festival_2090_faction = yes }
save_scope_as = faction_scope
faction_leader = { save_scope_as = faction_leader_scope }
}
}
}
option = { # Arrest them
name = cultural_festival.2090.a
scope:activity = {
add_activity_log_entry = {
key = arrested_performers_log
tags = { good }
character = scope:visiting_liege
target = scope:stop_host_scope
root = {
add_dread = medium_dread_gain
scope:cultural_festival_scope = { #lose popular opinion
add_county_modifier = {
modifier = festival_arrested_artists
years = 5
}
}
if = {
limit = {
involved_activity = {
has_activity_option = {
category = special_type
option = tour_type_intimidation
}
}
}
increase_tour_success_effect = { POINTS = 2 }
}
else = {
increase_tour_success_effect = { POINTS = 1 }
}
}
}
}
stress_impact = {
greedy = minor_stress_impact_gain
avaricious = minor_stress_impact_gain
cynical = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = greedy
has_trait = avaricious
has_trait = cynical
}
}
}
}
option = { # They're actually factioning against you
name = cultural_festival.2090.b
trigger = {
any_targeting_faction = {
cultural_festival_2090_faction = yes
}
}
scope:activity = {
add_activity_log_entry = {
key = arrested_faction_leader_log
tags = { good }
character = scope:visiting_liege
target = scope:stop_host_scope
root = {
rightfully_imprison_character_effect = {
TARGET = scope:faction_leader_scope
IMPRISONER = root
}
scope:faction_leader_scope = {
leave_faction_with_cooldown_effect = {
FACTION = scope:faction_scope
YEARS = 10
}
}
scope:cultural_festival_scope = { #lose popular opinion
add_county_modifier = {
modifier = festival_arrested_artists
years = 5
}
}
if = {
limit = {
involved_activity = {
has_activity_option = {
category = special_type
option = tour_type_intimidation
}
}
}
increase_tour_success_effect = { POINTS = 2 }
}
else = {
increase_tour_success_effect = { POINTS = 1 }
}
}
}
}
stress_impact = {
greedy = minor_stress_impact_gain
avaricious = minor_stress_impact_gain
cynical = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = greedy
has_trait = avaricious
has_trait = cynical
}
}
}
}
option = { # Nahh
name = cultural_festival.2090.c
add_dread = minor_dread_loss
scope:cultural_festival_scope = { #get popular opinion
add_county_modifier = {
modifier = festival_no_prisoners
years = 5
}
}
stress_impact = {
callous = minor_stress_impact_gain
sadistic = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0.5
OR = {
has_trait = callous
has_trait = sadistic
}
}
modifier = {
factor = 0
involved_activity = {
has_activity_option = {
category = special_type
option = tour_type_intimidation
}
}
}
}
}
}
######################
## Liege: You see a guild contributing to the festival
## 2100
## by Veronica Pazos
######################
scripted_trigger cultural_festival_2100_courtier = {
is_ai = yes
is_adult = yes
is_courtier_of = root
}
cultural_festival.2100 = {
type = activity_event
title = cultural_festival.2100.t
desc = cultural_festival.2100.desc
theme = cultural_festival
cooldown = { years = 2 }
override_background = { reference = market }
left_portrait = {
character = root
animation = personality_rational
}
right_portrait = {
character = scope:inspired_courtier
animation = admiration
}
trigger = {
scope:activity = {
any_attending_character = {
cultural_festival_2100_courtier = yes
}
}
}
weight_multiplier = {
base = 1
modifier = {
factor = 2
involved_activity = {
has_activity_option = {
category = special_type
option = tour_type_majesty
}
}
}
}
immediate = {
location = { save_scope_as = guild_location }
scope:activity = {
random_attending_character = {
limit = { cultural_festival_2100_courtier = yes }
weight = {
base = 1
modifier = {
add = 5
has_any_good_relationship_with_root_trigger = yes #someone you potentially care about
}
modifier = {
add = 2
has_any_high_skill_rating = no #someone we can make useful
}
modifier = {
add = -2
is_councillor = yes
}
}
save_scope_as = inspired_courtier
}
}
}
option = { # Support them
name = cultural_festival.2100.a
remove_short_term_gold = {
value = medium_gold_value
max = 100
}
location.county = {
change_development_progress = medium_development_progress_gain
}
stress_impact = {
greedy = minor_stress_impact_gain
avaricious = minor_stress_impact_gain
ambitious = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = greedy
has_trait = avaricious
has_trait = ambitious
}
NOT = { can_make_expensive_purchase_trigger = { PRICE = medium_gold_value } }
}
}
}
option = { # You get inspired
name = cultural_festival.2100.b
add_character_modifier = {
modifier = discounted_guild_holding_build_cost_modifier
years = 10
}
stress_impact = {
greedy = minor_stress_impact_gain
avaricious = minor_stress_impact_gain
cynical = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = greedy
has_trait = avaricious
has_trait = cynical
}
}
}
}
option = { # Courtier gets inspired
name = cultural_festival.2100.c
scope:inspired_courtier = {
duel = {
skill = stewardship
value = high_skill_rating
50 = { #they get the trait
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
}
desc = cultural_festival.2100.c.success
root = {
send_interface_toast = {
title = cultural_festival.2100.c.success
left_icon = scope:inspired_courtier
scope:inspired_courtier = { add_trait = architect }
}
}
}
50 = { #they improve their skills
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
}
desc = cultural_festival.2100.c.failure
root = {
send_interface_toast = {
title = cultural_festival.2100.c.failure
left_icon = scope:inspired_courtier
scope:inspired_courtier = { add_stewardship_skill = 2 }
}
}
}
}
}
stress_impact = {
callous = minor_stress_impact_gain
sadistic = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0.5
OR = {
has_trait = callous
has_trait = sadistic
}
}
modifier = {
factor = 0
involved_activity = {
has_activity_option = {
category = special_type
option = tour_type_intimidation
}
}
}
}
}
}
######################
## Liege: A puppy disrupts the performance
## 2110
## by Veronica Pazos
######################
cultural_festival.2110 = {
type = activity_event
title = cultural_festival.2110.t
desc = {
desc = cultural_festival.2110.desc.intro
first_valid = {
triggered_desc = {
trigger = {
OR = {
has_trait = callous
has_trait = sadistic
}
}
desc = cultural_festival.2110.desc.callous
}
}
desc = cultural_festival.2110.desc.outro
}
theme = cultural_festival
cooldown = { years = 2 }
left_portrait = {
character = root
triggered_animation = {
trigger = {
OR = {
has_trait = callous
has_trait = sadistic
}
}
animation = dismissal
}
animation = personality_compassionate
}
lower_right_portrait = {
trigger = { exists = scope:my_heir }
character = scope:my_heir
}
trigger = {
NOT = { any_owned_story = { type = story_cycle_pet_dog } }
}
weight_multiplier = {
base = 1
modifier = {
factor = 2
has_trait = compassionate
}
}
immediate = {
if = {
limit = {
any_child = {
is_adult = no
is_ai = yes
}
}
random_child = {
limit = {
is_adult = no
is_ai = yes
}
save_scope_as = my_heir
}
}
}
option = { # Adopt!!!
name = cultural_festival.2110.a
scope:activity = {
add_activity_log_entry = {
key = adopted_a_puppy_log
tags = { good }
character = scope:visiting_liege
root = {
start_dog_story_cycle_effect = yes
}
}
}
stress_impact = {
greedy = minor_stress_impact_gain
avaricious = minor_stress_impact_gain
ambitious = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = greedy
has_trait = avaricious
has_trait = ambitious
}
NOT = { can_make_expensive_purchase_trigger = { PRICE = medium_gold_value } }
}
}
}
option = { # Get it for your heir
name = cultural_festival.2110.b
trigger = {
exists = scope:my_heir
}
if = {
limit = {
NOT = { has_relation_friend = scope:my_heir }
}
set_relation_friend = {
target = scope:my_heir
reason = friend_festival_puppy
}
}
else = {
add_opinion = {
target = scope:my_heir
modifier = grateful_opinion
opinion = 20
}
}
scope:my_heir = {
start_dog_story_cycle_effect = yes
}
stress_impact = {
greedy = minor_stress_impact_gain
avaricious = minor_stress_impact_gain
cynical = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = greedy
has_trait = avaricious
has_trait = cynical
}
}
}
}
option = { # Pet the dog! Pet the dog!
name = cultural_festival.2110.c
trigger = {
has_activity_intent = reduce_stress_intent
}
custom_tooltip = available_because_intent_tt
stress_impact = {
base = major_stress_impact_loss #your reward
callous = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = greedy
has_trait = avaricious
has_trait = cynical
}
}
}
}
option = { # Kick the dog
name = cultural_festival.2110.d
custom_tooltip = cultural_festival_2110_d_tt
trigger = {
OR = {
has_trait = callous
has_trait = sadistic
}
}
scope:activity = {
every_attending_character = {
custom = cultural_festival_2110_d_opinion_tt
limit = {
NOR = {
has_trait = callous
has_trait = sadistic
}
}
add_opinion = {
target = root
modifier = cruelty_opinion
opinion = -5
}
}
}
random = {
chance = 10
increase_wounds_effect = { REASON = wild_animal }
}
stress_impact = {
base = major_stress_impact_loss #your reward
}
ai_chance = {
base = 100
modifier = {
factor = 2
OR = {
has_trait = callous
has_trait = sadistic
}
}
}
}
option = { # Ignore
name = cultural_festival.2110.e
add_prestige = miniscule_prestige_gain #you maintain your composure
stress_impact = {
compassionate = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = greedy
has_trait = avaricious
has_trait = cynical
}
}
}
}
}
#####################################################################################
######################
## Bilateral Events
## 3000-3999
## by Veronica Pazos
######################
######################
## Bilateral: Big play based on liege
## 3000-3002
## by Veronica Pazos
######################
# Vassal: Do you want to make a big play based on your visiting liege?
cultural_festival.3000 = {
type = activity_event
title = cultural_festival.3000.t
desc = cultural_festival.3000.desc
theme = cultural_festival
left_portrait = {
character = root
animation = admiration
}
cooldown = { years = 2 }
trigger = {
is_landed_or_landless_administrative = yes
is_available_in_activity_trigger = yes
scope:visiting_liege = {
can_receieve_good_available_compliment_trigger = yes
}
}
weight_multiplier = {
base = 1
modifier = {
factor = 2
has_trait = lifestyle_poet #you're interested in theatre kinda
}
}
option = { # I sure do!
name = cultural_festival.3000.a
custom_tooltip = cultural_festival.3000.a.tt
remove_treasury_or_gold = medium_treasury_or_gold_value
trigger_event = { id = cultural_festival.3001 days = 3 }
stress_impact = {
greedy = minor_stress_impact_gain
}
ai_chance = {
base = 200
modifier = {
factor = 0
OR = {
has_trait = greedy
short_term_treasury_or_gold < medium_treasury_or_gold_value
}
}
}
}
option = { # Not really
name = cultural_festival.3000.b
stress_impact = {
generous = minor_stress_impact_gain
gregarious = minor_stress_impact_gain
}
ai_chance = {
base = 200
modifier = {
factor = 0
OR = {
has_trait = generous
has_trait = gregarious
}
}
}
}
}
# Vassal: Choose how to depict the liege
cultural_festival.3001 = {
type = activity_event
title = cultural_festival.3001.t
desc = cultural_festival.3001.desc
theme = cultural_festival
left_portrait = {
character = root
animation = personality_rational
}
right_portrait = {
character = scope:liege_actor
animation = beg
}
immediate = {
randomize_available_compliment_effect = { COMPLIMENT_RECEIVER = scope:visiting_liege }
randomize_available_compliment_effect = { COMPLIMENT_RECEIVER = scope:visiting_liege }
randomize_good_available_compliment_effect = { COMPLIMENT_RECEIVER = scope:visiting_liege }
create_character = {
age = { 20 50 }
location = root.location
random_traits = yes
faith = location.faith
culture = location.culture
dynasty = none
gender_female_chance = {
if = {
limit = { scope:visiting_liege = { is_female = yes } }
add = 100
}
else = {
add = 0
}
}
save_scope_as = liege_actor
}
}
#Compassionate
option = {
trigger = { has_character_flag = available_compliment_compassionate }
name = cultural_festival.3001.compassionate
custom_tooltip = cultural_festival.3001.tt
hidden_effect = {
scope:visiting_liege = { evaluate_compliment_effect = { COMPLIMENT_TYPE = compassionate COMPLIMENT_GIVER = root } }
}
ai_chance = {
base = 100
}
}
#bold
option = {
trigger = { has_character_flag = available_compliment_bold }
name = cultural_festival.3001.bold
custom_tooltip = cultural_festival.3001.tt
hidden_effect = {
scope:visiting_liege = { evaluate_compliment_effect = { COMPLIMENT_TYPE = bold COMPLIMENT_GIVER = root } }
}
ai_chance = {
base = 100
}
}
#honorable
option = {
trigger = { has_character_flag = available_compliment_honorable }
name = cultural_festival.3001.honorable
custom_tooltip = cultural_festival.3001.tt
hidden_effect = {
scope:visiting_liege = { evaluate_compliment_effect = { COMPLIMENT_TYPE = honorable COMPLIMENT_GIVER = root } }
}
ai_chance = {
base = 100
}
}
#greed
option = {
trigger = { has_character_flag = available_compliment_greedy }
name = cultural_festival.3001.greed
custom_tooltip = cultural_festival.3001.tt
hidden_effect = {
scope:visiting_liege = { evaluate_compliment_effect = { COMPLIMENT_TYPE = greed COMPLIMENT_GIVER = root } }
}
ai_chance = {
base = 100
}
}
#rational
option = {
trigger = { has_character_flag = available_compliment_rational }
name = cultural_festival.3001.rational
custom_tooltip = cultural_festival.3001.tt
hidden_effect = {
scope:visiting_liege = { evaluate_compliment_effect = { COMPLIMENT_TYPE = rational COMPLIMENT_GIVER = root } }
}
ai_chance = {
base = 100
}
}
#zealous
option = {
trigger = { has_character_flag = available_compliment_zealous }
name = cultural_festival.3001.zealous
custom_tooltip = cultural_festival.3001.tt
hidden_effect = {
scope:visiting_liege = { evaluate_compliment_effect = { COMPLIMENT_TYPE = zealous COMPLIMENT_GIVER = root } }
}
ai_chance = {
base = 100
}
}
#energetic
option = {
trigger = { has_character_flag = available_compliment_energetic }
name = cultural_festival.3001.energetic
custom_tooltip = cultural_festival.3001.tt
hidden_effect = {
scope:visiting_liege = { evaluate_compliment_effect = { COMPLIMENT_TYPE = energetic COMPLIMENT_GIVER = root } }
}
ai_chance = {
base = 100
}
}
#forgiving
option = {
trigger = { has_character_flag = available_compliment_forgiving }
name = cultural_festival.3001.forgiving
custom_tooltip = cultural_festival.3001.tt
hidden_effect = {
scope:visiting_liege = { evaluate_compliment_effect = { COMPLIMENT_TYPE = forgiving COMPLIMENT_GIVER = root } }
}
ai_chance = {
base = 100
}
}
#beautiful
option = {
trigger = { has_character_flag = available_compliment_beautiful }
name = cultural_festival.3001.beautiful
custom_tooltip = cultural_festival.3001.tt
hidden_effect = {
scope:visiting_liege = { evaluate_compliment_effect = { COMPLIMENT_TYPE = beautiful COMPLIMENT_GIVER = root } }
}
ai_chance = {
base = 100
}
}
#strong
option = {
trigger = { has_character_flag = available_compliment_strong }
name = cultural_festival.3001.strong
custom_tooltip = cultural_festival.3001.tt
hidden_effect = {
scope:visiting_liege = { evaluate_compliment_effect = { COMPLIMENT_TYPE = strong COMPLIMENT_GIVER = root } }
}
ai_chance = {
base = 100
}
}
#extroverted
option = {
trigger = { has_character_flag = available_compliment_extroverted }
name = cultural_festival.3001.extroverted
custom_tooltip = cultural_festival.3001.tt
hidden_effect = {
scope:visiting_liege = { evaluate_compliment_effect = { COMPLIMENT_TYPE = extroverted COMPLIMENT_GIVER = root } }
}
ai_chance = {
base = 100
}
}
#dominant
option = {
trigger = { has_character_flag = available_compliment_dominant }
name = cultural_festival.3001.dominant
custom_tooltip = cultural_festival.3001.tt
hidden_effect = {
scope:visiting_liege = { evaluate_compliment_effect = { COMPLIMENT_TYPE = dominant COMPLIMENT_GIVER = root } }
}
ai_chance = {
base = 100
}
}
option = { # Represent them like a buffoon
name = cultural_festival.3001.negative
flavor = cultural_festival.3001.negative.flavor
add_character_modifier = {
modifier = dressed_liege_like_buffon_modifier
years = 5
}
scope:visiting_liege = { set_variable = buffoon_costume_var }
stress_impact = {
craven = minor_stress_impact_gain
compassionate = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = craven
has_trait = compassionate
}
}
modifier = {
factor = 2
OR = {
has_trait = sadistic
has_trait = callous
}
}
}
}
after = {
clear_available_compliments_effect = yes
scope:visiting_liege = { trigger_event = { id = cultural_festival.3002 days = 3 } }
}
}
scripted_effect cultural_festival.3002.add_hook = {
scope:stop_host_scope = {
send_interface_toast = {
title = cultural_festival.3002.a.toast
left_icon = scope:visiting_liege
add_hook = {
target = root
type = favor_hook
}
}
}
}
# Liege: You see the play
cultural_festival.3002 = {
type = activity_event
title = cultural_festival.3002.t
desc = {
desc = cultural_festival.3002.desc.intro
first_valid = {
triggered_desc = {
trigger = {
exists = scope:compliment_outcome
scope:compliment_outcome = flag:good
}
desc = cultural_festival.3002.desc.good
}
triggered_desc = {
trigger = {
exists = scope:compliment_outcome
scope:compliment_outcome = flag:neutral
}
desc = cultural_festival.3002.desc.neutral
}
triggered_desc = {
trigger = {
exists = scope:compliment_outcome
scope:compliment_outcome = flag:bad
}
desc = cultural_festival.3002.desc.bad
}
triggered_desc = {
trigger = {
has_variable = buffoon_costume_var
}
desc = cultural_festival.3002.desc.buffoon
}
}
}
theme = cultural_festival
left_portrait = {
character = root
triggered_animation = {
trigger = {
exists = scope:compliment_outcome
scope:compliment_outcome = flag:good
}
animation = admiration
}
triggered_animation = {
trigger = {
exists = scope:compliment_outcome
scope:compliment_outcome = flag:neutral
}
animation = personality_rational
}
triggered_animation = {
trigger = {
exists = scope:compliment_outcome
scope:compliment_outcome = flag:bad
}
animation = disgust
}
triggered_animation = {
trigger = {
has_variable = buffoon_costume_var
}
animation = anger
}
}
right_portrait = {
character = scope:liege_actor
animation = personality_honorable
triggered_outfit = {
trigger = {
root = { has_variable = buffoon_costume_var }
}
remove_default_outfit = yes
outfit_tags = { jester_outfit }
}
}
lower_center_portrait = scope:stop_host_scope
immediate = {
scope:liege_actor = {
add_character_flag = wear_armor
}
}
option = { # Compliment is good, pay
name = cultural_festival.3002.a
trigger = {
exists = scope:compliment_outcome
scope:compliment_outcome = flag:good
}
scope:activity = {
add_activity_log_entry = {
key = enjoyed_good_play_log
tags = { good }
character = scope:visiting_liege
target = scope:stop_host_scope
root = {
scope:stop_host_scope = {
send_interface_toast = {
title = cultural_festival.3002.a.toast
left_icon = scope:visiting_liege
root = {
add_opinion = {
modifier = grateful_opinion
target = scope:stop_host_scope
opinion = 50
}
}
}
}
add_prestige = minor_prestige_gain
scope:stop_host_scope = {
every_held_county = {
add_county_modifier = { #everyone loves you
modifier = festival_good_play
years = 5
}
}
}
}
}
}
stress_impact = {
humble = minor_stress_impact_gain
paranoid = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
OR = {
has_trait = humble
has_trait = paranoid
}
add = -50
}
}
}
option = { # Meh
name = cultural_festival.3002.b
trigger = {
exists = scope:compliment_outcome
scope:compliment_outcome = flag:neutral
}
scope:stop_host_scope = {
send_interface_toast = {
title = cultural_festival.3002.b.toast
left_icon = scope:visiting_liege
root = {
add_opinion = {
modifier = grateful_opinion
target = scope:stop_host_scope
opinion = 10
}
}
}
}
stress_impact = {
arrogant = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0.25
has_trait = arrogant
}
}
}
option = { # This is awful
name = cultural_festival.3002.c
trigger = {
exists = scope:compliment_outcome
scope:compliment_outcome = flag:bad
}
scope:stop_host_scope = {
send_interface_toast = {
title = cultural_festival.3002.c.toast
left_icon = scope:visiting_liege
root = {
add_opinion = {
modifier = insulted_opinion
target = scope:stop_host_scope
opinion = -15
}
}
}
}
scope:cultural_festival_scope = {
add_county_modifier = { #everyone thinks you're kinda lame
modifier = festival_bad_play
years = 5
}
}
stress_impact = {
base = minor_stress_impact_gain
arrogant = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
has_trait = arrogant
}
}
}
option = { # You're a buffoon
name = cultural_festival.3002.d
trigger = {
has_variable = buffoon_costume_var
}
scope:stop_host_scope = {
send_interface_toast = {
title = cultural_festival.3002.d.toast
left_icon = scope:visiting_liege
root = {
progress_towards_rival_effect = {
CHARACTER = scope:stop_host_scope
REASON = rival_buffoon_play
OPINION = -30
}
}
}
}
stress_impact = {
forgiving = minor_stress_impact_gain
humble = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = forgiving
has_trait = humble
}
}
}
}
option = { # I don't really care about this, but Im gonna pretend I do
name = cultural_festival.3002.e
trigger = {
exists = scope:compliment_outcome
NOT = { scope:compliment_outcome = flag:good }
scope:stop_host_scope = {
can_add_hook = {
target = root
type = favor_hook
}
}
}
scope:cultural_festival_scope = {
add_county_modifier = { #everyone loves you, kinda
modifier = festival_neutral_play
years = 5
}
}
scope:stop_host_scope = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 20
}
}
cultural_festival.3002.add_hook = yes
if = {
limit = { has_variable = buffoon_costume_var }
stress_impact = {
vengeful = minor_stress_impact_gain
wrathful = minor_stress_impact_gain
callous = minor_stress_impact_gain
arrogant = medium_stress_impact_gain
}
}
else = {
stress_impact = {
base = minor_stress_impact_loss
arrogant = minor_stress_impact_gain #you actually care about this stuff
gregarious = minor_stress_impact_gain #you also care
}
}
ai_chance = {
base = 50
modifier = {
factor = 0.25
OR = {
has_trait = arrogant
has_trait = gregarious
}
}
}
}
after = {
scope:liege_actor = {
remove_character_flag = wear_armor
}
}
}
######################
## Bilateral: Make a fountain run with wine
## 3010-3011
## by Veronica Pazos
######################
# Vassal: Do you want to make your fountain run with wine?
cultural_festival.3010 = {
type = activity_event
title = cultural_festival.3010.t
desc = cultural_festival.3010.desc
theme = cultural_festival
left_portrait = {
character = root
animation = personality_rational
}
override_background = { reference = garden }
cooldown = { years = 2 }
trigger = {
is_landed_or_landless_administrative = yes
is_available_in_activity_trigger = yes
scope:visiting_liege = {
drinks_alcohol_trigger = yes #you heard that they like this
NOT = { has_variable = fountain_event_var } #we set a 5 year cooldown for the liege too
}
}
weight_multiplier = {
base = 1
modifier = {
factor = 1.5
any_child = { }
}
modifier = {
factor = 1.25
OR = {
has_trait = gregarious
has_trait = drunkard
}
}
}
option = { # I sure do!
name = cultural_festival.3010.a
scope:activity = {
add_activity_log_entry = {
key = wine_fountain_log
tags = { good }
character = scope:visiting_liege
target = scope:stop_host_scope
}
}
remove_short_term_gold = minor_gold_value
add_prestige = minor_prestige_gain
if = {
limit = { faith_forbids_alcohol_trigger = no }
hidden_effect = {
every_pool_character = {
province = root.location
limit = { drinks_alcohol_trigger = yes }
add_opinion = {
modifier = impressed_opinion
target = root
opinion = 5
}
}
location = {
every_character_in_location = { #people love this
limit = {
drinks_alcohol_trigger = yes
this != root
}
add_opinion = {
modifier = impressed_opinion
target = root
opinion = 5
}
}
}
}
location.county = {
holder = {
every_courtier = {
custom = custom.every_courtier
limit = {
location = root.location
faith_forbids_alcohol_trigger = no
}
add_opinion = {
modifier = impressed_opinion
target = root
opinion = 5
}
}
}
add_county_modifier = {
modifier = alcohol_fountain_modifier
years = 5
}
}
}
scope:visiting_liege = {
add_opinion = {
modifier = impressed_opinion
target = root
opinion = 20
}
set_variable = {
name = fountain_event_var
years = 5
}
set_variable = alcohol_fountain_var
trigger_event = { id = cultural_festival.3011 days = 3 }
}
if = {
limit = {
has_trait = zealous
faith_forbids_alcohol_trigger = yes
}
add_stress = medium_stress_gain
}
stress_impact = {
greedy = minor_stress_impact_gain
temperate = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = greedy
has_trait = temperate
short_term_gold < medium_gold_value
AND = {
has_trait = zealous
faith_forbids_alcohol_trigger = yes
}
}
}
}
}
option = { # Maybe just juice?
name = cultural_festival.3010.b
scope:activity = {
add_activity_log_entry = {
key = juice_fountain_log
tags = { good }
character = scope:visiting_liege
target = scope:stop_host_scope
}
}
remove_short_term_gold = tiny_gold_value
if = { #if you have children they love this
limit = {
any_child = {
is_adult = no
count > 0
}
}
every_child = {
limit = { is_adult = no }
add_opinion = {
modifier = impressed_opinion
target = root
opinion = 15
}
}
}
location.county = {
add_county_modifier = {
modifier = juice_fountain_modifier
years = 5
}
}
scope:visiting_liege = {
add_opinion = {
modifier = impressed_opinion
target = root
opinion = 10
}
set_variable = {
name = fountain_event_var
years = 5
}
set_variable = juice_fountain_var
trigger_event = { id = cultural_festival.3011 days = 3 }
}
stress_impact = {
greedy = minor_stress_impact_gain
drunkard = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0.5
has_trait = greedy
}
modifier = {
factor = 0
has_trait = drunkard
}
}
}
option = { # Not really
name = cultural_festival.3010.c
stress_impact = {
avaricious = minor_stress_impact_gain #you want to climb the ladder
gregarious = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = avaricious
has_trait = gregarious
}
}
}
}
}
# Liege: You encounter this cool alcohol/juice fountain
cultural_festival.3011 = {
type = activity_event
title = cultural_festival.3011.t
desc = {
desc = cultural_festival.3011.desc.intro
first_valid = {
triggered_desc = {
trigger = {
has_variable = alcohol_fountain_var
}
desc = cultural_festival.3011.desc.alcohol
}
triggered_desc = {
trigger = {
has_variable = juice_fountain_var
}
desc = cultural_festival.3011.desc.juice
}
}
desc = cultural_festival.3011.desc.outro
}
theme = cultural_festival
left_portrait = {
character = root
triggered_animation = {
trigger = {
OR = {
has_trait = paranoid
has_trait = callous
}
}
animation = disbelief
}
animation = admiration
}
right_portrait = {
character = scope:stop_host_scope
animation = happiness
}
override_background = { reference = garden }
option = { # drink together
name = cultural_festival.3011.a
scope:cultural_festival_scope = {
add_county_modifier = {
modifier = drank_together_modifier
years = 5
}
}
if = {
limit = { has_variable = alcohol_fountain_var }
stress_impact = {
base = minor_stress_impact_loss
paranoid = minor_stress_impact_gain
temperate = minor_stress_impact_gain
}
}
else = {
stress_impact = {
base = minor_stress_impact_loss
paranoid = minor_stress_impact_gain
}
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = paranoid
has_trait = temperate
}
}
}
}
option = { # make a wish
name = cultural_festival.3011.b
add_character_modifier = {
modifier = festival_wishing_well_modifier
years = 5
}
if = {
limit = { has_variable = alcohol_fountain_var }
stress_impact = {
cynical = minor_stress_impact_gain
drunkard = minor_stress_impact_gain
}
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = drunkard
has_trait = cynical
}
}
}
}
after = {
remove_variable = alcohol_fountain_var
remove_variable = juice_fountain_var
}
}
######################
## Bilateral: Host a lavish ceremony to make your vassal formally repledge homage to you
## 3020-3022
## by Veronica Pazos
######################
# Liege: Do you want to host this ceremony?
cultural_festival.3020 = {
type = activity_event
title = cultural_festival.3020.t
desc = cultural_festival.3020.desc
theme = cultural_festival
left_portrait = {
character = root
animation = personality_rational
}
cooldown = { years = 2 }
trigger = {
is_landed_or_landless_administrative = yes
government_has_flag = government_is_feudal
is_available_in_activity_trigger = yes
scope:stop_host_scope = { is_ai = yes }
OR = {
can_add_hook = {
target = scope:stop_host_scope
type = loyalty_hook
}
scope:stop_host_scope = { vassal_contract_obligation_level_can_be_increased = feudal_government_taxes }
scope:stop_host_scope = { vassal_contract_obligation_level_can_be_increased = feudal_government_levies }
}
}
weight_multiplier = {
base = 1
modifier = {
factor = 2
scope:stop_host_scope = {
subject_contract_is_blocked_from_modification = yes
}
}
modifier = {
factor = 2
involved_activity = {
has_activity_option = {
category = special_type
option = tour_type_majesty
}
}
}
}
option = { # I sure do!
name = cultural_festival.3020.a
custom_tooltip = cultural_festival.3020.a.tt
trigger_event = { id = cultural_festival.3021 days = 3 }
stress_impact = {
humble = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
has_trait = humble
}
}
}
option = { # Let's just relax instead
name = cultural_festival.3020.b
scope:stop_host_scope = {
every_held_county = {
add_county_modifier = {
modifier = festival_no_homage_modifier
years = 5
}
}
}
stress_impact = {
arrogant = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0.5
has_trait = arrogant
}
}
}
}
# Liege: What do you ask for?
cultural_festival.3021 = {
type = activity_event
title = cultural_festival.3021.t
desc = cultural_festival.3021.desc
theme = cultural_festival
left_portrait = {
character = root
animation = personality_honorable
}
right_portrait = {
character = scope:stop_host_scope
animation = personality_honorable
}
override_background = { reference = throne_room }
option = { # Give me money
name = cultural_festival.3021.a
custom_tooltip = cultural_festival.3021.a.tt
trigger = { scope:stop_host_scope = { vassal_contract_obligation_level_can_be_increased = feudal_government_taxes } }
scope:activity = {
add_activity_log_entry = {
key = vassal_homage_log
tags = { good }
character = scope:visiting_liege
target = scope:stop_host_scope
scope:stop_host_scope = {
vassal_contract_increase_obligation_level = feudal_government_taxes
set_variable = homage_money_var
}
}
}
stress_impact = {
brave = minor_stress_impact_gain
compassionate = minor_stress_impact_gain
generous = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 2
has_trait = greedy
}
}
}
option = { # Give me levies
name = cultural_festival.3021.b
custom_tooltip = cultural_festival.3021.a.tt
trigger = { scope:stop_host_scope = { vassal_contract_obligation_level_can_be_increased = feudal_government_levies } }
scope:activity = {
add_activity_log_entry = {
key = vassal_homage_log
tags = { good }
character = scope:visiting_liege
target = scope:stop_host_scope
scope:stop_host_scope = {
vassal_contract_increase_obligation_level = feudal_government_levies
set_variable = homage_levies_var
}
}
}
stress_impact = {
greedy = minor_stress_impact_gain
compassionate = minor_stress_impact_gain
generous = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 2
OR = {
has_lifestyle = martial_lifestyle
martial >= high_skill_rating
has_trait = brave
}
}
}
}
option = { # Give me hook
name = cultural_festival.3021.c
flavor = cultural_festival.3021.c.flavor
trigger = {
can_add_hook = {
target = scope:stop_host_scope
type = loyalty_hook
}
}
scope:activity = {
add_activity_log_entry = {
key = vassal_homage_log
tags = { good }
character = scope:visiting_liege
target = scope:stop_host_scope
root = {
add_hook = {
target = scope:stop_host_scope
type = loyalty_hook
}
scope:stop_host_scope = {
set_subject_contract_modification_blocked = yes
set_variable = homage_hook_var
}
}
}
}
stress_impact = {
greedy = minor_stress_impact_gain
compassionate = minor_stress_impact_gain
brave = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 1.25
OR = {
has_lifestyle = intrigue_lifestyle
intrigue >= high_skill_rating
has_trait = deceitful
}
}
}
}
option = { # Let's be friends
name = cultural_festival.3021.d
scope:activity = {
add_activity_log_entry = {
key = vassal_homage_log
tags = { good }
character = scope:visiting_liege
target = scope:stop_host_scope
root = {
progress_towards_friend_effect = {
REASON = friend_homage_ceremony
CHARACTER = scope:stop_host_scope
OPINION = 50
}
}
}
}
scope:stop_host_scope = {
set_variable = homage_friends_var
}
stress_impact = {
greedy = minor_stress_impact_gain
deceitful = minor_stress_impact_gain
callous = minor_stress_impact_gain
sadistic = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 2
OR = {
has_trait = compassionate
has_trait = generous
has_trait = forgiving
}
}
modifier = {
factor = 0
OR = {
has_trait = deceitful
has_trait = greedy
has_trait = callous
has_trait = sadistic
}
}
}
}
after = {
scope:stop_host_scope = {
trigger_event = { id = cultural_festival.3022 days = 3 }
}
}
}
# Vassal: What do you think of this?
scripted_effect cultural_festival.3022.vassal_contract_modified_effect = {
scope:visiting_liege = {
send_interface_toast = {
title = cultural_festival.3022.annoyed
left_icon = root
scope:stop_host_scope = {
add_opinion = {
target = scope:visiting_liege
modifier = annoyed_opinion
opinion = -10
}
}
}
}
}
cultural_festival.3022 = {
type = activity_event
title = cultural_festival.3022.t
desc = {
desc = cultural_festival.3022.desc.intro
first_valid = {
triggered_desc = {
trigger = {
has_variable = homage_friends_var
}
desc = cultural_festival.3022.desc.friends
}
triggered_desc = {
trigger = {
has_variable = homage_hook_var
}
desc = cultural_festival.3022.desc.hook
}
triggered_desc = {
trigger = {
has_variable = homage_levies_var
}
desc = cultural_festival.3022.desc.levies
}
triggered_desc = {
trigger = {
has_variable = homage_money_var
}
desc = cultural_festival.3022.desc.money
}
}
}
theme = cultural_festival
left_portrait = {
character = root
triggered_animation = {
trigger = {
OR = {
has_variable = homage_money_var
has_variable = homage_levies_var
has_variable = homage_hook_var
}
OR = {
has_trait = vengeful
has_trait = wrathful
has_trait = arrogant
}
}
animation = anger
}
triggered_animation = {
trigger = {
OR = {
has_variable = homage_money_var
has_variable = homage_levies_var
has_variable = homage_hook_var
}
}
animation = stress
}
animation = happiness
}
right_portrait = {
character = scope:visiting_liege
animation = personality_honorable
}
override_background = { reference = throne_room }
option = { # You had to give money
name = cultural_festival.3022.a
custom_tooltip = cultural_festival.3022.money
trigger = { has_variable = homage_money_var }
cultural_festival.3022.vassal_contract_modified_effect = yes
stress_impact = {
greedy = minor_stress_impact_gain
}
ai_chance = {
base = 100
}
}
option = { # You had to give levies
name = cultural_festival.3022.b
custom_tooltip = cultural_festival.3022.levies
trigger = { has_variable = homage_levies_var }
cultural_festival.3022.vassal_contract_modified_effect = yes
ai_chance = {
base = 100
}
}
option = { # You had to give a strong hook
name = cultural_festival.3022.a
custom_tooltip = cultural_festival.3022.hook
trigger = { has_variable = homage_hook_var }
cultural_festival.3022.vassal_contract_modified_effect = yes
stress_impact = {
deceitful = minor_stress_impact_gain
}
ai_chance = {
base = 100
}
}
option = { # Friendship
name = cultural_festival.3022.d
trigger = { has_variable = homage_friends_var }
scope:visiting_liege = {
send_interface_toast = {
title = cultural_festival.3022.d.friends
left_icon = root
scope:stop_host_scope = {
progress_towards_friend_effect = {
REASON = friend_homage_ceremony
CHARACTER = scope:visiting_liege
OPINION = 50
}
}
}
}
stress_impact = {
callous = minor_stress_impact_gain
}
ai_chance = {
base = 100
}
}
after = {
remove_variable = homage_money_var
remove_variable = homage_levies_var
remove_variable = homage_hook_var
remove_variable = homage_friends_var
}
}
######################
## Bilateral: Crown the best pig/cow/local_farm_animal
## 3030-3031
## by Veronica Pazos
######################
# Vassal: Do you want to set up a local_farm_animal contest?
cultural_festival.3030 = {
type = activity_event
title = cultural_festival.3030.t
desc = cultural_festival.3030.desc
theme = cultural_festival
left_portrait = {
character = root
animation = personality_rational
}
right_portrait = {
character = scope:local_farmer
animation = happiness
}
cooldown = { years = 2 }
trigger = {
is_landed_or_landless_administrative = yes
is_available_in_activity_trigger = yes
}
immediate = {
scope:stop_host_scope = { select_local_farm_animal_effect = yes } #let's find the animal to judge
create_character = {
template = generic_peasant_character
location = root.location
dynasty = none
faith = root.faith
culture = root.culture
save_scope_as = local_farmer
}
}
weight_multiplier = {
base = 1
modifier = {
factor = 2
location.county = {
development_level <= bad_development_level
}
}
modifier = {
factor = 2
location = { terrain = farmlands }
}
}
option = { # I sure do!
name = cultural_festival.3030.a
remove_treasury_or_gold = minor_treasury_or_gold_value
scope:cultural_festival_scope = {
add_county_modifier = {
modifier = farm_contest_modifier
years = 5
}
}
scope:visiting_liege = { trigger_event = { id = cultural_festival.3031 days = 3 } }
stress_impact = {
greedy = minor_stress_impact_gain
callous = minor_stress_impact_gain #you think this is stupid
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = greedy
short_term_treasury_or_gold < medium_treasury_or_gold_value
}
}
}
}
option = { # Nahhhh
name = cultural_festival.3030.b
remove_variable = local_farm_animal
stress_impact = {
gregarious = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0.5
has_trait = gregarious
}
}
}
after = {
scope:local_farmer = {
silent_disappearance_ai_effect = yes
}
}
}
# Liege: Crown the best local_farm_animal
cultural_festival.3031 = {
type = activity_event
title = cultural_festival.3031.t
desc = cultural_festival.3031.desc
theme = cultural_festival
left_portrait = {
character = root
triggered_animation = {
trigger = {
OR = {
has_trait = callous
has_trait = sadistic
has_trait = cynical
}
}
animation = disbelief
}
animation = personality_rational
}
right_portrait = {
character = scope:stop_host_scope
animation = happiness
}
immediate = {
location.culture = { save_scope_as = festival_culture_scope }
if = {
limit = {
scope:activity = {
any_attending_character = {
has_relation_rival = root
can_set_relation_nemesis_trigger = { CHARACTER = root }
}
}
}
scope:activity = {
random_attending_character = {
limit = {
has_relation_rival = root
can_set_relation_nemesis_trigger = { CHARACTER = root }
}
save_scope_as = farm_animal_rival
}
}
}
}
option = { # This one - the liege's, but it's ugly
name = cultural_festival.3031.a
scope:stop_host_scope = {
add_opinion = {
target = root
modifier = flattered_opinion
opinion = 20
}
}
add_character_modifier = {
modifier = underdog_animal_contest_modifier
years = 5
}
stress_impact = {
callous = minor_stress_impact_gain
}
ai_chance = {
base = 100
}
}
option = { # This one - the favourite, but not the liege's
name = cultural_festival.3031.b
scope:cultural_festival_scope = {
add_county_modifier = {
modifier = favourite_animal_contest_modifier
years = 10
}
}
scope:stop_host_scope = {
add_opinion = {
target = root
modifier = insulted_opinion
opinion = -10
}
}
stress_impact = {
callous = minor_stress_impact_gain
}
ai_chance = {
base = 100
}
}
option = { # This one - the diff culture one
name = cultural_festival.3031.c
trigger = {
location.culture != root.culture #if the county culture is not your culture
}
culture = {
change_cultural_acceptance = {
target = scope:festival_culture_scope
value = minor_cultural_acceptance_gain
desc = cultural_acceptance_farm_contest
}
}
scope:stop_host_scope = { #it's still not their animal
add_opinion = {
target = root
modifier = insulted_opinion
opinion = -10
}
}
stress_impact = {
callous = minor_stress_impact_gain
}
ai_chance = {
base = 100
}
}
option = { # This is ridiculous
name = cultural_festival.3031.d
trigger = {
OR = {
has_trait = callous
has_trait = sadistic
}
}
scope:cultural_festival_scope = {
add_county_modifier = {
modifier = mocked_animal_fair_modifier
years = 10
}
}
stress_impact = {
callous = medium_stress_impact_loss
sadistic = major_stress_impact_loss
humble = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 2
OR = {
has_trait = callous
has_trait = sadistic
}
}
}
}
option = { # If your rival is around, pick them as the best farm_animal
name = cultural_festival.3031.e
custom_tooltip = cultural_festival.3031.e.tt
trigger = {
scope:activity = {
any_attending_character = {
has_relation_rival = root
can_set_relation_nemesis_trigger = { CHARACTER = root }
}
}
}
#you become nemesis, this is highly humiliating
set_relation_nemesis = {
reason = nemesis_animal_contest
target = scope:farm_animal_rival
}
stress_impact = {
base = minor_stress_impact_loss
vengeful = minor_stress_impact_loss
callous = medium_stress_impact_loss
sadistic = major_stress_impact_loss
forgiving = medium_stress_impact_gain
compassionate = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 2
OR = {
has_trait = arrogant
has_trait = callous
has_trait = vengeful
}
}
modifier = {
factor = 0
OR = {
has_trait = forgiving
has_trait = compassionate
}
}
}
}
after = {
remove_variable = local_farm_animal
if = {
limit = {
scope:stop_host_scope = { has_variable = local_farm_animal }
}
remove_variable = local_farm_animal
}
}
}
######################
## Bilateral: Sword in the stone
## 3040-3042
## by Veronica Pazos
######################
# Vassal: Do you want to set up a sword in a stone
cultural_festival.3040 = {
type = activity_event
title = cultural_festival.3040.t
desc = cultural_festival.3040.desc
theme = cultural_festival
left_portrait = {
character = root
animation = personality_rational
}
right_portrait = {
character = cp:councillor_marshal
animation = disapproval
}
artifact = {
target = scope:sword_in_the_stone_scope
position = lower_center_portrait
}
override_background = { reference = courtyard }
cooldown = { years = 2 }
trigger = {
is_landed_or_landless_administrative = yes
exists = cp:councillor_marshal
any_character_artifact = { #do you have an artifact that could be buried in a stone?
OR = {
artifact_type = axe
artifact_type = spear
artifact_type = dagger
artifact_type = sword
}
}
}
immediate = {
cp:councillor_marshal = { save_scope_as = marshal }
random_character_artifact = {
limit = {
OR = {
artifact_type = axe
artifact_type = spear
artifact_type = dagger
artifact_type = sword
}
}
save_scope_as = sword_in_the_stone_scope
}
}
weight_multiplier = {
base = 1
modifier = { #more likely to happen if you actually have a sword
factor = 2
any_character_artifact = { artifact_type = sword }
}
}
option = { # I sure do!
name = cultural_festival.3040.a
flavor = cultural_festival.3040.flavor
custom_tooltip = cultural_festival.3040.a.tt
add_prestige = medium_prestige_gain #this is a really cool activity
scope:visiting_liege = {
trigger_event = {
id = cultural_festival.3041
days = 3
}
}
stress_impact = {
greedy = minor_stress_impact_gain
arrogant = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = greedy
has_trait = arrogant
}
}
}
}
option = { # Nahhhh
name = cultural_festival.3040.b
stress_impact = {
gregarious = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
has_trait = gregarious
}
}
}
}
# Liege: Do you want to take this sword out of the stone?
cultural_festival.3041 = {
type = activity_event
title = cultural_festival.3041.t
desc = cultural_festival.3041.desc
theme = cultural_festival
left_portrait = {
character = root
animation = marshal
}
right_portrait = {
character = scope:stop_host_scope
animation = personality_bold
}
artifact = {
target = scope:sword_in_the_stone_scope
position = lower_center_portrait
}
option = { # Try to get it out
name = cultural_festival.3041.a
trigger = { NOT = { has_trait = giant } }
duel = {
skill = prowess
value = high_skill_rating
50 = { #you get the sword
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
}
desc = cultural_festival.3041.a.success
send_interface_toast = {
title = cultural_festival.3041.a.success
left_icon = root
right_icon = scope:sword_in_the_stone_scope
scope:activity = {
add_activity_log_entry = {
key = got_sword_in_stone_log
tags = { good }
character = scope:visiting_liege
artifact = scope:sword_in_the_stone_scope
scope:sword_in_the_stone_scope = {
set_owner = root
if = {
limit = {
root = {
can_equip_artifact = scope:sword_in_the_stone_scope
}
}
equip_artifact_to_owner_replace = yes
}
}
root = { add_prestige = medium_prestige_gain }
if = {
limit = {
scope:activity = {
OR = {
has_activity_option = {
category = special_type
option = tour_type_majesty
}
has_activity_option = {
category = special_type
option = tour_type_intimidation
}
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
}
}
}
scope:stop_host_scope = { #we also send them a toast if you got the artifact
send_interface_toast = {
title = cultural_festival.3041.a.success.vassal
left_icon = scope:visiting_liege
right_icon = scope:sword_in_the_stone_scope
scope:visiting_liege = { #but they like you
add_opinion = {
target = scope:stop_host_scope
modifier = grateful_opinion
opinion = 20
}
}
}
}
}
50 = { #you can't make it
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
}
desc = cultural_festival.3041.a.failure
send_interface_toast = {
title = cultural_festival.3041.a.failure
left_icon = root
right_icon = scope:sword_in_the_stone_scope
add_prestige = minor_prestige_loss
}
set_variable = couldnt_get_sword_var
scope:stop_host_scope = {
trigger_event = {
id = cultural_festival.3042
days = 3
}
}
}
}
stress_impact = {
weak = minor_stress_impact_gain
content = minor_stress_impact_gain
humble = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = weak
has_trait = content
has_trait = humble
}
}
}
}
option = { # Let the host win
name = cultural_festival.3041.b
progress_towards_friend_effect = {
REASON = friend_sword_in_stone
CHARACTER = scope:stop_host_scope
OPINION = 15
}
scope:stop_host_scope = { #now they get a chance to take it out
trigger_event = {
id = cultural_festival.3042
days = 3
}
}
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_majesty
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
stress_impact = {
callous = minor_stress_impact_gain
arrogant = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = arrogant
has_trait = callous
}
}
}
}
option = { #You're a giant, you get this immediately
name = cultural_festival.3041.c
trigger = { has_trait = giant }
scope:sword_in_the_stone_scope = {
set_owner = root
if = {
limit = {
root = {
can_equip_artifact = scope:sword_in_the_stone_scope
}
}
equip_artifact_to_owner_replace = yes
}
}
add_prestige = minor_prestige_gain
if = {
limit = {
scope:activity = {
OR = {
has_activity_option = {
category = special_type
option = tour_type_majesty
}
has_activity_option = {
category = special_type
option = tour_type_intimidation
}
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
scope:stop_host_scope = { #we also send them a toast if you got the artifact
send_interface_toast = {
title = cultural_festival.3041.a.success.vassal
left_icon = scope:visiting_liege
right_icon = scope:sword_in_the_stone_scope
scope:visiting_liege = { #but they like you
add_opinion = {
target = scope:stop_host_scope
modifier = grateful_opinion
opinion = 20
}
}
}
}
}
}
# Vassal: Do /you/ want to take the sword out?
cultural_festival.3042 = {
type = activity_event
title = cultural_festival.3042.t
desc = {
desc = cultural_festival.3042.desc.intro
first_valid = {
triggered_desc = {
trigger = {
scope:visiting_liege = { has_variable = couldnt_get_sword_var }
}
desc = cultural_festival.3042.desc.failed
}
desc = cultural_festival.3042.desc.pretended
}
}
theme = cultural_festival
left_portrait = {
character = root
animation = marshal
}
right_portrait = {
character = scope:visiting_liege
animation = admiration
}
artifact = {
target = scope:sword_in_the_stone_scope
position = lower_center_portrait
}
option = { # Try to get it out
name = cultural_festival.3042.a
duel = {
skill = prowess
value = high_skill_rating
50 = { #you get the sword
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
}
desc = cultural_festival.3041.a.success #we can reuse the loc for this
send_interface_toast = {
title = cultural_festival.3041.a.success
left_icon = root
right_icon = scope:sword_in_the_stone_scope
add_prestige = medium_prestige_gain
}
}
50 = { #you can't make it
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
}
desc = cultural_festival.3041.a.failure
send_interface_toast = {
title = cultural_festival.3041.a.failure
left_icon = root
right_icon = scope:sword_in_the_stone_scope
add_prestige = minor_prestige_loss
}
}
}
stress_impact = {
weak = minor_stress_impact_gain
content = minor_stress_impact_gain
humble = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = weak
has_trait = content
has_trait = humble
}
}
}
}
option = { # Ignore it
name = cultural_festival.3042.b
stress_impact = {
brave = minor_stress_impact_gain
arrogant = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = arrogant
has_trait = brave
}
}
}
}
}
######################
## Bilateral: Struggle to stay awake during a boring performance
## 3050-3051
## by Veronica Pazos
######################
# Liege: Do you try to stay awake to not insult your host?
cultural_festival.3050 = {
type = activity_event
title = cultural_festival.3050.t
desc = cultural_festival.3050.desc
theme = cultural_festival
left_portrait = {
character = root
animation = boredom
}
right_portrait = {
character = scope:stop_host_scope
animation = happiness
}
cooldown = { years = 2 }
trigger = {
#triggered by the monthly_pulse
}
weight_multiplier = {
base = 1
modifier = {
factor = 2
has_trait = impatient
}
}
option = { # try
name = cultural_festival.3050.a
scope:stop_host_scope = {
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 10
}
}
scope:cultural_festival_scope = { #people also like this
add_county_modifier = {
modifier = festival_enjoyed_local_performance
years = 5
}
}
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_majesty
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
stress_impact = {
base = minor_stress_impact_gain #this is kinda stressful to you
impatient = minor_stress_impact_gain #to make it major
}
ai_chance = {
base = 100
modifier = {
factor = 0
has_trait = impatient
}
}
}
option = { # you don't even care
name = cultural_festival.3050.b
custom_tooltip = cultural_festival.3050.b.tt
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_intimidation
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
hidden_effect = {
random_list = {
60 = { #the host notices
modifier = {
add = 10
scope:stop_host_scope = {
has_trait = deceitful #they know you're lying
}
}
scope:stop_host_scope = { trigger_event = { id = cultural_festival.3051 days = 3 } }
}
40 = { #they don't notice
modifier = {
add = 15
has_trait = deceitful
}
modifier = {
add = -10
has_trait = honest
}
}
}
}
stress_impact = {
base = medium_stress_impact_loss
shy = minor_stress_impact_gain
honest = minor_stress_impact_gain
patient = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = shy
has_trait = honest
has_trait = patient
}
}
}
}
}
# Vassal: You notice liege falling asleep
cultural_festival.3051 = {
type = activity_event
title = cultural_festival.3051.t
desc = cultural_festival.3051.desc
theme = cultural_festival
left_portrait = {
character = root
triggered_animation = {
trigger = {
OR = {
has_trait = wrathful
has_trait = callous
has_trait = vengeful
}
}
animation = rage
}
animation = disbelief
}
right_portrait = {
character = scope:visiting_liege
animation = boredom
}
option = { # b r u h
name = cultural_festival.3051.a
scope:visiting_liege = {
send_interface_toast = {
title = cultural_festival.3051.a.toast
left_icon = scope:stop_host_scope
scope:stop_host_scope = {
add_opinion = {
target = scope:visiting_liege
modifier = insult_opinion
opinion = -15
}
}
}
}
stress_impact = {
forgiving = minor_stress_impact_gain
impatient = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = forgiving
has_trait = impatient
}
}
}
}
option = { # I kinda get it
name = cultural_festival.3051.b
stress_impact = { #you get stressed
base = minor_stress_impact_gain
humble = medium_stress_impact_loss
arrogant = minor_stress_impact_gain
patient = minor_stress_impact_gain
}
ai_chance = {
base = 75
modifier = {
factor = 0
OR = {
has_trait = arrogant
has_trait = patient
}
}
}
}
}
######################
## Bilateral: Take someone to dance
## 3060-3061
## by Veronica Pazos
######################
scripted_trigger cultural_festival_3060_valid_pool_character = {
is_available_ai_adult = yes
is_attracted_to_gender_of = root
root = { is_attracted_to_gender_of = prev }
}
# Liege: Do you wanna dance with your spouse or with the vassal's?
cultural_festival.3060 = {
type = activity_event
title = cultural_festival.3060.t
desc = {
desc = cultural_festival.3060.desc.intro
first_valid = {
triggered_desc = {
trigger = {
exists = scope:my_spouse
}
desc = cultural_festival.3060.desc.spouse
}
triggered_desc = {
trigger = {
exists = scope:vassal_spouse
}
desc = cultural_festival.3060.desc.vassal
}
}
}
theme = cultural_festival
left_portrait = {
character = root
animation = flirtation_left
}
right_portrait = {
character = scope:my_spouse
animation = happiness
trigger = { exists = scope:my_spouse }
}
lower_center_portrait = {
character = scope:stop_host_scope
trigger = { #they'll only be there if you're trying to dance with their spouse
exists = scope:vassal_spouse
scope:stop_host_scope != scope:my_spouse
}
}
lower_right_portrait = {
character = scope:vassal_spouse
trigger = {
exists = scope:vassal_spouse
scope:vassal_spouse != root
}
}
cooldown = { years = 2 }
trigger = {
OR = { # Only for adults and teenagers
is_adult = yes
# Pre-pubescent children are considered asexual, but adult asexuals should be allowed to get this event
NOT = { has_sexuality = asexual }
}
OR = {
scope:stop_host_scope = { #Host has a spouse in our location
any_spouse = {
location = root.location
}
}
any_spouse = { #Our own spouse is in this location
location = root.location
}
}
}
immediate = {
random_spouse = { #if your spouse is here we grab them
limit = { location = root.location }
save_scope_as = my_spouse
}
scope:stop_host_scope = { #Host has a spouse in our location
random_spouse = {
limit = {
location = root.location
}
save_scope_as = vassal_spouse
}
}
}
weight_multiplier = {
base = 1
modifier = {
factor = 2
any_spouse = { #Our own spouse is in this location
location = root.location
}
}
modifier = {
factor = 2
scope:stop_host_scope = {
any_spouse = {
location = root.location
}
}
}
}
option = { # I wanna dance with my spouse, obviously
name = cultural_festival.3060.a
trigger = {
exists = scope:my_spouse
}
scope:my_spouse = {
add_opinion = {
target = root
modifier = flattered_opinion
opinion = 20
}
}
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_majesty
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
stress_impact = {
base = minor_stress_impact_loss
gregarious = minor_stress_impact_loss
loyal = medium_stress_impact_loss
lazy = minor_stress_impact_gain
callous = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = lazy
has_trait = callous
}
}
}
}
option = { # I wanna dance with YOUR spouse, obviously
name = cultural_festival.3060.b
trigger = {
exists = scope:vassal_spouse
scope:vassal_spouse != root
}
custom_tooltip = cultural_festival.3060.b.tt
if = {
limit = {
NOR = {
has_trait = celibate
has_trait = chaste
}
}
duel = {
target = scope:vassal_spouse
skill = diplomacy
50 = {
desc = cultural_festival.3060.b.success
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
modifier = {
scope:vassal_spouse = {
OR = {
has_trait = lustful
has_trait = seducer
}
}
factor = 2
}
modifier = {
OR = {
has_trait = lustful
has_trait = seducer
}
factor = 2
}
send_interface_toast = {
title = cultural_festival.3060.b.success
left_icon = scope:vassal_spouse
progress_towards_lover_effect = {
CHARACTER = scope:vassal_spouse
REASON = lover_festival_dancing
OPINION = 5
}
}
}
50 = {
desc = cultural_festival.3060.b.failure
#nothing happens
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
modifier = {
scope:vassal_spouse = {
OR = {
has_trait = celibate
has_trait = chaste
}
}
factor = 3
}
send_interface_toast = {
title = cultural_festival.3060.b.failure
left_icon = scope:vassal_spouse
}
}
}
}
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_intimidation
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
hidden_effect = {
scope:stop_host_scope = { trigger_event = { id = cultural_festival.3061 days = 3 } }
}
stress_impact = {
lustful = minor_stress_impact_loss
seducer = minor_stress_impact_loss
gregarious = minor_stress_impact_loss
loyal = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
has_trait = loyal
}
}
}
option = { # I wanna dance with all the locals
name = cultural_festival.3060.c
trigger = { #if one of the spouses doesn't exist, we open this option
OR = {
NOT = { exists = scope:my_spouse }
NOT = { exists = scope:vassal_spouse }
}
}
if = {
limit = { exists = scope:my_spouse }
scope:my_spouse = {
add_opinion = {
target = root
modifier = insult_opinion
opinion = -20
}
}
}
scope:cultural_festival_scope = {
add_county_modifier = {
modifier = festival_danced_with_local_modifier
years = 5
}
}
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_majesty
}
}
}
increase_tour_success_effect = { POINTS = 2 }
}
stress_impact = {
base = minor_stress_impact_loss
lazy = minor_stress_impact_gain
callous = minor_stress_impact_gain
loyal = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = loyal
has_trait = lazy
has_trait = callous
}
}
}
}
option = { # I hate dancing
name = cultural_festival.3060.d
add_dread = minor_dread_gain
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_intimidation
}
}
}
increase_tour_success_effect = { POINTS = 2 }
}
stress_impact = {
lazy = minor_stress_impact_loss
callous = minor_stress_impact_loss
gregarious = minor_stress_impact_gain
seducer = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 2
OR = {
has_trait = lazy
has_trait = callous
}
}
modifier = {
factor = 0
OR = {
has_trait = gregarious
has_trait = seducer
}
}
}
}
}
# Vassal: Your liege has chosen your spouse for a dance
cultural_festival.3061 = {
type = activity_event
title = cultural_festival.3061.t
desc = {
desc = cultural_festival.3060.desc.intro #we reuse the intro
desc = cultural_festival.3061.desc
}
theme = cultural_festival
left_portrait = {
character = root
animation = disbelief
}
right_portrait = {
character = scope:visiting_liege
animation = flirtation
}
lower_center_portrait = scope:vassal_spouse
option = { # How dare they????
name = cultural_festival.3061.a
scope:visiting_liege = {
add_opinion = {
target = root
modifier = angry_opinion
opinion = -10
}
send_interface_toast = {
title = cultural_festival.3061.a.toast
left_icon = scope:stop_host_scope
scope:stop_host_scope = {
progress_towards_rival_effect = {
CHARACTER = scope:visiting_liege
REASON = rival_danced_with_spouse
OPINION = 0
}
}
}
}
stress_impact = {
forgiving = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
has_trait = forgiving
}
}
}
option = { # Who wouldn't!
name = cultural_festival.3061.b
add_character_modifier = {
modifier = festival_flattered_spouse_modifier
years = 5
}
scope:vassal_spouse = {
add_opinion = {
target = root
modifier = flattered_opinion
opinion = 15
}
}
stress_impact = {
arrogant = minor_stress_impact_gain
vengeful = minor_stress_impact_gain
wrathful = minor_stress_impact_gain
callous = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = arrogant
has_trait = vengeful
has_trait = wrathful
has_trait = callous
}
}
}
}
}
######################
## Bilateral: Hold a Feast of Fools-esque ceremony
## 3070-3071
## by Veronica Pazos
######################
scripted_effect cultural_festival.3070.bishop_angry_effect = {
if = {
limit = {
scope:bishop = {
NOR = {
has_trait = cynical
has_trait = gregarious
}
}
}
scope:bishop = {
add_opinion = {
target = root
modifier = impious_opinion
opinion = -10
}
}
}
}
# Vassal: Do you want to hold a Feast of Fools?
cultural_festival.3070 = {
type = activity_event
title = cultural_festival.3070.t
desc = cultural_festival.3070.desc
theme = cultural_festival
override_background = { reference = courtyard }
left_portrait = {
character = root
animation = personality_rational
}
lower_right_portrait = scope:rival_jester
lower_center_portrait = scope:sinful_jester
lower_left_portrait = {
trigger = {
exists = scope:bishop
scope:bishop = {
NOR = {
has_trait = cynical
has_trait = gregarious
}
}
}
character = scope:bishop
}
cooldown = { years = 2 }
trigger = {
OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion } #this is a deeply Christian thing
location = {
any_character_in_location = {
this != scope:visiting_liege
num_sinful_traits >= 1
is_adult = yes
save_temporary_scope_as = jester_1
}
any_character_in_location = {
this != scope:jester_1
this != scope:visiting_liege
OR = {
has_relation_potential_rival = root
has_relation_rival = root
has_relation_nemesis = root
root = {
opinion = {
target = prev #the character
value < 0
}
}
}
}
}
}
weight_multiplier = {
base = 1
modifier = {
factor = 1.5
location = {
any_character_in_location = {
OR = {
has_relation_rival = root
has_relation_potential_rival = root
}
}
}
}
modifier = {
factor = 2
location = {
any_character_in_location = {
has_relation_nemesis = root
}
}
}
modifier = {
government_has_flag = government_is_theocracy
NOR = {
has_trait = cynical
any_secret = { type = secret_non_believer }
}
factor = 0.1
}
}
immediate = {
if = { #if you have a nemesis here, we pick them
limit = {
location = {
any_character_in_location = {
this != scope:visiting_liege
has_relation_nemesis = root
}
}
}
location = {
random_character_in_location = {
limit = {
this != scope:visiting_liege
has_relation_nemesis = root
}
save_scope_as = rival_jester
}
}
}
else_if = { #if you have a rival here, we pick them
limit = {
location = {
any_character_in_location = {
this != scope:visiting_liege
has_relation_rival = root
}
}
}
location = {
random_character_in_location = {
limit = {
this != scope:visiting_liege
has_relation_rival = root
}
save_scope_as = rival_jester
}
}
}
else_if = { #if you have a potential rival here, we pick them
limit = {
location = {
any_character_in_location = {
this != scope:visiting_liege
has_relation_potential_rival = root
}
}
}
location = {
random_character_in_location = {
limit = {
this != scope:visiting_liege
has_relation_potential_rival = root
}
save_scope_as = rival_jester
}
}
}
else = { #we grab someone that you dislike
location = {
random_character_in_location = {
limit = {
this != scope:visiting_liege
root = {
opinion = {
target = prev #the character
value < 0
}
}
}
weight = {
base = 100
modifier = {
add = 100
is_powerful_vassal = yes
}
}
save_scope_as = rival_jester
}
}
}
location = {
random_character_in_location = {
limit = {
num_sinful_traits >= 1
is_adult = yes
this != scope:rival_jester
this != scope:visiting_liege
}
save_scope_as = sinful_jester
}
}
if = {
limit = {
exists = cp:councillor_court_chaplain
}
cp:councillor_court_chaplain = {
save_scope_as = bishop
}
}
}
option = { # pick someone you dislike
name = cultural_festival.3070.a
if = { #become potential rivals
limit = {
scope:rival_jester = {
NOR = {
has_relation_potential_rival = root
has_relation_rival = root
has_relation_nemesis = root
}
}
}
scope:rival_jester = {
set_relation_potential_rival = {
target = root
reason = rival_feast_of_fools
}
}
}
else_if = { #become rivals if potential rivals
limit = {
scope:rival_jester = {
has_relation_potential_rival = root
}
}
scope:rival_jester = {
set_relation_rival = {
target = root
reason = rival_feast_of_fools
}
}
}
else_if = { #become nemesis if rivals
limit = {
scope:rival_jester = {
has_relation_rival = root
}
}
scope:rival_jester = {
set_relation_nemesis = {
target = root
reason = rival_feast_of_fools
}
}
}
else = { #they get hostile scheme power against you if nemesis
scope:rival_jester = {
set_variable = {
name = festival_nemesis_fool_var
value = scope:stop_host_scope
}
}
}
scope:rival_jester = {
if = {
limit = { is_male = no }
give_nickname = nick_monarch_of_fools
}
else = {
give_nickname = nick_monarch_of_fools_masc
}
add_character_modifier = { #attraction malus
modifier = festival_king_of_fools_modifier
years = 10
}
save_scope_as = final_jester
}
every_held_county = {
add_county_modifier = {
modifier = festival_feast_of_fools_county_modifier
years = 5
}
}
add_piety = minor_piety_loss
cultural_festival.3070.bishop_angry_effect = yes
scope:visiting_liege = { trigger_event = { id = cultural_festival.3071 days = 3 } }
stress_impact = {
forgiving = minor_stress_impact_gain
compassionate = minor_stress_impact_gain
zealous = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = zealous
has_trait = forgiving
has_trait = compassionate
}
}
}
}
option = { # pick someone with a sinful trait
name = cultural_festival.3070.b
if = { # become potential rivals
limit = {
scope:sinful_jester = {
NOR = {
has_relation_potential_rival = root
has_relation_rival = root
has_relation_nemesis = root
}
}
}
scope:sinful_jester = {
set_relation_potential_rival = {
target = root
reason = rival_feast_of_fools
}
}
}
else = {
scope:sinful_jester = {
add_opinion = {
target = root
modifier = humiliated_opinion
opinion = -20
}
}
}
scope:sinful_jester = {
if = {
limit = { is_male = no }
give_nickname = nick_monarch_of_fools
}
else = {
give_nickname = nick_monarch_of_fools_masc
}
add_character_modifier = { #attraction malus
modifier = festival_king_of_fools_modifier
years = 10
}
save_scope_as = final_jester
}
every_held_county = {
add_county_modifier = {
modifier = festival_feast_of_fools_county_modifier
years = 5
}
}
add_piety = minor_piety_loss
#bishop doesn't really care that much since they're sinful
scope:visiting_liege = { trigger_event = { id = cultural_festival.3071 days = 3 } }
stress_impact = {
compassionate = medium_stress_impact_gain
forgiving = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = forgiving
has_trait = compassionate
}
}
}
}
option = { # pick the liege
name = cultural_festival.3070.c
trigger = {
OR = {
has_trait = callous
has_trait = sadistic
dread >= high_dread
}
opinion = { # you don't super like this person
target = liege
value <= 10
}
can_set_relation_rival_trigger = { CHARACTER = scope:visiting_liege }
}
if = {
limit = {
scope:visiting_liege = { is_ai = yes }
}
set_relation_rival = {
target = scope:visiting_liege
reason = rival_feast_of_fools
}
}
every_held_county = {
add_county_modifier = {
modifier = festival_feast_of_fools_county_modifier
years = 5
}
}
add_piety = minor_piety_loss
cultural_festival.3070.bishop_angry_effect = yes
scope:visiting_liege = {
save_scope_as = final_jester
set_variable = im_the_jester_var
trigger_event = { id = cultural_festival.3071 days = 3 }
}
stress_impact = {
compassionate = minor_stress_impact_gain
just = medium_stress_impact_gain
loyal = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = compassionate
has_trait = just
has_trait = loyal
}
}
modifier = {
factor = 2
has_trait = callous
opinion = {
target = liege
value <= 0
}
}
}
}
option = { # absolutely not
name = cultural_festival.3070.d
add_piety = minor_piety_gain
if = {
limit = {
scope:bishop = {
NOR = {
has_trait = cynical
has_trait = gregarious
}
}
}
scope:bishop = {
add_opinion = {
target = root
modifier = pious_opinion
opinion = 10
}
}
}
stress_impact = {
callous = minor_stress_impact_gain
sadistic = minor_stress_impact_gain
vengeful = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = callous
has_trait = sadistic
has_trait = vengeful
}
}
}
}
}
# Liege: You observe a Feast of Fools
cultural_festival.3071 = {
type = activity_event
title = cultural_festival.3071.t
desc = {
desc = cultural_festival.3071.desc.intro
first_valid = {
triggered_desc = {
trigger = {
has_variable = im_the_jester_var
}
desc = cultural_festival.3071.desc_jester
}
desc = cultural_festival.3071.desc_fallback
}
}
theme = cultural_festival
left_portrait = {
character = root
triggered_animation = {
trigger = {
has_variable = im_the_jester_var
NOR = {
has_trait = compassionate
has_trait = forgiving
has_trait = gregarious
has_trait = lifestyle_reveler
}
}
animation = anger
}
animation = happiness
}
right_portrait = {
trigger = {
root != scope:final_jester
}
character = scope:final_jester
triggered_animation = {
trigger = {
OR = {
has_trait = vengeful
has_trait = wrathful
has_trait = callous
has_trait = sadistic
}
}
animation = anger
}
animation = boredom
outfit_tags = { jester_outfit }
}
lower_center_portrait = scope:stop_host_scope
option = { # great stuff
name = cultural_festival.3071.a
scope:activity = {
add_activity_log_entry = {
key = festival_of_fools_log
tags = { good }
character = scope:visiting_liege
target = scope:stop_host_scope
root = {
if = { #cultural acceptance if you're not the same culture
limit = {
scope:stop_host_scope.culture != root.culture
}
root.culture = {
change_cultural_acceptance = {
target = scope:stop_host_scope.culture
value = major_cultural_acceptance_gain
desc = cultural_acceptance_feast_of_fools
}
}
}
else = { #popular opinion
scope:stop_host_scope = {
every_held_county = {
add_county_modifier = {
modifier = festival_feast_of_fools_county_modifier
years = 10
}
}
}
}
add_piety = medium_piety_loss
}
}
}
stress_impact = {
base = minor_stress_impact_loss
callous = medium_stress_impact_loss
sadistic = medium_stress_impact_loss
diligent = minor_stress_impact_gain
zealous = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = zealous
has_trait = diligent
}
}
modifier = {
factor = 2
OR = {
has_trait = callous
has_trait = sadistic
}
}
}
}
option = { # blasphemous
name = cultural_festival.3071.b
add_piety = medium_piety_gain
if = { #if your priest is with you they like this
limit = {
current_travel_plan = {
any_entourage_character = {
has_council_position = councillor_court_chaplain
}
}
}
current_travel_plan = {
random_entourage_character = {
limit = {
has_council_position = councillor_court_chaplain
}
add_opinion = {
target = root
modifier = pious_opinion
opinion = 10
}
}
}
}
stress_impact = {
cynical = minor_stress_impact_gain
lifestyle_reveler = minor_stress_impact_gain
gregarious = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = cynical
has_trait = lifestyle_reveler
has_trait = gregarious
}
}
}
}
option = { # hire the guy
name = cultural_festival.3071.c
trigger = {
root != scope:final_jester
can_appoint_char_to_court_position = {
CHAR = scope:final_jester
COURT_POS = court_jester_court_position
}
}
scope:final_jester = { set_variable = king_of_fools_var } #75% discount forever
recruit_to_entourage_court_and_activity_effect = {
CHAR_TO_ADD = scope:final_jester
NEW_COURT_OWNER = root
}
court_position_grant_effect = {
POS = court_jester
CANDIDATE = scope:final_jester
EMPLOYER = root
}
stress_impact = {
avaricious = minor_stress_impact_gain
greedy = minor_stress_impact_gain
zealous = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = avaricious
has_trait = greedy
has_trait = zealous
}
}
}
}
option = { # how dare you???
name = cultural_festival.3071.d
trigger = {
root = scope:final_jester
}
scope:activity = {
add_activity_log_entry = {
key = festival_of_fools_bad_log
tags = { bad }
character = scope:visiting_liege
target = scope:stop_host_scope
root = {
if = {
limit = { #if you're rivals but not nemesis become nemesis
has_relation_rival = scope:stop_host_scope
NOT = { has_relation_nemesis = scope:stop_host_scope}
}
set_relation_nemesis = {
target = scope:stop_host_scope
reason = rival_feast_of_fools
}
}
else = {
set_relation_rival = {
target = scope:stop_host_scope
reason = rival_feast_of_fools
}
}
}
}
}
stress_impact = {
base = medium_stress_impact_loss
compassionate = minor_stress_impact_gain
calm = minor_stress_impact_gain
forgiving = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = compassionate
has_trait = calm
has_trait = forgiving
}
}
}
}
}
######################
## Liege: You end up in a conversation in a language you don't know
## 4000
## by Arkadiusz Majewski
######################
scripted_trigger unknown_language_character_trigger = { #pick someone you don't understand
is_physically_able_ai_adult = yes
culture = location.county.culture
NOT = { knows_language_of_culture = scope:visiting_liege.culture }
}
scripted_trigger bilingual_character_trigger = { #pick someone that can understand both of you
is_physically_able_ai_adult = yes
knows_language_of_culture = scope:visiting_liege.culture
knows_language_of_culture = scope:local_character_scope.culture
NOT = { has_any_relation_trigger = { CHARACTER = scope:stop_host_scope } }
}
cultural_festival.4000 = { #Liege: You end up in a conversation in a language you don't know
type = activity_event
title = cultural_festival.4000.t
desc = cultural_festival.4000.desc
theme = cultural_festival
left_portrait = {
character = root
animation = paranoia
}
right_portrait = {
character = scope:local_translator_scope
animation = worry
}
center_portrait = {
character = scope:local_character_scope
animation = disbelief
}
cooldown = { years = 5 }
trigger = { #look for a character that you don't understand
scope:stop_host_scope = {
any_courtier_or_guest = {
unknown_language_character_trigger = yes
save_temporary_scope_as = unknown_language_character_scope
}
}
NOT = { knows_language_of_culture = scope:unknown_language_character_scope.culture }
}
immediate = {
scope:stop_host_scope = {
random_courtier_or_guest = { #pick someone you don't understand
limit = {
unknown_language_character_trigger = yes
}
save_scope_as = local_character_scope
}
}
if = {
limit = {
scope:stop_host_scope = {
any_courtier_or_guest = {
bilingual_character_trigger = yes
}
}
}
scope:stop_host_scope = {
random_courtier_or_guest = { #pick someone that can understand both of you in vassals court
limit = {
bilingual_character_trigger = yes
}
save_scope_as = local_translator_scope
}
}
}
else_if = { #if above fails, pick someone that can understand both of you in your entourage
limit = {
current_travel_plan = {
any_entourage_character = {
bilingual_character_trigger = yes
}
}
}
current_travel_plan = {
random_entourage_character = {
limit = {
bilingual_character_trigger = yes
}
save_scope_as = local_translator_scope
}
}
}
else = { #if above still fails, just create them
create_character = {
template = scholar_character
location = scope:stop_host_scope.location
faith = location.county.faith
culture = location.county.culture
dynasty = none
save_scope_as = local_translator_scope
}
hidden_effect = {
scope:local_translator_scope = {
learn_language_of_culture = root.culture
}
}
}
}
option = { #hire one of them as a translator
name = cultural_festival.4000.a
add_character_modifier = { #gain bonus to learning languages
modifier = interpreter_option_modifier
years = 5
}
pay_short_term_gold = { #pay them to join
target = scope:local_translator_scope
gold = minor_gold_value
}
if = { #recruit them to court if you can
limit = {
scope:local_translator_scope = {
NOT = {
is_courtier_of = scope:visiting_liege
}
}
}
scope:local_translator_scope = {
add_to_court_and_entourage_effect = yes
}
}
scope:cultural_festival_scope = { #gain popular opinion
add_county_modifier = {
modifier = appreciated_culture_modifier
years = 5
}
}
stress_impact = {
ambitious = minor_stress_impact_loss
greedy = minor_stress_impact_gain
lazy = minor_stress_impact_gain
}
ai_chance = {
base = 10
modifier = {
factor = 0
OR = {
has_trait = greedy
has_trait = lazy
short_term_gold < minor_gold_value
}
}
}
}
option = { #pretend to understand the convesation
name = cultural_festival.4000.b
duel = {
skill = intrigue
target = scope:local_translator_scope
50 = {
desc = cultural_festival.4000.b.success
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = cultural_festival.4000.b.success
left_icon = scope:local_translator_scope
scope:cultural_festival_scope = { #gain popular opinion
add_county_modifier = {
modifier = appreciated_culture_modifier
years = 5
}
}
increase_tour_success_effect = { POINTS = 1 }
}
}
50 = {
desc = cultural_festival.4000.b.failure
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = cultural_festival.4000.b.failure
left_icon = scope:local_translator_scope
scope:cultural_festival_scope = { #lose popular opinion
add_county_modifier = {
modifier = no_culture_modifier
years = 5
}
}
}
}
}
stress_impact = {
deceitful = medium_stress_impact_loss
shy = minor_stress_impact_gain
craven = minor_stress_impact_gain
}
ai_chance = {
base = 10
modifier = {
factor = 0
OR = {
has_trait = shy
has_trait = craven
}
}
}
}
option = { #go away
name = cultural_festival.4000.c
stress_impact = {
base = minor_stress_impact_loss
shy = minor_stress_impact_loss
craven = minor_stress_impact_loss
brave = minor_stress_impact_gain
gregarious = minor_stress_impact_gain
}
ai_chance = {
base = 10
modifier = {
factor = 0
OR = {
has_trait = gregarious
has_trait = brave
}
}
}
}
}
######################
## Bilateral: Your courtier made a cultural faux pas
## 4100
## by Arkadiusz Majewski
######################
cultural_festival.4100 = { #Your courtier made a cultural faux pas
type = activity_event
title = cultural_festival.4100.t
desc = cultural_festival.4100.desc
theme = cultural_festival
left_portrait = {
character = root
animation = worry
}
right_portrait = {
character = scope:offended_character_scope
animation = shock
}
center_portrait = {
character = scope:inconsiderate_character_scope
animation = fear
}
cooldown = { years = 5 }
trigger = {
OR = {
AND = {
root = scope:visiting_liege
any_courtier_or_guest = { #find someone in your court that could commit a faux pas
age > 5
culture != scope:stop_host_scope.culture
}
}
AND = {
root = scope:stop_host_scope
any_courtier_or_guest = { #find someone in your court that could commit a faux pas
age > 5
culture != scope:visiting_liege.culture
}
}
}
}
immediate = {
if = { #set who is offended by the faux pas, either liege or vassal
limit = {
root = scope:visiting_liege
}
scope:stop_host_scope = {
save_scope_as = offended_character_scope
}
}
else = {
scope:visiting_liege = {
save_scope_as = offended_character_scope
}
}
random_courtier_or_guest = { #find someone in your court that could commit a faux pas
limit = {
age > 5
culture != scope:offended_character_scope.culture
}
save_scope_as = inconsiderate_character_scope
}
scope:offended_character_scope = {
add_opinion = {
target = scope:inconsiderate_character_scope
modifier = insult_opinion
opinion = -20
}
}
}
option = { #try to convince everyone it's just a misunderstanding using diplomacy skill
name = cultural_festival.4100.a
duel = {
skill = diplomacy
target = scope:offended_character_scope
50 = { #on success gain opinion with both characters; gain cultural acceptance and increase tour success
desc = cultural_festival.4100.a.success
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
modifier = {
factor = 2
has_activity_intent = altruism_intent
}
send_interface_toast = {
title = cultural_festival.4100.a.success
left_icon = scope:offended_character_scope
scope:inconsiderate_character_scope = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 20
}
}
scope:offended_character_scope = {
add_opinion = {
target = root
modifier = respect_opinion
opinion = 10
}
}
if = {
limit = { root.culture != scope:offended_character_scope.culture }
root.culture = {
change_cultural_acceptance = {
target = scope:offended_character_scope.culture
value = miniscule_positive_culture_acceptance
desc = cultural_acceptance_gain_hold_court_event_outcome
}
}
}
if = {
limit = { root = scope:visiting_liege }
increase_tour_success_effect = { POINTS = 1 }
}
}
}
50 = { #on fail gain opinion with offender, but lose with offended; lose cultural acceptance and decrease tour success
desc = cultural_festival.4100.a.failure
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = cultural_festival.4100.a.failure
left_icon = scope:offended_character_scope
scope:inconsiderate_character_scope = {
add_opinion = {
target = root
modifier = respect_opinion
opinion = 10
}
}
scope:offended_character_scope = {
add_opinion = {
target = root
modifier = insult_opinion
opinion = -10
}
}
if = {
limit = { root.culture != scope:offended_character_scope.culture }
root.culture = {
change_cultural_acceptance = {
target = scope:offended_character_scope.culture
value = miniscule_negative_culture_acceptance
desc = cultural_acceptance_gain_hold_court_event_outcome
}
}
}
}
}
}
stress_impact = {
compassionate = minor_stress_impact_loss
honest = minor_stress_impact_loss
callous = minor_stress_impact_gain
}
ai_chance = {
base = 1
modifier = {
add = 10
has_trait = compassionate
has_trait = honest
}
modifier = {
add = -20
has_trait = callous
}
}
}
option = { #make the offender pay for their mistakes, gain opinion with offended
name = cultural_festival.4100.b
scope:inconsiderate_character_scope = {
add_opinion = {
target = root
modifier = shamed_me_opinion
opinion = -20
}
pay_short_term_gold = {
target = scope:offended_character_scope
gold = minor_gold_value
}
}
scope:offended_character_scope = {
add_opinion = {
target = root
modifier = respect_opinion
opinion = 20
}
}
stress_impact = {
vengeful = minor_stress_impact_loss
wrathful = minor_stress_impact_loss
compassionate = minor_stress_impact_gain
}
ai_chance = {
base = 1
modifier = {
factor = 10
has_relation_rival = scope:inconsiderate_character_scope
has_relation_nemesis = scope:inconsiderate_character_scope
}
modifier = {
add = 10
OR = {
has_trait = vengeful
has_trait = wrathful
}
}
modifier = {
add = -20
has_trait = compassionate
}
}
}
option = { #compensate in offenders name with gold; gain opinion with both
name = cultural_festival.4100.c
scope:inconsiderate_character_scope = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 20
}
}
pay_short_term_gold = {
target = scope:offended_character_scope
gold = minor_gold_value
}
scope:offended_character_scope = {
add_opinion = {
target = root
modifier = respect_opinion
opinion = 10
}
}
stress_impact = {
compassionate = minor_stress_impact_loss
generous = minor_stress_impact_loss
greedy = minor_stress_impact_gain
}
ai_chance = {
base = 1
modifier = {
factor = 0
OR = {
has_relation_rival = scope:inconsiderate_character_scope
has_relation_nemesis = scope:inconsiderate_character_scope
short_term_gold < minor_gold_value
}
}
modifier = {
add = 10
OR = {
has_trait = generous
has_trait = compassionate
}
}
modifier = {
add = -20
has_trait = greedy
}
}
}
}
######################
## Bilateral: Vassal prepares a parade, Liege participates in the parade
## 4200-4203
## by Arkadiusz Majewski
######################
scripted_effect parade_liege_enjoyment_effect = { #rewards for liege if liege likes the parade
if = {
limit = {
scope:stop_host_scope.var:parade_type = flag:military_parade
}
scope:visiting_liege = {
add_character_modifier = {
modifier = festival_military_parade_best_modifier
years = 5
}
}
}
else_if = {
limit = {
scope:stop_host_scope.var:parade_type = flag:civil_parade
}
scope:visiting_liege = {
add_character_modifier = {
modifier = festival_civil_parade_best_modifier
years = 5
}
}
}
else = {
scope:visiting_liege = {
add_character_modifier = {
modifier = festival_religious_parade_best_modifier
years = 5
}
}
}
if = {
limit = { scope:visiting_liege.culture != location.county.culture }
scope:visiting_liege.culture = {
change_cultural_acceptance = {
target = scope:stop_host_scope.location.county.culture
value = major_cultural_acceptance_gain
desc = cultural_acceptance_embraced_festival
}
}
}
scope:visiting_liege = {
add_opinion = {
target = scope:stop_host_scope
modifier = impressed_opinion
opinion = 10
}
}
}
scripted_effect parade_liege_dissatisfaction_effect = { #rewards for liege if liege dislikes the parade
if = {
limit = {
scope:stop_host_scope.var:parade_type = flag:religious_parade
}
add_piety = minor_piety_gain
}
else = {
add_prestige = minor_prestige_gain
}
scope:visiting_liege = {
add_opinion = {
target = scope:stop_host_scope
modifier = bored_opinion
opinion = -10
}
add_character_flag = parade_liege_dissatisfaction_flag
}
}
scripted_effect liege_parade_enjoyment_custom_tt_effect = { #custom tooltip hint for player how likely the liege is to like the parade
if = {
limit = { scope:liege_parade_enjoyment_value > 2 }
custom_tooltip = cultural_festival.4200.tt.liege_likes
}
else_if = {
limit = { scope:liege_parade_enjoyment_value >= 0 }
custom_tooltip = cultural_festival.4200.tt.liege_indifferent
}
else = {
custom_tooltip = cultural_festival.4200.tt.liege_dislikes
}
}
scripted_effect positive_opinion_after_parade_effect = {
scope:stop_host_scope = {
add_opinion = {
target = scope:visiting_liege
modifier = flattered_opinion
opinion = 10
}
}
}
scripted_effect negative_opinion_after_parade_effect = {
scope:stop_host_scope = {
add_opinion = {
target = scope:visiting_liege
modifier = frustrated_opinion
opinion = -10
}
}
}
scripted_effect parade_end_effect = { #rewards for vassal dependent on parade type and if liege liked the parade
if = {
limit = {
var:parade_type = flag:military_parade
}
if = {
limit = {
var:liege_parade_enjoyment >= 3
}
scope:cultural_festival_scope = {
add_county_modifier = {
modifier = festival_military_parade_best_modifier
years = 5
}
}
dynasty = { add_dynasty_prestige = minor_dynasty_prestige_gain }
if = {
limit = { scope:visiting_liege = { has_character_flag = parade_liege_dissatisfaction_flag } }
negative_opinion_after_parade_effect = yes
}
else = {
positive_opinion_after_parade_effect = yes
}
}
else_if = {
limit = {
OR = {
var:liege_parade_enjoyment >= 0
scope:visiting_liege = { NOT = { has_character_flag = parade_liege_dissatisfaction_flag } }
}
}
scope:cultural_festival_scope = {
add_county_modifier = {
modifier = festival_military_parade_best_modifier
years = 5
}
}
dynasty = { add_dynasty_prestige = minor_dynasty_prestige_gain }
}
else = {
scope:cultural_festival_scope = {
add_county_modifier = {
modifier = festival_military_parade_modifier
years = 5
}
}
dynasty ?= { add_dynasty_prestige = miniscule_dynasty_prestige_gain }
negative_opinion_after_parade_effect = yes
}
}
else_if = {
limit = {
var:parade_type = flag:civil_parade
}
if = {
limit = {
var:liege_parade_enjoyment >= 3
}
scope:cultural_festival_scope = {
add_county_modifier = {
modifier = festival_civil_parade_best_modifier
years = 5
}
}
add_prestige = minor_prestige_gain
if = {
limit = { scope:visiting_liege = { has_character_flag = parade_liege_dissatisfaction_flag } }
negative_opinion_after_parade_effect = yes
}
else = {
positive_opinion_after_parade_effect = yes
}
}
else_if = {
limit = {
OR = {
var:liege_parade_enjoyment >= 0
scope:visiting_liege = { NOT = { has_character_flag = parade_liege_dissatisfaction_flag } }
}
}
scope:cultural_festival_scope = {
add_county_modifier = {
modifier = festival_civil_parade_best_modifier
years = 5
}
}
add_prestige = minor_prestige_gain
}
else = {
scope:cultural_festival_scope = {
add_county_modifier = {
modifier = festival_civil_parade_modifier
years = 5
}
}
add_prestige = miniscule_prestige_gain
negative_opinion_after_parade_effect = yes
}
}
else_if = {
limit = {
var:parade_type = flag:religious_parade
}
if = {
limit = {
var:liege_parade_enjoyment >= 3
}
scope:cultural_festival_scope = {
add_county_modifier = {
modifier = festival_religious_parade_best_modifier
years = 5
}
}
add_piety = minor_piety_gain
if = {
limit = { scope:visiting_liege = { has_character_flag = parade_liege_dissatisfaction_flag } }
negative_opinion_after_parade_effect = yes
}
else = {
positive_opinion_after_parade_effect = yes
}
}
else_if = {
limit = {
OR = {
var:liege_parade_enjoyment >= 0
scope:visiting_liege = { NOT = { has_character_flag = parade_liege_dissatisfaction_flag } }
}
}
scope:cultural_festival_scope = {
add_county_modifier = {
modifier = festival_religious_parade_best_modifier
years = 5
}
}
add_piety = minor_piety_gain
}
else = {
scope:cultural_festival_scope = {
add_county_modifier = {
modifier = festival_religious_parade_modifier
years = 5
}
}
add_piety = miniscule_piety_gain
negative_opinion_after_parade_effect = yes
}
}
}
scripted_effect clear_parade_variables_effect = { #clear all variables and flags
remove_variable = parade_type
remove_variable = parade_quality
remove_variable = liege_parade_type
remove_variable = liege_parade_enjoyment
if = {
limit = {
scope:visiting_liege = {
has_character_flag = parade_liege_dissatisfaction_flag
}
}
scope:visiting_liege = {
remove_character_flag = parade_liege_dissatisfaction_flag
}
}
}
cultural_festival.4200 = { #Vassal: Do a parade, pick a type
type = activity_event
title = cultural_festival.4200.t
desc = cultural_festival.4200.desc
theme = cultural_festival
left_portrait = {
character = root
animation = thinking
}
cooldown = { years = 5 }
trigger = {
scope:visiting_liege = {
NOT = { has_character_flag = had_cultural_parade }
}
any_courtier = {
is_available_ai_adult = yes
}
}
immediate = {
set_variable = { #used later to determine outcomes, descriptions and ai chance
name = liege_parade_enjoyment
value = 0
}
random_list = { #decide which parade the liege likes by setting a var, used later to determine outcomes, descriptions and ai chance
1 = {
modifier = {
add = 10
scope:visiting_liege = { OR = { highest_skill = martial highest_skill = intrigue } }
}
modifier = {
add = 10
scope:visiting_liege = { OR = { has_lifestyle = martial_lifestyle has_lifestyle = intrigue_lifestyle } }
}
set_variable = {
name = liege_parade_type
value = flag:military_parade
}
}
1 = {
modifier = {
add = 10
scope:visiting_liege = { OR = { highest_skill = diplomacy highest_skill = stewardship } }
}
modifier = {
add = 10
scope:visiting_liege = { OR = { has_lifestyle = diplomacy_lifestyle has_lifestyle = stewardship_lifestyle } }
}
modifier = {
add = 10
scope:visiting_liege.culture != location.county.culture
}
set_variable = {
name = liege_parade_type
value = flag:civil_parade
}
}
1 = {
modifier = {
add = 10
scope:visiting_liege = { highest_skill = learning }
}
modifier = {
add = 10
scope:visiting_liege = { has_lifestyle = learning_lifestyle }
}
modifier = {
add = 10
scope:visiting_liege.faith != location.county.faith
}
modifier = {
add = 10
scope:visiting_liege = { has_trait = zealous }
}
set_variable = {
name = liege_parade_type
value = flag:religious_parade
}
}
}
scope:visiting_liege = { #makes sure that event does not trigger for liege with multiple vassals during the same tour
add_character_flag = {
flag = had_cultural_parade
days = 3650
}
}
}
option = { #pick military parade, set liege enjoyment according to parade type they like
name = cultural_festival.4200.a
if = {
limit = { var:liege_parade_type = flag:military_parade }
custom_tooltip = cultural_festival.4200.tt.liege_likes
change_variable = {
name = liege_parade_enjoyment
add = 2
}
}
else_if = {
limit = { var:liege_parade_type = flag:religious_parade }
custom_tooltip = cultural_festival.4200.tt.liege_indifferent
}
else_if = {
limit = { var:liege_parade_type = flag:civil_parade }
custom_tooltip = cultural_festival.4200.tt.liege_dislikes
change_variable = {
name = liege_parade_enjoyment
add = -2
}
}
set_variable = {
name = parade_type
value = flag:military_parade
}
stress_impact = {
base = minor_stress_impact_loss
brave = minor_stress_impact_loss
craven = minor_stress_impact_gain
}
ai_chance = {
base = 1
modifier = {
add = 10
var:liege_parade_type = flag:military_parade
}
}
}
option = { #pick civil parade, set liege enjoyment according to parade type they like
name = cultural_festival.4200.b
if = {
limit = { var:liege_parade_type = flag:civil_parade }
custom_tooltip = cultural_festival.4200.tt.liege_likes
change_variable = {
name = liege_parade_enjoyment
add = 2
}
}
else_if = {
limit = { var:liege_parade_type = flag:military_parade }
custom_tooltip = cultural_festival.4200.tt.liege_indifferent
}
else_if = {
limit = { var:liege_parade_type = flag:religious_parade }
custom_tooltip = cultural_festival.4200.tt.liege_dislikes
change_variable = {
name = liege_parade_enjoyment
add = -2
}
}
set_variable = {
name = parade_type
value = flag:civil_parade
}
stress_impact = {
base = minor_stress_impact_loss
just = minor_stress_impact_loss
arbitrary = minor_stress_impact_gain
}
ai_chance = {
base = 1
modifier = {
add = 10
var:liege_parade_type = flag:civil_parade
}
}
}
option = { #pick religious parade, set liege enjoyment according to parade type they like
name = cultural_festival.4200.c
if = {
limit = { var:liege_parade_type = flag:religious_parade }
custom_tooltip = cultural_festival.4200.tt.liege_likes
change_variable = {
name = liege_parade_enjoyment
add = 2
}
}
else_if = {
limit = { var:liege_parade_type = flag:civil_parade }
custom_tooltip = cultural_festival.4200.tt.liege_indifferent
}
else_if = {
limit = { var:liege_parade_type = flag:military_parade }
custom_tooltip = cultural_festival.4200.tt.liege_dislikes
change_variable = {
name = liege_parade_enjoyment
add = -2
}
}
set_variable = {
name = parade_type
value = flag:religious_parade
}
stress_impact = {
base = minor_stress_impact_loss
zealous = minor_stress_impact_loss
cynical = minor_stress_impact_gain
}
ai_chance = {
base = 1
modifier = {
add = 10
var:liege_parade_type = flag:religious_parade
}
}
}
after = {
trigger_event = cultural_festival.4201
}
}
cultural_festival.4201 = { #Vassal: Choose the quality of the parade
type = activity_event
title = cultural_festival.4201.t
desc = {
first_valid = {
triggered_desc = {
trigger = { var:parade_type = flag:military_parade }
desc = cultural_festival.4201.desc_military
}
triggered_desc = {
trigger = { var:parade_type = flag:civil_parade }
desc = cultural_festival.4201.desc_civil
}
triggered_desc = {
trigger = { var:parade_type = flag:religious_parade }
desc = cultural_festival.4201.desc_religious
}
}
desc = cultural_festival.4201.desc_end
}
theme = cultural_festival
left_portrait = {
character = root
animation = worry
}
right_portrait = {
character = scope:coordinator_scope
animation = thinking
}
immediate = {
if = { #set proper councillor as the parade coordinator
limit = {
var:parade_type = flag:military_parade
exists = cp:councillor_marshal
}
cp:councillor_marshal = {
save_scope_as = coordinator_scope
}
}
else_if = {
limit = {
var:parade_type = flag:civil_parade
exists = cp:councillor_steward
}
cp:councillor_steward = {
save_scope_as = coordinator_scope
}
}
else_if = {
limit = {
var:parade_type = flag:religious_parade
exists = cp:councillor_court_chaplain
}
cp:councillor_court_chaplain = {
save_scope_as = coordinator_scope
}
}
else = {
random_courtier = {
limit = {
is_available_ai_adult = yes
}
save_scope_as = coordinator_scope
}
}
set_variable = { #used later to determine outcomes and descriptions
name = parade_quality
value = 0
}
}
option = { #make the best parade possible
name = {
trigger = { var:parade_type = flag:military_parade }
text = cultural_festival.4201.a.military
}
name = {
trigger = { var:parade_type = flag:civil_parade }
text = cultural_festival.4201.a.civil
}
name = {
trigger = { var:parade_type = flag:religious_parade }
text = cultural_festival.4201.a.religious
}
save_temporary_scope_value_as = { #value needed to set proper custom tooltip hinting how it will affect your liege
name = liege_parade_enjoyment_value
value = { value = var:liege_parade_enjoyment add = 3 }
}
liege_parade_enjoyment_custom_tt_effect = yes
remove_treasury_or_gold = major_treasury_or_gold_value
change_variable = {
name = parade_quality
add = 3
}
change_variable = {
name = liege_parade_enjoyment
add = var:parade_quality
}
stress_impact = {
arrogant = minor_stress_impact_loss
ambitious = minor_stress_impact_loss
gluttonous = minor_stress_impact_loss
humble = minor_stress_impact_gain
greedy = minor_stress_impact_gain
}
ai_chance = {
base = 1
modifier = {
add = 10
OR = {
has_trait = arrogant
has_trait = ambitious
has_trait = gluttonous
}
}
modifier = {
add = 10
AND = {
has_trait = zealous
var:parade_type = flag:religious_parade
}
}
modifier = {
factor = 0
short_term_treasury_or_gold < major_treasury_or_gold_value
}
}
}
option = { #make an ok parade
name = cultural_festival.4201.b
save_temporary_scope_value_as = { #value needed to set proper custom tooltip hinting how it will affect your liege
name = liege_parade_enjoyment_value
value = { value = var:liege_parade_enjoyment add = 2 }
}
liege_parade_enjoyment_custom_tt_effect = yes
remove_treasury_or_gold = minor_treasury_or_gold_value
change_variable = {
name = parade_quality
add = 2
}
change_variable = {
name = liege_parade_enjoyment
add = var:parade_quality
}
stress_impact = {
temperate = minor_stress_impact_loss
}
ai_chance = {
base = 1
modifier = {
add = 10
has_trait = temperate
}
modifier = {
factor = 0
short_term_treasury_or_gold < minor_treasury_or_gold_value
}
}
}
option = { #make a poor parade
name = cultural_festival.4201.c
save_temporary_scope_value_as = { #value needed to set proper custom tooltip hinting how it will affect your liege
name = liege_parade_enjoyment_value
value = { value = var:liege_parade_enjoyment add = -1 }
}
liege_parade_enjoyment_custom_tt_effect = yes
add_prestige = miniscule_prestige_loss
change_variable = {
name = parade_quality
add = -1
}
change_variable = {
name = liege_parade_enjoyment
add = var:parade_quality
}
stress_impact = {
base = minor_stress_impact_loss
greedy = minor_stress_impact_loss
cynical = minor_stress_impact_loss
humble = minor_stress_impact_loss
ambitious = minor_stress_impact_gain
arrogant = minor_stress_impact_gain
}
ai_chance = {
base = 1
modifier = {
add = 10
OR = {
has_trait = greedy
has_trait = cynical
has_trait = humble
}
}
modifier = {
add = 10
AND = {
has_trait = cynical
var:parade_type = flag:religious_parade
}
}
}
}
after = {
scope:visiting_liege = {
trigger_event = {
id = cultural_festival.4202
days = 1
}
}
}
}
cultural_festival.4202 = { #Liege: Attend the parade and like it or not
type = activity_event
title = cultural_festival.4202.t
desc = {
first_valid = {
triggered_desc = {
trigger = {
scope:stop_host_scope.var:parade_type = flag:military_parade
scope:stop_host_scope.var:parade_quality > 2
}
desc = cultural_festival.4202.desc_military_best
}
triggered_desc = {
trigger = {
scope:stop_host_scope.var:parade_type = flag:military_parade
scope:stop_host_scope.var:parade_quality >= 0
}
desc = cultural_festival.4202.desc_military_good
}
triggered_desc = {
trigger = {
scope:stop_host_scope.var:parade_type = flag:military_parade
scope:stop_host_scope.var:parade_quality < 0
}
desc = cultural_festival.4202.desc_military_worst
}
triggered_desc = {
trigger = {
scope:stop_host_scope.var:parade_type = flag:civil_parade
scope:stop_host_scope.var:parade_quality > 2
}
desc = cultural_festival.4202.desc_civil_best
}
triggered_desc = {
trigger = {
scope:stop_host_scope.var:parade_type = flag:civil_parade
scope:stop_host_scope.var:parade_quality >= 0
}
desc = cultural_festival.4202.desc_civil_good
}
triggered_desc = {
trigger = {
scope:stop_host_scope.var:parade_type = flag:civil_parade
scope:stop_host_scope.var:parade_quality < 0
}
desc = cultural_festival.4202.desc_civil_worst
}
triggered_desc = {
trigger = {
scope:stop_host_scope.var:parade_type = flag:religious_parade
scope:stop_host_scope.var:parade_quality > 2
}
desc = cultural_festival.4202.desc_religious_best
}
triggered_desc = {
trigger = {
scope:stop_host_scope.var:parade_type = flag:religious_parade
scope:stop_host_scope.var:parade_quality >= 0
}
desc = cultural_festival.4202.desc_religious_good
}
triggered_desc = {
trigger = {
scope:stop_host_scope.var:parade_type = flag:religious_parade
scope:stop_host_scope.var:parade_quality < 0
}
desc = cultural_festival.4202.desc_religious_worst
}
}
first_valid = {
triggered_desc = {
trigger = {
scope:stop_host_scope.var:parade_type = flag:religious_parade
scope:stop_host_scope.faith != scope:visiting_liege.faith
scope:stop_host_scope.var:parade_quality >= 0
}
desc = cultural_festival.4202.desc_religious_different_faith_good
}
triggered_desc = {
trigger = {
scope:stop_host_scope.var:parade_type = flag:religious_parade
scope:stop_host_scope.faith = scope:visiting_liege.faith
scope:stop_host_scope.var:parade_quality >= 0
}
desc = cultural_festival.4202.desc_religious_same_faith_good
}
triggered_desc = {
trigger = {
scope:stop_host_scope.var:parade_type = flag:religious_parade
scope:stop_host_scope.faith != scope:visiting_liege.faith
scope:stop_host_scope.var:parade_quality < 0
}
desc = cultural_festival.4202.desc_religious_different_faith_bad
}
triggered_desc = {
trigger = {
scope:stop_host_scope.var:parade_type = flag:religious_parade
scope:stop_host_scope.faith = scope:visiting_liege.faith
scope:stop_host_scope.var:parade_quality < 0
}
desc = cultural_festival.4202.desc_religious_same_faith_bad
}
}
}
theme = cultural_festival
left_portrait = {
character = root
animation = thinking
}
right_portrait = {
character = scope:coordinator_scope
animation = happiness
}
option = { #you enjoy the parade, for ai liege_parade_enjoyment var decides
name = {
trigger = { has_activity_intent = reduce_stress_intent }
text = cultural_festival.4202.a.revelry
}
name = cultural_festival.4202.a
parade_liege_enjoyment_effect = yes
if = {
limit = { has_activity_intent = reduce_stress_intent }
increase_tour_success_effect = { POINTS = 1 }
}
stress_impact = {
base = minor_stress_impact_loss
gregarious = minor_stress_impact_loss
}
ai_chance = {
base = 1
modifier = {
add = 100
scope:stop_host_scope.var:liege_parade_enjoyment >= 0
}
}
}
option = { #you don't enjoy the parade, for ai liege_parade_enjoyment var decides
name = cultural_festival.4202.b
parade_liege_dissatisfaction_effect = yes
stress_impact = {
base = minor_stress_impact_loss
callous = minor_stress_impact_loss
}
ai_chance = {
base = 1
modifier = {
add = 100
scope:stop_host_scope.var:liege_parade_enjoyment < 0
}
modifier = {
factor = 0
has_activity_intent = reduce_stress_intent
}
}
}
after = {
scope:stop_host_scope = {
trigger_event = { id = cultural_festival.4203 days = 1 }
}
}
}
cultural_festival.4203 = { #Vassal: Summary of the parade
type = activity_event
title = cultural_festival.4203.t
desc = {
first_valid = {
triggered_desc = {
trigger = { scope:visiting_liege = { has_character_flag = parade_liege_dissatisfaction_flag } }
desc = cultural_festival.4203.desc_failure
}
desc = cultural_festival.4203.desc_success
}
}
theme = cultural_festival
left_portrait = {
character = root
triggered_animation = {
trigger = { scope:visiting_liege = { has_character_flag = parade_liege_dissatisfaction_flag } }
animation = anger
}
animation = happiness
}
right_portrait = {
character = scope:visiting_liege
triggered_animation = {
trigger = { scope:visiting_liege = { has_character_flag = parade_liege_dissatisfaction_flag } }
animation = disapproval
}
animation = admiration
}
immediate = { #display what was the liege reaction to the parade, based on option chosen in previous event
if = {
limit = {
scope:visiting_liege = {
has_character_flag = parade_liege_dissatisfaction_flag
}
}
show_as_tooltip = {
parade_liege_dissatisfaction_effect = yes
}
}
else = {
show_as_tooltip = {
parade_liege_enjoyment_effect = yes
}
}
}
option = { #effect is determined by previous actions, mainly liege_parade_enjoyment or overide by player
name = {
trigger = { scope:visiting_liege = { NOT = { has_character_flag = parade_liege_dissatisfaction_flag } } }
text = cultural_festival.4203.a.success
}
name = {
trigger = { scope:visiting_liege = { has_character_flag = parade_liege_dissatisfaction_flag } }
text = cultural_festival.4203.a.failure
}
parade_end_effect = yes
if = {
limit = { scope:visiting_liege = { NOT = { has_character_flag = parade_liege_dissatisfaction_flag } } }
stress_impact = {
base = major_stress_impact_loss
}
}
else = {
stress_impact = {
base = minor_stress_impact_loss
}
}
}
after = {
clear_parade_variables_effect = yes
}
}
######################
## Bilateral: Vassal and Liege exchange gifts; later they can decide to check up on them
## 4300-4312
## by Arkadiusz Majewski
######################
scripted_effect create_cultural_artifact_effect = { #create a random artifact to possibly give as a gift
random_list = {
10 = {
create_artifact_weapon_effect = {
OWNER = root
CREATOR = root
SET_WEAPON_TYPE = flag:no
}
}
10 = {
create_artifact_armor_effect = {
OWNER = root
CREATOR = root
SET_ARMOR_TYPE = flag:no
}
}
10 = {
create_artifact_regalia_effect = {
OWNER = root
SMITH = root
}
}
10 = {
create_artifact_crown_effect = {
OWNER = root
SMITH = root
}
}
10 = {
create_artifact_brooch_effect = {
OWNER = root
SMITH = root
}
}
10 = {
create_artifact_book_effect = {
OWNER = root
CREATOR = root
SET_SUBJECT = flag:no
SET_TOPIC = flag:no
}
}
}
scope:newly_created_artifact = {
set_artifact_description = artifact_cultural_gift_desc
}
}
scripted_effect choose_gift_effect = { #used only in tooltip to show the gift receiver what happened
if = {
limit = { exists = $CHOSEN_GIFT$ }
if = {
limit = { $CHOSEN_GIFT$ = flag:gift_existing_artifact }
scope:existing_artifact = {
set_owner = root
}
}
else_if = {
limit = { $CHOSEN_GIFT$ = flag:gift_newly_created_artifact }
scope:newly_created_artifact = {
set_owner = root
}
}
else_if = {
limit = { $CHOSEN_GIFT$ = flag:gift_gold }
$GIFT_GIVER$ = {
pay_short_term_gold = {
target = root
gold = minor_gold_value
}
}
}
}
}
scripted_effect create_giving_gift_memory_effect = { #create a memory of giving a gift
create_character_memory = {
type = gave_cultural_gift_memory
participants = {
gift_receiver = $GIFT_RECEIVER$
}
}
if = {
limit = { exists = scope:new_memory }
scope:new_memory = {
set_variable = {
name = gift_type
value = scope:gifted_artifact
}
if = {
limit = { exists = var:gift_type }
#To prevent 'unused except in loc' errors
}
}
}
}
scripted_effect give_artifact_gift_opinion_effect = {
if = {
limit = { root = scope:visiting_liege }
scope:visiting_liege = {
add_opinion = {
target = scope:stop_host_scope
modifier = gift_artifact_opinion
opinion = 30
}
}
}
else = {
scope:stop_host_scope = {
add_opinion = {
target = scope:visiting_liege
modifier = gift_artifact_opinion
opinion = 30
}
}
}
}
scripted_effect give_gold_gift_opinion_effect = {
if = {
limit = { root = scope:visiting_liege }
scope:visiting_liege = {
add_opinion = {
target = scope:stop_host_scope
modifier = gift_opinion
opinion = 15
}
}
}
else = {
scope:stop_host_scope = {
add_opinion = {
target = scope:visiting_liege
modifier = gift_opinion
opinion = 15
}
}
}
}
scripted_trigger vassal_gift_giving_memory_trigger = { #check if vassal remembers giving liege a gift
has_memory_type = gave_cultural_gift_memory
any_memory_participant = {
this = scope:visiting_liege
}
}
scripted_effect equip_gifted_artifact_effect = { #equip the gift if possible
if = {
limit = { can_equip_artifact = scope:gifted_artifact }
custom_tooltip = cultural_festival.4301.a.tt
scope:gifted_artifact = {
equip_artifact_to_owner_replace = yes
}
}
}
scripted_effect delete_new_artifact_effect = { #destroy newly created artifact if it wasn't picked as a gift
destroy_artifact = scope:newly_created_artifact
}
cultural_festival.4300 = { #Vassal: Decide which gift to give
type = activity_event
title = cultural_festival.4300.t
desc = {
desc = cultural_festival.4300.desc
triggered_desc = {
trigger = { exists = scope:existing_artifact }
desc = cultural_festival.4300.desc_existing_artifact
}
}
theme = cultural_festival
left_portrait = {
character = root
animation = thinking
}
right_portrait = {
character = scope:visiting_liege
animation = boredom
}
artifact = {
trigger = { exists = scope:existing_artifact }
target = scope:existing_artifact
position = lower_left_portrait
}
artifact = {
trigger = { exists = scope:newly_created_artifact }
target = scope:newly_created_artifact
position = lower_center_portrait
}
cooldown = { years = 5 }
trigger = { #check if you have a memory of giving your liege a gift
root = {
NOT = {
any_memory = {
vassal_gift_giving_memory_trigger = yes
}
}
}
}
immediate = {
if = { #look for any insignificant artifact you have and save it as something to gift
limit = {
has_any_artifact = yes
any_character_artifact = {
category = inventory
}
}
random_character_artifact = {
limit = {
category = inventory
NOT = { has_variable = historical_unique_artifact }
}
save_scope_as = existing_artifact
}
}
hidden_effect = { #create new artifact and save it as something to gift
create_cultural_artifact_effect = yes
}
add_character_flag = { #to make sure to not trigger 4310 in the same tour you gave the gift
flag = gave_gift_recently_flag
days = 1825
}
}
option = { #gift an already nonsignificant existing artifact from root inventory
trigger = {
exists = scope:existing_artifact
}
name = cultural_festival.4300.a
scope:existing_artifact = {
set_variable = {
name = suppress_artifact_notifications
value = yes
days = 1
}
set_variable = {
name = gifted_artifact
value = yes
days = 1825
}
set_owner = {
target = scope:visiting_liege
history = {
location = scope:stop_host_scope.location
actor = scope:stop_host_scope
recipient = scope:visiting_liege
type = given
}
}
save_scope_as = gifted_artifact
}
save_scope_value_as = { #used later to determine outcomes and description
name = vassal_chosen_gift
value = flag:gift_existing_artifact
}
create_giving_gift_memory_effect = { GIFT_RECEIVER = scope:visiting_liege } #remember that you gave a gift to liege, used later to trigger a follow up event
show_as_tooltip = {
give_artifact_gift_opinion_effect = yes
}
hidden_effect = { #delete the newly created artifact, because it wasn't gifted away
delete_new_artifact_effect = yes
}
scope:visiting_liege = {
trigger_event = cultural_festival.4301
}
custom_tooltip = cultural_festival.4300.tt
stress_impact = {
compassionate = minor_stress_impact_loss
greedy = minor_stress_impact_loss
}
ai_chance = {
base = 10
}
}
option = { #gift the newly created artifact
name = cultural_festival.4300.b
remove_short_term_gold = minor_gold_value
scope:newly_created_artifact = {
set_variable = {
name = suppress_artifact_notifications
value = yes
days = 1
}
set_variable = {
name = gifted_artifact
value = yes
days = 1825
}
set_owner = {
target = scope:visiting_liege
history = {
location = scope:visiting_liege.location
actor = scope:stop_host_scope
recipient = scope:visiting_liege
type = given
}
}
save_scope_as = gifted_artifact
}
save_scope_value_as = { #used later to determine outcomes and description
name = vassal_chosen_gift
value = flag:gift_newly_created_artifact
}
create_giving_gift_memory_effect = { GIFT_RECEIVER = scope:visiting_liege } #remember that you gave a gift to liege, used later to trigger a follow up event
show_as_tooltip = {
give_artifact_gift_opinion_effect = yes
}
scope:visiting_liege = {
trigger_event = cultural_festival.4301
}
custom_tooltip = cultural_festival.4300.tt
stress_impact = {
generous = minor_stress_impact_loss
greedy = minor_stress_impact_gain
}
ai_chance = {
base = 5
modifier = {
factor = 0
has_trait = greedy
short_term_gold < minor_gold_value
}
}
}
option = { #gift just gold
name = cultural_festival.4300.c
pay_short_term_gold = {
target = scope:visiting_liege
gold = minor_gold_value
}
save_scope_value_as = { #used later to determine outcomes and description
name = vassal_chosen_gift
value = flag:gift_gold
}
show_as_tooltip = {
give_gold_gift_opinion_effect = yes
}
hidden_effect = { #delete the newly created artifact, because it wasn't gifted away
delete_new_artifact_effect = yes
}
scope:visiting_liege = {
trigger_event = cultural_festival.4301
}
custom_tooltip = cultural_festival.4300.tt
stress_impact = {
cynical = minor_stress_impact_loss
generous = major_stress_impact_loss
greedy = major_stress_impact_gain
}
ai_chance = { #this should be the least likely option when player is the gift receiver to ensure the follow up event triggering for them
base = 1
modifier = {
factor = 0
has_trait = greedy
short_term_gold < minor_gold_value
}
}
}
option = { #no, i don't think I will
name = cultural_festival.4300.d
hidden_effect = {
delete_new_artifact_effect = yes
}
stress_impact = {
cynical = major_stress_impact_loss
generous = minor_stress_impact_gain
}
ai_chance = {
base = 1
modifier = {
add = 10
has_trait = cynical
}
}
}
}
cultural_festival.4301 = { #Liege: Get the gift from vassal and decide to keep it or destroy it
type = activity_event
title = cultural_festival.4301.t
desc = {
desc = cultural_festival.4301.desc
first_valid = {
triggered_desc = {
trigger = { scope:vassal_chosen_gift = flag:gift_gold }
desc = cultural_festival.4301.desc_gold
}
desc = cultural_festival.4301.desc_artifact
}
}
theme = cultural_festival
left_portrait = {
character = root
animation = thinking
}
right_portrait = {
character = scope:stop_host_scope
animation = happiness
}
artifact = {
trigger = { exists = scope:gifted_artifact }
target = scope:gifted_artifact
position = lower_center_portrait
}
immediate = { #display root what was the gift
show_as_tooltip = {
choose_gift_effect = {
CHOSEN_GIFT = scope:vassal_chosen_gift
GIFT_GIVER = scope:stop_host_scope
}
}
give_artifact_gift_opinion_effect = yes
}
option = { #keep it, equip it if possible
name = cultural_festival.4301.a
trigger = { NOT = { scope:vassal_chosen_gift = flag:gift_gold } }
equip_gifted_artifact_effect = yes
scope:gifted_artifact = {
set_variable = {
name = received_as_cultural_gift
value = scope:vassal_chosen_gift
}
}
stress_impact = {
trusting = minor_stress_impact_loss
humble = minor_stress_impact_loss
paranoid = minor_stress_impact_gain
arrogant = minor_stress_impact_gain
}
ai_chance = {
base = 1
modifier = {
add = 10
OR = {
has_trait = honest
has_trait = just
}
}
modifier = {
add = 100
OR = {
has_relation_friend = scope:stop_host_scope
has_relation_best_friend = scope:stop_host_scope
has_relation_lover = scope:stop_host_scope
has_relation_soulmate = scope:stop_host_scope
}
}
}
}
option = { #get rid of the gift, quietly
name = cultural_festival.4301.b
trigger = { NOT = { scope:vassal_chosen_gift = flag:gift_gold } }
destroy_artifact = scope:gifted_artifact
add_gold = minor_gold_value
stress_impact = {
trusting = minor_stress_impact_gain
humble = minor_stress_impact_gain
paranoid = major_stress_impact_loss
arrogant = minor_stress_impact_loss
}
ai_chance = {
base = 1
modifier = {
add = 50
has_trait = paranoid
}
modifier = {
add = 10
OR = {
has_trait = deceitful
has_trait = cynical
}
}
modifier = {
add = 100
OR = {
has_relation_rival = scope:stop_host_scope
has_relation_nemesis = scope:stop_host_scope
}
}
}
}
option = { #yay, you got gold!
name = cultural_festival.4301.c
trigger = { scope:vassal_chosen_gift = flag:gift_gold }
give_gold_gift_opinion_effect = yes
stress_impact = {
greedy = major_stress_impact_loss
paranoid = minor_stress_impact_loss
}
ai_chance = { #actually, doesn't matter as it is the only option if you got gifted gold
base = 1
}
}
after = {
trigger_event = cultural_festival.4302
custom_tooltip = cultural_festival.4301.tt
}
}
cultural_festival.4302 = { #Liege: Pick the gift for Vassal, mirror of cultural_festival.4300
type = activity_event
title = cultural_festival.4302.t
desc = {
desc = cultural_festival.4302.desc
triggered_desc = {
trigger = { exists = scope:existing_artifact }
desc = cultural_festival.4302.desc_existing_artifact
}
first_valid = {
triggered_desc = {
trigger = { scope:vassal_chosen_gift = flag:gift_gold }
desc = cultural_festival.4302.desc_gifted_gold
}
desc = cultural_festival.4302.desc_gold
}
}
theme = cultural_festival
left_portrait = {
character = root
animation = thinking
}
right_portrait = {
character = scope:stop_host_scope
animation = happiness
}
artifact = {
trigger = { exists = scope:existing_artifact }
target = scope:existing_artifact
position = lower_left_portrait
}
artifact = {
trigger = { exists = scope:newly_created_artifact }
target = scope:newly_created_artifact
position = lower_center_portrait
}
immediate = {
if = {
limit = {
root = {
has_any_artifact = yes
any_character_artifact = {
category = inventory
NOT = { has_variable = historical_unique_artifact }
NOT = { has_variable = received_as_cultural_gift } #make sure you don't give back the thing you just got
}
}
}
random_character_artifact = {
limit = {
category = inventory
artifact_owner = root
NOT = { has_variable = historical_unique_artifact }
NOT = { has_variable = received_as_cultural_gift }
}
save_scope_as = existing_artifact
}
}
hidden_effect = {
create_cultural_artifact_effect = yes
}
add_character_flag = { #to make sure to not trigger 4310 in the same tour you gave the gift
flag = gave_gift_recently_flag
days = 720
}
}
option = { #gift an already existing nonsignificant artifact from root inventory
trigger = {
exists = scope:existing_artifact
}
name = cultural_festival.4302.a
scope:existing_artifact = {
set_variable = {
name = suppress_artifact_notifications
value = yes
days = 1
}
set_variable = {
name = gifted_artifact
value = yes
days = 1825
}
set_owner = {
target = scope:stop_host_scope
history = {
location = scope:stop_host_scope.location
actor = scope:visiting_liege
recipient = scope:stop_host_scope
type = given
}
}
save_scope_as = gifted_artifact
}
save_scope_value_as = {
name = liege_chosen_gift
value = flag:gift_existing_artifact
}
create_giving_gift_memory_effect = { GIFT_RECEIVER = scope:stop_host_scope }
show_as_tooltip = {
give_artifact_gift_opinion_effect = yes
}
hidden_effect = {
delete_new_artifact_effect = yes
}
scope:stop_host_scope = {
trigger_event = cultural_festival.4303
}
stress_impact = {
compassionate = minor_stress_impact_loss
greedy = minor_stress_impact_loss
}
ai_chance = {
base = 10
}
}
option = { #gift the newly created artifact
name = cultural_festival.4302.b
remove_short_term_gold = minor_gold_value
scope:newly_created_artifact = {
set_variable = {
name = suppress_artifact_notifications
value = yes
days = 1
}
set_variable = {
name = gifted_artifact
value = yes
days = 1825
}
set_owner = {
target = scope:stop_host_scope
history = {
location = scope:stop_host_scope.location
actor = scope:visiting_liege
recipient = scope:stop_host_scope
type = given
}
}
save_scope_as = gifted_artifact
}
save_scope_value_as = {
name = liege_chosen_gift
value = flag:gift_newly_created_artifact
}
create_giving_gift_memory_effect = { GIFT_RECEIVER = scope:stop_host_scope }
show_as_tooltip = {
give_artifact_gift_opinion_effect = yes
}
scope:stop_host_scope = {
trigger_event = cultural_festival.4303
}
stress_impact = {
generous = minor_stress_impact_loss
greedy = minor_stress_impact_gain
}
ai_chance = {
base = 5
modifier = {
factor = 0
has_trait = greedy
short_term_gold < minor_gold_value
}
}
}
option = { #gift just gold
name = cultural_festival.4302.c
pay_short_term_gold = {
target = scope:stop_host_scope
gold = minor_gold_value
}
save_scope_value_as = {
name = liege_chosen_gift
value = flag:gift_gold
}
show_as_tooltip = {
give_gold_gift_opinion_effect = yes
}
hidden_effect = {
delete_new_artifact_effect = yes
}
scope:stop_host_scope = {
trigger_event = cultural_festival.4303
}
stress_impact = {
cynical = minor_stress_impact_loss
generous = major_stress_impact_loss
greedy = major_stress_impact_gain
}
ai_chance = {
base = 1
modifier = {
factor = 0
has_trait = greedy
short_term_gold < minor_gold_value
}
}
}
option = { #no, I don't think I will
name = cultural_festival.4302.d
scope:stop_host_scope = {
send_interface_toast = {
title = cultural_festival.4302.d
left_icon = scope:visiting_liege
add_opinion = {
target = scope:visiting_liege
modifier = rude_opinion
}
}
}
hidden_effect = {
delete_new_artifact_effect = yes
}
stress_impact = {
cynical = major_stress_impact_loss
generous = minor_stress_impact_gain
}
ai_chance = {
base = 1
modifier = {
add = 10
has_trait = cynical
}
}
}
}
cultural_festival.4303 = { #Vassal: Get the gift from liege, mirror of cultural_festival.4301
type = activity_event
title = cultural_festival.4303.t
desc = {
desc = cultural_festival.4303.desc
first_valid = {
triggered_desc = {
trigger = { scope:liege_chosen_gift = flag:gift_gold }
desc = cultural_festival.4303.desc_gold
}
desc = cultural_festival.4303.desc_artifact
}
}
theme = cultural_festival
left_portrait = {
character = root
animation = thinking
}
right_portrait = {
character = scope:visiting_liege
animation = happiness
}
artifact = {
trigger = { exists = scope:gifted_artifact }
target = scope:gifted_artifact
position = lower_center_portrait
}
immediate = {
show_as_tooltip = {
choose_gift_effect = {
CHOSEN_GIFT = scope:liege_chosen_gift
GIFT_GIVER = scope:visiting_liege
}
}
give_artifact_gift_opinion_effect = yes
}
option = {
name = cultural_festival.4303.a
trigger = { NOT = { scope:liege_chosen_gift = flag:gift_gold } }
equip_gifted_artifact_effect = yes
set_variable = {
name = received_as_cultural_gift
value = scope:liege_chosen_gift
}
stress_impact = {
trusting = minor_stress_impact_loss
humble = minor_stress_impact_loss
paranoid = minor_stress_impact_gain
arrogant = minor_stress_impact_gain
}
ai_chance = {
base = 1
modifier = {
add = 10
OR = {
has_trait = honest
has_trait = just
}
}
modifier = {
add = 100
OR = {
has_relation_friend = scope:stop_host_scope
has_relation_best_friend = scope:stop_host_scope
has_relation_lover = scope:stop_host_scope
has_relation_soulmate = scope:stop_host_scope
}
}
}
}
option = {
name = cultural_festival.4303.b
trigger = { NOT = { scope:liege_chosen_gift = flag:gift_gold } }
destroy_artifact = scope:gifted_artifact
add_gold = minor_gold_value
stress_impact = {
trusting = minor_stress_impact_gain
humble = minor_stress_impact_gain
paranoid = major_stress_impact_loss
arrogant = minor_stress_impact_loss
}
ai_chance = {
base = 1
modifier = {
add = 50
has_trait = paranoid
}
modifier = {
add = 10
OR = {
has_trait = deceitful
has_trait = cynical
}
}
modifier = {
add = 100
OR = {
has_relation_rival = scope:stop_host_scope
has_relation_nemesis = scope:stop_host_scope
}
}
}
}
option = {
name = cultural_festival.4303.c
trigger = { scope:liege_chosen_gift = flag:gift_gold }
give_gold_gift_opinion_effect = yes
stress_impact = {
greedy = major_stress_impact_loss
paranoid = minor_stress_impact_loss
}
ai_chance = {
base = 1
}
}
}
scripted_trigger liege_gift_giving_memory_trigger = { #check if liege remembers giving vassal a gift
has_memory_type = gave_cultural_gift_memory
any_memory_participant = {
this = scope:stop_host_scope
}
}
scripted_effect displayed_proper_gift_effect = { #progress towards friend and gain of cultural acceptance if possible
scope:gift_receiver = {
send_interface_toast = {
title = cultural_festival.4311.proper_gift_taost
left_icon = scope:gift_receiver
right_icon = scope:giving_gift_memory_owner
scope:giving_gift_memory_owner = {
progress_towards_friend_effect = {
CHARACTER = scope:gift_receiver
OPINION = 30
REASON = friend_respected_foreign_culture
}
}
scope:visiting_liege = {
increase_tour_success_effect = { POINTS = 1 }
}
if = {
limit = { scope:gift_receiver.culture != scope:giving_gift_memory_owner.culture }
scope:gift_receiver.culture = {
change_cultural_acceptance = {
target = scope:giving_gift_memory_owner.culture
value = major_cultural_acceptance_gain
desc = cultural_acceptance_embraced_festival
}
}
}
}
}
}
scripted_effect displayed_no_gift_effect = { #progress towards rivalry and loss of cultural acceptance if possible
scope:gift_receiver = {
send_interface_toast = {
title = cultural_festival.4311.no_gift_toast
left_icon = scope:gift_receiver
right_icon = scope:giving_gift_memory_owner
scope:giving_gift_memory_owner = {
progress_towards_rival_effect = {
CHARACTER = scope:gift_receiver
OPINION = -30
REASON = rival_abused_subjects_hospitality
}
}
if = {
limit = { scope:gift_receiver.culture != scope:giving_gift_memory_owner.culture }
scope:gift_receiver.culture = {
change_cultural_acceptance = {
target = scope:giving_gift_memory_owner.culture
value = major_cultural_acceptance_loss
desc = cultural_acceptance_embraced_festival
}
}
}
}
}
}
scripted_effect set_var_gift_liege_response_effect = { #sets proper flag for var:gift_liege_response
set_variable = {
name = gift_liege_response
value = $FLAG$
}
}
scripted_effect liege_failed_hook_effect = { #add hook, loyalty trait or prestige if possible
scope:gift_receiver = {
send_interface_toast = {
title = cultural_festival.4311.liege_failed_toast
left_icon = scope:gift_receiver
right_icon = scope:giving_gift_memory_owner
if = {
limit = {
scope:giving_gift_memory_owner = {
can_add_hook = {
target = scope:gift_receiver
type = loyalty_hook
}
}
}
scope:giving_gift_memory_owner = {
add_hook = {
target = scope:gift_receiver
type = loyalty_hook
}
add_prestige = miniscule_prestige_gain
}
}
else = {
if = {
limit = { scope:stop_host_scope = { NOT = { has_trait = loyal } } }
scope:stop_host_scope = {
add_trait = loyal
}
}
add_prestige = medium_prestige_gain
}
scope:visiting_liege = {
if = {
limit = {
involved_activity ?= {
has_activity_option = {
category = special_type
option = tour_type_intimidation
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
}
}
}
}
cultural_festival.4310 = { #Decide if you want to ask to see the gifts
type = activity_event
title = cultural_festival.4310.t
desc = cultural_festival.4310.desc
theme = cultural_festival
left_portrait = {
character = root
animation = thinking
}
right_portrait = {
character = scope:gift_receiver
animation = boredom
}
cooldown = { years = 5 }
trigger = {
OR = {
AND = {
root = scope:visiting_liege
any_memory = {
liege_gift_giving_memory_trigger = yes
}
NOT = { has_character_flag = gave_gift_recently_flag } #to make sure to not trigger in the same tour you gave the gift
}
AND = {
root = scope:stop_host_scope
any_memory = {
vassal_gift_giving_memory_trigger = yes
}
NOT = { has_character_flag = gave_gift_recently_flag } #to make sure to not trigger in the same tour you gave the gift
}
}
}
immediate = {
random_memory = {
limit = {
OR = {
AND = {
root = scope:visiting_liege
liege_gift_giving_memory_trigger = yes
}
AND = {
root = scope:stop_host_scope
vassal_gift_giving_memory_trigger = yes
}
}
}
save_scope_as = giving_gift_memory
}
scope:giving_gift_memory.memory_participant:gift_receiver = { save_scope_as = gift_receiver }
if = {
limit = { exists = scope:giving_gift_memory.var:gift_type }
scope:giving_gift_memory.var:gift_type = { save_scope_as = gifted_artifact }
}
save_scope_as = giving_gift_memory_owner
}
option = { #Where is my gift? Is it safe, is it all right?
name = cultural_festival.4310.a
custom_tooltip = cultural_festival.4310.a.tt
scope:gift_receiver = {
trigger_event = {
id = cultural_festival.4311
days = 1
}
}
stress_impact = {
arrogant = major_stress_impact_loss
paranoid = minor_stress_impact_loss
content = minor_stress_impact_gain
shy = minor_stress_impact_gain
}
ai_chance = {
base = 1
}
}
option = { #Don't ask about it
name = cultural_festival.4310.b
add_piety = miniscule_piety_gain
stress_impact = {
arrogant = major_stress_impact_gain
paranoid = minor_stress_impact_gain
content = minor_stress_impact_loss
shy = minor_stress_impact_loss
}
ai_chance = { #set to 0, because it guarantees trigger of the next event for player
base = 0
}
}
}
cultural_festival.4311 = { #Respond to gift accordingly, if you still have the gifts or not
type = activity_event
title = cultural_festival.4311.t
desc = {
desc = cultural_festival.4311.desc
triggered_desc = {
trigger = { NOT = { exists = scope:old_gift } }
desc = cultural_festival.4311.desc.lost_gift
}
first_valid = {
triggered_desc = {
trigger = { exists = scope:old_gift }
desc = cultural_festival.4311.desc.old_gift
}
triggered_desc = {
trigger = { exists = scope:decoy_gift }
desc = cultural_festival.4311.desc.decoy_gift
}
}
triggered_desc = {
trigger = { OR = { NOT = { exists = scope:decoy_gift } NOT = { exists = scope:old_gift } } }
desc = cultural_festival.4311.desc.no_gift
}
}
theme = cultural_festival
left_portrait = {
character = root
animation = worry
}
right_portrait = {
character = scope:giving_gift_memory_owner
animation = happiness
}
artifact = {
trigger = { exists = scope:old_gift }
target = scope:old_gift
position = lower_center_portrait
}
artifact = {
trigger = { exists = scope:decoy_gift }
target = scope:decoy_gift
position = lower_right_portrait
}
immediate = {
if = {
limit = {
has_any_artifact = yes
any_character_artifact = { has_variable = received_as_cultural_gift }
}
random_character_artifact = {
limit = {
has_variable = received_as_cultural_gift
}
save_scope_as = old_gift
}
}
else_if = {
limit = {
has_any_artifact = yes
}
random_character_artifact = {
save_scope_as = decoy_gift
}
}
}
option = { #show the gift you got, if you still have it around
name = cultural_festival.4311.a
trigger = { exists = scope:old_gift }
show_as_tooltip = {
random_list = {
50 = {
show_chance = no
desc = cultural_festival.4311.a.success
displayed_proper_gift_effect = yes
}
50 = {
show_chance = no
desc = cultural_festival.4311.a.failure
liege_failed_hook_effect = yes
}
}
}
set_var_gift_liege_response_effect = { FLAG = flag:show_real_gift_flag }
stress_impact = {
deceitful = minor_stress_impact_gain
paranoid = minor_stress_impact_gain
honest = minor_stress_impact_loss
}
ai_chance = {
base = 1
modifier = {
add = 10
has_trait = honest
}
modifier = {
add = -10
OR = {
has_trait = deceitful
has_trait = paranoid
}
}
}
}
option = { #show a decoy gift, if you have any other artifact
name = cultural_festival.4311.b
trigger = { exists = scope:decoy_gift }
duel = {
skill = intrigue
target = scope:giving_gift_memory_owner
50 = { #you win
desc = cultural_festival.4311.b.success
compare_modifier = {
value = scope:duel_value
multiplier = 2
}
set_var_gift_liege_response_effect = { FLAG = flag:decoy_gift_succeeded_flag }
show_as_tooltip = {
displayed_proper_gift_effect = yes
}
}
50 = {
desc = cultural_festival.4311.b.failure
compare_modifier = {
value = scope:duel_value
multiplier = -2
}
set_var_gift_liege_response_effect = { FLAG = flag:decoy_gift_failed_flag }
show_as_tooltip = {
displayed_no_gift_effect = yes
}
}
}
stress_impact = {
deceitful = major_stress_impact_loss
cynical = minor_stress_impact_loss
honest = major_stress_impact_gain
}
ai_chance = {
base = 1
modifier = {
add = 10
OR = {
has_trait = deceitful
has_trait = cynical
}
}
modifier = {
add = -10
has_trait = honest
}
}
}
option = { #try to convince that they never gave you anything
name = cultural_festival.4311.c
trigger = { OR = { NOT = { exists = scope:decoy_gift } NOT = { exists = scope:old_gift } } }
duel = {
skill = diplomacy
target = scope:giving_gift_memory_owner
50 = { #you win
desc = cultural_festival.4311.c.success
compare_modifier = {
value = scope:duel_value
multiplier = 2
}
show_as_tooltip = {
displayed_proper_gift_effect = yes
}
set_var_gift_liege_response_effect = { FLAG = flag:no_gift_succeeded_flag }
}
50 = {
desc = cultural_festival.4311.c.failure
compare_modifier = {
value = scope:duel_value
multiplier = -2
}
set_var_gift_liege_response_effect = { FLAG = flag:no_gift_failed_flag }
show_as_tooltip = {
displayed_no_gift_effect = yes
}
}
}
stress_impact = {
stubborn = minor_stress_impact_loss
deceitful = major_stress_impact_loss
cynical = minor_stress_impact_loss
honest = major_stress_impact_gain
}
ai_chance = {
base = 1
modifier = {
add = 10
OR = {
has_trait = deceitful
has_trait = cynical
has_trait = stubborn
}
}
modifier = {
add = -10
has_trait = honest
}
}
}
option = { #tell them you no longer have it
name = cultural_festival.4311.d
trigger = { NOT = { exists = scope:old_gift } }
set_var_gift_liege_response_effect = { FLAG = flag:liege_lost_gift_flag }
show_as_tooltip = {
add_prestige = minor_prestige_loss
}
stress_impact = {
deceitful = minor_stress_impact_gain
honest = major_stress_impact_loss
}
ai_chance = {
base = 1
modifier = {
add = 10
has_trait = honest
}
modifier = {
add = -10
has_trait = deceitful
}
}
}
after = {
scope:giving_gift_memory_owner = {
trigger_event = cultural_festival.4312
}
}
}
cultural_festival.4312 = { #Vassal: Liege shows you a gift, or not
type = activity_event
title = cultural_festival.4312.t
desc = {
desc = cultural_festival.4312.desc
first_valid = {
triggered_desc = {
trigger = { scope:gift_receiver.var:gift_liege_response = flag:decoy_gift_succeeded_flag }
desc = cultural_festival.4312.desc.decoy_gift_succeeded
}
triggered_desc = {
trigger = { scope:gift_receiver.var:gift_liege_response = flag:decoy_gift_failed_flag }
desc = cultural_festival.4312.desc.decoy_gift_failed
}
triggered_desc = {
trigger = { scope:gift_receiver.var:gift_liege_response = flag:no_gift_succeeded_flag }
desc = cultural_festival.4312.desc.no_gift_succeeded
}
triggered_desc = {
trigger = { scope:gift_receiver.var:gift_liege_response = flag:no_gift_failed_flag }
desc = cultural_festival.4312.desc.no_gift_failed
}
triggered_desc = {
trigger = { scope:gift_receiver.var:gift_liege_response = flag:liege_lost_gift_flag }
desc = cultural_festival.4312.desc.liege_lost_gift
}
desc = cultural_festival.4312.desc.show_real_gift_flag
}
}
theme = cultural_festival
left_portrait = {
character = root
triggered_animation = {
trigger = {
OR = {
scope:gift_receiver.var:gift_liege_response = flag:decoy_gift_succeeded_flag
scope:gift_receiver.var:gift_liege_response = flag:no_gift_succeeded_flag
}
}
animation = disbelief
}
triggered_animation = {
trigger = {
OR = {
scope:gift_receiver.var:gift_liege_response = flag:decoy_gift_failed_flag
scope:gift_receiver.var:gift_liege_response = flag:no_gift_failed_flag
}
}
animation = anger
}
triggered_animation = {
trigger = { scope:gift_receiver.var:gift_liege_response = flag:liege_lost_gift_flag }
animation = sadness
}
animation = happiness
}
right_portrait = {
character = scope:gift_receiver
triggered_animation = {
trigger = {
OR = {
scope:gift_receiver.var:gift_liege_response = flag:decoy_gift_succeeded_flag
scope:gift_receiver.var:gift_liege_response = flag:no_gift_succeeded_flag
}
}
animation = schadenfreude
}
triggered_animation = {
trigger = {
OR = {
scope:gift_receiver.var:gift_liege_response = flag:decoy_gift_failed_flag
scope:gift_receiver.var:gift_liege_response = flag:no_gift_failed_flag
}
}
animation = worry
}
triggered_animation = {
trigger = { scope:gift_receiver.var:gift_liege_response = flag:liege_lost_gift_flag }
animation = sadness
}
animation = happiness
}
artifact = {
trigger = { exists = scope:old_gift }
target = scope:old_gift
position = lower_center_portrait
}
artifact = {
trigger = { exists = scope:decoy_gift }
target = scope:decoy_gift
position = lower_right_portrait
}
option = {
trigger = {
OR = {
scope:gift_receiver.var:gift_liege_response = flag:show_real_gift_flag
scope:gift_receiver.var:gift_liege_response = flag:decoy_gift_succeeded_flag
}
}
name = { #you appreciate them holding on to your gift, display only if gift receiver shown you the real gift
trigger = {
exists = scope:old_gift
scope:gift_receiver.var:gift_liege_response = flag:show_real_gift_flag
}
text = cultural_festival.4312.a
}
name = { #you appreciate them holding on to your gift, display only if gift receiver succeed in showing you a decoy
trigger = { scope:gift_receiver.var:gift_liege_response = flag:decoy_gift_succeeded_flag }
text = cultural_festival.4312.a.decoy_success
}
displayed_proper_gift_effect = yes
stress_impact = {
base = minor_stress_impact_loss
compassionate = minor_stress_impact_loss
}
ai_chance = {
base = 10
}
}
option = {
trigger = {
OR = {
scope:gift_receiver.var:gift_liege_response = flag:decoy_gift_succeeded_flag
scope:gift_receiver.var:gift_liege_response = flag:decoy_gift_failed_flag
scope:gift_receiver.var:gift_liege_response = flag:no_gift_succeeded_flag
scope:gift_receiver.var:gift_liege_response = flag:no_gift_failed_flag
scope:gift_receiver.var:gift_liege_response = flag:liege_lost_gift_flag
}
}
name = { #you call their bluff, player only, display only if gift receiver succeed in showing you a decoy
trigger = { scope:gift_receiver.var:gift_liege_response = flag:decoy_gift_succeeded_flag }
text = cultural_festival.4312.b.decoy_success_holup
}
name = { #you're mad that they tried to trick you, display only if gift receiver failed in showing you a decoy
trigger = { scope:gift_receiver.var:gift_liege_response = flag:decoy_gift_failed_flag }
text = cultural_festival.4312.b.decoy_fail
}
name = { #you call their bluff, player only, display only if gift receiver succeed in convincing you about not giving a gift at all
trigger = { scope:gift_receiver.var:gift_liege_response = flag:no_gift_succeeded_flag }
text = cultural_festival.4312.b.nogift_success_holup
}
name = { #you're mad that they tried to trick you, display only if gift receiver failed in convincing you about not giving a gift at all
trigger = { scope:gift_receiver.var:gift_liege_response = flag:no_gift_failed_flag }
text = cultural_festival.4312.b.nogift_fail
}
name = { #you call their bluff, player only, display only if gift receiver said they lost it
trigger = { scope:gift_receiver.var:gift_liege_response = flag:liege_lost_gift_flag }
text = cultural_festival.4312.b.holup
}
displayed_no_gift_effect = yes
stress_impact = {
wrathful = minor_stress_impact_loss
vengeful = minor_stress_impact_loss
just = minor_stress_impact_loss
forgiving = minor_stress_impact_gain
}
ai_chance = {
base = 1
modifier = { #has to be 0 in those cases, so that the tooltips and duel checks for the Player in previous event were telling the truth
factor = 0
OR = {
scope:gift_receiver.var:gift_liege_response = flag:decoy_gift_succeeded_flag
scope:gift_receiver.var:gift_liege_response = flag:no_gift_succeeded_flag
scope:gift_receiver.var:gift_liege_response = flag:liege_lost_gift_flag
}
}
}
}
option = {
trigger = {
OR = {
scope:gift_receiver.var:gift_liege_response = flag:show_real_gift_flag #you want something in return, display only if gift receiver shown you the real gift
scope:gift_receiver.var:gift_liege_response = flag:decoy_gift_failed_flag #you play along, display only if gift receiver failed in showing you a decoy
scope:gift_receiver.var:gift_liege_response = flag:no_gift_failed_flag #you play along, display only if gift receiver failed in convincing you about not giving a gift at all
}
}
name = cultural_festival.4312.c
liege_failed_hook_effect = yes
stress_impact = {
callous = minor_stress_impact_loss
vengeful = minor_stress_impact_loss
content = minor_stress_impact_gain
just = minor_stress_impact_gain
forgiving = minor_stress_impact_gain
}
ai_chance = {
base = 1
modifier = { #has to be 0 in those cases, so that the tooltips and duel checks for the Player in previous event were telling the truth
factor = 0
OR = {
scope:gift_receiver.var:gift_liege_response = flag:decoy_gift_failed_flag
scope:gift_receiver.var:gift_liege_response = flag:no_gift_failed_flag
}
}
}
}
option = {
trigger = {
OR = {
scope:gift_receiver.var:gift_liege_response = flag:no_gift_succeeded_flag
scope:gift_receiver.var:gift_liege_response = flag:liege_lost_gift_flag
}
}
name = { #you are told you never gave them anything, display only if gift receiver succeed in convincing you about not giving a gift at all
trigger = { scope:gift_receiver.var:gift_liege_response = flag:no_gift_succeeded_flag }
text = cultural_festival.4312.d.nogift_success
}
name = { #it's a pity, but it happens, display only if gift receiver said they lost it
trigger = { scope:gift_receiver.var:gift_liege_response = flag:liege_lost_gift_flag }
text = cultural_festival.4312.d
}
scope:gift_receiver = {
send_interface_toast = {
title = cultural_festival.4312.d
left_icon = scope:gift_receiver
right_icon = scope:giving_gift_memory_owner
}
add_prestige = minor_prestige_loss
}
stress_impact = {
wrathful = minor_stress_impact_gain
callous = minor_stress_impact_gain
vengeful = minor_stress_impact_gain
content = minor_stress_impact_loss
just = minor_stress_impact_loss
forgiving = minor_stress_impact_loss
}
ai_chance = {
base = 1
}
}
after = {
if = {
limit = {
exists = scope:gift_receiver.var:gift_liege_response
}
scope:gift_receiver = {
remove_variable = gift_liege_response
}
}
}
}