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

1339 lines
33 KiB
Text

namespace = fp3_struggle
### EVENT LIST ####################################################################
## 0001 - 0020 Internal Management Events by Hugo Cortell
## 0021 - 0030 Invalidation Events by Hugo Cortell
## 0031 - 0040 Empty block by Hugo Cortell
## 0051 - 0060 FP3 Struggle Intro Events by Hugo Cortell
## 0061 - 0070 Realm Shattering Events by Hugo Cortell
## 0071 - 0300 Struggle Endings by Thalassic Design Dept (Ola, Eren, Hugo)
## XXXX - XXXX Event Name Here by Author Name Here
## XXXX - XXXX Event Name Here by Author Name Here
## XXXX - XXXX Event Name Here by Author Name Here
## 9980 - 9999 Integrity Validation Tools by Hugo Cortell
###################################################################################
###################################
# FP3 Maintenance Events
# By Ewan Cowhig Croft
###################################
scripted_trigger fp3_struggle_0001_valid_ai_struggle_char_trigger = {
# Basic checks.
can_execute_decision = fp3_name_read_in_friday_prayer_decision
is_ai = yes
# Suitability for switchin' checks.
OR = {
# If they're gonna become a supporter, it should make sense.
AND = {
opinion = {
target = title:d_sunni.holder
value >= low_positive_opinion
}
OR = {
# We check for the opposite, since you're flipflopping.
has_trait = fp3_struggle_detractor
NOR = {
has_trait = fp3_struggle_supporter
has_trait = fp3_struggle_detractor
}
}
}
# If they're gonna become a detractor, that should make sense too.
AND = {
opinion = {
target = title:d_sunni.holder
value <= low_negative_opinion
}
OR = {
# We check for the opposite, since you're flipflopping.
has_trait = fp3_struggle_supporter
NOR = {
has_trait = fp3_struggle_supporter
has_trait = fp3_struggle_detractor
}
}
}
}
}
fp3_struggle.0001 = {
hidden = yes
scope = none
scope = struggle
# If the struggle ends, break the loop.
trigger = { exists = struggle:persian_struggle }
immediate = {
if = {
# If there isn't a caliph at present, then stop trying to make people talk about them.
limit = { exists = title:d_sunni.holder }
struggle:persian_struggle = {
every_involved_ruler = {
limit = { fp3_struggle_0001_valid_ai_struggle_char_trigger = yes }
random = {
chance = fp3_struggle_switch_sides_value
execute_decision = fp3_name_read_in_friday_prayer_decision
}
}
every_interloper_ruler = {
limit = { fp3_struggle_0001_valid_ai_struggle_char_trigger = yes }
random = {
chance = fp3_struggle_switch_sides_value
execute_decision = fp3_name_read_in_friday_prayer_decision
}
}
}
}
# Cue this event up again for the next time around.
trigger_event = {
id = fp3_struggle.0001
years = { 3 5 }
}
}
}
###################################
# FP3 Intro Events
# By Hugo Cortell, reworked by Ewan Cowhig Croft
###################################
fp3_struggle.0051 = { # BOOKMARK EVENT
type = character_event
window = fullscreen_event
title = fp3_struggle.0051.t
desc = {
first_valid = {
triggered_desc = {
trigger = {
any_character_struggle = {
is_struggle_type = persian_struggle
is_struggle_phase = struggle_persia_phase_unrest
}
}
desc = fp3_struggle.0051.desc.unrest
}
desc = fp3_struggle.0051.desc.stabilization
}
first_valid = {
triggered_desc = {
trigger = {
any_character_struggle = {
is_struggle_type = persian_struggle
is_struggle_phase = struggle_persia_phase_stabilisation
}
}
desc = fp3_struggle.0051.desc.stabilization_actor
}
triggered_desc = {
trigger = {
has_trait = fp3_struggle_supporter
}
desc = fp3_struggle.0051.desc.supporter
}
triggered_desc = {
trigger = {
has_trait = fp3_struggle_detractor
}
desc = fp3_struggle.0051.desc.detractor
}
triggered_desc = {
trigger = {
fp3_struggle_is_the_caliph = yes
}
desc = fp3_struggle.0051.desc.caliph
}
triggered_desc = {
trigger = {
any_character_struggle = {
involvement = involved
is_struggle_type = persian_struggle
}
}
desc = fp3_struggle.0051.desc.involved
}
triggered_desc = {
trigger = {
any_character_struggle = {
involvement = interloper
is_struggle_type = persian_struggle
}
}
desc = fp3_struggle.0051.desc.interloper
}
}
}
theme = realm
trigger = { # we need to prevent this from firing for all players when a new player joins in MP
is_ai = no
NOT = { has_character_flag = fp3_struggle_intro_event_flag }
any_character_struggle = { is_struggle_type = persian_struggle }
}
override_background = { reference = fp3_fullscreen_intro }
override_sound = { reference = "event:/DLC/FP2/SFX/UI/fp2_struggle_ui_intro_animate" }
cooldown = { years = 100 }
widgets = {
widget = {
gui = "event_window_widget_struggle_info"
container = "dynamic_content_widget"
controller = struggle_info
setup_scope = { struggle:persian_struggle = { save_scope_as = struggle } }
}
}
immediate = {
play_music_cue = strugglestart_cue
add_character_flag = fp3_struggle_intro_event_flag
add_to_global_variable_list = { # List is only checked for removal, comparing it in the trigger would be needlessly expensive
name = fp3_intro_flag_character_list
target = root
}
save_scope_value_as = {
name = start
value = yes
}
# LOC SCOPES
character:34010 = { save_scope_as = Mutawakkil } # Stabbed by guards
character:34012 = { save_scope_as = Muntasir } # Poisoned probably
character:34013 = { save_scope_as = Mustain } # Betrayed by bookmark character (?) (Note: this char is listed as 3933 in some other files for some reason)
character:34014 = { save_scope_as = Mostaza } # Bookmark ruler
}
option = {
name = {
text = {
first_valid = {
triggered_desc = {
trigger = {
any_character_struggle = { is_struggle_type = persian_struggle }
has_title = character:34014.primary_title
}
desc = fp3_struggle.0051.b
}
desc = fp3_struggle.0051.a
}
}
}
clicksound = "event:/DLC/FP2/SFX/UI/fp2_struggle_start_select"
}
}
#################################################
# Struggle Endings #
# By Hugo Cortell, Maxence Voleau, Ola Jentzsch & Eren Humphrey #
###################################################################
# Script is set up in this way to prevent out of order executions #
###################################################################
### STRENGTHEN CALIPHATE ENDING ### 0071 = 0080 ###
fp3_struggle.0071 = { # Strengthen the Caliphate Ending
type = character_event
window = fullscreen_event
title = fp3_struggle.0071.t
desc = {
first_valid = {
triggered_desc = {
trigger = {
fp3_struggle_is_the_caliph = yes
}
desc = fp3_struggle.0071.desc.caliph
}
triggered_desc = {
trigger = {
has_trait = fp3_struggle_supporter
}
desc = fp3_struggle.0071.desc.supporter
}
}
}
theme = court
override_background = { reference = fp3_fullscreen_strength }
override_sound = { reference = "event:/DLC/FP2/SFX/UI/fp2_struggle_ui_intro_animate" }
immediate = {
fp3_ending_effects_assertion = yes
character:34014 = { save_scope_as = Mostaza } # Bookmark ruler
play_music_cue = struggleend_cue
}
option = {
name = fp3_struggle.0071.a
clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_positive"
ai_chance = {
base = 75
modifier = {
factor = 0.1
realm_size >= 250
}
}
}
option = {
trigger = {
has_dlc_feature = roads_to_power
fp3_struggle_is_the_caliph = yes
NOT = { government_has_flag = government_is_administrative }
}
name = fp3_struggle.0071.b
clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_positive"
convert_to_administrative_from_feudalism_effect = { GOVERNMENT_TO_ADOPT = flag:administrative }
add_legitimacy_effect = { LEGITIMACY = admin_convert_legitimacy_value } #One Time Legitimacy Boost
ai_chance = {
base = 0
modifier = {
add = 25
realm_size >= 75
}
modifier = {
add = 25
realm_size >= 100
}
modifier = {
add = 25
realm_size >= 125
}
modifier = {
add = 25
realm_size >= 150
}
modifier = {
add = 50
realm_size >= 200
}
}
}
after = {
fp3_end_persian_struggle_effect = {
ENDING = struggle_persia_ending_assertion_decision
EVENT = fp3_struggle.0072
FLAG = flag:fp3_struggle_strengthen_caliphate_ending
}
}
}
fp3_struggle.0072 = { # Notification for relevant people
type = character_event
window = fullscreen_event
title = fp3_struggle.0071.t
desc = {
first_valid = {
triggered_desc = {
trigger = {
fp3_struggle_is_the_caliph = yes
}
desc = fp3_struggle.0072.desc.caliph
}
triggered_desc = {
trigger = {
has_trait = fp3_struggle_supporter
}
desc = fp3_struggle.0072.desc.supporter
}
triggered_desc = {
trigger = {
has_trait = fp3_struggle_detractor
}
desc = fp3_struggle.0072.desc.detractor
}
triggered_desc = {
trigger = {
any_character_struggle = {
involvement = involved
is_struggle_type = persian_struggle
}
}
desc = fp3_struggle.0072.desc.involved
}
triggered_desc = {
trigger = {
any_character_struggle = {
involvement = interloper
is_struggle_type = persian_struggle
}
}
desc = fp3_struggle.0072.desc.interloper
}
desc = fp3_struggle.0072.desc.uninvolved
}
}
theme = court
override_background = { reference = fp3_fullscreen_strength }
override_sound = { reference = "event:/DLC/FP2/SFX/UI/fp2_struggle_ui_intro_animate" }
trigger = {
NOT = { has_character_flag = struggle_end_notification }
}
immediate = {
show_as_tooltip = { struggle:persian_struggle = { end_struggle = yes } }
add_character_flag = struggle_end_notification
play_music_cue = struggleend_cue
}
option = {
name = fp3_struggle.0072.a
trigger = {
OR = {
fp3_struggle_is_the_caliph = yes
has_trait = fp3_struggle_supporter
}
}
clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_positive"
}
option = {
name = fp3_struggle.0072.a
trigger = {
NOR = {
fp3_struggle_is_the_caliph = yes
has_trait = fp3_struggle_supporter
}
}
clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_negative"
}
after = {
remove_character_flag = struggle_end_notification
}
}
### CONCESSION ENDING ### 0081 = 0090 ###
fp3_struggle.0081 = { #
type = character_event
window = fullscreen_event
title = fp3_struggle.0082.t
desc = {
first_valid = {
triggered_desc = {
trigger = { has_trait = fp3_struggle_supporter }
desc = fp3_struggle.0082.desc.supporter
}
triggered_desc = {
trigger = { has_trait = fp3_struggle_detractor }
desc = fp3_struggle.0082.desc.detractor
}
triggered_desc = {
trigger = {
any_character_struggle = {
involvement = involved
is_struggle_type = persian_struggle
}
}
desc = {
desc = fp3_struggle.0082.desc.intro
desc = fp3_struggle.0082.desc.involved
}
}
triggered_desc = {
trigger = {
any_character_struggle = {
involvement = interloper
is_struggle_type = persian_struggle
}
}
desc = {
desc = fp3_struggle.0082.desc.intro
desc = fp3_struggle.0082.desc.interloper
}
}
desc = fp3_struggle.0082.desc.uninvolved
}
}
theme = court
override_background = { reference = fp3_fullscreen_concession }
override_sound = { reference = "event:/DLC/FP2/SFX/UI/fp2_struggle_ui_intro_animate" }
immediate = {
play_music_cue = struggleend_cue
}
option = {
name = fp3_struggle.0082.a
show_as_tooltip = {
struggle:persian_struggle = { end_struggle = yes }
fp3_struggle_ending_concession_effects = yes
}
clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_negative"
}
after = {
fp3_end_persian_struggle_effect = {
ENDING = yes
EVENT = fp3_struggle.0082
FLAG = flag:fp3_struggle_concession_ending
}
}
}
fp3_struggle.0082 = { # Notification for relevant people
type = character_event
window = fullscreen_event
title = fp3_struggle.0082.t
desc = {
first_valid = {
triggered_desc = {
trigger = { has_trait = fp3_struggle_supporter }
desc = fp3_struggle.0082.desc.supporter
}
triggered_desc = {
trigger = { has_trait = fp3_struggle_detractor }
desc = fp3_struggle.0082.desc.detractor
}
triggered_desc = {
trigger = { exists = scope:involved }
desc = {
desc = fp3_struggle.0082.desc.intro
desc = fp3_struggle.0082.desc.involved
}
}
triggered_desc = {
trigger = { exists = scope:interloper }
desc = {
desc = fp3_struggle.0082.desc.intro
desc = fp3_struggle.0082.desc.interloper
}
}
desc = fp3_struggle.0082.desc.uninvolved
}
}
theme = court
override_background = { reference = fp3_fullscreen_concession }
override_sound = { reference = "event:/DLC/FP2/SFX/UI/fp2_struggle_ui_intro_animate" }
# There could, and should, be a event_window_widget_struggle_info widget here
immediate = {
if = {
limit = {
any_character_struggle = {
involvement = involved
is_struggle_type = persian_struggle
}
}
save_scope_as = involved
}
else_if = {
limit = {
any_character_struggle = {
involvement = interloper
is_struggle_type = persian_struggle
}
}
save_scope_as = interloper
}
show_as_tooltip = {
struggle:persian_struggle ?= { end_struggle = yes }
fp3_struggle_ending_concession_effects = yes
}
play_music_cue = struggleend_cue
}
option = {
name = fp3_struggle.0082.b
clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_negative"
}
}
### FOUNDATION ENDINGS ### 0091 = 0180 ###
fp3_struggle.0091 = { # Rekindle Iran
type = character_event
window = fullscreen_event
title = fp3_struggle.0091.t
desc = {
first_valid = {
triggered_desc = {
trigger = {
has_trait = fp3_struggle_supporter
}
desc = fp3_struggle.0091.desc.supporter
}
triggered_desc = {
trigger = {
has_trait = fp3_struggle_detractor
}
desc = fp3_struggle.0091.desc.detractor
}
}
}
theme = court
override_background = { reference = fp3_fullscreen_rekindle }
override_sound = { reference = "event:/DLC/FP2/SFX/UI/fp2_struggle_ui_intro_animate" }
immediate = {
save_scope_as = struggle_ender
# Save Sunni caliph or previous one as scope:struggle_liege
fp3_save_sunni_caliph_or_previous_effect = yes
title:e_persia = { save_scope_as = persia_loc } # Persia gets renamed under clan govs
fp3_struggle_rekindle_iran_effects = yes
play_music_cue = struggleend_cue
dynasty:1029100 = { save_scope_as = sassanid_dynasty }
}
option = {
name = fp3_struggle.0091.a
show_as_tooltip = { struggle:persian_struggle = { end_struggle = yes } }
clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_positive"
}
after = {
fp3_end_persian_struggle_effect = {
ENDING = struggle_persia_ending_rekindle_iran_decision
EVENT = fp3_struggle.0092
FLAG = flag:fp3_struggle_rekindle_iran_ending
}
}
}
fp3_struggle.0092 = { # Notification for relevant people
type = character_event
window = fullscreen_event
title = fp3_struggle.0091.t
desc = {
desc = fp3_struggle.0092.intro
first_valid = {
triggered_desc = {
trigger = {
culture = { has_cultural_pillar = heritage_iranian }
}
desc = fp3_struggle.0092.desc.iranian
}
desc = fp3_struggle.0092.desc.non-iranian
}
}
theme = court
override_background = { reference = fp3_fullscreen_rekindle }
override_sound = { reference = "event:/DLC/FP2/SFX/UI/fp2_struggle_ui_intro_animate" }
# There could, and should, be a event_window_widget_struggle_info widget here
immediate = {
show_as_tooltip = {
struggle:persian_struggle = { end_struggle = yes }
fp3_struggle_rekindle_iran_effects = yes
}
play_music_cue = struggleend_cue
}
option = {
name = fp3_struggle.0092.a
trigger = {
culture = { has_cultural_pillar = heritage_iranian }
}
clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_positive"
}
option = {
name = fp3_struggle.0092.a
trigger = {
NOT = {
culture = { has_cultural_pillar = heritage_iranian }
}
}
clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_negative"
}
}
fp3_struggle.0095 = { # Temper the Caliphate, Shia Ending
type = character_event
window = fullscreen_event
title = fp3_struggle.0095.t
desc = {
first_valid = {
triggered_desc = {
trigger = {
faith = {
OR = {
has_doctrine = muhammad_succession_shia_doctrine
has_doctrine = muhammad_succession_zandaqa_doctrine
}
}
}
desc = fp3_struggle.0095.desc.shia_and_zandaqa
}
triggered_desc = {
trigger = {
faith = {
has_doctrine = muhammad_succession_muhakkima_doctrine
}
}
desc = fp3_struggle.0095.desc.muhakkima
}
desc = fp3_struggle.0095.desc.fallback
}
}
theme = court
override_background = { reference = fp3_fullscreen_temper }
override_sound = { reference = "event:/DLC/FP2/SFX/UI/fp2_struggle_ui_intro_animate" }
immediate = {
root = { save_scope_as = struggle_ender }
# Save Sunni caliph or previous one as scope:struggle_liege
fp3_save_sunni_caliph_or_previous_effect = yes
character:34005 = { save_scope_as = harun_the_rightly_guided }
fp3_struggle_ending_shia_caliphate_effects = yes
play_music_cue = struggleend_cue
character:33911 = { save_scope_as = ali }
}
option = {
name = fp3_struggle.0095.a
show_as_tooltip = { struggle:persian_struggle = { end_struggle = yes } }
clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_positive"
}
after = {
fp3_end_persian_struggle_effect = {
ENDING = struggle_persia_ending_foundation_decision
EVENT = fp3_struggle.0096
FLAG = flag:fp3_struggle_shia_caliphate_ending
}
}
}
fp3_struggle.0096 = { # Notification for relevant people
type = character_event
window = fullscreen_event
title = fp3_struggle.0095.t
desc = {
first_valid = {
triggered_desc = {
trigger = {
has_trait = fp3_struggle_supporter
}
desc = fp3_struggle.0096.desc.supporter
}
triggered_desc = {
trigger = {
has_trait = fp3_struggle_detractor
}
desc = fp3_struggle.0096.desc.detractor
}
triggered_desc = {
trigger = {
any_character_struggle = {
involvement = involved
is_struggle_type = persian_struggle
}
}
desc = fp3_struggle.0096.desc.involved
}
triggered_desc = {
trigger = {
any_character_struggle = {
involvement = interloper
is_struggle_type = persian_struggle
}
}
desc = fp3_struggle.0096.desc.interloper
}
desc = fp3_struggle.0096.desc.uninvolved
}
}
theme = court
override_background = { reference = fp3_fullscreen_temper }
override_sound = { reference = "event:/DLC/FP2/SFX/UI/fp2_struggle_ui_intro_animate" }
# There could, and should, be a event_window_widget_struggle_info widget here
immediate = {
play_music_cue = struggleend_cue
show_as_tooltip = {
fp3_struggle_ending_shia_caliphate_effects = yes
struggle:persian_struggle = { end_struggle = yes }
}
}
option = {
name = fp3_struggle.0096.a
trigger = {
NOR = {
has_trait = fp3_struggle_supporter
faith = { has_doctrine = muhammad_succession_sunni_doctrine }
}
}
clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_positive"
}
option = {
name = fp3_struggle.0096.a
trigger = {
OR = {
has_trait = fp3_struggle_supporter
faith = { has_doctrine = muhammad_succession_sunni_doctrine }
}
}
clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_negative"
}
}
fp3_struggle.0100 = { # Temper the Caliphate, Vassalize Caliphate Ending
type = character_event
window = fullscreen_event
title = fp3_struggle.0100.t
desc = {
first_valid = {
triggered_desc = {
trigger = {
faith = {
OR = {
has_doctrine = muhammad_succession_shia_doctrine
has_doctrine = muhammad_succession_zandaqa_doctrine
}
}
}
desc = fp3_struggle.0100.desc.shia_and_zandaqa
}
triggered_desc = {
trigger = {
faith = { has_doctrine = muhammad_succession_muhakkima_doctrine }
}
desc = fp3_struggle.0100.desc.muhakkima
}
desc = fp3_struggle.0100.desc
}
}
theme = court
override_background = { reference = fp3_fullscreen_temper }
override_sound = { reference = "event:/DLC/FP2/SFX/UI/fp2_struggle_ui_intro_animate" }
immediate = {
root = { save_scope_as = struggle_ender }
title:d_sunni.holder = { save_scope_as = struggle_liege }
fp3_struggle_ending_vassalize_caliph_effects = yes
play_music_cue = struggleend_cue
}
option = {
name = fp3_struggle.0100.a
show_as_tooltip = { struggle:persian_struggle = { end_struggle = yes } }
clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_positive"
}
after = {
fp3_end_persian_struggle_effect = {
ENDING = struggle_persia_ending_foundation_decision
EVENT = fp3_struggle.0101
FLAG = flag:fp3_struggle_vassalize_caliph_ending
}
}
}
fp3_struggle.0101 = { # Notification for relevant people
type = character_event
window = fullscreen_event
title = fp3_struggle.0100.t
desc = {
first_valid = {
triggered_desc = {
trigger = {
has_trait = fp3_struggle_supporter
}
desc = fp3_struggle.0101.desc.supporter
}
triggered_desc = {
trigger = {
has_trait = fp3_struggle_detractor
}
desc = fp3_struggle.0101.desc.detractor
}
triggered_desc = {
trigger = {
any_character_struggle = {
involvement = involved
is_struggle_type = persian_struggle
}
}
desc = fp3_struggle.0101.desc.involved
}
triggered_desc = {
trigger = {
any_character_struggle = {
involvement = interloper
is_struggle_type = persian_struggle
}
}
desc = fp3_struggle.0101.desc.interloper
}
desc = fp3_struggle.0101.desc.uninvolved
}
}
theme = court
override_background = { reference = fp3_fullscreen_temper }
override_sound = { reference = "event:/DLC/FP2/SFX/UI/fp2_struggle_ui_intro_animate" }
immediate = {
show_as_tooltip = { struggle:persian_struggle = { end_struggle = yes } }
play_music_cue = struggleend_cue
}
option = {
name = fp3_struggle.0101.a
trigger = {
NOR = {
has_trait = fp3_struggle_supporter
faith = { has_doctrine = muhammad_succession_sunni_doctrine }
}
}
clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_positive"
}
option = {
name = fp3_struggle.0101.a
trigger = {
OR = {
has_trait = fp3_struggle_supporter
faith = { has_doctrine = muhammad_succession_sunni_doctrine }
}
}
clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_negative"
}
}
### SUNDERING THE CALIPHATE ### 0191 = 0200 ###
fp3_struggle.0191 = { # Sunder the Caliphate
type = character_event
title = fp3_struggle.0191.t
desc = fp3_struggle.0191.desc
theme = court
left_portrait = {
character = scope:sunderer
animation = war_over_win
}
lower_right_portrait = scope:struggle_liege
immediate = {
# Select the caliph and destroy their title
fp3_sundered_caliphate_effects = yes
}
option = {
name = fp3_struggle.0191.a
clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_positive"
}
}
fp3_struggle.0192 = { # Notification for relevant people
type = character_event
title = fp3_struggle.0192.t
desc = {
first_valid = {
triggered_desc = {
trigger = {
fp3_struggle_is_the_caliph = yes
}
desc = fp3_struggle.0192.desc.caliph
}
triggered_desc = {
trigger = {
OR = {
has_trait = fp3_struggle_supporter
is_vassal_of = scope:struggle_liege
}
}
desc = fp3_struggle.0192.desc.supporter_or_vassal
}
triggered_desc = {
trigger = {
has_trait = fp3_struggle_detractor
}
desc = fp3_struggle.0192.desc.detractor
}
}
}
theme = court
override_background = { reference = fp3_fullscreen_sunder }
override_sound = { reference = "event:/DLC/FP2/SFX/UI/fp2_struggle_ui_intro_animate" }
left_portrait = {
character = scope:sunderer
animation = war_over_win
}
lower_right_portrait = scope:struggle_liege
option = {
name = fp3_struggle.0192.c
trigger = {
NOR = {
fp3_struggle_is_the_caliph = yes
has_trait = fp3_struggle_supporter
}
}
clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_positive"
}
option = {
name = fp3_struggle.0192.b
trigger = {
OR = {
fp3_struggle_is_the_caliph = yes
has_trait = fp3_struggle_supporter
}
}
clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_negative"
}
}
###################################
# FP3 casus belli events
# By Joe Parkin
###################################
# Install loyal puppet - declared puppet ping
fp3_struggle.8000 = {
type = letter_event
opening = fp3_struggle.8000.t
desc = {
desc = fp3_struggle.8000.desc
}
sender = scope:attacker
immediate = {
send_interface_message = {
type = event_struggle_neutral
title = install_loyalist_puppet_declared_puppet
left_icon = scope:attacker
right_icon = scope:defender
show_as_tooltip = {
scope:attacker = {
start_war = {
casus_belli = "fp3_install_loyalist_cb"
target = scope:defender
}
}
}
}
}
# Indeed?
option = {
name = fp3_struggle.8000.a
}
}
# Install loyal puppet - declared defender ping
fp3_struggle.8001 = {
type = letter_event
opening = fp3_struggle.8000.t
desc = {
desc = fp3_struggle.8001.desc
}
sender = scope:attacker
immediate = {
send_interface_message = {
type = event_struggle_bad
title = install_loyalist_puppet_declared_defender
left_icon = scope:attacker
right_icon = scope:loyalist_puppet
show_as_tooltip = {
scope:attacker = {
start_war = {
casus_belli = "fp3_install_loyalist_cb"
target = scope:defender
}
}
}
}
}
# Outrageous!
option = {
name = fp3_struggle.8001.a
}
}
# Install loyal puppet - won puppet ping
fp3_struggle.8002 = {
type = letter_event
opening = fp3_struggle.8000.t
desc = {
desc = fp3_struggle.8002.desc
}
sender = scope:attacker
immediate = {
send_interface_message = {
type = event_struggle_good
title = install_loyalist_puppet_won_puppet
left_icon = scope:attacker
right_icon = scope:defender
show_as_tooltip = {
every_in_list = {
list = title_to_steal
save_scope_as = stolen_title
root = { get_title = scope:stolen_title }
}
custom_tooltip = fp3_struggle.8002.alliance_tt
if = {
limit = { scope:defender.imprisoner ?= root }
imprison = {
target = scope:defender
type = house_arrest
}
}
}
}
}
# Ok!
option = {
name = fp3_struggle.8002.a
}
}
###################################
# Integrity Validation Events
# By Hugo Cortell
###################################
fp3_struggle.9980 = { # Validation of title
type = character_event
orphan = yes
title = {
desc = Hugo
desc = game_concept_struggle_struggles
desc = number_two
desc = debug
}
desc = {
desc = historical_commander_trait.0003.d
desc = stress_threshold.3201.depressed.effect
}
theme = mental_break
left_portrait = title:e_arabia.holder
immediate = { title:e_arabia.holder = { add_piety = 30000 } } # Hard title validation
option = {
name = {
text = {
desc = martial_chivalry.2015.a
desc = rivalry.1016.a.exposed
}
}
}
}
fp3_struggle.9981 = { # Destroy e_arabia (used mostly for checking invalidations)
hidden = yes
orphan = yes
immediate = { destroy_title = title:e_arabia }
}
fp3_struggle.9982 = { # Revision 2 nav event, to make QA's life easier and avoid unecessary crashes
type = character_event
title = {
desc = Hugo
desc = CHARACTER_POSS
desc = intrigue_broken_modifier
desc = game_concept_struggle
desc = MENU
}
desc = {
desc = bp1_yearly.9018.c
desc = double_line_break
desc = childhood.7400_mother_dead
desc = double_line_break
desc = yearly.7021.b
}
orphan = yes
theme = mental_break
option = { # Dynamically start a struggle
trigger = { NOT = { exists = struggle:persian_struggle } }
name = FRONTEND_MP_GAME_SETUP_HOST_NEW_GAME
random_ruler = {
limit = {
top_liege = this
location ?= { geographical_region = world_persian_empire }
}
primary_title = { save_scope_as = debug_caliph }
}
start_struggle = {
struggle_type = persian_struggle
start_phase = struggle_persia_phase_stabilisation
}
send_interface_message = { # Informs you of who the "debug caliph" is
type = event_martial_bad
title = trait_beauty_bad_1_desc
left_icon = scope:debug_caliph
right_icon = scope:debug_caliph.holder
}
}
option = { # Go forward in the struggle flow
name = dynn_Daflos_motto
trigger = { exists = struggle:persian_struggle }
if = {
limit = { struggle:persian_struggle = { is_struggle_phase = struggle_persia_phase_unrest } }
struggle:persian_struggle = { change_struggle_phase = { struggle_phase = struggle_persia_ending_phase_concession } }
}
else_if = {
limit = { struggle:persian_struggle = { is_struggle_phase = struggle_persia_phase_stabilisation } }
struggle:persian_struggle = { change_struggle_phase = { struggle_phase = struggle_persia_phase_unrest with_transition = yes } }
}
}
option = { # Go backwards in the struggle flow
name = default_retreat
trigger = { exists = struggle:persian_struggle }
if = {
limit = { struggle:persian_struggle = { is_struggle_phase = struggle_persia_phase_unrest } }
struggle:persian_struggle = { change_struggle_phase = { struggle_phase = struggle_persia_phase_stabilisation } }
}
}
option = { name = EXIT_TO_DESKTOP } # Exit event without doing anything
}
fp3_struggle.9983 = { # Create Persian Empire Test
hidden = yes
orphan = yes
immediate = {
create_title_and_vassal_change = {
type = created
save_scope_as = change
}
title:e_persia = {
change_title_holder = {
holder = root
change = scope:change
}
}
resolve_title_and_vassal_change = scope:change
}
}
fp3_struggle.9984 = { # Ending simulator - Allows you to end the struggle in a clean way, works better/is safer than commands
type = character_event
window = fullscreen_event
title = ENDING_DECISION_AVAILABLE
desc = ENDING_DECISION_BUTTON_LABEL_MULTIPLE
orphan = yes
theme = realm
override_background = { reference = fp3_fullscreen_strength }
override_sound = { reference = "event:/DLC/FP2/SFX/UI/fp2_struggle_ui_intro_animate" }
widgets = {
widget = {
gui = "event_window_widget_struggle_info"
container = "dynamic_content_widget"
controller = struggle_info
setup_scope = { struggle:persian_struggle = { save_scope_as = struggle } }
}
}
immediate = {
# Save Sunni caliph or previous one as scope:struggle_liege
fp3_save_sunni_caliph_or_previous_effect = yes
}
option = { # Concession
name = struggle_persia_ending_phase_concession
save_scope_value_as = {
name = ending_to_simulate
value = flag:concession
}
trigger_event = fp3_struggle.9985
clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_positive"
}
option = { # Assertion (Strengthen)
name = struggle_persia_ending_assertion
save_scope_value_as = {
name = ending_to_simulate
value = flag:strength
}
trigger_event = fp3_struggle.9985
clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_positive"
}
option = { # Sunni Caliphate
name = struggle_persia_ending_foundation_decision_option_shia
save_scope_value_as = {
name = ending_to_simulate
value = flag:sunni
}
trigger_event = fp3_struggle.9985
clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_positive"
}
option = { # Consume/Vassalize
name = struggle_persia_ending_foundation_decision_option_vassalize
save_scope_value_as = {
name = ending_to_simulate
value = flag:vassal
}
trigger_event = fp3_struggle.9985
clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_positive"
}
option = { name = EXIT_TO_DESKTOP }
}
fp3_struggle.9985 = { # Simulator Follow-up (keeps it hidden and clean to prevent QA panic)
hidden = yes
immediate = {
struggle:persian_struggle = {
# Ensure we are in the correct position to fire the ending
if = {
limit = {
scope:ending_to_simulate = flag:strength
is_struggle_phase = struggle_persia_phase_unrest
}
change_struggle_phase = { struggle_phase = struggle_persia_phase_stabilisation }
}
else_if = {
limit = {
OR = {
scope:ending_to_simulate = flag:sunni
scope:ending_to_simulate = flag:vassal
}
is_struggle_phase = struggle_persia_phase_stabilisation
}
change_struggle_phase = { struggle_phase = struggle_persia_phase_unrest }
}
}
# Cases for firing the correct phase
switch = {
trigger = scope:ending_to_simulate
flag:concession = { trigger_event = fp3_struggle.0081 }
flag:sunni = { trigger_event = fp3_struggle.0095 }
flag:vassal = { trigger_event = fp3_struggle.0100 }
flag:strength = { trigger_event = fp3_struggle.0071 }
fallback = {
assert_if = {
limit = { always = yes }
text = "FP3 ENDING SIMULATION DEBUG TOOL ERROR: NO VALID scope:ending_to_simulate STATE!"
}
}
}
}
}