######################## # 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 } }