N3OW_Western_eastern_europe/events/religion_events/local_shrine_events.txt
2026-01-06 14:25:21 +01:00

795 lines
18 KiB
Text

########################
# Rites in Local Shrine
########################
namespace = local_rites
#shrine_location = Where we perform the rites (AKA the destination)
scripted_trigger has_two_local_shrine_options_trigger = {
# Stops after we've found 2 good places for a sacrifice (don't want to overload the player).
calc_true_if = {
amount >= 2
exists = scope:hills_location
exists = scope:mountains_location
exists = scope:temple_holding_location
exists = scope:forest_location
exists = scope:point_of_interest_location
exists = scope:mount_tai_location
}
}
scripted_effect local_shrine_at_location_effect = {
set_variable = {
name = shrine_location
value = scope:$SHRINE$_location
}
scope:$SHRINE$_location = { #to show the location name in the difficulty custom tooltip
save_scope_as = tooltip_loc
}
start_travel_plan = {
destination = var:shrine_location
on_travel_planner_cancel_event = local_rites.10
on_arrival_event = local_rites.2
on_arrival_destinations = all_but_last
}
add_character_modifier = {
modifier = visit_local_shrine_modifier
days = local_shrine_duration
}
add_character_flag = {
flag = local_shrine_rite
years = 1 #This is a fallback, it is also cleared at location
}
}
# If the player exits the travel planning UI, this event fires reseting the decision cooldown and removing variables
local_rites.10 = {
hidden = yes
trigger = {
OR = {
exists = var:shrine_location
has_character_flag = local_shrine_rite
}
}
immediate = {
current_travel_plan ?= { cancel_travel_plan = yes }
remove_decision_cooldown = visit_local_shrine_decision
remove_variable = shrine_location
remove_character_flag = local_shrine_rite
}
}
local_rites.1 = {
type = character_event
title = local_rites.1.t
desc = local_rites.1.desc
theme = faith
override_background = {
reference = throne_room
}
left_portrait = {
character = root
animation = personality_rational
}
immediate = {
# Stop characters from planning multiple activities at once.
add_character_flag = {
flag = planning_an_activity
days = 30
}
capital_barony.title_province = {
save_scope_as = capital_location
}
# Pick out possible locations
# First any Special Building Shrines
# If I am the Emperor of China I go to Mount Tai
if = {
limit = {
#I am the emperor
has_title = title:h_china
#My dynasty did not perform this sacrifice before
dynasty = {
NOT = { has_variable = fengshan_performed }
}
#The Cycle is stable
OR = {
situation:dynastic_cycle = {
situation_current_phase = situation_dynastic_cycle_phase_stability_expansion
}
situation:dynastic_cycle = {
situation_current_phase = situation_dynastic_cycle_phase_stability_advancement
}
}
title:b_xuchang = {
this != root.capital_barony
holder.top_liege = root
}
}
title:b_xuchang = {
title_province = { save_scope_as = mount_tai_location }
}
}
# Everyone else
if = {
limit = {
has_two_local_shrine_options_trigger = no
}
random_sub_realm_barony = {
limit = {
this != root.capital_barony
title_province = {
has_building_with_flag = travel_point_of_interest_religious
}
}
title_province = { save_scope_as = point_of_interest_location }
}
}
#Now we look for Mountains
if = {
limit = {
has_two_local_shrine_options_trigger = no
}
random_sub_realm_barony = {
limit = {
this != root.capital_barony
trigger_if = {
limit = { exists = scope:point_of_interest_location }
title_province != scope:point_of_interest_location
}
title_province = {
OR = {
terrain = mountains
terrain = desert_mountains
}
}
}
title_province = { save_scope_as = mountains_location }
}
}
#Now we look for any Temple Holding
if = {
limit = {
has_two_local_shrine_options_trigger = no
}
random_sub_realm_barony = {
limit = {
this != root.capital_barony
trigger_if = {
limit = { exists = scope:point_of_interest_location }
title_province != scope:point_of_interest_location
}
title_province = {
has_holding_type = church_holding
}
}
title_province = { save_scope_as = temple_holding_location }
}
}
#Now we look for Hills
if = {
limit = {
has_two_local_shrine_options_trigger = no
}
random_sub_realm_barony = {
limit = {
this != root.capital_barony
trigger_if = {
limit = { exists = scope:point_of_interest_location }
title_province != scope:point_of_interest_location
}
title_province = {
OR = {
terrain = hills
terrain = terraced_hills
}
}
}
title_province = { save_scope_as = hills_location }
}
}
#Any Forests?
if = {
limit = {
has_two_local_shrine_options_trigger = no
}
random_sub_realm_barony = {
limit = {
this != root.capital_barony
trigger_if = {
limit = { exists = scope:point_of_interest_location }
title_province != scope:point_of_interest_location
}
title_province = {
OR = {
terrain = forest
terrain = taiga
}
}
}
title_province = { save_scope_as = forest_location }
}
}
#If we found nothing we look to the top realm
if = {
limit = {
NOT = { exists = scope:point_of_interest_location } #Because this is the one we try to save.
has_two_local_shrine_options_trigger = no
}
top_liege = {
random_sub_realm_barony = {
limit = {
this != root.capital_barony
this.kingdom = root.capital_barony.kingdom #If possible we should keep close to where we started
title_province = {
has_building_with_flag = travel_point_of_interest_religious
}
}
alternative_limit = {
this != root.capital_barony
title_province = {
has_building_with_flag = travel_point_of_interest_religious
}
}
title_province = { save_scope_as = point_of_interest_location }
}
}
}
#We also try this a second time for landless vassals.
if = {
limit = {
has_two_local_shrine_options_trigger = no
NOT = { exists = scope:point_of_interest_location }
}
top_liege = {
random_sub_realm_barony = {
limit = {
this != root.capital_barony
this.kingdom = root.capital_barony.kingdom #If possible we should keep close to where we started
title_province = {
has_building_with_flag = travel_point_of_interest_religious
}
}
alternative_limit = {
this != root.capital_barony
title_province = {
has_building_with_flag = travel_point_of_interest_religious
}
}
title_province = { save_scope_as = point_of_interest_location }
}
}
}
#And last but not least we try to save one for adventurers
if = {
limit = {
has_two_local_shrine_options_trigger = no
NOT = { exists = scope:point_of_interest_location }
exists = location.county
}
location.county.holder.top_liege = {
random_sub_realm_barony = {
limit = {
this != root.capital_barony
this.kingdom = root.capital_barony.kingdom #If possible we should keep close to where we started
title_province = {
has_building_with_flag = travel_point_of_interest_religious
}
}
alternative_limit = {
this != root.capital_barony
title_province = {
has_building_with_flag = travel_point_of_interest_religious
}
}
title_province = { save_scope_as = point_of_interest_location }
}
}
}
}
# Option 1: Rituals at home - Low Impact
option = { #This option does not set the flag for being unavailable
name = local_rites.1.home
set_variable = {
name = shrine_location
value = scope:capital_location
}
add_character_modifier = {
modifier = visit_local_shrine_modifier
days = local_shrine_duration
}
scope:capital_location = { #to show the location name in the difficulty custom tooltip
save_scope_as = tooltip_loc
}
custom_tooltip = local_rites.1.home.tt
trigger_event = local_rites.3 #When you sacrifice at home this is instant.
}
# I am the Emperor Headed for Mt Tai
option = {
trigger = {
exists = scope:mount_tai_location
scope:mount_tai_location.barony = title:b_xuchang
}
name = local_rites.1.mount_tai
local_shrine_at_location_effect = { SHRINE = mount_tai }
custom_tooltip = local_rites.1.fengshan.tt
}
# Visit Famous Shrine - High Impact, High Offering Expectation
option = {
trigger = { exists = scope:point_of_interest_location }
name = local_rites.1.major_shrine
local_shrine_at_location_effect = { SHRINE = point_of_interest }
custom_tooltip = local_rites.1.major_shrine.tt
}
# Shrine in the hills. Medium Impact
option = {
trigger = { exists = scope:hills_location }
name = local_rites.1.hills
local_shrine_at_location_effect = { SHRINE = hills }
}
# Shrine in the forest. Medium Impact
option = {
trigger = { exists = scope:forest_location }
name = local_rites.1.forest
local_shrine_at_location_effect = { SHRINE = forest }
}
# Shrine in the mountains. Medium Impact
option = {
trigger = { exists = scope:mountains_location }
name = local_rites.1.mountains
local_shrine_at_location_effect = { SHRINE = mountains }
}
# Shrine in the temple holding - High Impact, High Offerings.
option = {
trigger = { exists = scope:temple_holding_location }
name = local_rites.1.temple_holding
local_shrine_at_location_effect = { SHRINE = temple_holding }
custom_tooltip = local_rites.1.major_shrine.tt
}
# Option 3: Opt-out
option = {
name = local_shrine.optout
flavor = local_shrine.optout.flavor
ai_chance = {
base = 0
}
remove_decision_cooldown = visit_local_shrine_decision
}
after = {
remove_character_flag = planning_an_activity
trigger_event = local_rites.5
}
}
local_rites.5 = {
hidden = yes
immediate = {
hidden_effect = {
random_courtier = { #We want to bring a priest if we can, if not we still want at least one character.
limit = {
is_adult = yes
is_clergy = yes
is_diarch = no
is_travelling = no
}
alternative_limit = {
is_adult = yes
is_diarch = no
is_travelling = no
}
save_scope_as = companion
}
root.current_travel_plan ?= {
add_companion = scope:companion
}
}
}
}
local_rites.2 = {
hidden = yes
immediate = {
send_interface_toast = {
title = local_rites.2.toast
left_icon = root
current_travel_plan = {
delay_travel_plan = { days = local_shrine_duration }
}
}
trigger_event = {
id = local_rites.3
days = local_shrine_duration
}
}
}
local_rites.3 = { #Destination - Making a Sacrifice
type = character_event
title = {
first_valid = {
triggered_desc = {
trigger = {
has_title = title:h_china
var:shrine_location.barony = title:b_xuchang
}
desc = local_rites.3.t.fengshan #Fang Shan
}
triggered_desc = {
trigger = {
OR = {
OR = {
faith = { is_in_family = rf_sinitic }
faith = faith:pundarika
faith = faith:mantrayana
faith = faith:dhyana
faith = faith:sukhavati
faith = faith:avatamsaka
faith = faith:maitreya
faith = faith:vinaya
faith = faith:yogacara
faith = faith:acharya
}
}
}
desc = local_rites.3.t #Sacrificing to Heaven
}
desc = local_rites.3.fallback.t #More Generic Version
}
}
desc = {
first_valid = {
triggered_desc = {
trigger = { scope:at_home = yes }
desc = local_rites.3.desc_at_home
}
triggered_desc = {
trigger = {
has_title = title:h_china
var:shrine_location.barony = title:b_xuchang
}
desc = local_rites.3.desc_mt_tai_huangdi
}
triggered_desc = {
trigger = {
var:shrine_location = {
has_building_with_flag = travel_point_of_interest_religious
}
}
desc = local_rites.3.desc_important_shrine
}
triggered_desc = {
trigger = {
var:shrine_location = {
has_holding_type = church_holding
}
}
desc = local_rites.3.desc_holding_shrine
}
triggered_desc = {
trigger = {
var:shrine_location = {
OR = {
terrain = mountains
terrain = desert_mountains
}
}
}
desc = local_rites.3.desc_mountain_shrine
}
triggered_desc = {
trigger = {
var:shrine_location = {
OR = {
terrain = forest
terrain = taiga
}
}
}
desc = local_rites.3.desc_forest_shrine
}
triggered_desc = {
trigger = {
var:shrine_location = {
terrain = hills
}
}
desc = local_rites.3.desc_hills_shrine
}
}
triggered_desc = {
trigger = {
has_trait = cynical
}
desc = local_rites.3.desc_cynical
}
}
theme = faith
override_background = { #Fengshan
trigger = {
has_title = title:h_china
var:shrine_location.barony = title:b_xuchang
}
reference = mpo_steppe_evening
}
override_background = {
trigger = { scope:at_home = yes }
reference = tgp_temple_asia
}
override_background = {
trigger = {
scope:at_home = no
scope:shrine_location = {
OR = {
has_building_with_flag = travel_point_of_interest_religious
has_holding_type = church_holding
}
}
}
reference = tgp_holysite_asia
}
override_background = {
trigger = {
scope:at_home = no
scope:shrine_location = {
NOR = {
has_building_with_flag = travel_point_of_interest_religious
has_holding_type = church_holding
}
}
}
reference = wilderness_scope
}
left_portrait = {
character = root
animation = personality_zealous
}
right_portrait = {
character = scope:companion
animation = pondering
}
immediate = {
if = { #First we try to get a travel companion
limit = {
current_travel_plan ?= {
any_entourage_character = {
NOT = { this = root }
is_adult = yes
}
}
}
current_travel_plan ?= {
random_entourage_character = {
limit = {
NOT = { this = root }
is_clergy = yes
is_adult = yes
}
alternative_limit = {
NOT = { this = root }
is_adult = yes
}
save_scope_as = companion
}
}
}
else_if = { #If you are travelling without adult companions we get a courtier/follower.
limit = {
any_courtier = {
is_adult = yes
}
}
random_courtier = {
limit = {
is_adult = yes
is_clergy = yes
}
alternative_limit = {
is_adult = yes
}
save_scope_as = companion
}
}
else = { #Your court is somehow also empty. If we get here it is going to be a bit weird. But we shouldn't.
random_pool_character = {
province = root.location
limit = {
is_adult = yes
}
save_scope_as = companion
}
}
if = {
limit = {
NOT = {
exists = var:shrine_location
}
}
set_variable = {
name = shrine_location
value = root.location
}
}
var:shrine_location = {
save_scope_as = shrine_location
save_scope_as = background_wilderness_scope
}
# Are we at home?
if = {
limit = {
exists = capital_province
scope:shrine_location = root.capital_province
}
save_scope_value_as = {
name = at_home
value = yes
}
}
else = {
save_scope_value_as = {
name = at_home
value = no
}
}
#Are we at Mt Tai? Am I the Emperor?
if = {
limit = {
has_title = title:h_china
var:shrine_location.barony = title:b_xuchang
}
hidden_effect = {
dynasty = { set_variable = fengshan_performed }
}
}
}
option = {
name = fengshan_option
trigger = {
has_title = title:h_china
var:shrine_location.barony = title:b_xuchang
}
add_treasury = {
value = major_treasury_value
multiply = -1
}
add_prestige = massive_prestige_loss
add_legitimacy = massive_legitimacy_gain
add_piety = major_piety_gain
}
option = {
name = local_rites.3.pay_gold
trigger = {
scope:at_home = no
NOR = {
has_title = title:h_china
var:shrine_location.barony = title:b_xuchang
}
}
#Pay Gold - Get Piety
switch = {
trigger = exists
scope:hills_location = {
remove_short_term_gold = minor_gold_value
add_piety = medium_piety_gain
}
scope:mountains_location = {
remove_short_term_gold = minor_gold_value
add_piety = medium_piety_gain
}
scope:temple_holding_location = {
remove_short_term_gold = medium_gold_value
add_piety = major_piety_gain
}
scope:forest_location = {
remove_short_term_gold = minor_gold_value
add_piety = medium_piety_gain
}
scope:shrine_location = {
remove_short_term_gold = medium_gold_value
add_piety = major_piety_gain
}
}
}
option = {
name = local_rites.3.pay_prestige
trigger = {
scope:at_home = no
NOR = {
has_title = title:h_china
var:shrine_location.barony = title:b_xuchang
}
}
#Pay Prestige - Get Piety
switch = {
trigger = exists
scope:hills_location = {
add_prestige = minor_prestige_loss
add_piety = medium_piety_gain
}
scope:mountains_location = {
add_prestige = minor_prestige_loss
add_piety = medium_piety_gain
}
scope:temple_holding_location = {
add_prestige = medium_prestige_loss
add_piety = major_piety_gain
}
scope:forest_location = {
add_prestige = minor_prestige_loss
add_piety = medium_piety_gain
}
scope:shrine_location = {
add_prestige = medium_prestige_loss
add_piety = major_piety_gain
}
}
}
option = {
name = local_rites.3.pay_at_home #So be it
trigger = {
scope:at_home = yes
}
#Pay A little Gold - Get Piety
remove_short_term_gold = miniscule_gold_value
add_piety = minor_piety_gain
remove_character_flag = local_shrine_rite
}
after = {
stress_impact = { #Not the main purpose of the trip but the ritual comes with some stress relief
base = minor_stress_impact_loss
zealous = minor_stress_impact_loss
cynical = minor_stress_impact_gain
}
# Run the clean-up event.
if = {
limit = {
scope:at_home = no
}
trigger_event = {
id = local_rites.1000
days = 30
}
}
else = {
remove_variable = shrine_location
}
}
}
local_rites.1000 = {
hidden = yes
immediate = {
send_interface_toast = {
title = religious_decision.0291.toast
left_icon = root
current_travel_plan ?= {
if = {
limit = { is_paused = yes }
resume_travel_plan = yes
}
}
}
remove_variable = shrine_location
remove_character_flag = local_shrine_rite
}
}