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

2726 lines
69 KiB
Text

namespace = fp1_other_decisions
##################################################
# #Religious Events
# 0001 - 0020 Gruesome Festivals - hold a mighty sacrifice dedicated to your divinities.
# 0021 - 0040 GF Consequences - events resulting from GFs, e.g., the world freaking out at the sacrifice of a HoF.
# 0041 - 0060 Unreserved
# 0061 - 0080 GF Maintenance Events - invalidation events & Chief Sacrifice resets.
#
# 0101 - 0120 Stele Setup Events - select type & location.
##################################################
##################################################
# Gruesome Festivals
# by Ewan Cowhig Croft
# 0001 - 0020
##################################################
# Human Sacrifice will be referred to as HumSac throughout. I make no apologies for whatever you envision as a result.
# Clean up declining guest list: we track this separately, since we don't always want to fire it at the same time.
scripted_effect gruesome_sacrifices_clean_up_declining_guests_effect = {
#Shouldn't ever need to be more complicated than this, but might be.
clear_variable_list = gf_guests_rejecting_invite_list
}
scripted_trigger sacrifice_method_hang_n_fang_trigger = {
scope:activity.var:gf_faith = {
religion = religion:germanic_religion
has_doctrine_parameter = cannibalism_legal
}
}
scripted_trigger sacrifice_method_eat_em_trigger = {
scope:activity.var:gf_faith = { has_doctrine_parameter = cannibalism_legal }
}
scripted_trigger sacrifice_method_hang_em_trigger = {
scope:activity.var:gf_faith.religion = religion:germanic_religion
}
scripted_trigger gruesome_festivals_available_impressable_nobles = {
highest_held_title_tier >= tier_county
# Exempt priests, who have their own option.
NOT = { government_has_flag = government_is_theocracy }
}
scripted_trigger gruesome_festivals_available_impressable_clergy = {
highest_held_title_tier >= tier_county
government_has_flag = government_is_theocracy
}
scripted_trigger dislikes_humsac_trigger = {
NOR = {
has_doctrine_parameter = flower_war_cb_active
has_doctrine_parameter = human_sacrifice_active
has_doctrine_parameter = gruesome_festivals_active
}
}
scripted_effect gruesome_festivals_blotter_opinion_gain_of_guests_effect = {
reverse_add_opinion = {
modifier = pleased_opinion
target = scope:blotter
opinion = 30
}
}
# Let the sacrifice begin!
fp1_other_decisions.0003 = {
type = activity_event
title = fp1_other_decisions.0003.t
desc = {
# How big is the whole affair?
first_valid = {
triggered_desc = {
trigger = { scope:activity.var:blot_scale = flag:small }
desc = fp1_other_decisions.0003.desc.intro.small
}
triggered_desc = {
trigger = { scope:activity.var:blot_scale = flag:medium }
desc = fp1_other_decisions.0003.desc.intro.medium
}
triggered_desc = {
trigger = { scope:activity.var:blot_scale = flag:large }
desc = fp1_other_decisions.0003.desc.intro.large
}
}
# What's on the menu?
first_valid = {
# Adequate animal sacrifice.
triggered_desc = {
trigger = { scope:activity.var:blot_sacrifice = flag:animals_regular }
desc = fp1_other_decisions.0003.desc.animals.regular
}
# Magnificent animal sacrifice.
triggered_desc = {
trigger = { scope:activity.var:blot_sacrifice = flag:animals_magnificent }
desc = fp1_other_decisions.0003.desc.animals.magnificent
}
# Adequate HumSac, sans chief sacrifice.
triggered_desc = {
trigger = {
scope:activity.var:blot_sacrifice = flag:humans_regular
NOT = { exists = scope:unlucky_guest }
}
desc = fp1_other_decisions.0003.desc.humans.regular.sans_chief
}
# Magnificent HumSac, sans chief sacrifice.
triggered_desc = {
trigger = {
scope:activity.var:blot_sacrifice = flag:humans_magnificent
NOT = { exists = scope:unlucky_guest }
}
desc = fp1_other_decisions.0003.desc.humans.magnificent.sans_chief
}
# Adequate HumSac, plus chief sacrifice.
triggered_desc = {
trigger = {
scope:activity.var:blot_sacrifice = flag:humans_regular
exists = scope:unlucky_guest
}
desc = fp1_other_decisions.0003.desc.humans.regular.plus_chief
}
# Magnificent HumSac, plus chief sacrifice.
triggered_desc = {
trigger = {
scope:activity.var:blot_sacrifice = flag:humans_magnificent
exists = scope:unlucky_guest
}
desc = fp1_other_decisions.0003.desc.humans.magnificent.plus_chief
}
}
# How is it getting to the menu?
## Named sacrifice is present.
triggered_desc = {
trigger = { exists = scope:unlucky_guest }
desc = {
first_valid = {
# Norse pagans cannibals hang their sacrifices, *then* eat them.
triggered_desc = {
trigger = { sacrifice_method_hang_n_fang_trigger = yes }
desc = fp1_other_decisions.0003.desc.sacrifice.named.norse_cannibals
}
# Cannibals execute them, then eat them them.
triggered_desc = {
trigger = { sacrifice_method_eat_em_trigger = yes }
desc = fp1_other_decisions.0003.desc.sacrifice.named.cannibals
}
# Norse pagans hang their sacrifices.
triggered_desc = {
trigger = { sacrifice_method_hang_em_trigger = yes }
desc = fp1_other_decisions.0003.desc.sacrifice.named.norse
}
# Fallback: disembowl the sacrifice.
desc = fp1_other_decisions.0003.desc.sacrifice.named.fallback
}
}
}
## Humans are present.
triggered_desc = {
trigger = {
NOT = { exists = scope:unlucky_guest }
OR = {
scope:activity.var:blot_sacrifice = flag:humans_regular
scope:activity.var:blot_sacrifice = flag:humans_magnificent
}
}
desc = {
first_valid = {
# Norse pagans cannibals hang their sacrifices, *then* eat them.
triggered_desc = {
trigger = { sacrifice_method_hang_n_fang_trigger = yes }
desc = fp1_other_decisions.0003.desc.sacrifice.unnamed.norse_cannibals
}
# Cannibals execute them, then eat them them.
triggered_desc = {
trigger = { sacrifice_method_eat_em_trigger = yes }
desc = fp1_other_decisions.0003.desc.sacrifice.unnamed.cannibals
}
# Norse pagans hang their sacrifices.
triggered_desc = {
trigger = { sacrifice_method_hang_em_trigger = yes }
desc = fp1_other_decisions.0003.desc.sacrifice.unnamed.norse
}
# Fallback: disembowl the sacrifice.
desc = fp1_other_decisions.0003.desc.sacrifice.unnamed.fallback
}
}
}
## Only animal sacrifices.
triggered_desc = {
trigger = {
OR = {
scope:activity.var:blot_sacrifice = flag:animals_regular
scope:activity.var:blot_sacrifice = flag:animals_magnificent
}
}
desc = {
first_valid = {
# No special Norse-cannibal or cannibal variants for animals, as they're just animals.
# Norse pagans hang their sacrifices.
triggered_desc = {
trigger = { sacrifice_method_hang_em_trigger = yes }
desc = fp1_other_decisions.0003.desc.sacrifice.animal.norse
}
# Fallback: disembowl the sacrifice.
desc = fp1_other_decisions.0003.desc.sacrifice.animal.fallback
}
}
}
# And what's your basic take on affairs?
first_valid = {
# If you don't share the faith, then this is a political ceremony.
triggered_desc = {
trigger = {
faith != scope:gf_faith
}
desc = fp1_other_decisions.0003.desc.outro.political
}
# Otherwise, you're faithful, and it's not.
desc = fp1_other_decisions.0003.desc.outro.faithful
}
}
theme = party
left_portrait = {
character = scope:blotter
animation = personality_rational
}
right_portrait = {
character = scope:unlucky_guest
animation = fear
}
override_background = { reference = temple }
trigger = {
# DLC check.
has_fp1_dlc_trigger = yes
# Generic can-continue check.
#gruesome_sacrifices_grand_blot_can_continue_trigger = yes
# Already-started can-continue check.
#gruesome_sacrifices_grand_blot_in_progress_trigger = yes
}
on_trigger_fail = {
# # If you have a prisoner marked for sacrifice, relieve them.
# every_prisoner = {
# limit = { has_character_modifier = gruesome_festivals_designated_sacrifice_fp1_modifier }
# designate_gruesome_festivals_sacrifice_modifier_removed_effect = { DESIGNATOR = scope:blotter }
# }
}
immediate = {
involved_activity = { save_scope_as = activity }
# Get the party (audibly) started.
play_music_cue = "mx_cue_banquet"
# Is it somebody specific's death day?
if = {
limit = {
# We don't actually need to check these scopes, but it's a convenient early out if your dungeon is huge for some reason.
OR = {
scope:activity.var:blot_sacrifice = flag:humans_regular
scope:activity.var:blot_sacrifice = flag:humans_magnificent
}
any_prisoner = { has_character_modifier = gruesome_festivals_designated_sacrifice_fp1_modifier }
}
# Ahhh, it is! Nab 'em for the murderising & calculate piety to be gained.
random_prisoner = {
limit = { has_character_modifier = gruesome_festivals_designated_sacrifice_fp1_modifier }
# Once for the portrait.
save_scope_as = unlucky_guest
# And once for loc.
save_scope_as = sacrifice
#To give accurate death notifications
add_character_flag = {
flag = is_currently_being_sacrificed
days = 1
}
}
}
# If someone is dying but we don't care who, generate a dummy sacrifice.
else_if = {
limit = {
NOT = { exists = scope:unlucky_guest }
OR = {
scope:activity.var:blot_sacrifice = flag:humans_regular
scope:activity.var:blot_sacrifice = flag:humans_magnificent
}
}
random_dummy_gender_soldier_effect = { SCOPE_NAME = sacrifice }
}
# Take care of happy subjects.
## Build a list of affected happy subjects.
### Small first.
if = {
limit = { scope:activity.var:blot_scale = flag:small }
# Nab all courtiers & guests.
every_courtier_or_guest = {
limit = { faith = scope:gf_faith }
add_to_list = happified_character_subjects_list
}
}
### Then try a medium list.
else_if = {
limit = { scope:activity.var:blot_scale = flag:medium }
# Nab all courtiers & guests.
every_courtier_or_guest = {
limit = { faith = scope:gf_faith }
add_to_list = happified_character_subjects_list
}
# Also nab all barons in your domain.
every_vassal = {
limit = {
highest_held_title_tier = tier_barony
faith = scope:gf_faith
}
add_to_list = happified_character_subjects_list
}
# Nab your domain titles.
every_held_title = {
title_tier = county
limit = {
is_landless_type_title = no
faith = scope:gf_faith
}
add_to_list = happified_title_subjects_list
}
}
### Finally, try a large list.
else_if = {
limit = { scope:activity.var:blot_scale = flag:large }
# Nab all courtiers & guests.
every_courtier_or_guest = {
limit = { faith = scope:gf_faith }
add_to_list = happified_character_subjects_list
}
# Also nab all vassals and sub-vassals.
every_vassal_or_below = {
limit = { faith = scope:gf_faith }
add_to_list = happified_character_subjects_list
}
# Nab all sub-realm titles.
every_sub_realm_county = {
limit = { faith = scope:gf_faith }
add_to_list = happified_title_subjects_list
}
}
### Aaaand remove anyone who spurned the invitation explicitly.
if = {
limit = {
has_variable_list = gf_guests_rejecting_invite_list
any_in_list = {
variable = gf_guests_rejecting_invite_list
count >= 1
# Account for people who might have converted in the meanwhilst.
faith = scope:gf_faith
}
}
every_in_list = {
variable = gf_guests_rejecting_invite_list
# TIT-25457
remove_from_list = happified_title_subjects_list
}
}
# Set up var:gf_faith for custom loc to work; not used in strictly every permutation, but doesn't really need an if gate on it.
set_variable = {
name = gf_faith
value = scope:gf_faith
}
scope:activity = {
add_activity_log_entry = {
key = gruesome_festival_immediate_log
score = 1000
show_in_conclusion = yes
character = root
# Piety based on value calculated from the selected activity option
activity_host = {
if = {
limit = { exists = var:gf_piety_value }
add_piety = var:gf_piety_value
remove_variable = gf_piety_value
}
}
## Big RIP, scope:unlucky_guest.
if = {
limit = { exists = scope:unlucky_guest }
# Sort opinions and kinslaying.
add_kinslayer_trait_or_nothing_effect = { VICTIM = scope:unlucky_guest}
execute_opinion_effect = {
VICTIM = scope:unlucky_guest
EXECUTIONER = scope:blotter
}
# Are you HumSac'ing the HoF of a faith that doesn't practice HumSac?
## We hide this, since it's too late for you to do anything about now and it's more fun/terrifying to find out about it *after* the sacrifice.
hidden_effect = {
humsacd_a_hof_effect = {
SACRIFICER = scope:blotter
SACRIFICED_HOF = scope:unlucky_guest
}
}
## And are you actually humsac'ing your *OWN* HoF?
if = {
limit = { scope:blotter.faith.religious_head = scope:unlucky_guest }
# Inform players that they're an abysmal, abysmal faith adherent.
every_player = {
limit = {
this != scope:blotter
faith = scope:unlucky_guest.faith
}
trigger_event = fp1_other_decisions.0023
}
# Update scope:blotter's HumSac'd HoFs kill tally manually, since we're not going through the usual effect.
add_to_variable_list = {
name = humsacd_hofs
target = scope:unlucky_guest.faith
}
# And tell scope:blotter they dun goofed.
trigger_event = {
id = fp1_other_decisions.0024
# We give it a day's delay, since they _might_ have taken a conversion option in the event itself, in which case the follow-up event is invalid.
days = 1
}
}
# How exactly do they die?
scope:unlucky_guest = {
# Cannibalist Germanic pagans will hang them, then eat them.
trigger_event = fp1_other_decisions.1000
if = {
limit = { sacrifice_method_hang_n_fang_trigger = yes }
death = {
killer = scope:blotter
death_reason = death_ritually_hung_then_eaten
}
}
# All other Germanic pagans will hang them.
else_if = {
limit = { sacrifice_method_eat_em_trigger = yes }
death = {
killer = scope:blotter
death_reason = death_ritually_eaten
}
}
# All other cannibals will just eat them.
else_if = {
limit = { sacrifice_method_hang_em_trigger = yes }
death = {
killer = scope:blotter
death_reason = death_ritually_hung
}
}
# Fallback deaths go here; variants should be added above this point.
else = {
death = {
killer = scope:blotter
death_reason = death_sacrificed_to_gods
}
}
}
}
## Naturally, if appropriate, you become a cannibal.
activity_host = {
if = {
limit = {
OR = {
scope:activity.var:blot_sacrifice = flag:humans_regular
scope:activity.var:blot_sacrifice = flag:humans_magnificent
}
scope:gf_faith = { has_doctrine_parameter = cannibalism_legal }
NOT = { has_trait = cannibal }
}
add_trait = cannibal
}
}
## Happify them appropriately.
### First we do characters.
if = {
limit = {
any_in_list = {
list = happified_character_subjects_list
count >= 1
}
}
every_in_list = {
list = happified_character_subjects_list
custom = fp1_other_decisions.0003.happy_characters_list
add_opinion = {
target = scope:blotter
modifier = fp1_held_grand_sacrifice_opinion
}
# And gain some opinion back from scope:blotter for turning up.
hidden_effect = { gruesome_festivals_blotter_opinion_gain_of_guests_effect = yes }
}
}
### Then we do titles.
if = {
limit = {
any_in_list = {
list = happified_title_subjects_list
count >= 1
}
}
every_in_list = {
list = happified_title_subjects_list
custom = fp1_other_decisions.0003.happy_titles_list
add_county_modifier = {
modifier = held_grand_sacrifice_fp1_modifier
years = 7
}
}
}
# Take care of unhappy subjects.
## Is building a list of unhappy subjects necessary?
activity_host = {
if = {
limit = {
OR = {
scope:activity.var:blot_sacrifice = flag:humans_regular
scope:activity.var:blot_sacrifice = flag:humans_magnificent
}
}
# If so, then we build one.
## Grabbing all sub-realm characters who dislike HumSac.
every_courtier_or_guest = {
limit = {
faith = { dislikes_humsac_trigger = yes }
}
add_to_list = unhappified_character_subjects_list
}
every_vassal_or_below = {
limit = {
faith = { dislikes_humsac_trigger = yes }
}
add_to_list = unhappified_character_subjects_list
}
## Then all sub-realm counties.
every_sub_realm_county = {
limit = {
faith = { dislikes_humsac_trigger = yes }
}
add_to_list = unhappified_title_subjects_list
}
# Before unhappifying them to taste.
## Again, first characters.
if = {
limit = {
any_in_list = {
list = unhappified_character_subjects_list
count >= 1
}
}
every_in_list = {
list = unhappified_character_subjects_list
custom = fp1_other_decisions.0003.unhappy_characters_list
add_opinion = {
target = scope:blotter
modifier = fp1_held_human_sacrifice_opinion
}
}
}
## Then counties.
if = {
limit = {
any_in_list = {
list = unhappified_title_subjects_list
count >= 1
}
}
every_in_list = {
list = unhappified_title_subjects_list
custom = fp1_other_decisions.0003.unhappy_titles_list
add_county_modifier = {
modifier = held_human_sacrifice_fp1_modifier
years = 7
}
}
# Flag this character as having upset people.
set_variable = {
name = offended_counties_with_humsac
value = yes
years = 7
}
}
}
}
}
}
# Cannibalism cleanup.
## Specifically, we want every ranking guest who might have gotten some human meat reserved to become a cannibal. We do this later in the block so that we've already built a solid list of invited vassals.
if = {
limit = {
OR = {
scope:activity.var:blot_sacrifice = flag:humans_regular
scope:activity.var:blot_sacrifice = flag:humans_magnificent
}
scope:gf_faith = { has_doctrine_parameter = cannibalism_legal }
}
hidden_effect = {
every_in_list = {
list = happified_title_subjects_list
limit = {
# Filter out lowborns.
exists = dynasty
NOT = { has_trait = cannibal }
}
send_interface_toast = {
title = fp1_other_decisions.0003.attendee_became_cannibal
left_icon = scope:blotter
add_trait = cannibal
}
}
}
}
}
# Faithful: focus on the faith.
option = {
name = fp1_other_decisions.0003.a
# Only available if you follow the scope:gf_faith & have priests to impress at all.
trigger = {
faith = {
this = scope:gf_faith
has_doctrine = doctrine_theocracy_temporal
}
}
scope:activity = {
add_activity_log_entry = {
key = gruesome_festival_faithful_faith_option_log
score = 900
show_in_conclusion = yes
character = root
activity_host = {
# Your commitment to ritual earns you opinion with the priestly classes.
if = {
limit = {
any_learning_councillor = { exists = this }
}
every_learning_councillor = {
add_opinion = {
target = scope:blotter
modifier = pleased_opinion
opinion = 50
}
}
}
if = {
limit = {
any_in_list = {
list = happified_character_subjects_list
gruesome_festivals_available_impressable_clergy = yes
}
}
every_in_list = {
list = happified_character_subjects_list
custom = fp1_other_decisions.0003.b.clergy_list
limit = { gruesome_festivals_available_impressable_clergy = yes }
add_opinion = {
target = scope:blotter
modifier = pleased_opinion
opinion = 40
}
}
}
}
}
}
stress_impact = {
zealous = major_stress_impact_loss
cynical = major_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_zeal = 0.5
ai_sociability = -0.25
}
modifier = { # Weight up for stress.
add = 30
has_trait = zealous
}
modifier = { # Weight down for stress.
add = 10
has_trait = cynical
}
}
}
# Faithful: focus on the nobility.
option = {
name = fp1_other_decisions.0003.b
# Must have actually got some other landed nobility coming, and be of the faith and able to take part fully.
trigger = {
faith = scope:gf_faith
any_in_list = {
list = happified_character_subjects_list
gruesome_festivals_available_impressable_nobles = yes
}
}
scope:activity = {
add_activity_log_entry = {
key = gruesome_festival_faithful_nobility_option_log
score = 900
show_in_conclusion = yes
character = root
# The nobles appreciate the extra attention you grace them with.
every_in_list = {
list = happified_character_subjects_list
custom = fp1_other_decisions.0003.b.nobility_list
limit = { gruesome_festivals_available_impressable_nobles = yes }
add_opinion = {
target = scope:blotter
modifier = pleased_opinion
opinion = 20
}
}
}
}
stress_impact = {
arrogant = medium_stress_impact_loss
humble = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 0.5
ai_energy = -0.25 # Just because there's a lot fewer nobles than peasants.
}
modifier = { # Weight up for stress.
add = 20
has_trait = arrogant
}
modifier = { # Weight down for stress.
add = -20
has_trait = humble
}
}
}
# Faithful: focus on the commoners.
option = {
name = fp1_other_decisions.0003.c
# Must be of the faith and able to take part fully.
trigger = { faith = scope:gf_faith }
scope:activity = {
add_activity_log_entry = {
key = gruesome_festival_faithful_commoners_option_log
score = 900
show_in_conclusion = yes
character = root
# The commoners appreciate the extra attention.
every_in_list = {
list = happified_title_subjects_list
custom = fp1_other_decisions.0003.happy_titles_list
remove_county_modifier = held_grand_sacrifice_fp1_modifier
add_county_modifier = {
modifier = commoners_grand_sacrifice_fp1_modifier
years = 7
}
}
}
}
stress_impact = {
humble = major_stress_impact_loss
arrogant = major_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 0.5
ai_energy = 0.25 # Just because there's a lot fewer nobles than peasants.
}
modifier = { # Weight up for stress.
add = 30
has_trait = humble
}
modifier = { # Weight down for stress.
add = -30
has_trait = arrogant
}
}
}
# Political: engage no more than is necessary.
option = {
name = fp1_other_decisions.0003.d
# Must be an outsider.
trigger = {
faith != scope:gf_faith
}
scope:activity = {
add_activity_log_entry = {
key = gruesome_festival_faithful_nobility_option_log
score = 900
show_in_conclusion = yes
character = root
activity_host = {
# You console yourself with a minor moral victory.
add_stress = medium_stress_loss
}
}
}
stress_impact = {
arrogant = major_stress_impact_loss
humble = major_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_zeal = 0.5
ai_sociability = -0.5
}
modifier = { # Weight up for stress.
add = 30
has_trait = arrogant
}
modifier = { # Weight down for stress.
add = -30
has_trait = humble
}
}
}
# Political: engage wholeheartedly.
option = {
name = fp1_other_decisions.0003.e
# Must be an outsider.
trigger = {
faith != scope:gf_faith
}
scope:activity = {
add_activity_log_entry = {
key = gruesome_festival_faithful_nobility_option_log
score = 900
show_in_conclusion = yes
character = root
# The commoners appreciate the extra attention.
every_in_list = {
list = happified_title_subjects_list
custom = fp1_other_decisions.0003.happy_titles_list
remove_county_modifier = held_grand_sacrifice_fp1_modifier
add_county_modifier = {
modifier = commoners_grand_sacrifice_fp1_modifier
years = 10
}
}
}
}
stress_impact = {
humble = major_stress_impact_loss
arrogant = major_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_sociability = 0.5
ai_zeal = -0.5
}
modifier = { # Weight up for stress.
add = 30
has_trait = humble
}
modifier = { # Weight down for stress.
add = -30
has_trait = arrogant
}
}
}
# Political: you know, they make some good points...
option = {
name = fp1_other_decisions.0003.f
# Must be an outsider.
trigger = {
faith != scope:gf_faith
# We only allow this under certain circumstances.
OR = {
# The vast majority of your sub-realm follows their faith.
any_sub_realm_county = {
percent >= 0.75
faith = scope:gf_faith
}
# Their fervour is high, your fervour is low.
## Normal people require a very stark difference.
AND = {
faith = { fervor <= 10 }
scope:gf_faith = { fervor >= 90 }
}
## Cynics are a bit less fussed.
AND = {
faith = { fervor <= 25 }
scope:gf_faith = { fervor >= 75}
}
}
}
# First, we save your old faith for reference.
faith = { save_scope_as = old_faith }
# Next, we convert your faith.
set_character_faith_with_conversion = scope:gf_faith
scope:activity = {
add_activity_log_entry = {
key = gruesome_festival_faithful_nobility_option_log
score = 900
show_in_conclusion = yes
character = root
activity_host = {
# Then charge piety for the transition.
## A sensible fee if they're reformed or you're both unreformed.
if = {
limit = {
OR = {
NOT = {
scope:gf_faith = { has_doctrine_parameter = unreformed }
}
AND = {
scope:old_faith = { has_doctrine_parameter = unreformed }
scope:gf_faith = { has_doctrine_parameter = unreformed }
}
}
}
add_piety = -500
}
## A reasonable, though still extremely high, fee otherwise, as then you're reformed & they're unreformed.
else = { add_piety = -2000 }
# Finally, you get a nickname.
if = {
limit = {
OR = {
has_bad_nickname = yes
has_any_nickname = no
}
}
# Converting within your religion, you're a heretic.
if = {
limit = { scope:old_faith.religion = scope:gf_faith.religion }
give_nickname = nick_the_heretic
}
# Converting outside of your religious family, you're a heathen.
else_if = {
limit = {
OR = {
AND = {
scope:old_faith.religion = { is_in_family = rf_eastern }
NOT = {
scope:gf_faith.religion = { is_in_family = rf_eastern }
}
}
AND = {
scope:old_faith.religion = { is_in_family = rf_pagan }
NOT = {
scope:gf_faith.religion = { is_in_family = rf_pagan }
}
}
AND = {
scope:old_faith.religion = { is_in_family = rf_abrahamic }
NOT = {
scope:gf_faith.religion = { is_in_family = rf_abrahamic }
}
}
}
}
give_nickname = nick_the_heathen
}
# And otherwise, you're an apostate.
else = { give_nickname = nick_the_apostate }
}
}
}
}
stress_impact = {
trusting = medium_stress_impact_loss
cynical = major_stress_impact_loss
paranoid = medium_stress_impact_gain
arrogant = major_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 0.25
ai_zeal = -1
}
modifier = { # Weight up for stress.
add = 20
has_trait = trusting
}
modifier = { # Weight up for stress.
add = 30
has_trait = cynical
}
modifier = { # Weight down for stress.
add = -20
has_trait = paranoid
}
modifier = { # Weight down for stress.
add = -30
has_trait = arrogant
}
}
}
after = {
# Take care of anyone who insulted you by not showing up.
trigger_event = {
id = fp1_other_decisions.0012
months = 3
}
}
}
scripted_trigger gruesome_festivals_will_gain_cannibal_trait_trigger = {
# Is human flesh potentially on the menu?
scope:activity.var:gf_faith = { has_doctrine_parameter = cannibalism_legal }
# Are you already a cannibal?
NOT = { has_trait = cannibal }
# Is HumSac taking place to give meat to serve?
OR = {
scope:activity.var:blot_sacrifice = flag:humans_regular
scope:activity.var:blot_sacrifice = flag:humans_magnificent
}
}
scripted_effect gruesome_festivals_turn_down_invitation_effect = {
# Add this character to scope:blotter's list of non-attendees.
save_temporary_scope_as = current_rejecter
scope:blotter = {
add_to_variable_list = {
name = gf_guests_rejecting_invite_list
target = scope:current_rejecter
}
}
#This removes the character from the activity and reroutes them homeward
root.current_travel_plan = {
if = {
limit = { can_cancel = yes }
cancel_travel_plan = yes
}
}
}
# Vassal: chance to decline invitation.
fp1_other_decisions.0011 = {
type = character_event
title = fp1_other_decisions.0011.t
desc = {
desc = fp1_other_decisions.0011.desc.intro
first_valid = {
triggered_desc = {
trigger = {
scope:activity.var:gf_faith = { has_doctrine_parameter = cannibalism_legal }
}
desc = fp1_other_decisions.0011.desc.cannibal_blot
}
desc = fp1_other_decisions.0011.desc.fallback
}
desc = fp1_other_decisions.0011.desc.outro
}
theme = party
left_portrait = {
character = scope:blotter
animation = personality_honorable
}
override_background = { reference = throne_room }
trigger = {
# DLC check.
has_fp1_dlc_trigger = yes
}
# We divide our options between gaining the cannibal trait and not gaining the cannibal trait.
## If gaining the cannibal trait, we make a bigger deal about attending, since we don't want the player to accidentally become a cannibal because they weren't paying attention.
## If not gaining the cannibal trait (because no human flesh is being served or because you're already a cannibal), our options are a bit more varied.
# Non-Cannibal Gain: go graciously.
option = {
name = fp1_other_decisions.0011.a
trigger = { gruesome_festivals_will_gain_cannibal_trait_trigger = no }
# Get some opinion with scope:blotter for turning up.
show_as_tooltip = { gruesome_festivals_blotter_opinion_gain_of_guests_effect = yes }
stress_impact = {
forgiving = minor_stress_impact_loss
gregarious = medium_stress_impact_loss
vengeful = minor_stress_impact_gain
shy = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_sociability = 0.5
ai_vengefulness = -0.5
}
modifier = { # Weight up for stress.
add = 10
has_trait = forgiving
}
modifier = { # Weight up for stress.
add = 20
has_trait = gregarious
}
modifier = { # Weight down for stress.
add = -10
has_trait = vengeful
}
modifier = { # Weight down for stress.
add = -20
has_trait = shy
}
}
}
# Non-Cannibal Gain: tell 'em to get stuffed.
option = {
name = fp1_other_decisions.0011.b
trigger = { gruesome_festivals_will_gain_cannibal_trait_trigger = no }
# Scope:blotter will doubtless notice you failed to turn up.
custom_tooltip = fp1_other_decisions.0011.b.tt
gruesome_festivals_turn_down_invitation_effect = yes
stress_impact = {
vengeful = minor_stress_impact_loss
shy = medium_stress_impact_loss
forgiving = minor_stress_impact_gain
gregarious = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_vengefulness = 0.5
ai_sociability = -0.5
}
modifier = { # Weight up for stress.
add = 10
has_trait = vengeful
}
modifier = { # Weight up for stress.
add = 20
has_trait = shy
}
modifier = { # Weight down for stress.
add = -10
has_trait = forgiving
}
modifier = { # Weight down for stress.
add = -20
has_trait = gregarious
}
}
}
# Will Become Cannibal: go, and enjoy the HumSac to the fullest.
option = {
name = fp1_other_decisions.0011.c
trigger = { gruesome_festivals_will_gain_cannibal_trait_trigger = yes }
# You'll eventually gain the cannibal trait, too.
show_as_tooltip = { add_trait = cannibal }
# Get some opinion with scope:blotter for turning up.
show_as_tooltip = { gruesome_festivals_blotter_opinion_gain_of_guests_effect = yes }
stress_impact = {
forgiving = minor_stress_impact_loss
gregarious = medium_stress_impact_loss
sadistic = medium_stress_impact_loss
vengeful = minor_stress_impact_gain
shy = medium_stress_impact_gain
compassionate = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_sociability = 0.5
ai_vengefulness = -0.5
ai_compassion = -0.5
}
modifier = { # Weight up for stress.
add = 10
has_trait = forgiving
}
modifier = { # Weight up for stress.
add = 20
has_trait = gregarious
}
modifier = { # Weight up for stress.
add = 20
has_trait = sadistic
}
modifier = { # Weight down for stress.
add = -10
has_trait = vengeful
}
modifier = { # Weight down for stress.
add = -20
has_trait = shy
}
modifier = { # Weight down for stress.
add = -20
has_trait = compassionate
}
}
}
# Will Become Cannibal: go, but refuse to partake in human flesh.
option = {
name = fp1_other_decisions.0011.d
trigger = { gruesome_festivals_will_gain_cannibal_trait_trigger = yes }
# Costs you a bit of extra piety, but you do opt out of the cannibal option.
add_piety = medium_piety_loss
# Get some opinion with scope:blotter for turning up.
show_as_tooltip = { gruesome_festivals_blotter_opinion_gain_of_guests_effect = yes }
stress_impact = {
forgiving = minor_stress_impact_loss
gregarious = medium_stress_impact_loss
compassionate = medium_stress_impact_loss
vengeful = minor_stress_impact_gain
shy = medium_stress_impact_gain
sadistic = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_sociability = 0.5
ai_compassion = 0.5
ai_vengefulness = -0.5
}
modifier = { # Weight up for stress.
add = 10
has_trait = forgiving
}
modifier = { # Weight up for stress.
add = 20
has_trait = gregarious
}
modifier = { # Weight up for stress.
add = 20
has_trait = compassionate
}
modifier = { # Weight down for stress.
add = -10
has_trait = vengeful
}
modifier = { # Weight down for stress.
add = -20
has_trait = shy
}
modifier = { # Weight down for stress.
add = -20
has_trait = sadistic
}
}
}
# Will Become Cannibal: not a chance in GetFaith.GetNegativeAfterLife!
option = {
name = fp1_other_decisions.0011.e
trigger = { gruesome_festivals_will_gain_cannibal_trait_trigger = yes }
# Costs you a bit of extra piety, but you do opt out of the cannibal option.
add_piety = medium_piety_loss
# Scope:blotter will doubtless notice you failed to turn up.
custom_tooltip = fp1_other_decisions.0011.e.tt
gruesome_festivals_turn_down_invitation_effect = yes
stress_impact = {
vengeful = minor_stress_impact_loss
shy = medium_stress_impact_loss
forgiving = minor_stress_impact_gain
gregarious = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_vengefulness = 0.5
ai_sociability = -0.5
}
modifier = { # Weight up for stress.
add = 10
has_trait = vengeful
}
modifier = { # Weight up for stress.
add = 20
has_trait = shy
}
modifier = { # Weight down for stress.
add = -10
has_trait = forgiving
}
modifier = { # Weight down for stress.
add = -20
has_trait = gregarious
}
}
}
}
# Blotter: at least one vassal declined your invitation.
fp1_other_decisions.0012 = {
type = character_event
title = fp1_other_decisions.0012.t
desc = {
desc = fp1_other_decisions.0012.desc.intro
first_valid = {
triggered_desc = {
trigger = { exists= scope:decliner_2 }
desc = fp1_other_decisions.0012.desc.multiple_decliners
}
desc = fp1_other_decisions.0012.desc.single_decliner
}
desc = fp1_other_decisions.0012.desc.outro
}
theme = party
left_portrait = {
character = scope:decliner_1
animation = personality_honorable
}
right_portrait = {
character = scope:decliner_2
animation = personality_honorable
}
lower_left_portrait = { character = scope:decliner_3 }
lower_center_portrait = { character = scope:decliner_4 }
lower_right_portrait = { character = scope:decliner_5 }
override_background = { reference = throne_room }
trigger = {
# DLC check.
has_fp1_dlc_trigger = yes
# Do you have the appropriate variable list, and is there anyone actually in it?
has_variable_list = gf_guests_rejecting_invite_list
any_in_list = {
variable = gf_guests_rejecting_invite_list
is_alive = yes
is_imprisoned = no
count >= 1
}
}
immediate = {
# Work out which of our decliners is the worst and why.
ordered_in_list = {
variable = gf_guests_rejecting_invite_list
max = gruesome_festival_gf_guests_rejecting_invite_list_max_value
order_by = {
value = 0
# Weight up players a little.
if = {
limit = { is_ai = no }
add = 10
}
# Then weight up by rank.
## Kings.
if = {
limit = { highest_held_title_tier >= tier_kingdom }
add = 25
}
## Dukes.
if = {
limit = { highest_held_title_tier = tier_duchy }
add = 10
}
# And add a little for every held county.
every_held_title = {
title_tier = county
add = 1
}
#If they somehow die or are imprisoned before this event
if = {
limit = {
OR = {
is_alive = no
is_imprisoned = yes
}
}
multiply = 0
}
}
if = {
limit = {
NOT = { exists = scope:decliner_1 }
}
save_scope_as = decliner_1
}
else_if = {
limit = {
NOT = {
this = scope:decliner_1
exists = scope:decliner_2
}
}
save_scope_as = decliner_2
}
else_if = {
limit = {
NOT = {
this = scope:decliner_1
this = scope:decliner_2
exists = scope:decliner_3
}
}
save_scope_as = decliner_3
}
else_if = {
limit = {
NOT = {
this = scope:decliner_1
this = scope:decliner_2
this = scope:decliner_3
exists = scope:decliner_4
}
}
save_scope_as = decliner_4
}
else_if = {
limit = {
NOT = {
this = scope:decliner_1
this = scope:decliner_2
this = scope:decliner_3
this = scope:decliner_4
exists = scope:decliner_5
}
}
save_scope_as = decliner_5
}
}
# Add them to a list for easy general management if there's more than one.
scope:decliner_1 = { add_to_list = decliners_list }
if = {
limit = { exists = scope:decliner_2 }
add_to_list = decliners_list
}
if = {
limit = { exists = scope:decliner_3 }
add_to_list = decliners_list
}
if = {
limit = { exists = scope:decliner_4 }
add_to_list = decliners_list
}
if = {
limit = { exists = scope:decliner_5 }
add_to_list = decliners_list
}
# Clean up the variable list.
gruesome_sacrifices_clean_up_declining_guests_effect = yes
}
# Only the arch-offender annoys me!
option = {
name = fp1_other_decisions.0012.a
# Inform scope:decliner_1.
hidden_effect = {
scope:decliner_1 = {
send_interface_toast = {
title = fp1_other_decisions.0012.a.decliner_toast.t
left_icon = scope:blotter
show_as_tooltip = {
progress_towards_rival_effect = {
REASON = rival_blotter_declined
CHARACTER = scope:blotter
OPINION = -30
}
}
}
}
}
# Then actual rivalry/opinion loss.
progress_towards_rival_effect = {
REASON = rival_blotter_declined
CHARACTER = scope:decliner_1
OPINION = -30
}
stress_impact = {
forgiving = minor_stress_impact_loss
vengeful = minor_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_vengefulness = 0.5
ai_rationality = -0.25
}
modifier = { # Weight up for stress.
add = 10
has_trait = forgiving
}
modifier = { # Weight down for stress.
add = -10
has_trait = vengeful
}
}
}
# Damn and blast the whole lot of them!
option = {
name = fp1_other_decisions.0012.b
# Only available if more than one of them turned you down.
trigger = { exists = scope:decliner_2 }
# Inform the decliners.
hidden_effect = {
every_in_list = {
list = decliners_list
send_interface_toast = {
title = fp1_other_decisions.0012.a.decliner_toast.t
left_icon = scope:blotter
show_as_tooltip = {
progress_towards_rival_effect = {
REASON = rival_blotter_declined
CHARACTER = scope:blotter
OPINION = -30
}
}
}
}
}
# Then actual rivalry/opinion loss.
every_in_list = {
list = decliners_list
limit = {
this != scope:blotter
}
custom = fp1_other_decisions.0012.b.all_decliners_list
progress_towards_rival_effect = {
REASON = rival_blotter_declined
CHARACTER = scope:blotter
OPINION = -30
}
}
stress_impact = {
forgiving = major_stress_impact_loss
vengeful = major_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_vengefulness = 0.75
ai_rationality = -0.50
}
modifier = { # Weight up for stress.
add = 30
has_trait = forgiving
}
modifier = { # Weight down for stress.
add = -30
has_trait = vengeful
}
}
}
# Bah, who cares about a bunch of no-shows?
option = {
name = {
trigger = {
NOT = { exists = scope:decliner_2 }
}
text = fp1_other_decisions.0012.c.singular
}
name = {
trigger = { exists = scope:decliner_2 }
text = fp1_other_decisions.0012.c.plural
}
# Carefreeeeeeee!
add_stress = medium_stress_loss
# But it was still a slight.
add_prestige = minor_prestige_loss
stress_impact = {
forgiving = medium_stress_impact_loss
vengeful = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_rationality = 0.25
ai_vengefulness = -0.5
}
modifier = { # Weight up for stress.
add = 20
has_trait = forgiving
}
modifier = { # Weight down for stress.
add = -20
has_trait = vengeful
}
}
}
}
##################################################
# GF Consequences
# by Ewan Cowhig Croft
# 0021 - 0040
##################################################
scripted_effect gruesome_festivals_martyred_a_hof_effect = {
# We only show this here, actual effects are applied in the humsacd_a_hof_effect.
show_as_tooltip = {
$SACRIFICED_HOF$ = {
faith = {
change_fervor = {
value = hof_humsacd_fervour_gain
desc = fervor_gain_sacrficed_head_of_faith
}
}
# Since the nickname is assigned elsewhere, if they've already gotten it, it's safe to show it again.
if = {
limit = { has_nickname = nick_the_martyr }
give_nickname = nick_the_martyr
}
}
}
}
# Your HoF was sacrificed.
fp1_other_decisions.0021 = {
type = character_event
title = fp1_other_decisions.0021.t
desc = {
desc = fp1_other_decisions.0021.desc
first_valid = {
triggered_desc = {
trigger = {
faith = { has_doctrine_parameter = holy_wars_forbidden }
}
desc = fp1_other_decisions.0021.desc.disallows_holy_wars
}
desc = fp1_other_decisions.0021.desc.allows_holy_wars
}
}
theme = skull
left_portrait = {
character = scope:sacrificer
animation = personality_dishonorable
}
right_portrait = {
character = scope:sacrificed_hof
animation = fear
}
override_background = { reference = throne_room }
immediate = {
play_music_cue = "mx_cue_murder"
gruesome_festivals_martyred_a_hof_effect = { SACRIFICED_HOF = scope:sacrificed_hof }
}
# What blasphemy is this?!
option = {
name = {
trigger = { has_trait = zealous }
text = fp1_other_decisions.0021.a.zealous
}
name = {
trigger = { has_trait = cynical }
text = fp1_other_decisions.0021.a.cynical
}
name = {
trigger = {
NOR = {
has_trait = zealous
has_trait = cynical
}
}
text = fp1_other_decisions.0021.a.fallback
}
# Scope:hof_sacrificer has become immensely cheaper to holy war.
if = {
limit = {
NOT = {
scope:sacrificed_hof.faith = { has_doctrine_parameter = holy_wars_forbidden }
}
}
custom_tooltip = fp1_other_decisions.0021.cheaper_holy_wars.tt
custom_tooltip = fp1_other_decisions.0021.easier_holy_wars.tt
custom_tooltip = fp1_other_decisions.0021.ghw_target_preference.tt
}
ai_chance = {
# Only one option, so it doesn't much matter.
base = 100
}
}
}
# You sacrificed a HoF & people are pissed.
fp1_other_decisions.0022 = {
type = character_event
title = fp1_other_decisions.0022.t
desc = {
desc = fp1_other_decisions.0022.desc
first_valid = {
triggered_desc = {
trigger = {
scope:sacrificed_hof.faith = { has_doctrine_parameter = holy_wars_forbidden }
}
desc = fp1_other_decisions.0022.desc.disallows_holy_wars
}
desc = fp1_other_decisions.0022.desc.allows_holy_wars
}
}
theme = skull
left_portrait = {
character = scope:sacrificer
animation = personality_honorable
}
right_portrait = {
character = scope:sacrificed_hof
animation = fear
}
override_background = { reference = throne_room }
trigger = {
# We only want to get this event once per faith, since the effects don't really stack (except for fervour).
NAND = {
has_variable_list = humsacd_hofs_notified
is_target_in_variable_list = {
name = humsacd_hofs_notified
target = scope:sacrificed_hof.faith
}
}
}
immediate = {
play_music_cue = "mx_cue_murder"
gruesome_festivals_martyred_a_hof_effect = { SACRIFICED_HOF = scope:sacrificed_hof }
# Stop repeats of the same event per person per faith.
add_to_variable_list = {
name = humsacd_hofs_notified
target = scope:sacrificed_hof.faith
}
scope:sacrificed_hof = {
save_scope_as = unlucky_guest
}
}
# Oops and/or meh.
option = {
name = {
trigger = {
scope:sacrificed_hof.faith = { has_doctrine_parameter = holy_wars_forbidden }
}
text = fp1_other_decisions.0022.a.pacifists
}
name = {
trigger = {
NOT = {
scope:sacrificed_hof.faith = { has_doctrine_parameter = holy_wars_forbidden }
}
has_trait = craven
}
text = fp1_other_decisions.0022.a.craven
}
name = {
trigger = {
NOR = {
scope:sacrificed_hof.faith = { has_doctrine_parameter = holy_wars_forbidden }
has_trait = craven
}
}
text = fp1_other_decisions.0022.a.fallback
}
# Scope:hof_sacrificer has become immensely cheaper to holy war.
if = {
limit = {
NOT = {
scope:sacrificed_hof.faith = { has_doctrine_parameter = holy_wars_forbidden }
}
}
custom_tooltip = fp1_other_decisions.0021.cheaper_holy_wars.tt
custom_tooltip = fp1_other_decisions.0021.easier_holy_wars.tt
custom_tooltip = fp1_other_decisions.0021.ghw_target_preference.tt
}
ai_chance = {
# Only one option, so it doesn't much matter.
base = 100
}
}
}
scripted_effect gruesome_festivals_own_faith_martyred_own_hof_effect = {
add_piety_level = -5
add_character_modifier = { modifier = ultimate_blasphemer_modifier }
if = {
limit = {
faith = { has_doctrine_parameter = excommunication_active }
}
# Add excommunication directly, since no one specific requested this.
add_excommunication_actual_effect = yes
}
}
# Your HoF was sacrificed by someone sharing your faith for the sake of someone else's faith.
fp1_other_decisions.0023 = {
type = character_event
title = fp1_other_decisions.0023.t
desc = {
desc = fp1_other_decisions.0023.desc.intro
first_valid = {
triggered_desc = {
trigger = {
scope:unlucky_guest.faith = { has_doctrine_parameter = excommunication_active }
}
desc = fp1_other_decisions.0023.desc.has_excommunication
}
desc = fp1_other_decisions.0023.desc.does_not_have_excommunication
}
desc = fp1_other_decisions.0023.desc.outro
}
theme = skull
left_portrait = {
character = scope:blotter
animation = paranoia
}
right_portrait = {
character = scope:unlucky_guest
animation = fear
}
override_background = { reference = throne_room }
immediate = {
gruesome_festivals_martyred_a_hof_effect = { SACRIFICED_HOF = scope:unlucky_guest }
}
# This is unforgiveable!
option = {
name = fp1_other_decisions.0023.a
trigger = {
NOT = { has_trait = cynical }
}
# Indicate that scope:blotter is about to get the slap-down.
scope:blotter = {
show_as_tooltip = { gruesome_festivals_own_faith_martyred_own_hof_effect = yes }
}
ai_chance = {
# Only one option, so it doesn't much matter.
base = 100
}
}
# What kind of a person are they?
option = {
name = fp1_other_decisions.0023.b
trigger = { has_trait = cynical }
# Indicate that scope:blotter is about to get the slap-down.
scope:blotter = {
show_as_tooltip = { gruesome_festivals_own_faith_martyred_own_hof_effect = yes }
}
ai_chance = {
# Only one option, so it doesn't much matter.
base = 100
}
}
}
# You sacrificed your OWN HoF, despite not even believing in the HumSac faith.
fp1_other_decisions.0024 = {
type = character_event
title = fp1_other_decisions.0024.t
desc = {
desc = fp1_other_decisions.0024.desc.intro
first_valid = {
triggered_desc = {
trigger = {
scope:unlucky_guest.faith = { has_doctrine_parameter = excommunication_active }
}
desc = fp1_other_decisions.0024.desc.has_excommunication
}
desc = fp1_other_decisions.0024.desc.does_not_have_excommunication
}
desc = fp1_other_decisions.0024.desc.outro
}
theme = skull
left_portrait = {
character = scope:blotter
animation = paranoia
}
right_portrait = {
character = scope:unlucky_guest
animation = fear
}
override_background = { reference = throne_room }
trigger = {
# If you converted away, you're golden.
scope:blotter.faith = scope:unlucky_guest.faith
}
immediate = {
gruesome_festivals_martyred_a_hof_effect = { SACRIFICED_HOF = scope:unlucky_guest }
gruesome_festivals_own_faith_martyred_own_hof_effect = yes
}
# _What have I done?!_
option = {
name = fp1_other_decisions.0024.a
trigger = { has_trait = zealous }
# Naturally, this will cause a lot of stress.
add_stress = monumental_stress_gain
ai_chance = {
# Only one option, so it doesn't much matter.
base = 100
}
}
# They're only a human, not divinity itself!
option = {
name = fp1_other_decisions.0024.b
trigger = { has_trait = cynical }
# Naturally, this will cause a lot of stress.
add_stress = major_stress_gain
ai_chance = {
# Only one option, so it doesn't much matter.
base = 100
}
}
# It was my subjects, not me!
option = {
name = fp1_other_decisions.0024.c
trigger = {
NOR = {
has_trait = zealous
has_trait = cynical
}
}
# Naturally, this will cause a lot of stress.
add_stress = massive_stress_gain
ai_chance = {
# Only one option, so it doesn't much matter.
base = 100
}
}
}
fp1_other_decisions.1000 = {
type = character_event
title = fp1_other_decisions.1000.t
desc = fp1_other_decisions.1000.desc
theme = skull
left_portrait = {
character = scope:blotter
animation = personality_zealous
}
override_background = {
trigger = {
scope:blotter = {
religion = religion:germanic_religion
}
}
reference = fp1_tribal_temple
}
override_background = {
trigger = {
scope:blotter = {
NOT = {
religion = religion:germanic_religion
}
}
}
reference = temple_scope
}
option = {
name = fp1_other_decisions.1000.a
show_as_tooltip = {
death = {
killer = scope:blotter
death_reason = death_sacrificed_to_gods
}
}
}
}
##################################################
# GF Maintenance Events
# by Ewan Cowhig Croft
# 0061 - 0080
##################################################
# Someone intending to sacrifice you has died
fp1_other_decisions.0062 = {
hidden = yes
immediate = {
# If preparing a grand sacrifice, make sure your prisoners are relieved.
if = {
limit = { has_character_flag = gruesome_festivals_can_pick_human_sacrifice }
every_prisoner = {
limit = { has_character_modifier = gruesome_festivals_designated_sacrifice_fp1_modifier }
designate_gruesome_festivals_sacrifice_modifier_removed_effect = { DESIGNATOR = root }
}
}
}
}
# Designated sacrifice has died
fp1_other_decisions.0063 = {
hidden = yes
immediate = {
if = {
limit = {
has_character_modifier = gruesome_festivals_designated_sacrifice_fp1_modifier
NOT = { has_character_flag = is_currently_being_sacrificed }
}
save_scope_as = designated_sacrifice
if = {
# Should always have an imprisoner, but just in case.
limit = { exists = imprisoner }
imprisoner = {
send_interface_message = {
type = event_religious_bad_with_text
title = fp1_other_decisions.0063.t
desc = fp1_other_decisions.0063.desc
right_icon = scope:designated_sacrifice
}
}
}
}
}
}
# Someone with offended counties has lost them (via death or independence).
fp1_other_decisions.0064 = {
hidden = yes
trigger = { has_variable = offended_counties_with_humsac }
immediate = { fp1_remove_humsac_offended_counties_effect = yes }
}
##################################################
# Stele Setup Events
# by Ewan Cowhig Croft & Linnéa Thimrén
# 0101 - 0120
##################################################
# Select which type of stele you'll be raising.
fp1_other_decisions.0101 = {
type = character_event
title = fp1_other_decisions.0101.t
desc = fp1_other_decisions.0101.desc
theme = faith
left_portrait = {
character = root
animation = personality_rational
}
right_portrait = {
character = scope:ancestor
animation = personality_zealous
}
lower_right_portrait = scope:foe
override_background = { reference = throne_room }
trigger = {
# DLC check.
has_fp1_dlc_trigger = yes
}
immediate = {
# Save some variables as scopes for easy loc.
if = {
limit = { exists = var:ancestor_to_bury }
var:ancestor_to_bury = { save_scope_as = ancestor }
}
if = {
limit = { exists = var:recent_conquest_victory }
var:recent_conquest_victory = { save_scope_as = foe }
}
if = {
limit = { exists = var:recent_rank_increase }
var:recent_rank_increase = { save_scope_as = new_title }
}
}
# Bury an ancestor.
option = {
name = fp1_other_decisions.0101.a
# For family.
trigger = { has_variable = ancestor_to_bury }
# Note the type going forwards.
save_scope_value_as = {
name = stele_type
value = flag:ancestor
}
# Inform root & proceed.
custom_tooltip = fp1_other_decisions.0101.a.tt
trigger_event = fp1_other_decisions.0111
stress_impact = {
humble = medium_stress_impact_loss
arrogant = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 0.5
ai_honor = 0.25
}
modifier = { # Weight up for stress.
add = 20
has_trait = humble
}
modifier = { # Weight down for stress.
add = -20
has_trait = arrogant
}
}
}
# Commemorate a conquest.
option = {
name = fp1_other_decisions.0101.b
# Won a war that gained them territory.
trigger = { has_variable = recent_conquest_victory }
# Note the type going forwards.
save_scope_value_as = {
name = stele_type
value = flag:conquest
}
# Inform root & proceed.
custom_tooltip = fp1_other_decisions.0101.b.tt
trigger_event = fp1_other_decisions.0111
stress_impact = {
arrogant = minor_stress_impact_loss
vengeful = medium_stress_impact_loss
humble = minor_stress_impact_gain
forgiving = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 0.5
ai_honor = 0.25
}
modifier = { # Weight up for stress.
add = 10
has_trait = arrogant
}
modifier = { # Weight up for stress.
add = 20
has_trait = vengeful
}
modifier = { # Weight down for stress.
add = -10
has_trait = humble
}
modifier = { # Weight down for stress.
add = -20
has_trait = forgiving
}
}
}
# Memorialise an increase in rank.
option = {
name = fp1_other_decisions.0101.c
# Marking going up a rank.
trigger = { has_variable = recent_rank_increase }
# Note the type going forwards.
save_scope_value_as = {
name = stele_type
value = flag:promotion
}
# Inform root & proceed.
custom_tooltip = fp1_other_decisions.0101.c.tt
trigger_event = fp1_other_decisions.0111
stress_impact = {
arrogant = major_stress_impact_loss
humble = major_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 0.5
ai_greed = 0.25
}
modifier = { # Weight up for stress.
add = 30
has_trait = arrogant
}
modifier = { # Weight down for stress.
add = -30
has_trait = humble
}
}
}
# Actually, nahhhhhh.
option = {
name = fp1_other_decisions.0101.d
# Give 'em their deposit back.
add_gold = var:raise_stele_refund
# Clear the cooldown.
remove_decision_cooldown = raise_stele_decision
# No stress impact for opting out.
ai_chance = {
# If the AI has opened the interface, it should pick an option.
base = 0
}
}
# Run some mild clean-up.
after = {
# Clean-up the refund value.
remove_variable = raise_stele_refund
}
}
scripted_effect fp1_apply_stele_effects = {
# Apply content-specific effects.
# Save ancillary characters.
## Save the commissioning character.
$LOCATION$ = {
save_temporary_scope_as = stele_location
set_variable = {
name = stele_commissioner
value = root
years = fp1_stele_duration_value
}
}
## Create a hidden dummy character from the local area to ascribe the carvings to.
hidden_effect = {
# Make the character.
create_character = {
age = 25
random_traits = yes
gender_female_chance = 50
dynasty = none
faith = $LOCATION$.faith
culture = $LOCATION$.culture
location = $LOCATION$.title_province
save_scope_as = carver
}
# Save them in the designated county.
$LOCATION$ = {
set_variable = {
name = stele_carver
value = scope:carver
years = fp1_stele_duration_value
}
}
# Kill them off.
scope:carver = {
death = { death_reason = death_vanished }
}
}
## Ancestor effects.
if = {
limit = { scope:stele_type = flag:ancestor }
$LOCATION$ = {
# Set up the container for loc.
set_variable = {
name = stele_container
value = root.var:ancestor_to_bury
years = fp1_stele_duration_value
}
# Plus we want to remember the _type_ of stele we've got, so we can check if it's a character or title in there later.
set_variable = {
name = stele_scope_type
value = flag:character
years = fp1_stele_duration_value
}
# Add the actual modifier.
## Stronger version for counties with stele-liking cultures.
if = {
limit = { fp1_can_raise_stele_title_scope_trigger = yes }
add_county_modifier = {
modifier = fp1_stele_ancestors_strong
years = fp1_stele_duration_value
desc = fp1_stele_ancestors_strong_custom_desc
}
}
## Weaker version for counties with cultures that don't.
else = {
add_county_modifier = {
modifier = fp1_stele_ancestors_weak
years = fp1_stele_duration_value
desc = fp1_stele_ancestors_strong_custom_desc
}
}
# Add a generic flag for easy value adjustments elsewhere.
set_variable = {
name = stele_slot_occupied
value = yes
years = fp1_stele_duration_value
}
}
}
## Conquest effects.
if = {
limit = { scope:stele_type = flag:conquest }
$LOCATION$ = {
# Set up the container for loc.
set_variable = {
name = stele_container
value = root.var:recent_conquest_victory
years = fp1_stele_duration_value
}
# Plus we want to remember the _type_ of stele we've got, so we can check if it's a character or title in there later.
set_variable = {
name = stele_scope_type
value = flag:character
years = fp1_stele_duration_value
}
# Add the actual modifier.
## Stronger version for counties with stele-liking cultures.
if = {
limit = { fp1_can_raise_stele_title_scope_trigger = yes }
add_county_modifier = {
modifier = fp1_stele_conquest_strong
years = fp1_stele_duration_value
desc = fp1_stele_conquest_strong_custom_desc
}
}
## Weaker version for counties with cultures that don't.
else = {
add_county_modifier = {
modifier = fp1_stele_conquest_weak
years = fp1_stele_duration_value
desc = fp1_stele_conquest_strong_custom_desc
}
}
# Add a generic flag for easy value adjustments elsewhere.
set_variable = {
name = stele_slot_occupied
value = yes
years = fp1_stele_duration_value
}
}
}
## Promotion effects.
if = {
limit = { scope:stele_type = flag:promotion }
$LOCATION$ = {
# Set up the container for loc.
set_variable = {
name = stele_container
value = root.var:recent_rank_increase
years = fp1_stele_duration_value
}
# Plus we want to remember the _type_ of stele we've got, so we can check if it's a character or title in there later.
set_variable = {
name = stele_scope_type
value = flag:title
years = fp1_stele_duration_value
}
# Add the actual modifier.
## Stronger version for counties with stele-liking cultures.
if = {
limit = { fp1_can_raise_stele_title_scope_trigger = yes }
add_county_modifier = {
modifier = fp1_stele_promotion_strong
years = fp1_stele_duration_value
desc = fp1_stele_promotion_strong_custom_desc
}
}
## Weaker version for counties with cultures that don't.
else = {
add_county_modifier = {
modifier = fp1_stele_promotion_weak
years = fp1_stele_duration_value
desc = fp1_stele_promotion_strong_custom_desc
}
}
# Add a generic flag for easy value adjustments elsewhere.
set_variable = {
name = stele_slot_occupied
value = yes
years = fp1_stele_duration_value
}
}
}
}
# With type chosen, select a specific location.
fp1_other_decisions.0111 = {
type = character_event
title = fp1_other_decisions.0111.t
desc = {
desc = fp1_other_decisions.0111.desc.intro
first_valid = {
triggered_desc = {
trigger = { scope:stele_type = flag:ancestor }
desc = fp1_other_decisions.0111.desc.ancestor
}
triggered_desc = {
trigger = { scope:stele_type = flag:conquest }
desc = fp1_other_decisions.0111.desc.conquest
}
triggered_desc = {
trigger = { scope:stele_type = flag:promotion }
desc = fp1_other_decisions.0111.desc.promotion
}
}
desc = fp1_other_decisions.0111.desc.outro
}
theme = faith
left_portrait = {
character = root
# We grieve ancestors.
triggered_animation = {
trigger = { scope:stele_type = flag:ancestor }
animation = grief
}
# And celebrate successes.
triggered_animation = {
trigger = {
NOT = { scope:stele_type = flag:ancestor }
}
animation = personality_bold
}
}
right_portrait = {
character = scope:secondary_portrait
# Ancestors show piety.
triggered_animation = {
trigger = { scope:stele_type = flag:ancestor }
animation = personality_zealous
}
# Foes show disgust.
triggered_animation = {
trigger = { scope:stele_type = flag:conquest }
animation = disgust
}
}
override_background = { reference = fp1_runestone }
trigger = {
# DLC check.
has_fp1_dlc_trigger = yes
}
immediate = {
# First, we need to grab all of root's personally held counties.
every_held_title = {
title_tier = county
limit = {
is_landless_type_title = no
}
add_to_list = personally_held_counties_list
}
# Then we sort them out according to the effectiveness of the modifiers.
## Ancestor stelae want stele-valid areas with low popular opinion.
if = {
limit = { scope:stele_type = flag:ancestor }
ordered_in_list = {
list = personally_held_counties_list
max = raise_stele_county_preference_cap_value
order_by = raise_stele_variant_ancestor_value
# Grab three options.
if = {
limit = {
NOT = { exists = scope:location_a }
}
save_scope_as = location_a
}
else_if = {
limit = {
NOR = {
this = scope:location_a
exists = scope:location_b
}
}
save_scope_as = location_b
}
else_if = {
limit = {
NOR = {
this = scope:location_a
this = scope:location_b
exists = scope:location_c
}
}
save_scope_as = location_c
}
}
}
## Conquest stelae want stele-valid areas with low control.
else_if = {
limit = { scope:stele_type = flag:conquest }
ordered_in_list = {
list = personally_held_counties_list
max = raise_stele_county_preference_cap_value
order_by = raise_stele_variant_conquest_value
# Grab three options.
if = {
limit = {
NOT = { exists = scope:location_a }
}
save_scope_as = location_a
}
else_if = {
limit = {
NOR = {
this = scope:location_a
exists = scope:location_b
}
}
save_scope_as = location_b
}
else_if = {
limit = {
NOR = {
this = scope:location_a
this = scope:location_b
exists = scope:location_c
}
}
save_scope_as = location_c
}
}
}
## Promotion stelae want stele-valid areas with high development.
else_if = {
limit = { scope:stele_type = flag:promotion }
ordered_in_list = {
list = personally_held_counties_list
max = raise_stele_county_preference_cap_value
order_by = raise_stele_variant_promotion_value
# Grab three options.
if = {
limit = {
NOT = { exists = scope:location_a }
}
save_scope_as = location_a
}
else_if = {
limit = {
NOR = {
this = scope:location_a
exists = scope:location_b
}
}
save_scope_as = location_b
}
else_if = {
limit = {
NOR = {
this = scope:location_a
this = scope:location_b
exists = scope:location_c
}
}
save_scope_as = location_c
}
}
}
# If, for some reason, we have no designated county, just pick their capital.
else_if = {
limit = {
NOT = { exists = scope:location_a }
}
capital_county = { save_scope_as = location_a }
}
# Next, try to set up a secondary portrait.
## Ancestors can be shown.
if = {
limit = { scope:stele_type = flag:ancestor }
var:ancestor_to_bury = { save_scope_as = secondary_portrait }
}
## As can beaten foes.
else_if = {
limit = { scope:stele_type = flag:conquest }
var:recent_conquest_victory = { save_scope_as = secondary_portrait }
}
## But there's no secondary character available for promotion steles.
# Finally, take care of generic stele effects.
fp1_apply_generic_stele_bonuses_effect = yes
}
# Scope:location_a sounds good.
option = {
name = fp1_other_decisions.0111.a
# Sort the local stele.
fp1_apply_stele_effects = { LOCATION = scope:location_a }
# No stress impact for arbitrary choice.
ai_chance = {
# AI should always pick the best option.
base = 100
}
}
# Scope:location_b is a decent spot.
option = {
name = fp1_other_decisions.0111.b
trigger = { exists = scope:location_b }
# Sort the local stele.
fp1_apply_stele_effects = { LOCATION = scope:location_b }
# No stress impact for arbitrary choice.
ai_chance = {
# AI should always pick the best option; the first one.
base = 0
}
}
# Scope:location_c makes a fine choice.
option = {
name = fp1_other_decisions.0111.c
trigger = { exists = scope:location_c }
# Sort the local stele.
fp1_apply_stele_effects = { LOCATION = scope:location_c }
# No stress impact for arbitrary choice.
ai_chance = {
# AI should always pick the best option; the first one.
base = 0
}
}
# Run some mild clean-up.
after = {
# Remove used variables.
if = {
limit = { scope:stele_type = flag:ancestor }
remove_variable = ancestor_to_bury
}
else_if = {
limit = { scope:stele_type = flag:conquest }
remove_variable = recent_conquest_victory
}
else_if = {
limit = { scope:stele_type = flag:promotion }
remove_variable = recent_rank_increase
}
}
}
# Error suppression.
fp1_other_decisions.0112 = {
hidden = yes
orphan = yes
immediate = {
if = {
limit = {
exists = var:stele_scope_type
exists = var:stele_container
exists = var:stele_commissioner
exists = var:stele_carver
}
# TIT-23473
# No effect needed.
}
}
}
# New holder for a county with a stele.
fp1_other_decisions.0113 = {
hidden = yes
orphan = yes
trigger = {
# Use expanded version if we have FP1.
has_fp1_dlc_trigger = yes
# Using a scripted effect here so we can look at the same trigger in the grant title interaction
fp1_remove_stele_new_holder_trigger = {
TITLE = scope:title
PREVIOUS_HOLDER = scope:previous_holder
NEW_HOLDER = root
}
}
immediate = {
# Blanket remove all types.
scope:title = {
remove_variable = stele_scope_type
remove_variable = stele_container
remove_variable = stele_carver
remove_variable = stele_commissioner
remove_variable = stele_slot_occupied
remove_county_modifier = fp1_stele_ancestors_strong
remove_county_modifier = fp1_stele_ancestors_weak
remove_county_modifier = fp1_stele_conquest_strong
remove_county_modifier = fp1_stele_conquest_weak
remove_county_modifier = fp1_stele_promotion_strong
remove_county_modifier = fp1_stele_promotion_weak
}
}
}