fixed bga events

This commit is contained in:
trashmasteruni 2026-10-16 20:50:19 +02:00
parent 4ead0b92e4
commit cd26a19f4f
20 changed files with 29092 additions and 12489 deletions

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1 @@


View file

@ -1,726 +1 @@
#namespace = fp3_story_cycle_zanj_rebellion_events
#
#### Ali Ibn Muhammad and Zanj Rebellion Setup
#fp3_story_cycle_zanj_rebellion_events.0001 = {
# scope = none
# hidden = yes
#
# immediate = {
# spawn_zanj_leader_character_effect = yes
# scope:zanj_leader = {
# save_scope_as = story_owner
# create_story = story_zanj_rebellion
# give_nickname = nick_albaghid
# }
#
# title:c_basra.holder = {
# add_visiting_courtier = scope:zanj_leader
# }
# title:c_basra.holder.top_liege = {
# trigger_event = {
# id = fp3_story_cycle_zanj_rebellion_events.0002
# }
# trigger_event = {
# id = fp3_story_cycle_zanj_rebellion_events.0005
# days = { 60 120 }
# }
# }
# }
#}
#
#### Ali Ibn Muhammad riling up locals in Basra
#fp3_story_cycle_zanj_rebellion_events.0002 = {
# type = character_event
# theme = intrigue
# override_background = { reference = wilderness_wetlands }
# title = fp3_story_cycle_zanj_rebellion_events.0002.t
# desc = fp3_story_cycle_zanj_rebellion_events.0002.desc
#
# left_portrait = {
# character = root
# animation = marshal
# }
# right_portrait = {
# character = scope:zanj_leader
# animation = scheme
# }
#
# immediate = {
# scope:zanj_leader = {
# save_scope_as = outspoken_rebel
# }
# }
#
# #Try to arrest Ali
# option = {
# name = fp3_story_cycle_zanj_rebellion_events.0002.a
# duel = {
# skill = intrigue
# target = scope:outspoken_rebel
# 50 = {
# # You arrest Ali Ibn Muhammad
# desc = fp3_story_cycle_zanj_rebellion_events.0002.a.success
# compare_modifier = {
# value = scope:duel_value
# multiplier = 3.5
# min = -49
# }
# send_interface_toast = {
# title = fp3_story_cycle_zanj_rebellion_events.0002.a.success
# left_icon = root
# right_icon = scope:outspoken_rebel
# rightfully_imprison_character_effect = {
# TARGET = scope:outspoken_rebel
# IMPRISONER = root
# }
# }
# inherit_zanj_rebellion_effect = yes
# }
# 50 = {
# # Ali Ibn Muhammad escapes
# desc = fp3_story_cycle_zanj_rebellion_events.0002.a.failure
# compare_modifier = {
# value = scope:duel_value
# multiplier = -3.5
# min = -49
# }
# send_interface_toast = {
# title = fp3_story_cycle_zanj_rebellion_events.0002.a.failure
# custom_tooltip = fp3_story_cycle_zanj_rebellion_events_cause_greatly_strengthened_tt
# custom_tooltip = fp3_story_cycle_zanj_rebellion_leaves_for_baghdad
# left_icon = root
# right_icon = scope:outspoken_rebel
# }
# hidden_effect = {
# scope:zanj_leader = {
# change_variable = {
# name = zanj_rebellion_strength_score
# add = 4
# }
# }
# title:c_baghdad.holder = {
# hidden_effect = {
# title:c_baghdad.holder = {
# add_visiting_courtier = scope:outspoken_rebel
# }
# }
# }
# title:c_basra.holder.top_liege = {
# trigger_event = {
# id = fp3_story_cycle_zanj_rebellion_events.0003
# days = { 30 60 }
# }
# }
# }
# }
# }
# root = {
# progress_towards_rival_effect = {
# REASON = fp3_zanj_rebellion_opressed_me
# CHARACTER = scope:outspoken_rebel
# OPINION = default_rival_opinion
# }
# }
# stress_impact = {
# paranoid = medium_stress_impact_loss
# just = minor_stress_impact_loss
# callous = minor_stress_impact_loss
# sadistic = minor_stress_impact_loss
# trusting = medium_stress_impact_gain
# forgiving = medium_stress_impact_gain
# compassionate = medium_stress_impact_gain
# }
# ai_chance = {
# base = 100
# modifier = {
# factor = 0.5
# OR = {
# has_trait = trusting
# has_trait = forgiving
# has_trait = compassionate
# }
# }
# }
# }
#
# #Ignore Ali
# option = {
# name = fp3_story_cycle_zanj_rebellion_events.0002.c
# custom_tooltip = fp3_story_cycle_zanj_rebellion_events_cause_strengthened_tt
# scope:zanj_leader = {
# change_variable = {
# name = zanj_rebellion_strength_score
# add = 2
# }
# }
# custom_tooltip = fp3_story_cycle_zanj_rebellion_leaves_for_baghdad
# hidden_effect = {
# title:c_baghdad.holder = {
# add_visiting_courtier = scope:outspoken_rebel
# }
# }
# title:c_basra.holder.top_liege = {
# trigger_event = {
# id = fp3_story_cycle_zanj_rebellion_events.0003
# days = { 30 60 }
# }
# }
# stress_impact = {
# paranoid = medium_stress_impact_gain
# just = minor_stress_impact_gain
# callous = minor_stress_impact_gain
# sadistic = medium_stress_impact_gain
# trusting = medium_stress_impact_loss
# forgiving = medium_stress_impact_loss
# compassionate = medium_stress_impact_loss
# }
# ai_chance = {
# base = 100
# modifier = {
# factor = 0.5
# OR = {
# has_trait = paranoid
# has_trait = just
# has_trait = callous
# has_trait = sadistic
# }
# }
# }
# }
#}
#
#### Setup to find correct scope for event 0004 and check if Ali is dead or imprisoned
#fp3_story_cycle_zanj_rebellion_events.0003 = {
# scope = none
# hidden = yes
#
# immediate = {
# if ={
# #check if Ali is still alive and not in prison and is not an inheritor of the rebellion
# limit = {
# scope:zanj_leader = {
# AND = {
# is_alive = yes
# is_imprisoned = no
# NOT = { has_character_flag = new_zanj_leader }
# }
# }
# }
# title:c_baghdad.holder.top_liege = {
# trigger_event = {
# id = fp3_story_cycle_zanj_rebellion_events.0004
# }
# }
# }
# }
#}
#
#### Ali Ibn Muhammad claims divinity
#fp3_story_cycle_zanj_rebellion_events.0004 = {
# type = character_event
# theme = faith
# title = fp3_story_cycle_zanj_rebellion_events.0004.t
# desc = fp3_story_cycle_zanj_rebellion_events.0004.desc
#
# left_portrait = {
# character = root
# animation = dismissal
# }
# right_portrait = {
# character = scope:zanj_leader
# animation = personality_zealous
# }
#
# #Contest Ali Ibn Muhammad's claims
# option = {
# name = fp3_story_cycle_zanj_rebellion_events.0004.a
# duel = {
# skill = learning
# target = scope:zanj_leader
# 50 = {
# # You disprove Ali's claims
# desc = fp3_story_cycle_zanj_rebellion_events.0004.a.success
# compare_modifier = {
# value = scope:duel_value
# multiplier = 3.5
# min = -49
# }
# send_interface_toast = {
# title = fp3_story_cycle_zanj_rebellion_events.0004.a.success
# add_piety = medium_piety_gain
# add_prestige = minor_prestige_gain
# left_icon = root
# right_icon = scope:zanj_leader
# }
# }
# 50 = {
# # Ali Ibn Muhammad validates his claims
# desc = fp3_story_cycle_zanj_rebellion_events.0004.a.failure
# compare_modifier = {
# value = scope:duel_value
# multiplier = -3.5
# min = -49
# }
# custom_tooltip = fp3_story_cycle_zanj_rebellion_events_cause_greatly_strengthened_tt
# send_interface_toast = {
# title = fp3_story_cycle_zanj_rebellion_events.0004.a.failure
# left_icon = root
# right_icon = scope:zanj_leader
#
# scope:zanj_leader = {
# add_trait = sayyid
# add_pressed_claim = title:e_arabia
# change_variable = {
# name = zanj_rebellion_strength_score
# add = 4
# }
# }
# }
# }
# }
# root = {
# progress_towards_rival_effect = {
# REASON = fp3_zanj_rebellion_opressed_me
# CHARACTER = scope:zanj_leader
# OPINION = default_rival_opinion
# }
# }
# stress_impact = {
# paranoid = minor_stress_impact_loss
# just = minor_stress_impact_loss
# zealous = medium_stress_impact_loss
# trusting = medium_stress_impact_gain
# forgiving = medium_stress_impact_gain
# cynical = medium_stress_impact_gain
# }
# ai_chance = {
# base = 100
# modifier = {
# factor = 0.5
# OR = {
# has_trait = cynical
# has_trait = trusting
# has_trait = forgiving
# }
# }
# }
# }
#
# #Ignore Ali
# option = {
# name = fp3_story_cycle_zanj_rebellion_events.0004.b
# custom_tooltip = fp3_story_cycle_zanj_rebellion_events_cause_strengthened_tt
#
# scope:zanj_leader = {
# add_trait = sayyid
# add_pressed_claim = title:e_arabia
# change_variable = {
# name = zanj_rebellion_strength_score
# add = 2
# }
# }
# stress_impact = {
# paranoid = minor_stress_impact_gain
# just = minor_stress_impact_gain
# zealous = medium_stress_impact_gain
# trusting = minor_stress_impact_loss
# forgiving = medium_stress_impact_loss
# cynical = medium_stress_impact_loss
# }
# ai_chance = {
# base = 100
# modifier = {
# factor = 0.5
# OR = {
# has_trait = paranoid
# has_trait = just
# has_trait = zealous
# }
# }
# }
# }
#}
#
#### Setup event to find the correct scope and check if Ali or the current Zanj Leader is dead or imprisoned
#fp3_story_cycle_zanj_rebellion_events.0005 = {
# scope = none
# hidden = yes
# immediate = {
# if = {
# limit = {
# scope:zanj_leader = {
# OR = {
# is_imprisoned = yes
# is_alive = no
# is_landed = yes
# }
# }
# }
# inherit_zanj_rebellion_effect = yes
# }
# title:c_basra.holder.top_liege = {
# trigger_event = {
# id = fp3_story_cycle_zanj_rebellion_events.0006
# }
# }
# }
#}
#
#### A Zanj Steps Forth
#fp3_story_cycle_zanj_rebellion_events.0006 = {
# type = character_event
# theme = corruption
# title = fp3_story_cycle_zanj_rebellion_events.0006.t
# desc = {
# desc = fp3_story_cycle_zanj_rebellion_events.0006.desc.a
#
# triggered_desc = {
# trigger = { scope:zanj_leader = { NOT = { has_character_flag = new_zanj_leader } } }
# desc = fp3_story_cycle_zanj_rebellion_events.0006.desc.b
# }
#
# desc = fp3_story_cycle_zanj_rebellion_events.0006.desc.c
# }
#
# left_portrait = {
# character = root
# animation = eyeroll
# }
#
# right_portrait = {
# character = scope:outspoken_rebel
# animation = worry
# }
#
# lower_left_portrait = {
# trigger = { scope:zanj_leader = { NOT = { has_character_flag = new_zanj_leader } } }
# character = scope:zanj_leader
# }
#
# immediate = {
# if = {
# limit = { scope:zanj_leader = { NOT = { has_character_flag = new_zanj_leader } } }
# spawn_zanj_representative_character_effect = yes
# scope:zanj_representative = { save_scope_as = outspoken_rebel }
# }
# else = {
# scope:zanj_leader = { save_scope_as = outspoken_rebel }
# }
# }
# #Give Basra to the Zanj
# option = {
# name = fp3_story_cycle_zanj_rebellion_events.0006.a
#
# create_title_and_vassal_change = {
# type = independency
# save_scope_as = change
# add_claim_on_loss = no
# }
#
# title:c_basra = {
# set_county_culture = culture:east_bantu
# set_county_faith = faith:azariqa
# }
#
# show_as_tooltip = { # UI/UX
# title:c_basra = {
# change_title_holder = {
# holder = scope:outspoken_rebel
# change = scope:change
# }
# }
# }
#
# scope:outspoken_rebel = {
# becomes_independent = {
# change = scope:change
# }
# add_truce_both_ways = {
# character = root
# years = 10
# name = fp3_landed_zanj_reason
# }
# }
#
# if = {
# limit = {
# NOT = { title:c_basra.holder = root }
# }
# add_tyranny = 30
# set_relation_rival = {
# reason = fp3_rival_gave_title_away
# target = title:c_basra.holder
# }
# }
#
# hidden_effect = {
# title:c_basra = {
# change_title_holder = {
# holder = scope:outspoken_rebel
# change = scope:change
# }
# every_de_jure_county = {
# change_title_holder = {
# holder = scope:outspoken_rebel
# change = scope:change
# }
# }
# }
# scope:zanj_leader = {
# random_owned_story = {
# type = story_zanj_rebellion
# end_story = yes
# }
# }
# }
# resolve_title_and_vassal_change = scope:change
#
# stress_impact = {
# compassionate = medium_stress_impact_loss
# just = minor_stress_impact_loss
# forgiving = minor_stress_impact_loss
# generous = medium_stress_impact_loss
# content = medium_stress_impact_loss
# callous = medium_stress_impact_gain
# sadistic = major_stress_impact_gain
# ambitious = medium_stress_impact_gain
# greedy = medium_stress_impact_gain
# }
# ai_chance = {
# base = 100
# modifier = {
# factor = 0.5
# OR = {
# has_trait = callous
# has_trait = sadistic
# has_trait = ambitious
# has_trait = greedy
# }
# }
# }
# }
#
# #Make minor concessions to the Zanj
# option = {
# name = fp3_story_cycle_zanj_rebellion_events.0006.b
#
# scope:zanj_leader = {
# change_variable = {
# name = zanj_rebellion_strength_score
# add = 3
# }
# }
# custom_tooltip = fp3_story_cycle_zanj_rebellion_events_cause_strengthened_tt
# hidden_effect = {
# title:c_basra.holder = {
# if = {
# limit = { scope:zanj_leader != scope:outspoken_rebel}
# add_visiting_courtier = scope:zanj_leader
# }
# add_visiting_courtier = scope:outspoken_rebel
# }
# }
#
# if = {
# limit = {
# NOT = { title:c_basra.holder = root }
# }
# progress_towards_rival_effect = {
# REASON = fp3_zanj_rebellion_interfered_with_my_workers
# CHARACTER = title:c_basra.holder
# OPINION = default_rival_opinion
# }
# }
#
# title:c_basra = {
# add_county_modifier = {
# modifier = fp3_zanj_rebellion_work_concessions_modifier
# years = 5
# }
# }
#
# trigger_event = {
# id = fp3_story_cycle_zanj_rebellion_events.0007
# days = { 30 60 }
# }
# stress_impact = {
# compassionate = minor_stress_impact_loss
# just = minor_stress_impact_loss
# forgiving = minor_stress_impact_loss
# generous = minor_stress_impact_loss
# content = minor_stress_impact_loss
# callous = minor_stress_impact_gain
# sadistic = medium_stress_impact_gain
# ambitious = minor_stress_impact_gain
# greedy = minor_stress_impact_gain
# }
# ai_chance = {
# base = 100
# modifier = {
# factor = 0.5
# OR = {
# has_trait = callous
# has_trait = sadistic
# has_trait = ambitious
# has_trait = greedy
# }
# }
# }
# }
#
# #Ignore the Zanj
# option = {
# name = fp3_story_cycle_zanj_rebellion_events.0006.c
#
# scope:zanj_leader = {
# change_variable = {
# name = zanj_rebellion_strength_score
# add = 5
# }
# }
# custom_tooltip = fp3_story_cycle_zanj_rebellion_events_cause_greatly_strengthened_tt
# hidden_effect = {
# title:c_basra.holder = {
# add_visiting_courtier = scope:zanj_leader
# add_visiting_courtier = scope:zanj_representative
# }
# }
#
# if = {
# limit = {
# NOT = { title:c_basra.holder = root }
# }
#
# progress_towards_friend_effect = {
# REASON = fp3_rival_stayed_out_of_my_business
# CHARACTER = title:c_basra.holder
# OPINION = default_friend_opinion
# }
# }
#
# trigger_event = {
# id = fp3_story_cycle_zanj_rebellion_events.0007
# days = { 30 60 }
# }
#
# stress_impact = {
# compassionate = minor_stress_impact_gain
# just = minor_stress_impact_gain
# forgiving = minor_stress_impact_gain
# generous = minor_stress_impact_gain
# content = minor_stress_impact_gain
# callous = minor_stress_impact_loss
# sadistic = medium_stress_impact_loss
# ambitious = minor_stress_impact_loss
# greedy = minor_stress_impact_loss
# }
# ai_chance = {
# base = 100
# modifier = {
# factor = 0.5
# OR = {
# has_trait = compassionate
# has_trait = just
# has_trait = forgiving
# has_trait = generous
# }
# }
# }
# }
#}
#
#fp3_story_cycle_zanj_rebellion_events.0007 = {
# scope = none
# hidden = yes
# immediate = {
# if = {
# limit = {
# scope:zanj_leader = {
# OR = {
# is_imprisoned = yes
# is_alive = no
# is_landed = yes
# }
# }
# }
# inherit_zanj_rebellion_effect = yes
# }
# title:c_basra.holder.top_liege = {
# trigger_event = {
# id = fp3_story_cycle_zanj_rebellion_events.0008
#
# }
# }
# }
#}
#
#### The Zanj Rebellion
#fp3_story_cycle_zanj_rebellion_events.0008 = {
# type = character_event
# theme = battle
# override_background = { reference = wilderness_wetlands }
# title = fp3_story_cycle_zanj_rebellion_events.0008.t
# desc = {
# desc = fp3_story_cycle_zanj_rebellion_events.0008.desc.a
# triggered_desc = {
# trigger = {
# scope:zanj_leader = { NOT = { has_character_flag = new_zanj_leader}}
# }
# desc = fp3_story_cycle_zanj_rebellion_events.0008.desc.b
# }
# triggered_desc = {
# trigger = {
# scope:zanj_leader = { has_character_flag = new_zanj_leader }
# }
# desc = fp3_story_cycle_zanj_rebellion_events.0008.desc.c
# }
# desc = fp3_story_cycle_zanj_rebellion_events.0008.desc.d
# }
#
# left_portrait = {
# character = root
# animation = shock
# }
# right_portrait = {
# character = scope:zanj_leader
# animation = celebrate_sword
# }
#
# immediate = {
# scope:zanj_leader = {
# give_nickname = nick_chief_of_the_zanj
# hidden_effect = {
# random_owned_story = {
# type = story_zanj_rebellion
# end_story = yes
# }
# }
# }
# hidden_effect = {
# fp3_start_zanj_rebellion_effect = {
# TARGET_COUNTY = title:c_basra
# REBEL_LEADER = scope:zanj_leader
# }
# create_zanj_courtier_effect = {
# EMPLOYER = scope:zanj_leader
# LOCATION = scope:zanj_leader.location
# }
# create_zanj_courtier_effect = {
# EMPLOYER = scope:zanj_leader
# LOCATION = scope:zanj_leader.location
# }
# create_zanj_courtier_effect = {
# EMPLOYER = scope:zanj_leader
# LOCATION = scope:zanj_leader.location
# }
# create_zanj_courtier_effect = {
# EMPLOYER = scope:zanj_leader
# LOCATION = scope:zanj_leader.location
# }
# }
# }
#
# option = {
# name = fp3_story_cycle_zanj_rebellion_events.0008.a
# }
#}


View file

@ -0,0 +1 @@
# we can repopulate this if we want to make our own historical heresy outbreaks

View file

@ -0,0 +1,93 @@
namespace = heresy_pulse
####################################################################
# Heresy outbreak system - Router #
####################################################################
# Faith pulse: faith_heresy_events_pulse runs once a month per faith and
# fires heresy_pulse.0001 when fervor is critically low.
# The router picks Component 1 (light divergence), 2 (dangerous new rite), or 3 (historical heresy, Christianity-only)
# using pluralism + Christian Situation phase weights, and sets the cooldown variable that gates re-runs.
#####################################
# 0001 - Component selection router #
#####################################
heresy_pulse.0001 = {
hidden = yes
scope = faith
immediate = {
save_scope_as = origin_faith
random_list = {
# Component 1 - light rite divergence (most common)
50 = {
trigger = {
any_faith_rite = {
this != root.main_rite
rite_counties >= 1
head_of_rite ?= { is_ai = yes }
}
}
# Pluralism severity scaling
modifier = {
factor = 0.2
main_rite = { rite_has_parameter = pluralism_fundamentalist_vulnerable_to_heresy }
}
modifier = {
factor = 1.6
main_rite = { rite_has_parameter = pluralism_pluralistic_resistant_to_heresy }
}
scope:origin_faith = {
trigger_event = heresy_light.0001
pam_heresy_set_pulse_cooldown_effect = yes
}
}
# Component 2 - new dangerously divergent rite (rare)
20 = {
# Hard 60% main-rite share gate.
trigger = {
pam_heresy_c2_main_rite_dominant_trigger = yes
}
# Pluralism severity scaling
modifier = {
factor = 1
main_rite = { rite_has_parameter = pluralism_fundamentalist_vulnerable_to_heresy }
}
modifier = {
factor = 0.5
main_rite = { rite_has_parameter = pluralism_pluralistic_resistant_to_heresy }
}
modifier = {
factor = 0.1
rite_growth_rites_needed <= 0
}
scope:origin_faith = {
trigger_event = heresy_dangerous_rite.0001
pam_heresy_set_pulse_cooldown_effect = yes
}
}
# Component 3 - historical heresy outbreak (Christianity-only)
10 = {
trigger = {
pam_heresy_c3_eligible_trigger = yes
}
# Pluralism severity scaling (C3 is the most pluralism-sensitive)
modifier = {
factor = 3
main_rite = { rite_has_parameter = pluralism_fundamentalist_vulnerable_to_heresy }
}
modifier = {
factor = 0.5
main_rite = { rite_has_parameter = pluralism_pluralistic_resistant_to_heresy }
}
scope:origin_faith = {
trigger_event = heresy_historical.0001
pam_heresy_set_pulse_cooldown_effect = yes
}
}
}
}
}

View file

@ -0,0 +1,199 @@
namespace = pam_adorcism_events
##################################################
# Adorcism personal-tenet decisions
#
# 0001 Curse Enemy
# 0002 Curse Enemy - target letter
# 0101 Seek Aid for War
##################################################
pam_adorcism_events.0001 = {
type = character_event
title = pam_adorcism_events.0001.t
desc = pam_adorcism_events.0001.desc
theme = faith
override_background = { reference = fp3_cave }
override_effect_2d = { reference = fog }
left_portrait = {
character = root
animation = divine_ecstasy
}
lower_right_portrait = {
character = scope:pam_adorcism_curse_target
animation = worry
}
trigger = {
has_personal_tenet_flag = tenet_adorcism_curse_enemy
pam_adorcism_curse_target_is_valid_trigger = {
TARGET = scope:pam_adorcism_curse_target
ACTOR = root
}
}
option = {
name = pam_adorcism_events.0001.a
add_character_modifier = {
modifier = pam_adorcism_curse_focus_modifier
years = 3
}
add_stress = major_stress_loss
change_spiritual_fulfillment = minor_spiritual_fulfillment_value
save_scope_as = pam_adorcism_curser
if = {
limit = {
pam_adorcism_curse_target_is_valid_trigger = {
TARGET = scope:pam_adorcism_curse_target
ACTOR = root
}
}
scope:pam_adorcism_curse_target = {
if = {
limit = {
rite = root.rite
}
add_character_modifier = {
modifier = pam_adorcism_ill_omen_modifier
years = 1
}
}
if = {
limit = {
OR = {
rite = root.rite
probably_superstitious = yes
}
}
add_character_modifier = {
modifier = pam_adorcism_curse_anxiety_modifier
years = 1
}
trigger_event = pam_adorcism_events.0002
}
}
}
}
}
pam_adorcism_events.0002 = {
type = letter_event
opening = pam_adorcism_events.0002.opening
desc = {
desc = pam_adorcism_events.0002.desc.intro
first_valid = {
triggered_desc = {
trigger = {
scope:pam_adorcism_curser = {
OR = {
religion = religion:catholic_religion
religion = religion:protestant_religion
religion = religion:eastern_orthodox_religion
religion = religion:oriental_orthodox_religion
}
}
}
desc = pam_adorcism_events.0002.desc.christian
}
desc = pam_adorcism_events.0002.desc.default
}
}
sender = scope:pam_adorcism_curser
trigger = {
exists = scope:pam_adorcism_curser
scope:pam_adorcism_curser = { is_alive = yes }
has_character_modifier = pam_adorcism_curse_anxiety_modifier
}
option = {
name = pam_adorcism_events.0002.a
flavor = pam_adorcism_events.0002.a.flavor
show_as_tooltip = {
add_character_modifier = {
modifier = pam_adorcism_curse_anxiety_modifier
years = 1
}
}
}
}
pam_adorcism_events.0101 = {
type = character_event
title = pam_adorcism_events.0101.t
desc = pam_adorcism_events.0101.desc
theme = war
override_background = { reference = battlefield }
left_portrait = {
character = root
animation = war_attacker
}
trigger = {
has_personal_tenet_flag = tenet_adorcism_seek_war_aid
is_at_war = yes
}
option = {
name = pam_adorcism_events.0101.a
add_character_modifier = {
modifier = pam_adorcism_battle_guidance_modifier
years = 3
}
ai_chance = {
base = 100
modifier = {
add = 50
OR = {
has_trait = brave
has_trait = ambitious
}
}
ai_value_modifier = {
ai_boldness = 0.5
}
}
}
option = {
name = pam_adorcism_events.0101.b
add_character_modifier = {
modifier = pam_adorcism_personal_vigor_modifier
years = 3
}
ai_chance = {
base = 75
modifier = {
add = 75
has_trait = brave
}
ai_value_modifier = {
ai_boldness = 0.5
}
}
}
option = {
name = pam_adorcism_events.0101.c
add_character_modifier = {
modifier = pam_adorcism_campaign_endurance_modifier
years = 3
}
ai_chance = {
base = 100
modifier = {
add = 50
OR = {
has_trait = patient
has_trait = diligent
}
}
ai_value_modifier = {
ai_rationality = 0.5
}
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1 @@
# please replace and fix up vanilla in the future

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,345 @@
namespace = pam_religious_artifact_events
###########################
## 0001 - Courtier asks for sponsoring for making a religious artifact
## 0002 - Religious Artifact Inspiration completion event
############################
scripted_trigger pam_religious_artifact_events_valid_courtier_trigger = {
is_available_healthy_ai_adult = yes
faith = root.faith
NOR = {
is_spouse_of = root
is_child_of = root
exists = inspiration
has_any_court_position = yes
is_councillor = yes
has_trait = cynical
}
}
pam_religious_artifact_events.0001 = {
type = character_event
title = pam_religious_artifact_events.0001.t
desc = pam_religious_artifact_events.0001.desc
theme = friendly
override_background = { reference = council_chamber }
cooldown = { years = 10 }
left_portrait = {
character = root
animation = thinking
}
right_portrait = {
character = scope:inspired_courtier
animation = happiness
}
trigger = {
is_available_adult = yes
OR = {
religion = religion:catholic_religion
religion = religion:protestant_religion
religion = religion:eastern_orthodox_religion
religion = religion:oriental_orthodox_religion
}
any_courtier = {
pam_religious_artifact_events_valid_courtier_trigger = yes
}
}
weight_multiplier = {
base = 1
modifier = {
add = 1
NOT = { any_sponsored_inspiration = { } }
}
modifier = {
factor = 0.5
has_royal_court = no
}
}
immediate = {
random_courtier = {
limit = { pam_religious_artifact_events_valid_courtier_trigger = yes }
weight = {
base = 1
modifier = {
has_trait = zealous
add = 5
}
modifier = {
has_trait = theologian
add = 5
}
modifier = {
is_clergy = yes
add = 5
}
}
save_scope_as = inspired_courtier
create_inspiration = religious_artifact_inspiration
inspiration = { save_scope_as = my_inspiration }
}
}
option = { # Accuse them of fraud
name = pam_religious_artifact_events.0001.aa
trigger = {
OR = {
has_trait = cynical
has_trait = sadistic
}
}
rightfully_imprison_character_less_verbose_effect = {
TARGET = scope:inspired_courtier
IMPRISONER = root
}
stress_and_fulfillment_impact = {
cynical = medium_stress_impact_loss
sadistic = medium_stress_impact_loss
zealous = major_stress_impact_gain
}
ai_chance = {
base = 50
modifier = {
factor = 2
OR = {
has_trait = cynical
has_trait = sadistic
}
}
modifier = {
factor = 0
has_trait = zealous
}
}
}
option = { # Sponsor them
name = pam_religious_artifact_events.0001.a
sponsor_inspiration = scope:my_inspiration
reverse_add_opinion = {
target = scope:inspired_courtier
modifier = pleased_opinion
opinion = 25
}
stress_and_fulfillment_impact = {
profligate = medium_stress_impact_loss
content = major_stress_impact_gain
greedy = medium_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_compassion = 1.5
ai_greed = 0.5
}
modifier = {
factor = 2
has_trait = profligate
}
}
}
option = { # Refuse
name = pam_religious_artifact_events.0001.b
scope:inspired_courtier = {
progress_towards_rival_effect = {
CHARACTER = root
REASON = rival_rejected_tapestries
OPINION = -25
}
}
stress_and_fulfillment_impact = {
profligate = medium_stress_impact_gain
greedy = minor_stress_impact_loss
content = minor_stress_impact_loss
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_compassion = 0.5
ai_greed = 1.5
}
}
}
}
# Religious artifact completion event
pam_religious_artifact_events.0002 = {
type = character_event
title = fund_inspiration.1001.t
desc = pam_religious_artifact_events.0002.desc
theme = inspiration_complete
override_background = { reference = temple }
left_portrait = {
character = root
animation = admiration
}
right_portrait = {
character = scope:inspiration_owner
animation = prayer
camera = camera_event_right_to_the_right
}
artifact = { # To display the artifact in the event-window
target = scope:newly_created_artifact
position = lower_center_portrait
}
trigger = {
has_character_flag = trigger_religious_artifact_completion_event
}
immediate = {
play_music_cue = "mx_cue_epic_sacral_moment"
remove_character_flag = trigger_religious_artifact_completion_event
create_christian_religious_artifact_effect = {
OWNER = root
CREATOR = scope:inspiration_owner
}
# Add a dedication to the description - fund_inspiration.7001
if = {
limit = {
scope:inspiration_owner = {
has_variable = artifact_dedication_a_var
}
}
scope:inspiration_owner = {
var:artifact_dedication_a_var = {
save_scope_as = dedication_a
}
}
scope:newly_created_artifact = {
set_artifact_description = artifact_dedication_inscribed_a
}
}
else_if = {
limit = {
scope:inspiration_owner = {
has_variable = artifact_dedication_b_var
}
}
scope:inspiration_owner = {
var:artifact_dedication_b_var = {
save_scope_as = dedication_b
}
}
scope:newly_created_artifact = {
set_artifact_description = artifact_dedication_inscribed_b
}
}
else_if = {
limit = {
scope:inspiration_owner = {
has_variable = artifact_dedication_var
var:artifact_dedication_var = flag:dedication_c
}
}
scope:newly_created_artifact = {
set_artifact_description = artifact_dedication_inscribed_c
}
}
else_if = {
limit = {
scope:inspiration_owner = {
has_variable = artifact_dedication_d_var
}
}
scope:inspiration_owner = {
var:artifact_dedication_d_var = {
save_scope_as = dedication_d
}
}
scope:newly_created_artifact = {
set_artifact_description = artifact_dedication_inscribed_d
}
}
else_if = {
limit = {
scope:inspiration_owner = {
has_variable = artifact_dedication_e_var
}
}
scope:inspiration_owner = {
var:artifact_dedication_e_var = {
save_scope_as = dedication_e
}
}
scope:newly_created_artifact = {
set_artifact_description = artifact_dedication_inscribed_e
}
}
else_if = {
limit = {
scope:inspiration_owner = {
has_variable = artifact_dedication_f_var
}
}
scope:inspiration_owner = {
var:artifact_dedication_f_var = {
save_scope_as = dedication_f
}
}
scope:newly_created_artifact = {
set_artifact_description = artifact_dedication_inscribed_f
}
}
else_if = {
limit = {
scope:inspiration_owner = {
has_variable = artifact_dedication_g1_var
has_variable = artifact_dedication_g2_var
}
}
scope:inspiration_owner = {
var:artifact_dedication_g1_var = {
save_scope_as = dedication_g1
}
}
scope:inspiration_owner = {
var:artifact_dedication_g2_var = {
save_scope_as = dedication_g2
}
}
scope:newly_created_artifact = {
set_artifact_description = artifact_dedication_inscribed_g
}
}
else_if = {
limit = {
scope:inspiration_owner = {
has_variable = artifact_dedication_var
var:artifact_dedication_h_var = flag:dedication_h
}
}
scope:newly_created_artifact = {
set_artifact_description = artifact_dedication_inscribed_h
}
}
#Inscribe your family motto
else_if = {
limit = {
scope:inspiration_owner = {
has_variable = artifact_inscribe_motto_var
}
}
scope:newly_created_artifact = {
set_artifact_description = artifact_motto_inscribed
}
}
}
option = {
name = pam_religious_artifact_events.0002.a
custom_tooltip = create_artifact_religious_artifact_tooltip
}
}

View file

@ -0,0 +1,519 @@
namespace = pam_saint_events
###########################################
## Canonizing Saints
###########################################
## Canonization
## 0001 - Petition sent: tells the canonizer the HoF's answer is awaited (fired at commit)
## 0002 - Head of Faith canonization request (HoF decides)
## 0003 - Canonization approved / finalized (shown to the canonizer)
## 0004 - Canonization denied (notify canonizer)
## Relic extraction
## 0005 - Relic extraction begun: tells the extractor the relic will arrive soon
## 0006 - The relic is drawn a delay after the saint is picked in the extract-a-relic decision
## Buried-saint tomb visit
## 0007 - Visiting a saint's tomb (player): pay respects, or draw a relic on the spot
###########################################
# Only the canonizing ruler, root, hears about this when they petition the Head of Faith
# scope:saint_candidate, consecration_province and petition_recipient stay set
pam_saint_events.0001 = {
type = character_event
title = pam_saint_events.0001.t
desc = pam_saint_events.0001.desc
theme = christian
left_portrait = {
character = root
# Muslims pray in their own posture; trigger runs in the portrait character's scope.
triggered_animation = {
trigger = { faith.religion = religion:islam_religion }
animation = prayer_muslim
}
animation = prayer_standing_eyes
}
lower_right_portrait = {
character = scope:saint_candidate
animation = dead
}
right_portrait = {
trigger = { exists = scope:petition_recipient }
character = scope:petition_recipient
animation = thinking
}
option = {
name = pam_saint_events.0001.a
# Wording picked here so the saint_candidate / consecration_province / petition_recipient scopes stay reachable in the loc key.
if = {
limit = {
OR = {
faith.religion = religion:catholic_religion
faith.religion = religion:protestant_religion
faith.religion = religion:eastern_orthodox_religion
faith.religion = religion:oriental_orthodox_religion
}
}
custom_tooltip = pam_saint_events.0001.a.tt_saint
}
else = {
custom_tooltip = pam_saint_events.0001.a.tt_va
}
# Acknowledging the petition starts the HoF's clock (-> 0003/0004).
hidden_effect = {
scope:petition_recipient = {
trigger_event = {
id = pam_saint_events.0002
days = 30
}
}
}
}
}
# Sent to the Head of Faith. They approve or reject the canonization.
# scope:canonizer - the ruler putting the saint forward
# scope:saint_candidate - the dead character to be canonized
# scope:consecration_province - where they would be consecrated/buried
pam_saint_events.0002 = {
type = character_event
title = pam_saint_events.0002.t
desc = {
# Saint vs Venerated Ancestor wording picked here so canonizer / saint_candidate / consecration_province stay reachable in the loc key.
first_valid = {
triggered_desc = {
trigger = {
OR = {
faith.religion = religion:catholic_religion
faith.religion = religion:protestant_religion
faith.religion = religion:eastern_orthodox_religion
faith.religion = religion:oriental_orthodox_religion
}
}
desc = pam_saint_events.0002.desc_saint
}
desc = pam_saint_events.0002.desc_va
}
# Name the candidate's personality traits (handles 1, 2, or 3).
first_valid = {
triggered_desc = {
trigger = { exists = scope:pam_saint_ptrait_3 }
desc = pam_saint_events.0002.desc.traits_3
}
triggered_desc = {
trigger = { exists = scope:pam_saint_ptrait_2 }
desc = pam_saint_events.0002.desc.traits_2
}
triggered_desc = {
trigger = { exists = scope:pam_saint_ptrait_1 }
desc = pam_saint_events.0002.desc.traits_1
}
}
# Close that paragraph with a line scaled to how virtuous they were.
first_valid = {
triggered_desc = {
trigger = { scope:saint_candidate = { num_virtuous_traits >= 3 } }
desc = pam_saint_events.0002.desc.virtue_3
}
triggered_desc = {
trigger = { scope:saint_candidate = { num_virtuous_traits >= 2 } }
desc = pam_saint_events.0002.desc.virtue_2
}
triggered_desc = {
trigger = { scope:saint_candidate = { num_virtuous_traits >= 1 } }
desc = pam_saint_events.0002.desc.virtue_1
}
}
}
theme = christian
left_portrait = {
character = scope:canonizer
animation = personality_zealous
}
lower_center_portrait = {
character = scope:saint_candidate
animation = dead
}
right_portrait = {
character = root
animation = thinking
}
# Pull the candidate's personality traits into scopes so the description can name them.
immediate = {
scope:saint_candidate = {
every_character_trait = {
limit = { has_trait_category = personality }
add_to_list = pam_saint_personality_traits
}
}
if = {
limit = { list_size:pam_saint_personality_traits > 0 }
ordered_in_list = {
list = pam_saint_personality_traits
save_scope_as = pam_saint_ptrait_1
remove_from_list = pam_saint_personality_traits
}
}
if = {
limit = { list_size:pam_saint_personality_traits > 0 }
ordered_in_list = {
list = pam_saint_personality_traits
save_scope_as = pam_saint_ptrait_2
remove_from_list = pam_saint_personality_traits
}
}
if = {
limit = { list_size:pam_saint_personality_traits > 0 }
ordered_in_list = {
list = pam_saint_personality_traits
save_scope_as = pam_saint_ptrait_3
remove_from_list = pam_saint_personality_traits
}
}
}
option = { # Approve the canonization
name = pam_saint_events.0002.a
pam_canonize_saint_effect = {
CANONIZER = scope:canonizer
CANDIDATE = scope:saint_candidate
CONSECRATION_PROVINCE = scope:consecration_province
PRESET = no
}
# Gratitude toward the HoF (root) who granted the petition.
scope:canonizer = {
add_opinion = {
target = root
modifier = pam_canonization_approved_petitioner_opinion
}
}
# Same-faith dynasty members warm to the HoF too; hidden so the option shows one summary line.
custom_tooltip = {
text = pam_saint_events.0002.a.dynasty_opinion_tt
scope:canonizer.dynasty ?= {
every_dynasty_member = {
limit = {
this != scope:canonizer
faith = scope:canonizer.faith
}
add_opinion = {
target = root
modifier = pam_canonization_approved_dynasty_opinion
}
}
}
}
hidden_effect = {
scope:canonizer = {
trigger_event = pam_saint_events.0003
}
}
ai_chance = {
base = 0
modifier = {
add = {
value = scope:saint_candidate.pam_hof_canonization_approve_weight
}
}
}
}
option = { # Reject the canonization
name = pam_saint_events.0002.b
trigger = {
NOT = { puppeteer ?= scope:canonizer }
}
# Resentment toward the HoF (root) who refused the petition.
scope:canonizer = {
add_opinion = {
target = root
modifier = pam_canonization_denied_petitioner_opinion
}
}
# Same-faith dynasty members sour on the HoF too; hidden so the option shows one summary line.
custom_tooltip = {
text = pam_saint_events.0002.b.dynasty_opinion_tt
scope:canonizer.dynasty ?= {
every_dynasty_member = {
limit = {
this != scope:canonizer
faith = scope:canonizer.faith
}
add_opinion = {
target = root
modifier = pam_canonization_denied_dynasty_opinion
}
}
}
}
hidden_effect = {
scope:canonizer = {
trigger_event = pam_saint_events.0004
}
}
ai_chance = {
base = 0
modifier = {
add = {
value = scope:saint_candidate.pam_hof_canonization_reject_weight
}
}
modifier = {
add = pam_hof_canonization_cynical_weight
has_trait = cynical # the deciding Head of Faith's own outlook
}
}
}
}
# The Head of Faith approved (or no approval was needed).
pam_saint_events.0003 = {
type = character_event
title = pam_saint_events.0003.t
# Wording picked here so saint_candidate / consecration_province stay reachable in the loc key.
desc = {
first_valid = {
triggered_desc = {
trigger = {
OR = {
faith.religion = religion:catholic_religion
faith.religion = religion:protestant_religion
faith.religion = religion:eastern_orthodox_religion
faith.religion = religion:oriental_orthodox_religion
}
}
desc = pam_saint_events.0003.desc_saint
}
desc = pam_saint_events.0003.desc_va
}
}
theme = christian
left_portrait = {
character = scope:saint_candidate
animation = dead
}
option = {
name = pam_saint_events.0003.a
# The canonizer's same-faith dynasty takes pride in their new saint; hidden so the option shows one summary line.
custom_tooltip = {
text = pam_saint_events.0003.a.dynasty_opinion_tt
root.dynasty ?= {
every_dynasty_member = {
limit = {
this != root
faith = root.faith
}
add_opinion = {
target = root
modifier = pam_canonization_celebrated_dynasty_opinion
}
}
}
}
}
}
# The Head of Faith rejected the canonization.
pam_saint_events.0004 = {
type = character_event
title = pam_saint_events.0004.t
# Saint/Venerated-Ancestor vocabulary swapped inside the key by custom loc; saint_candidate / petition_recipient stay live via the direct desc reference.
desc = pam_saint_events.0004.desc
theme = christian
left_portrait = {
character = root
animation = disappointed
}
lower_center_portrait = {
character = scope:saint_candidate
animation = dead
}
right_portrait = {
character = root.faith.religious_head
animation = disapproval
}
option = {
name = pam_saint_events.0004.a
# Refund the petition cost the canonize decision charged up front, since the HoF declined.
add_piety_no_experience = pam_canonize_saint_piety_cost
add_gold = pam_canonize_saint_gold_cost
}
}
# Fired to the extracting ruler (root) the instant they begin drawing a relic, so they know the relic (0006) is on its way. Informational; the decision only fires it for players. scope:relic_saint / extract_site carry over.
pam_saint_events.0005 = {
type = character_event
title = pam_saint_events.0005.t
desc = pam_saint_events.0005.desc
theme = christian
left_portrait = {
character = root
animation = personality_zealous
}
right_portrait = {
trigger = { exists = scope:relic_saint }
character = scope:relic_saint
}
option = {
name = pam_saint_events.0005.a
custom_tooltip = pam_saint_events.0005.a.tt
# Acknowledging the start of the work begins the timer that delivers the relic.
hidden_effect = {
trigger_event = {
id = pam_saint_events.0006
days = 30
}
}
}
}
# The relic is drawn here (a delay after the extract-a-relic pick) and shown to the extractor (root). scope:extract_site carries over; creation saves scope:relic_artifact for naming.
pam_saint_events.0006 = {
type = character_event
title = pam_saint_events.0006.t
desc = {
first_valid = {
triggered_desc = {
trigger = { exists = scope:relic_artifact }
desc = pam_saint_events.0006.desc_relic
}
desc = pam_saint_events.0006.desc
}
}
theme = christian
left_portrait = {
character = root
animation = prayer_standing_eyes
}
right_portrait = {
trigger = { exists = scope:relic_saint }
character = scope:relic_saint
}
immediate = {
if = {
limit = { exists = scope:extract_site.saint_in_province }
scope:extract_site.saint_in_province = { save_scope_as = relic_saint }
}
else = {
root = { save_scope_as = relic_saint }
}
pam_extract_relic_from_saint_effect = {
SITE = scope:extract_site
}
}
option = {
name = pam_saint_events.0006.a
# Relic was built in immediate (hidden_effect_new_object), so it can't surface itself here; confirm the draw and that it can now be placed.
custom_tooltip = pam_saint_events.0006.a.tt
# Echo the blessing rolled in immediate (tooltip only), crediting the tenet.
if = {
limit = {
rite = { rite_has_parameter = tenet_dulia_extra_relic_modifier }
exists = scope:relic_artifact
}
pam_show_dulia_relic_blessing_effect = yes
}
# Echo the prestige granted in immediate (tooltip only), crediting the tenet.
if = {
limit = {
rite = { rite_has_parameter = tenet_dulia_dynasty_prestige_from_relics }
exists = dynasty
exists = scope:relic_creator_saint.dynasty
scope:relic_creator_saint.dynasty = dynasty
}
show_as_tooltip = { pam_grant_dulia_relic_dynasty_prestige_effect = yes }
}
}
}
# Runs from poi_buried_saint on_visit when a player reaches the tomb
# Historical tombs only reach it when a relic can be drawn
pam_saint_events.0007 = {
type = character_event
title = pam_saint_events.0007.t
desc = pam_saint_events.0007.desc
theme = christian
left_portrait = {
character = root
animation = personality_zealous
}
right_portrait = {
trigger = { exists = scope:visited_saint }
character = scope:visited_saint
animation = dead
}
option = {
name = pam_saint_events.0007.a
if = {
limit = {
scope:saint_tomb_province = { has_variable = pam_preset_buried_saint }
}
add_piety = point_of_interest_miniscule_piety_value
}
else = {
add_piety = point_of_interest_piety_value
add_stress = minor_stress_loss
}
}
# Draw a relic now - only while the tomb is in your realm, you can afford it, and the saint can still yield one
option = {
name = pam_saint_events.0007.b
trigger = {
piety >= pam_extract_relic_piety_cost
gold >= pam_extract_relic_gold_cost
exists = scope:visited_saint
faith = { has_saint_character = scope:visited_saint }
scope:saint_tomb_province = {
pam_can_extract_relic_from_saint_trigger = { EXTRACTOR = root SAINT = scope:visited_saint }
}
}
custom_tooltip = pam_saint_events.0007.b.tt
add_piety_no_experience = {
value = pam_extract_relic_piety_cost
multiply = -0.75
}
remove_short_term_gold = {
value = pam_extract_relic_gold_cost
multiply = 0.75
}
pam_extract_relic_from_saint_effect = {
SITE = scope:saint_tomb_province
}
hidden_effect = {
if = {
limit = { exists = scope:relic_artifact }
send_interface_toast = {
title = pam_saint_events.0007.b.toast
left_icon = root
right_icon = scope:relic_artifact
custom_tooltip = pam_saint_events.0007.b.toast_desc
}
}
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1 @@


View file

@ -0,0 +1 @@


View file

@ -0,0 +1 @@