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

2895 lines
58 KiB
Text

namespace = tour_grounds_events
############################
## Tour Mini-Activity: Tour Grounds
############################
## Liege Events
## 6000-6999
## by Chad Uhl
############################
# tour_grounds_events.6000 - Liege: Orgy with vassal
# tour_grounds_events.6100 - Liege: Visit a Cathedral/Mosque (special building)
# tour_grounds_events.6200 - Liege: Visit some farmlands (buildings)
# tour_grounds_events.6201-4 - Bilateral: Child thief steals your gold in vassal's tradeport (buildings)
# tour_grounds_events.6300 - Liege: Gloryhound Vassal challenges you to a sparring match
#####################################################################################
######################
## Liege Events
## 6000-6999
## by Chad Uhl
######################
scripted_trigger has_multiple_consorts_trigger = {
any_consort = {
count > 2
is_available_ai_adult = yes
}
}
scripted_effect tour_grounds_events_6000_sex_effect = {
if = {
limit = { sex_opposite_of = scope:stop_host_scope }
# Set up the error blocker for cheating sex, because the vassal couple might be monogamous but are consenting to the experiment here.
save_scope_as = ignore_cheating_error_check
had_sex_with_effect = {
CHARACTER = scope:stop_host_scope
PREGNANCY_CHANCE = seduce_pregnancy_chance
}
}
if = {
limit = { sex_opposite_of = scope:orgy_consort_1 }
# Set up the error blocker for cheating sex, because the vassal couple might be monogamous but are consenting to the experiment here.
## Aaaand we set it up again because it gets cleaned up in the effect.
save_scope_as = ignore_cheating_error_check
had_sex_with_effect = {
CHARACTER = scope:orgy_consort_1
PREGNANCY_CHANCE = seduce_pregnancy_chance
}
}
if = {
limit = {
exists = scope:orgy_consort_2
}
if = {
limit = { sex_opposite_of = scope:orgy_consort_2 }
# Set up the error blocker for cheating sex, because the vassal couple might be monogamous but are consenting to the experiment here.
## Aaaand we set it up again because it gets cleaned up in the effect x2.
save_scope_as = ignore_cheating_error_check
had_sex_with_effect = {
CHARACTER = scope:orgy_consort_2
PREGNANCY_CHANCE = seduce_pregnancy_chance
}
}
}
if = {
limit = {
exists = scope:orgy_consort_3
}
if = {
limit = { sex_opposite_of = scope:orgy_consort_3 }
# Set up the error blocker for cheating sex, because the vassal couple might be monogamous but are consenting to the experiment here.
## Aaaand we set it up again because it gets cleaned up in the effect x2.
save_scope_as = ignore_cheating_error_check
had_sex_with_effect = {
CHARACTER = scope:orgy_consort_3
PREGNANCY_CHANCE = seduce_pregnancy_chance
}
}
}
# Progress towards lover
if = {
limit = {
is_attracted_to_gender_of = scope:stop_host_scope
scope:stop_host_scope = { is_attracted_to_gender_of = root }
}
progress_towards_lover_effect = {
CHARACTER = scope:stop_host_scope
REASON = lover_tour_grounds_orgy
OPINION = default_lover_opinion
}
}
if = {
limit = {
is_attracted_to_gender_of = scope:orgy_consort_1
scope:orgy_consort_1 = { is_attracted_to_gender_of = root }
}
progress_towards_lover_effect = {
CHARACTER = scope:orgy_consort_1
REASON = lover_tour_grounds_orgy
OPINION = default_lover_opinion
}
}
if = {
limit = {
exists = scope:orgy_consort_2
is_attracted_to_gender_of = scope:orgy_consort_2
scope:orgy_consort_2 = { is_attracted_to_gender_of = root }
}
progress_towards_lover_effect = {
CHARACTER = scope:orgy_consort_2
REASON = lover_tour_grounds_orgy
OPINION = default_lover_opinion
}
}
if = {
limit = {
exists = scope:orgy_consort_3
is_attracted_to_gender_of = scope:orgy_consort_3
scope:orgy_consort_3 = { is_attracted_to_gender_of = root }
}
progress_towards_lover_effect = {
CHARACTER = scope:orgy_consort_3
REASON = lover_tour_grounds_orgy
OPINION = default_lover_opinion
}
}
}
# You happen upon your vassal and their partner(s) getting steamy and they invite you to join
tour_grounds_events.6000 = {
type = activity_event
title = tour_grounds_events.6000.t
desc = {
desc = tour_grounds_events.6000.desc
first_valid = {
triggered_desc = {
trigger = {
exists = scope:orgy_consort_2
exists = scope:orgy_consort_3
}
desc = tour_grounds_events.6000.desc.three_consorts
}
desc = tour_grounds_events.6000.desc.one_consort
}
desc = tour_grounds_events.6000.desc.outro
}
theme = tour_grounds
override_background = { reference = bedchamber }
left_portrait = {
character = root
animation = stunned
}
center_portrait = {
character = scope:stop_host_scope
animation = wedding_groom_right
}
right_portrait = {
character = scope:orgy_consort_1
animation = happiness
camera = camera_event_very_right
}
lower_center_portrait = {
trigger = { exists = scope:orgy_consort_3 }
character = scope:orgy_consort_3
}
lower_right_portrait = {
trigger = { exists = scope:orgy_consort_2 }
character = scope:orgy_consort_2
}
trigger = {
is_adult = yes
exists = scope:stop_host_scope
scope:stop_host_scope = {
is_ai = yes
is_adult = yes
# Vassal or their primary consort is attracted to liege
OR = {
is_attracted_to_gender_of = root
any_consort = {
is_attracted_to_gender_of = root
}
}
# Vassal has a partner/concubine(s)
any_consort = {
is_available_ai_adult = yes
}
}
# No close family members allowed in sexy time, unless you're already incestuous
trigger_if = {
limit = {
NOT = { is_incestuous_trigger = yes }
trait_is_criminal_in_faith_trigger = { TRAIT = incestuous FAITH = root.faith GENDER_CHARACTER = root }
}
NOT = { is_close_or_extended_family_of = scope:stop_host_scope }
}
NOT = { has_sexuality = asexual }
}
cooldown = { years = 5 }
weight_multiplier = {
base = 1
# weight up if either are deviants
modifier = {
add = 1
is_deviant_trigger = yes
}
modifier = {
add = 1
exists = scope:stop_host_scope
scope:stop_host_scope = {
is_deviant_trigger = yes
}
}
# weight up for the vassal having multiple consorts
modifier = {
add = 1
exists = scope:stop_host_scope
scope:stop_host_scope = {
has_multiple_consorts_trigger = yes
}
}
}
immediate = {
scope:stop_host_scope = {
# if stop host has 3 consorts, we save them all. otherwise, just the one
random_consort = {
save_scope_as = orgy_consort_1
add_character_flag = is_naked
}
if = {
limit = { has_multiple_consorts_trigger = yes }
random_consort = {
limit = {
this != scope:orgy_consort_1
}
save_scope_as = orgy_consort_2
add_character_flag = is_naked
}
random_consort = {
limit = {
NOR = {
this = scope:orgy_consort_1
this = scope:orgy_consort_2
}
}
save_scope_as = orgy_consort_3
add_character_flag = is_naked
}
}
add_character_flag = is_naked
}
}
option = { # Join in on the sexy time
name = {
text = {
first_valid = {
triggered_desc = {
trigger = { is_deviant_trigger = yes }
desc = tour_grounds_events.6000.b
}
desc = tour_grounds_events.6000.a
}
}
}
trigger = { might_cheat_on_every_partner_trigger = yes }
scope:activity = {
add_activity_log_entry = {
key = tourgy_log
tags = { good }
character = scope:visiting_liege
target = scope:stop_host_scope
root = {
tour_grounds_events_6000_sex_effect = yes
}
}
}
stress_impact = {
shy = medium_stress_impact_gain
temperate = medium_stress_impact_gain
chaste = major_stress_impact_gain
gregarious = minor_stress_impact_loss
lustful = major_stress_impact_loss
deviant = medium_stress_impact_loss
}
ai_chance = {
base = 33
ai_value_modifier = {
ai_boldness = 1
ai_sociability = 1
ai_energy = 0.5
}
modifier = {
add = 50
OR = {
has_trait = lustful
has_trait = deviant
}
}
modifier = {
factor = 0
OR = {
has_trait = chaste
has_trait = temperate
has_trait = shy
}
}
}
}
option = { # Refuse sexy time
name = tour_grounds_events.6000.c
stress_impact = {
deviant = major_stress_impact_gain
lustful = major_stress_impact_gain
chaste = minor_stress_impact_loss
}
ai_chance = {
base = 33
modifier = {
add = 30
has_trait = chaste
}
}
}
after = {
scope:stop_host_scope = {
remove_character_flag = is_naked
}
scope:orgy_consort_1 = {
remove_character_flag = is_naked
}
scope:orgy_consort_2 ?= {
remove_character_flag = is_naked
}
scope:orgy_consort_3 ?= {
remove_character_flag = is_naked
}
}
}
scripted_trigger tg_6100_appropriate_loved_one_memory_trigger = {
OR = {
has_memory_type = relative_died
has_memory_type = spouse_died
has_memory_type = friend_died
has_memory_type = soulmate_died
}
any_memory_participant = {
NOR = {
has_relation_rival = root
has_relation_nemesis = root
}
trigger_if = {
limit = {
is_alive = no
exists = killer
}
killer != root
}
}
}
scripted_trigger tg_6100_not_religious_trigger = {
OR = {
has_trait = cynical
any_secret = {
type = secret_non_believer
}
}
}
scripted_trigger tg_6100_location_has_cathedral_trigger = {
OR = {
has_building_or_higher = holy_site_cathedral_01
has_building_or_higher = holy_site_cologne_cathedral_01
has_building_or_higher = holy_site_canterbury_cathedral_01
has_building_or_higher = temple_of_uppsala_01
has_building_or_higher = lund_cathedral_01
has_building_or_higher = notre_dame_01
has_building_or_higher = cluny_abbey_01
has_building_or_higher = beta_giyorgis_01
has_building_or_higher = holy_wisdom_01
has_building_or_higher = duomo_florence_01
has_building_or_higher = wawel_cathedral_01
}
}
scripted_trigger tg_6100_location_has_mosque_trigger = {
OR = {
has_building_or_higher = holy_site_imam_ali_mosque_01
has_building_or_higher = holy_site_great_mosque_of_mecca_01
has_building_or_higher = holy_site_great_mosque_of_cordoba_01
has_building_or_higher = holy_site_great_mosque_of_djenne_01
has_building_or_higher = holy_site_great_mosque_of_samarra_01
has_building_or_higher = holy_site_prophetic_mosque_01
has_building_or_higher = damascus_mosque_01
}
}
# Christian Cathedral / Mosque
tour_grounds_events.6100 = {
type = activity_event
title = tour_grounds_events.6100.t
desc = {
desc = tour_grounds_events.6100.desc.intro
first_valid = {
triggered_desc = {
trigger = {
tg_6100_not_religious_trigger = yes
}
desc = tour_grounds_events.6100.desc.cynical
}
triggered_desc = {
trigger = {
has_trait = zealous
}
desc = tour_grounds_events.6100.desc.zealous
}
desc = tour_grounds_events.6100.desc
}
}
theme = tour_grounds
override_background = { reference = temple }
left_portrait = {
character = root
triggered_animation = {
trigger = {
tg_6100_not_religious_trigger = yes
}
animation = eyeroll
}
triggered_animation = {
trigger = {
has_trait = zealous
}
animation = personality_zealous
}
animation = admiration
}
right_portrait = {
character = scope:stop_host_scope
animation = personality_honorable
}
trigger = {
# check for a christian cathedral special building
location = {
has_special_building = yes
OR = {
tg_6100_location_has_cathedral_trigger = yes
tg_6100_location_has_mosque_trigger = yes
}
}
# check that the host has the right religion
scope:stop_host_scope = {
trigger_if = {
limit = {
location = { tg_6100_location_has_cathedral_trigger = yes }
}
OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion }
}
trigger_if = {
limit = {
location = { tg_6100_location_has_mosque_trigger = yes }
}
religion = religion:islam_religion
}
}
}
cooldown = { years = 5 }
weight_multiplier = {
base = 1
modifier = {
add = 1
scope:stop_host_scope = {
has_trait = zealous
}
}
modifier = {
add = 2
any_memory = {
tg_6100_appropriate_loved_one_memory_trigger = yes
}
}
}
immediate = {
# save scopes for loc
save_scope_as = root_scope
location = { save_scope_as = tour_grounds_event_location }
# if root has a memory of a loved one dying, we pull that out to use in an option
if = {
limit = {
any_memory = {
tg_6100_appropriate_loved_one_memory_trigger = yes
}
}
random_memory = {
limit = { tg_6100_appropriate_loved_one_memory_trigger = yes }
save_scope_as = tour_grounds_6100_beloved_memory
random_memory_participant = {
save_scope_as = tour_grounds_6100_beloved_char
}
}
}
}
option = { # light a candle in memory of a dead loved one
name = tour_grounds_events.6100.a
trigger = {
location = { tg_6100_location_has_cathedral_trigger = yes }
exists = scope:tour_grounds_6100_beloved_memory
}
flavor = tour_grounds_events.6100.a.tt
every_vassal_or_below = {
custom = zealot_approves_of_religious_display
vassal_stance = zealot
add_opinion = {
target = prev
modifier = zealot_approves_of_religious_display_opinion
}
}
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_majesty
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
add_piety = miniscule_piety_gain
stress_impact = {
base = minor_stress_impact_loss
zealous = minor_stress_impact_loss
cynical = medium_stress_impact_gain
}
ai_chance = {
base = 33
ai_value_modifier = {
ai_boldness = 0.5
ai_zeal = 1
}
modifier = {
factor = 0
has_trait = cynical
}
}
}
option = { # pray for a dead loved one
name = tour_grounds_events.6100.b
trigger = {
location = { tg_6100_location_has_mosque_trigger = yes }
exists = scope:tour_grounds_6100_beloved_memory
}
flavor = tour_grounds_events.6100.b.tt
every_vassal_or_below = {
custom = zealot_approves_of_religious_display
vassal_stance = zealot
add_opinion = {
target = prev
modifier = zealot_approves_of_religious_display_opinion
}
}
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_majesty
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
add_piety = miniscule_piety_gain
stress_impact = {
base = minor_stress_impact_loss
zealous = minor_stress_impact_loss
cynical = medium_stress_impact_gain
}
ai_chance = {
base = 33
ai_value_modifier = {
ai_boldness = 0.5
ai_zeal = 1
}
modifier = {
factor = 0
has_trait = cynical
}
}
}
option = { # get a discount on building church holdings
name = tour_grounds_events.6100.c
add_character_modifier = {
modifier = discounted_church_holding_build_cost_modifier
years = 10
}
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_taxation
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
ai_chance = {
base = 33
ai_value_modifier = {
ai_rationality = 0.75
ai_zeal = 0.5
ai_sociability = 0.5
}
modifier = {
factor = 0
has_trait = cynical
}
}
stress_impact = {
cynical = major_stress_impact_gain
}
}
option = { # ignore everything and there's a chance they find out your secret
name = tour_grounds_events.6100.d
trigger = {
tg_6100_not_religious_trigger = yes
}
duel = {
skills = { intrigue learning }
target = scope:stop_host_scope
50 = {
desc = tour_grounds_events.6100.d.success
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
if = {
limit = {
any_secret = {
type = secret_non_believer
}
}
send_interface_toast = {
left_icon = root
right_icon = scope:stop_host_scope
title = tour_grounds_events.6100.d.success
add_character_modifier = {
modifier = played_it_cool_modifier
years = 10
}
}
}
else = {
send_interface_toast = {
left_icon = root
right_icon = scope:stop_host_scope
title = tour_grounds_events.6100.d.success
every_vassal = {
custom = zealot_approves_of_religious_display
vassal_stance = zealot
add_opinion = {
target = prev
modifier = zealot_approves_of_religious_display_opinion
}
}
}
}
}
50 = {
desc = tour_grounds_events.6100.d.failure
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
if = {
limit = {
any_secret = {
type = secret_non_believer
}
}
send_interface_toast = {
left_icon = root
right_icon = scope:stop_host_scope
title = tour_grounds_events.6100.d.failure
random_secret = {
type = secret_non_believer
reveal_to = scope:stop_host_scope
}
}
}
else = {
send_interface_toast = {
left_icon = root
right_icon = scope:stop_host_scope
title = tour_grounds_events.6100.d.failure
every_vassal = {
custom = zealot_disapproves_of_cynicism
vassal_stance = zealot
add_opinion = {
target = prev
modifier = zealot_disapproves_of_cynicism_opinion
}
}
}
}
}
}
stress_impact = {
zealous = medium_stress_impact_gain
fickle = miniscule_stress_impact_loss
}
ai_chance = {
ai_value_modifier = {
ai_rationality = 0.5
ai_zeal = 0.1
}
}
}
}
# Pastures
# Orchards
# Cereal Fields
# Vassal let's it slip that they've had a bountiful harvest
# Checks that you, the liege, have the same building as the one you're seeing in your vassal's province
scripted_trigger tg_6200_does_root_have_matching_building_trigger = {
OR = {
AND = {
root.var:building_focus = flag:pastures
capital_province = { has_building_or_higher = pastures_01 }
}
AND = {
root.var:building_focus = flag:orchard
capital_province = { has_building_or_higher = orchards_01 }
}
AND = {
root.var:building_focus = flag:cereal_fields
capital_province = { has_building_or_higher = cereal_fields_01 }
}
AND = {
root.var:building_focus = flag:hill_farms
capital_province = { has_building_or_higher = hill_farms_01 }
}
AND = {
root.var:building_focus = flag:plantations
capital_province = { has_building_or_higher = plantations_01 }
}
}
}
# If there are multiple valid buildings for the event, pick one to focus on
scripted_effect tg_6200_pick_building_focus_effect = {
random_list = {
1 = {
trigger = {
location.county = {
any_county_province = { has_building_or_higher = pastures_01 }
}
}
set_variable = {
name = building_focus
value = flag:pastures
}
}
1 = {
trigger = {
location.county = {
any_county_province = { has_building_or_higher = orchards_01 }
}
}
set_variable = {
name = building_focus
value = flag:orchard
}
}
1 = {
trigger = {
location.county = {
any_county_province = { has_building_or_higher = cereal_fields_01 }
}
}
set_variable = {
name = building_focus
value = flag:cereal_fields
}
}
1 = {
trigger = {
location.county = {
any_county_province = { has_building_or_higher = hill_farms_01 }
}
}
set_variable = {
name = building_focus
value = flag:hill_farms
}
}
1 = {
trigger = {
location.county = {
any_county_province = { has_building_or_higher = plantations_01 }
}
}
set_variable = {
name = building_focus
value = flag:plantations
}
}
}
}
# Determine the difference in building level between the liege and vassal respectively
scripted_effect tg_6200_determine_building_level_diff_effect = {
if = {
limit = { root.var:building_focus = flag:pastures }
# check vassal building level
root.location = {
switch = {
trigger = has_building
pastures_01 = {
scope:root_scope = {
set_variable = {
name = vassal_building_level
value = 1
}
}
}
pastures_02 = {
scope:root_scope = {
set_variable = {
name = vassal_building_level
value = 2
}
}
}
pastures_03 = {
scope:root_scope = {
set_variable = {
name = vassal_building_level
value = 3
}
}
}
pastures_04 = {
scope:root_scope = {
set_variable = {
name = vassal_building_level
value = 4
}
}
}
pastures_05 = {
scope:root_scope = {
set_variable = {
name = vassal_building_level
value = 5
}
}
}
pastures_06 = {
scope:root_scope = {
set_variable = {
name = vassal_building_level
value = 6
}
}
}
pastures_07 = {
scope:root_scope = {
set_variable = {
name = vassal_building_level
value = 7
}
}
}
pastures_08 = {
scope:root_scope = {
set_variable = {
name = vassal_building_level
value = 8
}
}
}
}
}
# check root building level
root.capital_province = {
switch = {
trigger = has_building
pastures_01 = {
scope:root_scope = {
set_variable = {
name = root_building_level
value = 1
}
}
}
pastures_02 = {
scope:root_scope = {
set_variable = {
name = root_building_level
value = 2
}
}
}
pastures_03 = {
scope:root_scope = {
set_variable = {
name = root_building_level
value = 3
}
}
}
pastures_04 = {
scope:root_scope = {
set_variable = {
name = root_building_level
value = 4
}
}
}
pastures_05 = {
scope:root_scope = {
set_variable = {
name = root_building_level
value = 5
}
}
}
pastures_06 = {
scope:root_scope = {
set_variable = {
name = root_building_level
value = 6
}
}
}
pastures_07 = {
scope:root_scope = {
set_variable = {
name = root_building_level
value = 7
}
}
}
pastures_08 = {
scope:root_scope = {
set_variable = {
name = root_building_level
value = 8
}
}
}
}
}
}
else_if = {
limit = { root.var:building_focus = flag:orchard }
# check vassal building level
root.location = {
switch = {
trigger = has_building
orchards_01 = {
root = {
set_variable = {
name = vassal_building_level
value = 1
}
}
}
orchards_02 = {
root = {
set_variable = {
name = vassal_building_level
value = 2
}
}
}
orchards_03 = {
root = {
set_variable = {
name = vassal_building_level
value = 3
}
}
}
orchards_04 = {
root = {
set_variable = {
name = vassal_building_level
value = 4
}
}
}
orchards_05 = {
root = {
set_variable = {
name = vassal_building_level
value = 5
}
}
}
orchards_06 = {
root = {
set_variable = {
name = vassal_building_level
value = 6
}
}
}
orchards_07 = {
root = {
set_variable = {
name = vassal_building_level
value = 7
}
}
}
orchards_08 = {
root = {
set_variable = {
name = vassal_building_level
value = 8
}
}
}
}
}
# check root building level
root.capital_province = {
switch = {
trigger = has_building
orchards_01 = {
root = {
set_variable = {
name = root_building_level
value = 1
}
}
}
orchards_02 = {
root = {
set_variable = {
name = root_building_level
value = 2
}
}
}
orchards_03 = {
root = {
set_variable = {
name = root_building_level
value = 3
}
}
}
orchards_04 = {
root = {
set_variable = {
name = root_building_level
value = 4
}
}
}
orchards_05 = {
root = {
set_variable = {
name = root_building_level
value = 5
}
}
}
orchards_06 = {
root = {
set_variable = {
name = root_building_level
value = 6
}
}
}
orchards_07 = {
root = {
set_variable = {
name = root_building_level
value = 7
}
}
}
orchards_08 = {
root = {
set_variable = {
name = root_building_level
value = 8
}
}
}
}
}
}
else_if = {
limit = { root.var:building_focus = flag:cereal_fields }
# check vassal building level
root.location = {
switch = {
trigger = has_building
cereal_fields_01 = {
root = {
set_variable = {
name = vassal_building_level
value = 1
}
}
}
cereal_fields_02 = {
root = {
set_variable = {
name = vassal_building_level
value = 2
}
}
}
cereal_fields_03 = {
root = {
set_variable = {
name = vassal_building_level
value = 3
}
}
}
cereal_fields_04 = {
root = {
set_variable = {
name = vassal_building_level
value = 4
}
}
}
cereal_fields_05 = {
root = {
set_variable = {
name = vassal_building_level
value = 5
}
}
}
cereal_fields_06 = {
root = {
set_variable = {
name = vassal_building_level
value = 6
}
}
}
cereal_fields_07 = {
root = {
set_variable = {
name = vassal_building_level
value = 7
}
}
}
cereal_fields_08 = {
root = {
set_variable = {
name = vassal_building_level
value = 8
}
}
}
}
}
# check root building level
root.capital_province = {
switch = {
trigger = has_building
cereal_fields_01 = {
root = {
set_variable = {
name = root_building_level
value = 1
}
}
}
cereal_fields_02 = {
root = {
set_variable = {
name = root_building_level
value = 2
}
}
}
cereal_fields_03 = {
root = {
set_variable = {
name = root_building_level
value = 3
}
}
}
cereal_fields_04 = {
root = {
set_variable = {
name = root_building_level
value = 4
}
}
}
cereal_fields_05 = {
root = {
set_variable = {
name = root_building_level
value = 5
}
}
}
cereal_fields_06 = {
root = {
set_variable = {
name = root_building_level
value = 6
}
}
}
cereal_fields_07 = {
root = {
set_variable = {
name = root_building_level
value = 7
}
}
}
cereal_fields_08 = {
root = {
set_variable = {
name = root_building_level
value = 8
}
}
}
}
}
}
else_if = {
limit = { root.var:building_focus = flag:hill_farms }
# check vassal building level
root.location = {
switch = {
trigger = has_building
hill_farms_01 = {
root = {
set_variable = {
name = vassal_building_level
value = 1
}
}
}
hill_farms_02 = {
root = {
set_variable = {
name = vassal_building_level
value = 2
}
}
}
hill_farms_03 = {
root = {
set_variable = {
name = vassal_building_level
value = 3
}
}
}
hill_farms_04 = {
root = {
set_variable = {
name = vassal_building_level
value = 4
}
}
}
hill_farms_05 = {
root = {
set_variable = {
name = vassal_building_level
value = 5
}
}
}
hill_farms_06 = {
root = {
set_variable = {
name = vassal_building_level
value = 6
}
}
}
hill_farms_07 = {
root = {
set_variable = {
name = vassal_building_level
value = 7
}
}
}
hill_farms_08 = {
root = {
set_variable = {
name = vassal_building_level
value = 8
}
}
}
}
}
# check root building level
root.capital_province = {
switch = {
trigger = has_building
hill_farms_01 = {
root = {
set_variable = {
name = root_building_level
value = 1
}
}
}
hill_farms_02 = {
root = {
set_variable = {
name = root_building_level
value = 2
}
}
}
hill_farms_03 = {
root = {
set_variable = {
name = root_building_level
value = 3
}
}
}
hill_farms_04 = {
root = {
set_variable = {
name = root_building_level
value = 4
}
}
}
hill_farms_05 = {
root = {
set_variable = {
name = root_building_level
value = 5
}
}
}
hill_farms_06 = {
root = {
set_variable = {
name = root_building_level
value = 6
}
}
}
hill_farms_07 = {
root = {
set_variable = {
name = root_building_level
value = 7
}
}
}
hill_farms_08 = {
root = {
set_variable = {
name = root_building_level
value = 8
}
}
}
}
}
}
else_if = {
limit = { root.var:building_focus = flag:plantations }
# check vassal building level
root.location = {
switch = {
trigger = has_building
plantations_01 = {
root = {
set_variable = {
name = vassal_building_level
value = 1
}
}
}
plantations_02 = {
root = {
set_variable = {
name = vassal_building_level
value = 2
}
}
}
plantations_03 = {
root = {
set_variable = {
name = vassal_building_level
value = 3
}
}
}
plantations_04 = {
root = {
set_variable = {
name = vassal_building_level
value = 4
}
}
}
plantations_05 = {
root = {
set_variable = {
name = vassal_building_level
value = 5
}
}
}
plantations_06 = {
root = {
set_variable = {
name = vassal_building_level
value = 6
}
}
}
plantations_07 = {
root = {
set_variable = {
name = vassal_building_level
value = 7
}
}
}
plantations_08 = {
root = {
set_variable = {
name = vassal_building_level
value = 8
}
}
}
}
}
# check root building level
root.capital_province = {
switch = {
trigger = has_building
plantations_01 = {
root = {
set_variable = {
name = root_building_level
value = 1
}
}
}
plantations_02 = {
root = {
set_variable = {
name = root_building_level
value = 2
}
}
}
plantations_03 = {
root = {
set_variable = {
name = root_building_level
value = 3
}
}
}
plantations_04 = {
root = {
set_variable = {
name = root_building_level
value = 4
}
}
}
plantations_05 = {
root = {
set_variable = {
name = root_building_level
value = 5
}
}
}
plantations_06 = {
root = {
set_variable = {
name = root_building_level
value = 6
}
}
}
plantations_07 = {
root = {
set_variable = {
name = root_building_level
value = 7
}
}
}
plantations_08 = {
root = {
set_variable = {
name = root_building_level
value = 8
}
}
}
}
}
}
set_variable = {
name = building_level_diff
value = root.var:root_building_level
}
change_variable = {
name = building_level_diff
divide = root.var:vassal_building_level
}
}
tour_grounds_events.6200 = {
type = activity_event
title = tour_grounds_events.6200.t
desc = {
desc = tour_grounds_events.6200.desc
first_valid = {
triggered_desc = {
trigger = { root.var:building_focus = flag:pastures }
desc = tour_grounds_events.6200.desc.pastures
}
triggered_desc = {
trigger = { root.var:building_focus = flag:orchard }
desc = tour_grounds_events.6200.desc.orchard
}
triggered_desc = {
trigger = { root.var:building_focus = flag:cereal_fields }
desc = tour_grounds_events.6200.desc.cereal_fields
}
triggered_desc = {
trigger = { root.var:building_focus = flag:hill_farms }
desc = tour_grounds_events.6200.desc.hill_farms
}
triggered_desc = {
trigger = { root.var:building_focus = flag:plantations }
desc = tour_grounds_events.6200.desc.plantations
}
}
desc = tour_grounds_events.6200.outro
}
cooldown = { years = 5 }
theme = tour_grounds
override_background = { reference = farmland }
left_portrait = {
character = root
animation = thinking
}
right_portrait = {
character = scope:stop_host_scope
animation = personality_honorable
}
trigger = {
# check for pastures/orchards/cereal fields and that root has a matching building in their capital province
location.county = {
any_county_province = {
OR = {
trigger_if = {
limit = { has_building_or_higher = pastures_01 }
root.capital_province = { has_building_or_higher = pastures_01 }
}
trigger_if = {
limit = { has_building_or_higher = orchards_01 }
root.capital_province = { has_building_or_higher = orchards_01 }
}
trigger_if = {
limit = { has_building_or_higher = cereal_fields_01 }
root.capital_province = { has_building_or_higher = cereal_fields_01 }
}
trigger_if = {
limit = { has_building_or_higher = hill_farms_01 }
root.capital_province = { has_building_or_higher = hill_farms_01 }
}
trigger_if = {
limit = { has_building_or_higher = plantations_01 }
root.capital_province = { has_building_or_higher = plantations_01 }
}
}
}
}
}
weight_multiplier = {
base = 1
}
immediate = {
# save scopes for loc
save_scope_as = root_scope
location.county = {
random_county_province = {
limit = {
OR = {
has_building_or_higher = pastures_01
has_building_or_higher = orchards_01
has_building_or_higher = cereal_fields_01
has_building_or_higher = hill_farms_01
has_building_or_higher = plantations_01
}
}
save_scope_as = tour_grounds_event_location
}
}
capital_province = { save_scope_as = root_capital_scope }
# Pick which building we want to focus on
tg_6200_pick_building_focus_effect = yes
if = {
limit = {
# technically shouldn't be necessary, but prevents errors
exists = root.var:building_focus
# check if root has the right building
tg_6200_does_root_have_matching_building_trigger = yes
}
# determine the difference in their building level
tg_6200_determine_building_level_diff_effect = yes
}
}
option = { # You're pulling in a lot of grain here, time to up the ole tax
name = tour_grounds_events.6200.a
custom_tooltip = tour_grounds_events.6200.a.tt
# You attempt to extort your vassal
scope:stop_host_scope = {
trigger_event = {
id = tour_grounds_events.6201
days = 5
}
}
# decrease opinion with parochial vassals
every_vassal = {
custom = every_parochial_vassal
add_opinion = {
modifier = angry_opinion
opinion = -20
target = root
}
}
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_taxation
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
stress_impact = {
greedy = minor_stress_impact_loss
diligent = minor_stress_impact_loss
content = minor_stress_impact_gain
generous = medium_stress_impact_gain
}
ai_chance = {
base = 33
ai_value_modifier = {
ai_greed = 1
ai_rationality = 0.5
ai_sociability = 0.5
}
modifier = {
add = 20
has_trait = greedy
}
modifier = {
add = -30
OR = {
has_trait = content
has_trait = generous
}
}
}
}
option = { #
name = tour_grounds_events.6200.b
# learn the vassal's secret to success
add_character_modifier = {
modifier = bountiful_harvest_modifier
years = 10
}
if = {
# check if root has the right building
limit = {
has_lifestyle = stewardship_lifestyle
}
add_stewardship_lifestyle_xp = major_lifestyle_xp
}
stress_impact = {
lazy = minor_stress_impact_gain
diligent = minor_stress_impact_loss
}
ai_chance = {
base = 33
ai_value_modifier = {
ai_rationality = 0.8
ai_sociability = 0.8
}
modifier = {
add = 20
has_trait = diligent
}
modifier = {
add = -30
has_trait = lazy
}
}
}
option = { # Be nice and don't do anything
name = tour_grounds_events.6200.c
reverse_add_opinion = {
target = scope:stop_host_scope
modifier = pleased_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 = {
generous = minor_stress_impact_loss
humble = minor_stress_impact_loss
calm = miniscule_stress_impact_loss
}
ai_chance = {
base = 33
ai_value_modifier = {
ai_greed = -0.5
ai_sociability = 0.8
}
}
}
after = {
if = {
limit = { exists = root.var:building_focus }
remove_variable = building_focus
}
if = {
limit = { exists = root.var:vassal_building_level }
remove_variable = vassal_building_level
}
if = {
limit = { exists = root.var:root_building_level }
remove_variable = root_building_level
}
if = {
limit = { exists = root.var:building_level_diff }
remove_variable = root_building_level
}
}
}
# follow-up event for vassal
tour_grounds_events.6201 = {
type = character_event
title = tour_grounds_events.6201.t
desc = tour_grounds_events.6201.desc
theme = tour_grounds
left_portrait = {
character = root
animation = worry
}
right_portrait = {
character = scope:visiting_liege
animation = personality_rational
}
option = { # accept a tax obligation increase
name = tour_grounds_events.6201.a
trigger = { vassal_contract_obligation_level_can_be_increased = feudal_government_taxes }
# Increase vassal's tax obligation
scope:visiting_liege = {
send_interface_toast = {
title = tour_grounds_events.6201.a.tt
left_icon = scope:visiting_liege
right_icon = scope:stop_host_scope
scope:stop_host_scope = {
vassal_contract_increase_obligation_level = feudal_government_taxes
progress_towards_friend_effect = {
REASON = friend_accepted_tax_increase
CHARACTER = scope:visiting_liege
OPINION = default_friend_opinion
}
}
}
}
ai_chance = {
base = 0
}
}
option = { # give your liege the extra profits
name = tour_grounds_events.6201.b
scope:visiting_liege = {
send_interface_toast = {
title = tour_grounds_events.6201.b.tt
left_icon = scope:visiting_liege
right_icon = scope:stop_host_scope
scope:stop_host_scope = {
pay_short_term_gold = {
target = scope:visiting_liege
gold = medium_gold_value
}
progress_towards_friend_effect = {
REASON = friend_split_profits
CHARACTER = scope:visiting_liege
OPINION = default_friend_opinion
}
}
}
}
ai_chance = {
base = 0
}
}
option = { # deny your liege's demand
name = tour_grounds_events.6201.c
add_treasury_or_gold = medium_treasury_or_gold_value
# give imprisonment reason
scope:visiting_liege = {
send_interface_toast = {
title = tour_grounds_events.6201.c.tt
left_icon = scope:visiting_liege
right_icon = scope:stop_host_scope
add_opinion = {
target = scope:stop_host_scope
modifier = embezzled_opinion
}
}
}
ai_chance = {
base = 100
}
}
}
# Tradeport
# Liege: Gold is stolen at Vassal's tradeport
tour_grounds_events.6202 = {
type = activity_event
title = tour_grounds_events.6202.t
desc = tour_grounds_events.6202.desc
theme = tour_grounds
override_background = { reference = docks }
left_portrait = {
character = scope:stop_host_scope
animation = shock
}
right_portrait = {
character = scope:tiny_thief
animation = schadenfreude
}
cooldown = { years = 5 }
trigger = {
location.county = {
any_county_province = {
has_building_or_higher = common_tradeport_01
}
}
}
weight_multiplier = {
base = 1
}
immediate = {
save_scope_as = root_scope
location.county = {
random_county_province = {
limit = { has_building_or_higher = common_tradeport_01 }
save_scope_as = event_location
}
}
# create our tiny little thief to do the thieving
create_character = {
template = child_thief_character
culture = scope:stop_host_scope.culture
faith = scope:stop_host_scope.faith
location = root.location
save_scope_as = tiny_thief
}
# tiny_thief takes your gold!
remove_short_term_gold = medium_gold_value
set_variable = {
name = gold_lost
value = medium_gold_value
}
}
option = { # Fix this, you dumb vassal!
name = tour_grounds_events.6202.a
custom_tooltip = tour_grounds_events.6202.a.tt
random_list = {
1 = {
show_chance = no
desc = tour_grounds_events.6202.a.success
custom_tooltip = tour_grounds_events.6202.b.success
}
1 = {
show_chance = no
desc = tour_grounds_events.6202.a.failure
custom_tooltip = tour_grounds_events.6202.b.failure
}
}
scope:stop_host_scope = {
trigger_event = {
id = tour_grounds_events.6203
days = { 1 5 }
}
}
stress_impact = {
diligent = minor_stress_impact_gain
}
ai_chance = {
base = 33
ai_value_modifier = {
ai_greed = 1
ai_sociability = 0.5
ai_energy = 0.1
ai_vengefulness = 0.5
}
}
}
option = { # Chase after the tiny_thief yourself
name = tour_grounds_events.6202.b
duel = {
skills = { prowess intrigue }
target = scope:tiny_thief
40 = { # You succeed in catching the tiny thief
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
custom_tooltip = tour_grounds_events.6202.b.success
show_as_tooltip = {
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_taxation
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
}
add_character_flag = caught_tiny_thief
trigger_event = {
id = tour_grounds_events.6204
days = { 1 5 }
}
}
60 = { # You fail to catch them and they are lost forever
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
custom_tooltip = tour_grounds_events.6202.b.failure
send_interface_toast = {
left_icon = root
right_icon = scope:tiny_thief
title = tour_grounds_events.6202.b.failure
}
}
}
stress_impact = {
lazy = minor_stress_impact_gain
humble = minor_stress_impact_gain
}
ai_chance = {
base = 33
ai_value_modifier = {
ai_greed = 1
ai_sociability = 0.5
ai_energy = 1
ai_vengefulness = 0.5
}
}
}
option = { # Let tiny_thief go
name = tour_grounds_events.6202.c
add_piety = major_piety_gain
every_vassal_or_below = {
vassal_stance = parochial
custom = every_parochial_vassal
add_opinion = {
modifier = disapproving_opinion
target = root
opinion = -10
}
}
if = {
limit = { exists = root.var:gold_lost }
remove_variable = gold_lost
}
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_majesty
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
stress_impact = {
greedy = medium_stress_impact_gain
forgiving = medium_stress_impact_loss
calm = minor_stress_impact_loss
humble = minor_stress_impact_loss
}
ai_chance = {
base = 33
ai_value_modifier = {
ai_greed = -1
ai_sociability = 0.5
ai_vengefulness = -0.5
}
modifier = {
factor = 0
OR = {
has_trait = greedy
has_trait = vengeful
has_trait = wrathful
}
}
modifier = {
add = 10
has_trait = humble
}
}
}
}
# Vassal: decide what to do about the tiny_thief
tour_grounds_events.6203 = {
type = character_event
title = tour_grounds_events.6203.t
desc = tour_grounds_events.6203.desc
theme = tour_grounds
override_background = { reference = docks }
left_portrait = {
character = scope:visiting_liege
animation = anger
}
right_portrait = {
character = scope:tiny_thief
animation = laugh
}
option = { # Pay your liege their lost gold
name = tour_grounds_events.6203.a
scope:visiting_liege = {
send_interface_toast = {
left_icon = scope:stop_host_scope
right_icon = scope:tiny_thief
title = tour_grounds_events.6203.toast
scope:stop_host_scope = {
pay_short_term_gold = {
target = scope:visiting_liege
gold = scope:visiting_liege.var:gold_lost
}
}
}
}
stress_impact = {
greedy = medium_stress_impact_gain
disloyal = minor_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_greed = -1
ai_sociability = 0.5
ai_energy = -1
ai_vengefulness = 0.5
}
modifier = {
factor = 0
has_trait = greedy
}
}
}
option = { # Chase after the tiny_thief yourself
name = tour_grounds_events.6203.b
duel = {
skills = { prowess intrigue }
target = scope:tiny_thief
40 = {
desc = tour_grounds_events.6202.b.success
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = tour_grounds_events.6202.b.success
left_icon = root
right_icon = scope:tiny_thief
}
scope:visiting_liege = {
trigger_event = {
id = tour_grounds_events.6204
days = { 1 5 }
}
}
}
60 = {
desc = tour_grounds_events.6202.b.failure
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = tour_grounds_events.6202.b.failure
left_icon = root
right_icon = scope:tiny_thief
}
scope:visiting_liege = {
trigger_event = {
id = tour_grounds_events.6205
days = { 1 5 }
}
}
}
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_greed = 1
ai_energy = 1
}
}
}
option = { # ain't my problem
name = tour_grounds_events.6203.c
reverse_add_opinion = {
target = scope:visiting_liege
modifier = disappointed_opinion
opinion = -30
}
scope:visiting_liege = {
trigger_event = {
id = tour_grounds_events.6205
days = { 1 5 }
}
}
ai_chance = {
base = 10
ai_value_modifier = {
ai_energy = -0.5
}
modifier = {
factor = 0
has_trait = ambitious
}
}
}
}
# Liege: tiny_thief is caught (either by vassal or liege themself)
tour_grounds_events.6204 = {
type = activity_event
title = tour_grounds_events.6204.t
desc = {
first_valid = {
triggered_desc = {
trigger = { has_character_flag = caught_tiny_thief }
desc = tour_grounds_events.6204.desc.caught_by_liege
}
desc = tour_grounds_events.6204.desc.caught_by_vassal
}
}
theme = tour_grounds
override_background = { reference = docks }
left_portrait = {
character = scope:stop_host_scope
animation = happiness
}
right_portrait = {
character = scope:tiny_thief
animation = sadness
}
immediate = {
involved_activity = { save_scope_as = current_activity }
}
option = { # Take the gold
name = tour_grounds_events.6204.a
add_gold = root.var:gold_lost
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_taxation
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_greed = 1
}
}
}
option = { # Take the tiny_thief under your wing
name = tour_grounds_events.6204.b
add_courtier = scope:tiny_thief
scope:tiny_thief = {
add_to_activity_without_travel = scope:current_activity
}
current_travel_plan = {
add_companion = scope:tiny_thief
}
if = {
limit = { num_of_relation_ward < 2 }
set_relation_ward = {
target = scope:tiny_thief
reason = ward_tiny_thief
}
scope:tiny_thief = {
set_default_education = yes
}
}
every_vassal_or_below = {
vassal_stance = courtly
custom = every_courtly_vassal
add_opinion = {
modifier = disapproving_opinion
target = root
opinion = -10
}
}
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = tour_type_majesty
}
}
}
increase_tour_success_effect = { POINTS = 1 }
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_sociability = 0.75
ai_energy = 0.75
}
}
}
after = {
if = {
limit = { exists = root.var:gold_lost }
remove_variable = gold_lost
}
if = {
limit = { has_character_flag = caught_tiny_thief }
remove_character_flag = caught_tiny_thief
}
}
}
# Liege responds to vassal failing to catch the tiny_thief
tour_grounds_events.6205 = {
type = activity_event
title = tour_grounds_events.6205.t
desc = tour_grounds_events.6205.desc
theme = tour_grounds
override_background = { reference = docks }
left_portrait = {
character = root
animation = anger
}
right_portrait = {
character = scope:stop_host_scope
animation = sadness
}
lower_center_portrait = {
character = scope:tiny_thief
}
option = { # Demand the gold
name = tour_grounds_events.6205.a
duel = {
skills = { diplomacy }
target = scope:stop_host_scope
60 = {
desc = tour_grounds_events.6205.a.success
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
left_icon = root
right_icon = scope:stop_host_scope
title = tour_grounds_events.6205.a.success
show_as_tooltip = {
scope:stop_host_scope = {
pay_short_term_gold = {
target = scope:visiting_liege
gold = scope:visiting_liege.var:gold_lost
}
}
}
}
hidden_effect = {
scope:stop_host_scope = {
send_interface_toast = {
left_icon = scope:stop_host_scope
right_icon = scope:visiting_liege
title = tour_grounds_events.6205.a.success
pay_short_term_gold = {
target = scope:visiting_liege
gold = scope:visiting_liege.var:gold_lost
}
}
}
}
}
40 = {
desc = tour_grounds_events.6205.a.failure
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
left_icon = root
right_icon = scope:tiny_thief
title = tour_grounds_events.6205.a.failure
add_prestige = minor_prestige_loss
}
}
}
ai_chance = {
base = 33
ai_value_modifier = {
ai_greed = -1
ai_sociability = 0.5
ai_energy = -1
ai_vengefulness = 0.5
}
modifier = {
factor = 0
has_trait = greedy
}
}
}
option = { # Have the vassal whipped
name = tour_grounds_events.6205.b
trigger = {
OR = {
has_trait = sadistic
has_trait = wrathful
dread >= 50
}
}
flavor = tour_grounds_events.6205.b.flavor
scope:stop_host_scope = {
increase_wounds_no_death_effect = { REASON = beaten }
}
add_dread = minor_dread_gain
reverse_add_opinion = {
target = scope:stop_host_scope
modifier = whipped_me_opinion
}
stress_impact = {
sadistic = minor_stress_impact_loss
wrathful = minor_stress_impact_loss
compassionate = minor_stress_impact_gain
}
ai_chance = {
base = 33
ai_value_modifier = {
ai_sociability = -0.5
ai_energy = 0.5
ai_vengefulness = 1
}
modifier = {
factor = 0
has_trait = compassionate
}
modifier = {
add = 30
OR = {
has_trait = wrathful
has_trait = sadistic
}
}
}
}
option = { # Forgive the vassal
name = tour_grounds_events.6205.c
reverse_add_opinion = {
modifier = forgiven_opinion
years = 10
target = scope:stop_host_scope
}
stress_impact = {
base = minor_stress_impact_gain
forgiving = medium_stress_impact_loss
greedy = major_stress_impact_gain
vengeful = medium_stress_impact_gain
calm = minor_stress_impact_loss
sadistic = medium_stress_impact_gain
}
ai_chance = {
base = 33
ai_value_modifier = {
ai_greed = -1
ai_sociability = 0.5
ai_energy = -1
ai_vengefulness = 0.5
}
modifier = {
factor = 0
OR = {
has_trait = greedy
has_trait = wrathful
has_trait = sadistic
}
}
modifier = {
add = 30
has_trait = forgiving
}
}
}
after = {
if = {
limit = { exists = root.var:gold_lost }
remove_variable = gold_lost
}
}
}
# Liege: Vassal challenges you to an educational sparring match
tour_grounds_events.6300 = {
type = activity_event
title = tour_grounds_events.6300.t
desc = tour_grounds_events.6300.desc
theme = tour_grounds
override_background = { reference = army_camp }
left_portrait = {
character = scope:stop_host_scope
animation = personality_bold
}
right_portrait = {
character = scope:target_knight
animation = celebrate_sword
}
lower_center_portrait = {
trigger = { exists = scope:tg_6300_stand_in }
character = scope:tg_6300_stand_in
}
cooldown = { years = 10 }
trigger = {
scope:stop_host_scope = {
trigger_if = {
limit = { is_ai = yes }
has_vassal_stance = glory_hound
}
any_knight = {
is_available_ai_adult = yes
location = root.location
}
}
}
weight_multiplier = {
base = 1
modifier = {
add = 1
current_travel_plan = {
any_entourage_character = {
is_knight = yes
}
}
}
}
immediate = {
save_scope_as = root_scope
location = { save_scope_as = event_location }
# if possible, find a knight in the entourage
if = {
limit = {
current_travel_plan = {
any_entourage_character = {
is_knight = yes
}
}
}
current_travel_plan = {
random_entourage_character = {
limit = { is_knight = yes }
save_scope_as = tg_6300_stand_in
}
}
}
scope:stop_host_scope = {
random_knight = {
limit = { location = root.location }
save_scope_as = target_knight
}
}
scope:target_knight = {
add_character_flag = wear_armor
}
scope:tg_6300_stand_in ?= {
add_character_flag = wear_armor
}
}
option = { # Accept the invitation to spar
name = tour_grounds_events.6300.a
flavor = tour_grounds_events.6300.flavor
duel = {
skills = { prowess martial }
target = scope:target_knight
50 = {
desc = tour_grounds_events.6300.a.success
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
left_icon = root
right_icon = scope:target_knight
title = tour_grounds_events.6300.a.success
# opinion bonus with glory hound vassals
every_vassal_or_below = {
vassal_stance = glory_hound
custom = every_glory_hound_vassal
add_opinion = {
modifier = respect_opinion
target = root
opinion = 20
}
}
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 }
}
}
}
50 = {
desc = tour_grounds_events.6300.a.failure
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
left_icon = root
right_icon = scope:stop_host_scope
title = tour_grounds_events.6300.a.failure
# opinion malus with glory hound vassals
every_vassal_or_below = {
vassal_stance = glory_hound
limit = {
is_ai = yes
}
custom = every_glory_hound_vassal
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -20
}
}
}
}
}
stress_impact = {
craven = medium_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = 1
ai_energy = 1
}
modifier = {
add = 30
has_trait = brave
}
modifier = {
add = -30
has_trait = craven
}
}
}
option = { # Suggest that your knight give a demonstration
name = tour_grounds_events.6300.b
trigger = { exists = scope:tg_6300_stand_in }
scope:tg_6300_stand_in = {
duel = {
skills = { prowess martial }
target = scope:target_knight
50 = {
desc = tour_grounds_events.6300.b.success
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
root = {
send_interface_toast = {
left_icon = root
right_icon = scope:stop_host_scope
title = tour_grounds_events.6300.b.success
# county modifier for winning
location.county = {
add_county_modifier = {
modifier = prowess_demonstration_modifier
years = 30
}
}
}
}
}
50 = {
desc = tour_grounds_events.6300.b.failure
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
root = {
send_interface_toast = {
left_icon = root
right_icon = scope:stop_host_scope
title = tour_grounds_events.6300.b.failure
add_prestige = minor_prestige_loss
}
}
}
}
}
stress_impact = {
craven = minor_stress_impact_loss
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = 0.5
ai_energy = 0.1
}
modifier = {
add = -30
has_trait = brave
}
modifier = {
add = 30
has_trait = craven
}
}
}
option = { # Decline
name = tour_grounds_events.6300.c
every_vassal_or_below = {
vassal_stance = glory_hound
custom = every_glory_hound_vassal
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -10
}
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = -0.4
ai_sociability = -0.3
}
modifier = {
add = -20
has_trait = brave
}
modifier = {
add = 20
has_trait = craven
}
}
}
after = {
scope:target_knight = {
remove_character_flag = wear_armor
}
scope:tg_6300_stand_in ?= {
remove_character_flag = wear_armor
}
}
}