This commit is contained in:
Heidesommer 2026-05-29 05:24:40 -04:00
parent ce70fe752e
commit 734d526ca9
41 changed files with 17594 additions and 1069 deletions

View file

@ -0,0 +1,193 @@
story_cycle_black_death = {
# by Nick Meredith
on_setup = { #check if the plague is close enough
story_owner = {
trigger_event = {
id = epidemic_events.5998
days = { 21 37 }
}
}
}
on_end = {
debug_log = "Black Death story ended on:"
debug_log_date = yes
}
on_owner_death = {
# Should be inherited, so transfer to heir
if = {
limit = {
exists = story_owner.player_heir
}
make_story_owner = story_owner.player_heir
}
# Or destroy
else = {
end_story = yes
}
}
#check if the plague is close enough
effect_group = {
months = { 2 4 }
trigger = {
has_global_variable = black_death
story_owner = {
NOR = {
has_character_flag = black_death_nearby
has_character_flag = black_death_splash
}
}
}
first_valid = {
triggered_effect = {
trigger = { always = yes }
effect = {
story_owner = {
trigger_event = {
id = epidemic_events.5998
days = { 2 4 }
}
}
}
}
}
}
#IT IS GETTING CLOSER!
effect_group = {
months = { 4 8 }
trigger = {
has_global_variable = black_death
story_owner = {
has_character_flag = black_death_closer
NOR = {
has_character_flag = black_death_nearby
has_character_flag = black_death_splash
}
}
}
first_valid = {
triggered_effect = {
trigger = { always = yes }
effect = {
save_scope_as = story_scope
story_owner = {
trigger_event = {
on_action = ongoing_black_death_events
}
}
}
}
}
}
#ALMOST THERE!
effect_group = {
months = { 1 2 }
trigger = {
has_global_variable = black_death
story_owner = {
has_character_flag = black_death_closer
NOR = {
has_character_flag = black_death_splash
has_character_flag = black_death_nearby
}
}
}
first_valid = {
triggered_effect = {
trigger = { always = yes }
effect = {
save_scope_as = story_scope
story_owner = {
trigger_event = {
id = epidemic_events.5998
days = { 4 8 }
}
}
}
}
}
}
#YIKES, IT IS NEAR
effect_group = {
days = { 21 37 }
trigger = {
has_global_variable = black_death
story_owner = {
has_character_flag = black_death_nearby
}
}
first_valid = {
triggered_effect = {
trigger = { always = yes }
effect = {
save_scope_as = story_scope
story_owner = {
trigger_event = {
on_action = ongoing_black_death_events
}
}
}
}
}
}
# We can stop worrying about black plague coming to us, because...
effect_group = {
days = { 30 60 }
trigger = {
OR = {
NOT = { #...the black plague is gone...
has_global_variable = black_death
}
story_owner = {
has_character_flag = black_death_splash #... IT IS HERE OH GOD OH HECK
}
}
}
first_valid = {
triggered_effect = {
trigger = { always = yes }
effect = {
end_story = yes
}
}
}
}
#Maintenance group
effect_group = {
days = 1
trigger = {
story_owner = { is_landed = no }
}
triggered_effect = {
trigger = { always = yes }
effect = {
#You became a landless adventurer/administrative! Ending story prematurely.
story_owner = { save_scope_as = story_owner }
debug_log = "Black Death invalidated"
debug_log_scopes = yes
end_story = yes
}
}
}
}

View file

@ -0,0 +1,92 @@
plague_witch_hunt = {
# by James Beaumont
on_setup = {
}
on_end = {
debug_log = "Witch hunt story ended on:"
debug_log_date = yes
}
on_owner_death = {
# Should be inherited, people won't stop the witch trials just because the ruler died
}
# The plague is over, end the story
effect_group = {
days = { 40 60 }
trigger = {
NOT = {
story_owner = {
any_sub_realm_county = {
any_county_province_epidemic = {
this = root.var:plague
}
}
}
}
}
first_valid = {
triggered_effect = {
trigger = { always = yes }
effect = {
end_story = yes
}
}
}
}
# Something happens - random events
effect_group = {
days = { 365 600 }
chance = 50
trigger = {
story_owner = {
any_sub_realm_county = {
any_county_province_epidemic = {
this = root.var:plague
}
}
}
}
first_valid = {
triggered_effect = {
trigger = { always = yes }
effect = {
save_scope_as = story_scope
var:plague = { save_scope_as = epidemic_scope }
var:faith_blamed ?= { save_scope_as = faith_blamed }
var:trait_blamed ?= { save_scope_as = trait_blamed }
story_owner = {
trigger_event = {
on_action = ongoing_witch_hunt_events
}
}
}
}
}
}
#Maintenance group
effect_group = {
days = 1
trigger = {
story_owner = { is_landed = no }
}
triggered_effect = {
trigger = { always = yes }
effect = {
#You became a landless adventurer/administrative! Ending story prematurely.
story_owner = { save_scope_as = story_owner }
debug_log = "Plague Witches invalidated"
debug_log_scopes = yes
end_story = yes
}
}
}
}

View file

@ -0,0 +1,214 @@
##################################################
###
### The Song of El Cid
### by Veronica Pazos
###
##################################################
story_el_cid = {
visible = yes
icon = {
reference = "gfx/interface/icons/artifact/artefact_icons_unique_artifact_excalibur.dds"
}
background = {
reference = "gfx/interface/illustrations/event_scenes/fp2_courtyard.dds"
}
visualization = {
character = {
variable_name = "cid_liege"
label = "CID_LIEGE"
}
custom_string_key = "EL_CID_CUSTOM_STRING_KEY"
traits = {
campeador
}
tug_of_war_counter = {
label = "cid_loyalty_counter_label"
variable_name = "cid_loyalty_counter"
tooltip = EL_LOYALTY_COUNTER_TOOLTIP
min_label = CID_LOYALTY_MIN_LABEL
max_label = CID_LOYALTY_MAX_LABEL
min = -5
max = 5
}
}
on_setup = {
story_owner = {
top_liege = { save_scope_as = liege }
}
}
on_end = {
debug_log = "El Cid's story ended on:"
debug_log_date = yes
#We clean up all variables
remove_variable = cid_liege
remove_variable = cid_enemy
remove_variable = cid_loyalty_counter
story_owner = {
remove_variable = ongoing_cid_story_cycle
remove_variable = cid_title_to_give
#And you can never have this again
set_variable = had_cid_story_cycle
}
}
on_owner_death = {
end_story = yes
}
# Liege dies
effect_group = {
months = 1
first_valid = {
triggered_effect = { #If your liege dies
trigger = {
story_owner = {
OR = {
any_owned_story = {
has_variable = cid_liege
var:cid_liege = {
is_alive = no
}
}
NOT = {
any_owned_story = {
has_variable = cid_liege
}
}
}
}
}
effect = {
save_scope_as = story
story_owner = {
trigger_event = cid.5000
}
}
}
}
}
effect_group = {
months = { 6 12 }
chance = 100
random_valid = {
triggered_effect = {
trigger = { # Landless events
story_owner = {
has_government = landless_adventurer_government
}
}
effect = {
save_scope_as = story
var:cid_liege = { save_scope_as = liege }
var:cid_enemy = { save_scope_as = enemy }
story_owner = {
trigger_event = { on_action = el_cid_landless_on_action }
}
}
}
triggered_effect = {
trigger = { # Landless OR Landed events
always = yes
}
effect = {
save_scope_as = story
var:cid_liege = { save_scope_as = liege }
var:cid_enemy = { save_scope_as = enemy }
story_owner = {
trigger_event = { on_action = el_cid_landless_or_landed_on_action }
}
}
}
}
}
# Endings
effect_group = {
months = 3
first_valid = { #Your liege takes you back
triggered_effect = {
trigger = {
var:cid_loyalty_counter >= 5
story_owner = {
has_government = landless_adventurer_government
}
}
effect = {
save_scope_as = story
story_owner = {
trigger_event = cid.2020
}
}
}
triggered_effect = { #Your liege hates you
trigger = {
var:cid_loyalty_counter <= -5
story_owner = {
has_government = landless_adventurer_government
}
}
effect = {
save_scope_as = story
story_owner = {
trigger_event = cid.4010
}
}
}
triggered_effect = { #Neutral ending
trigger = {
var:cid_loyalty_counter > -5
var:cid_loyalty_counter < 5
story_owner = {
has_variable = had_cid_1000
has_variable = had_cid_1030
has_variable = had_cid_1040
trigger_if = {
limit = {
any_courtier = {
is_adult = yes
NOR = {
is_close_family_of = prev
is_spouse_of = prev
}
count >= 2
}
}
has_variable = had_cid_1010
}
trigger_if = {
limit = {
any_courtier = {
is_spouse_of = prev
}
}
has_variable = had_cid_1020
}
trigger_if = {
limit = {
any_child = {
is_betrothed = no
}
}
has_variable = had_cid_2010
}
}
}
effect = {
save_scope_as = story
story_owner = {
trigger_event = cid.4000
}
}
}
}
}
}

View file

@ -0,0 +1,581 @@
#frankokratia_story = {
# # by Jason Cantalini
# visible = yes
#
# icon = {
# trigger = {
# always = yes
# }
# reference = "gfx/interface/icons/story_cycles/story_icon_despoiler.dds"
# }
#
# visualization = {
# custom_string_key = "FRANKOKRATIA_STORY_PRACTICAL_INFORMATION_STRING"
# character = { variable_name = "byz_claimant" label = "claimant" }
# character_list = { variable_name = "frankokratia_leaders" label = "diverted_crusaders" }
# }
#
# on_setup = {
# set_variable = {
# name = crusader_kingdom
# value = story_owner.faith.great_holy_war.ghw_target_title
# }
# set_global_variable = {
# name = byz_claimant_champion
# value = story_owner
# }
# add_to_variable_list = {
# name = frankokratia_leaders
# target = story_owner
# }
# }
##
# on_end = {
# debug_log = "Frankokratia story ended on:"
# debug_log_date = yes
# remove_global_variable = byz_claimant_champion
# if = {
# limit = {
# var:byz_claimant = {
# is_alive = yes
# }
# }
# var:byz_claimant = {
# remove_character_flag = byz_claimant_flag
# }
# }
# }
##
# on_owner_death = {
# story_owner = {
# save_scope_as = dead_owner
# }
# if = {
# limit = {
# exists = story_owner.player_heir
# story_owner.player_heir = {
# faith = faith:catholic
# }
# }
# set_global_variable = {
# name = byz_claimant_champion
# value = story_owner.player_heir
# }
# remove_list_variable = {
# name = frankokratia_leaders
# target = story_owner
# }
# add_to_variable_list = {
# name = frankokratia_leaders
# target = story_owner.player_heir
# }
# make_story_owner = story_owner.player_heir
# }
# else_if = {
# limit = {
# exists = story_owner.primary_heir
# story_owner.primary_heir = {
# faith = faith:catholic
# highest_held_title_tier <= scope:dead_owner.highest_held_title_tier
# }
# }
# set_global_variable = {
# name = byz_claimant_champion
# value = story_owner.primary_heir
# }
# remove_list_variable = {
# name = frankokratia_leaders
# target = story_owner
# }
# add_to_variable_list = {
# name = frankokratia_leaders
# target = story_owner.primary_heir
# }
# make_story_owner = story_owner.primary_heir
# }
# else_if = {
# limit = {
# any_in_list = {
# variable = frankokratia_leaders
# OR = {
# exists = primary_heir
# exists = player_heir
# }
# age >= 13
# this != scope:dead_owner
# }
# }
# ordered_in_list = {
# variable = frankokratia_leaders
# order_by = current_military_strength
# limit = {
# OR = {
# exists = primary_heir
# exists = player_heir
# }
# age >= 13
# this != scope:dead_owner
# }
# save_scope_as = new_franko
#
# set_global_variable = {
# name = byz_claimant_champion
# value = scope:new_franko
# }
# }
# remove_list_variable = {
# name = frankokratia_leaders
# target = story_owner
# }
# add_to_variable_list = {
# name = frankokratia_leaders
# target = scope:new_franko
# }
# make_story_owner = scope:new_franko
# }
# # Or destroy
# else = {
# end_story = yes
# every_in_list = {
# variable = frankokratia_leaders
# limit = {
# is_ai = no
# }
# trigger_event = ep3_frankokratia_events.0005
# }
# }
# }
#
# #Claimant dies... story cycle is over
# effect_group = {
# days = { 20 40 }
#
# trigger = {
# var:byz_claimant = { is_alive = no }
# NOT = {
# has_variable = franko_war_complete
# }
# }
#
# first_valid = {
# triggered_effect = {
# trigger = {
# var:byz_claimant = { is_alive = no }
# NOT = {
# has_variable = franko_war_complete
# }
# }
# effect = {
# every_in_list = {
# variable = frankokratia_leaders
# limit = {
# is_ai = no
# }
# trigger_event = ep3_frankokratia_events.0005
# }
# }
# }
# }
# }
#
# #Owner's other wars should be wrapped up if they're not going well... by force
# effect_group = {
# days = { 20 40 }
#
# trigger = {
# #It's not post-war era
# NOT = {
# has_variable = franko_war_complete
# }
# global_var:byz_claimant_champion = {
# #Is not in frankokratia war
# any_character_war = {
# NOT = {
# using_cb = crusading_claim_cb
# }
# }
# #Is risking losing a war
# any_character_war = {
# OR = {
# AND = {
# primary_attacker = {
# this = global_var:byz_claimant_champion
# }
# attacker_war_score <= -50
# }
# AND = {
# primary_defender = {
# this = global_var:byz_claimant_champion
# }
# defender_war_score <= -50
# }
# }
# NOR = {
# any_war_defender = {
# is_ai = no
# }
# any_war_attacker = {
# is_ai = no
# }
# }
# }
# is_ai = yes
# }
# var:financier_title.holder = {
# save_temporary_scope_as = financier
# }
# any_in_list = {
# variable = frankokratia_leaders
# NOR = {
# this = global_var:byz_claimant_champion
# this = scope:financier
# }
# }
# }
#
# first_valid = {
# triggered_effect = {
# trigger = {
# #It's not post-war era
# NOT = {
# has_variable = franko_war_complete
# }
# global_var:byz_claimant_champion = {
# #Is not in frankokratia war
# any_character_war = {
# NOT = {
# using_cb = crusading_claim_cb
# }
# }
# #Is risking losing a war
# any_character_war = {
# OR = {
# AND = {
# primary_attacker = {
# this = global_var:byz_claimant_champion
# }
# attacker_war_score <= -50
# }
# AND = {
# primary_defender = {
# this = global_var:byz_claimant_champion
# }
# defender_war_score <= -50
# }
# }
# NOR = {
# any_war_defender = {
# is_ai = no
# }
# any_war_attacker = {
# is_ai = no
# }
# }
# }
# is_ai = yes
# }
# var:financier_title.holder = {
# save_temporary_scope_as = financier
# }
# any_in_list = {
# variable = frankokratia_leaders
# NOR = {
# this = global_var:byz_claimant_champion
# this = scope:financier
# }
# }
# }
# effect = {
# global_var:byz_claimant_champion = {
# every_character_war = {
# limit = {
# NOT = {
# using_cb = crusading_claim_cb
# }
# OR = {
# AND = {
# primary_attacker = {
# this = global_var:byz_claimant_champion
# }
# attacker_war_score <= -50
# }
# AND = {
# primary_defender = {
# this = global_var:byz_claimant_champion
# }
# defender_war_score <= -50
# }
# }
# NOR = {
# any_war_defender = {
# is_ai = no
# }
# any_war_attacker = {
# is_ai = no
# }
# }
# }
# end_war = white_peace
# }
# }
# }
# }
# }
# }
#
# #Re-save war attackers
# effect_group = {
# days = { 30 50 }
#
# trigger = {
# always = yes
# }
# first_valid = {
# triggered_effect = {
# trigger = { always = yes }
# effect = {
# save_scope_as = frank_story
# story_owner = {
# random_character_war = {
# limit = { using_cb = crusading_claim_cb }
# every_war_attacker = {
# limit = {
# faith = faith:catholic
# }
# scope:frank_story = {
# add_to_variable_list = {
# name = frankokratia_leaders
# target = prev
# }
# }
# }
# }
# }
# }
# }
# }
# }
#
# #Need to find successor to byz emperor
# effect_group = {
# days = { 10 20 }
#
# trigger = {
# exists = title:e_byzantium.holder
# NOR = {
# var:byz_emperor ?= title:e_byzantium.holder
# var:byz_claimant ?= title:e_byzantium.holder
# global_var:byz_claimant_champion ?= title:e_byzantium.holder
# var:financier_title.holder ?= title:e_byzantium.holder
# var:ghw_sponsor ?= title:e_byzantium.holder
# }
# }
# first_valid = {
# triggered_effect = {
# trigger = {
# exists = title:e_byzantium.holder
# NOR = {
# var:byz_emperor ?= title:e_byzantium.holder
# var:byz_claimant ?= title:e_byzantium.holder
# global_var:byz_claimant_champion ?= title:e_byzantium.holder
# var:financier_title.holder ?= title:e_byzantium.holder
# var:ghw_sponsor ?= title:e_byzantium.holder
# }
# }
# effect = {
# set_variable = {
# name = byz_emperor
# value = title:e_byzantium.holder
# }
# }
# }
# }
# }
#
# #Fire events for pledged attackers for them to commit to leaving crusade when it launches
# effect_group = {
# days = { 10 20 }
#
# trigger = {
# exists = story_owner.faith.great_holy_war
# story_owner.faith = faith:catholic
# story_owner.faith.religious_head = {
# NOT = {
# any_character_war = {
# using_cb = undirected_great_holy_war
# }
# }
# }
# story_owner.faith.great_holy_war = {
# any_pledged_attacker = {
# ep3_frankokratia_valid_joiner_trigger = yes
# }
# }
# }
#
# first_valid = {
# triggered_effect = {
# trigger = {
# exists = story_owner.faith.great_holy_war
# story_owner.faith.religious_head = {
# NOT = {
# any_character_war = {
# using_cb = undirected_great_holy_war
# }
# }
# }
# story_owner.faith.great_holy_war = {
# any_pledged_attacker = {
# ep3_frankokratia_valid_joiner_trigger = yes
# }
# }
# }
# effect = {
# story_owner.faith.great_holy_war = {
# #trigger join event for important players first
# if = {
# limit = {
# any_pledged_attacker = {
# is_ai = no
# highest_held_title_tier >= tier_kingdom
# ep3_frankokratia_valid_joiner_trigger = yes
# }
# }
# random_pledged_attacker = {
# limit = {
# is_ai = no
# highest_held_title_tier >= tier_kingdom
# ep3_frankokratia_valid_joiner_trigger = yes
# }
# trigger_event = ep3_frankokratia_events.0020
# }
# }
# #Then players
# else_if = {
# limit = {
# any_pledged_attacker = {
# is_ai = no
# ep3_frankokratia_valid_joiner_trigger = yes
# }
# }
# random_pledged_attacker = {
# limit = {
# is_ai = no
# ep3_frankokratia_valid_joiner_trigger = yes
# }
# trigger_event = ep3_frankokratia_events.0020
# }
# }
# #Then others
# else = {
# random_pledged_attacker = {
# limit = {
# ep3_frankokratia_valid_joiner_trigger = yes
# }
# trigger_event = ep3_frankokratia_events.0020
# }
# }
# }
# }
# }
# }
# }
#
# #save player war contribution to see if they get to be emp
# effect_group = {
# days = { 10 20 }
#
# trigger = {
# story_owner = {
# any_character_war = {
# using_cb = crusading_claim_cb
# any_war_attacker = {
# is_ai = no
# save_temporary_scope_as = player_temp
# }
# war_contribution = {
# target = scope:player_temp
# value > 100
# }
# }
# }
# }
# first_valid = {
# triggered_effect = {
# trigger = {
# story_owner = {
# any_character_war = {
# using_cb = crusading_claim_cb
# any_war_attacker = {
# is_ai = no
# save_temporary_scope_as = player_temp
# }
# war_contribution = {
# target = scope:player_temp
# value > 100
# }
# }
# }
# }
# effect = {
# story_owner = {
# random_character_war = {
# limit = {
# using_cb = crusading_claim_cb
# }
# save_scope_as = franko_war
# every_war_attacker = {
# limit = {
# is_ai = no
# scope:franko_war = {
# war_contribution = {
# target = prev
# value > 100
# }
# }
# }
# add_character_flag = {
# flag = frankokratia_sufficient_warscore
# years = 30
# }
# }
# every_war_attacker = {
# limit = {
# is_ai = no
# scope:franko_war = {
# war_contribution = {
# target = prev
# value > 1000
# }
# }
# }
# add_character_flag = {
# flag = frankokratia_high_warscore
# years = 30
# }
# }
# }
# }
# }
# }
# }
# }
#
# #Maintenance group
# effect_group = {
# days = 1
# trigger = {
# story_owner = { is_playable_character = no }
# }
# triggered_effect = {
# trigger = { always = yes }
# effect = {
# story_owner = { save_scope_as = story_owner }
# debug_log = "4th Crusader invalidated"
# debug_log_scopes = yes
# end_story = yes
# }
# }
# }
#}
#

View file

@ -0,0 +1,217 @@
##################################################
###
### Grand Ambitions
### by Chad Uhl
###
### The head of a Powerful Family has ambitions for the throne.
###
##################################################
grand_ambitions_story_cycle = {
on_setup = {
set_variable = {
name = eunuch
value = no
}
}
on_end = {
story_owner = {
if = {
limit = { has_character_flag = had_event_ga_0100 }
remove_character_flag = had_event_ga_0100
}
}
var:target_char ?= {
capital_county ?= {
if = {
limit = { has_county_modifier = ep3_grand_ambitions_rioting_county_modifier }
}
remove_county_modifier = ep3_grand_ambitions_rioting_county_modifier
}
}
if = {
limit = {
exists = global_var:current_grand_ambitions_counter
global_var:current_grand_ambitions_counter > 0
}
change_global_variable = {
name = current_grand_ambitions_counter
subtract = 1
}
}
}
# Maintenance Events
effect_group = {
months = 1
# Check if the old emperor is still holds the right title during the beginning
triggered_effect = {
trigger = {
exists = var:target_char
var:target_char = {
NOT = { any_held_title = { this = root.var:target_title } }
}
}
effect = {
story_owner = {
trigger_event = grand_ambitions.0500
}
}
}
# Death maintenance is handled in the death on_action
}
effect_group = {
months = 1
chance = 100
random_valid = {
triggered_effect = {
trigger = { # Claimant Faction Route
var:method = flag:coup
}
effect = {
scope:story = {
var:target_title = { save_scope_as = target_title }
var:target_char = { save_scope_as = target_char }
}
story_owner = {
scope:target_char = {
if = {
limit = {
any_targeting_faction = {
faction_type = claimant_faction
faction_leader = scope:story.story_owner
}
}
random_targeting_faction = {
faction_type = claimant_faction
limit = {
faction_leader = scope:story.story_owner
}
save_scope_as = story_faction
}
}
}
trigger_event = { on_action = grand_ambitions_powerful_family_coup_on_action }
}
}
}
triggered_effect = {
trigger = { # Scheme Route
var:method = flag:scheme
}
effect = {
story_owner = {
random_scheme = {
type = depose
save_scope_as = depose_scheme_scope
}
scope:story = {
var:target_title = { save_scope_as = target_title }
var:target_char = { save_scope_as = target_char }
}
trigger_event = { on_action = grand_ambitions_powerful_family_scheme_on_action }
}
}
}
}
}
effect_group = {
months = 1
chance = 100
random_valid = {
triggered_effect = {
trigger = {
story_owner = {
any_character_war = {
primary_attacker = scope:story.story_owner
primary_defender = scope:story.var:target_char
claimant = scope:story.story_owner
save_temporary_scope_as = story_war
}
}
var:method = flag:coup
var:promised_foreign_ruler_claim = {
NOT = { is_at_war_with = scope:story.var:target_char }
}
scope:story_war = {
NOT = {
any_war_attacker = {
this = scope:story.var:promised_foreign_ruler_claim
}
}
}
}
effect = {
story_owner = {
random_character_war = {
limit = {
primary_attacker = scope:story.story_owner
primary_defender = scope:story.var:target_char
claimant = scope:story.story_owner
}
save_scope_as = story_war
}
scope:story.var:promised_foreign_ruler_claim = { save_scope_as = joiner }
send_interface_message = {
type = event_war_good
title = grand_ambitions_ally_joins_war
right_icon = scope:joiner
scope:story_war = {
add_attacker = scope:joiner
}
}
}
}
}
triggered_effect = {
trigger = {
story_owner = {
any_character_war = {
primary_attacker = scope:story.story_owner
primary_defender = scope:story.var:target_char
claimant = scope:story.story_owner
save_temporary_scope_as = story_war
}
}
var:method = flag:coup
has_variable = powerful_family
scope:story_war = {
NOT = {
any_war_attacker = {
this = scope:story.var:powerful_family.house_head
}
}
}
}
effect = {
story_owner = {
random_character_war = {
limit = {
primary_attacker = scope:story.story_owner
primary_defender = scope:story.var:target_char
claimant = scope:story.story_owner
}
save_scope_as = story_war
}
scope:story.var:powerful_family.house_head = { save_scope_as = joiner }
send_interface_message = {
type = event_war_good
title = grand_ambitions_ally_joins_war
right_icon = scope:joiner
scope:story_war = {
add_attacker = scope:joiner
}
}
}
}
}
}
}
}

View file

@ -0,0 +1,692 @@
#story_cycle_harrying_of_the_north = {
# # by Nick Meredith
#
# on_setup = {
# set_variable = {
# name = ruler_england
# value = story_owner
# }
# set_global_variable = {
# name = ruler_england
# value = story_owner
# }
# set_variable = {
# name = pacification
# value = 0
# }
# set_variable = {
# name = resistance
# value = 5
# }
# set_global_variable = {
# name = harrying_of_the_north
# value = this
# }
# }
#
# on_end = {
# debug_log = "Harrying of the North ended on:"
# debug_log_date = yes
# }
#
# on_owner_death = {
# if = {
# limit = {
# exists = story_owner.player_heir
# }
# set_global_variable = {
# name = ruler_england
# value = story_owner.player_heir
# }
# make_story_owner = story_owner.player_heir
# }
# ## This shouldn't be needed; should be handled by the effect group below
# #else = {
# # end_story = yes
# # remove_global_variable = harrying_of_the_north
# #}
# }
#
# #End the Story Cycle if there are no longer any Anglo-Saxon lords left, or if Normans no longer rule England
# #Put it on a long timer so William player can't just kick them all out and weather the storm for a month
# effect_group = {
# months = 1
#
# trigger = {
# OR = { #Either of these can be untrue
# story_owner = {
# any_vassal = {
# NOR = {
# culture = culture:anglo_saxon
# primary_title.tier >= tier_duchy
# }
# }
# }
# NOT = {
# var:ruler_england = {
# culture = culture:norman
# }
# }
# }
# }
#
# first_valid = {
# triggered_effect = { #The Aethelings are no more - Norman victory
# trigger = {
# story_owner = {
# NOR = {
# any_vassal = {
# culture = culture:anglo_saxon
# primary_title.tier >= tier_duchy
# }
# }
# }
# }
# effect = {
# remove_global_variable = harrying_of_the_north
# every_ruler = {
# limit = {
# capital_province = {
# geographical_region = world_europe_west_britannia
# }
# }
# trigger_event = ep3_story_cycle_harrying.0001
# }
# end_story = yes
# }
# }
# triggered_effect = { #An Anglo-Saxon rules - Aetheling victory
# trigger = {
# story_owner = {
# culture = culture:anglo_saxon
# }
# }
# effect = {
# remove_global_variable = harrying_of_the_north
# every_ruler = {
# limit = {
# capital_province = {
# geographical_region = world_europe_west_britannia
# }
# }
# trigger_event = ep3_story_cycle_harrying.0002
# }
# end_story = yes
# }
# }
# triggered_effect = { #The Normans no longer rule - Aethelings avoid defeat
# trigger = {
# story_owner = {
# NOR = {
# culture = culture:norman
# culture = culture:english
# }
# }
# }
# effect = {
# remove_global_variable = harrying_of_the_north
# every_ruler = {
# limit = {
# capital_province = {
# geographical_region = world_europe_west_britannia
# }
# }
# trigger_event = ep3_story_cycle_harrying.0003
# }
# end_story = yes
# }
# }
# }
# }
#
# effect_group = {
# years = 50
#
# triggered_effect = { #The Normans still rule, but it has been generations - Norman victory by attrition
# trigger = {
# var:ruler_england = {
# culture = culture:norman
# }
# }
# effect = {
# remove_global_variable = harrying_of_the_north
# every_ruler = {
# limit = {
# capital_province = {
# geographical_region = world_europe_west_britannia
# }
# }
# trigger_event = ep3_story_cycle_harrying.0004
# }
# end_story = yes
# }
# }
# }
#
# # Events for William/King of England
# effect_group = {
# days = { 20 40 }
#
# trigger = {
# story_owner = {
# is_alive = yes
# }
# }
#
# first_valid = {
# triggered_effect = {
# trigger = { always = yes }
# effect = {
# save_scope_as = story_scope
# story_owner = {
# trigger_event = {
# on_action = ongoing_harrying_owner_events
# }
# }
# }
# }
# }
# }
#
# # Events for Aethelings
# effect_group = {
# days = { 20 40 }
#
# trigger = {
# story_owner = {
# any_vassal = {
# culture = culture:anglo_saxon
# }
# }
# }
#
# first_valid = {
# triggered_effect = {
# trigger = { always = yes }
# effect = {
# save_scope_as = story_scope
# story_owner = {
# random_vassal= {
# limit = {
# culture = culture:anglo_saxon
# }
# trigger_event = {
# on_action = ongoing_harrying_aetheling_events
# }
# }
# }
# }
# }
# }
# }
#
# # Events for Hereward the Wake
# effect_group = {
# days = { 20 40 }
#
# trigger = {
# character:90028 = {
# is_alive = yes
# NOT = {
# has_character_flag = hereward_settled_flag
# }
# }
# }
#
# first_valid = {
# triggered_effect = {
# trigger = { always = yes }
# effect = {
# save_scope_as = story_scope
# character:90028 = {
# trigger_event = {
# on_action = ongoing_harrying_hereward_events
# }
# }
# }
# }
# }
# }
#
# ### Harrying ongoing effects
# # Set the Pacification variable every month if possible
# # This checks for the Embrace English Culture decision
# effect_group = {
# months = 1
# first_valid = {
# triggered_effect = {
# trigger = {
# var:pacification > 15
# var:pacification > var:resistance
# }
# effect = {
# if = {
# limit = {
# AND = {
# NOT = {
# has_variable = embrace_culture_decision_counter
# }
# var:pacification > 15
# var:pacification > var:resistance
# }
# }
# set_variable = {
# name = embrace_culture_decision_counter
# value = 0
# }
# }
# }
# }
# triggered_effect = {
# trigger = {
# OR = {
# var:pacification < 15
# var:pacification < var:resistance
# }
# }
# effect = {
# if = {
# limit = {
# has_variable = embrace_culture_decision_counter
# }
# remove_variable = embrace_culture_decision_counter
# }
# }
# }
# }
# }
#
# # Check to see if you've had pacification over resistance for a year
# effect_group = {
# months = 1
# triggered_effect = {
# trigger = {
# var:pacification > 15
# var:pacification > var:resistance
# has_variable = embrace_culture_decision_counter
# }
# effect = {
# if = {
# limit = {
# AND = {
# has_variable = embrace_culture_decision_counter
# var:pacification > 15
# var:pacification > var:resistance
# }
# }
# change_variable = {
# name = embrace_culture_decision_counter
# add = 1
# }
# }
# }
# }
# }
#
# # Tick cultural acceptance every three months
# effect_group = {
# months = 3
#
# first_valid = {
# triggered_effect = {
# trigger = {
# var:resistance > 16
# var:resistance > var:pacification
# }
# effect = {
# story_owner = {
# culture = {
# change_cultural_acceptance = {
# target = culture:anglo_saxon
# value = major_cultural_acceptance_loss
# desc = harrying_of_the_north_tt_resistance_level_4
# }
# }
# }
# }
# }
# triggered_effect = {
# trigger = {
# var:resistance > 13
# var:resistance > var:pacification
# }
# effect = {
# story_owner = {
# culture = {
# change_cultural_acceptance = {
# target = culture:anglo_saxon
# value = medium_cultural_acceptance_loss
# desc = harrying_of_the_north_tt_resistance_level_3
# }
# }
# }
# }
# }
# triggered_effect = {
# trigger = {
# var:resistance > 10
# var:resistance > var:pacification
# }
# effect = {
# story_owner = {
# culture = {
# change_cultural_acceptance = {
# target = culture:anglo_saxon
# value = minor_cultural_acceptance_loss
# desc = harrying_of_the_north_tt_resistance_level_2
# }
# }
# }
# }
# }
# triggered_effect = {
# trigger = {
# var:resistance > 7
# var:resistance > var:pacification
# }
# effect = {
# story_owner = {
# culture = {
# change_cultural_acceptance = {
# target = culture:anglo_saxon
# value = miniscule_cultural_acceptance_loss
# desc = harrying_of_the_north_tt_resistance_level_1
# }
# }
# }
# }
# }
# triggered_effect = {
# trigger = {
# var:pacification > 14
# var:pacification > var:resistance
# }
# effect = {
# story_owner = {
# culture = {
# change_cultural_acceptance = {
# target = culture:anglo_saxon
# value = major_cultural_acceptance_gain
# desc = harrying_of_the_north_tt_pacification_level_4
# }
# }
# }
# }
# }
# triggered_effect = {
# trigger = {
# var:pacification > 11
# var:pacification > var:resistance
# }
# effect = {
# story_owner = {
# culture = {
# change_cultural_acceptance = {
# target = culture:anglo_saxon
# value = medium_cultural_acceptance_gain
# desc = harrying_of_the_north_tt_pacification_level_3
# }
# }
# }
# }
# }
# triggered_effect = {
# trigger = {
# var:pacification > 8
# var:pacification > var:resistance
# }
# effect = {
# story_owner = {
# culture = {
# change_cultural_acceptance = {
# target = culture:anglo_saxon
# value = minor_cultural_acceptance_gain
# desc = harrying_of_the_north_tt_pacification_level_2
# }
# }
# }
# }
# }
# triggered_effect = {
# trigger = {
# var:pacification > 5
# var:pacification > var:resistance
# }
# effect = {
# story_owner = {
# culture = {
# change_cultural_acceptance = {
# target = culture:anglo_saxon
# value = miniscule_cultural_acceptance_gain
# desc = harrying_of_the_north_tt_pacification_level_1
# }
# }
# }
# }
# }
# }
# }
#
# # Tick dread every month
# effect_group = {
# months = 1
#
# first_valid = {
# triggered_effect = {
# trigger = {
# var:pacification > 14
# var:pacification > var:resistance
# }
# effect = {
# story_owner = {
# add_dread = 3
# }
# }
# }
# triggered_effect = {
# trigger = {
# var:pacification > 13
# var:pacification > var:resistance
# }
# effect = {
# story_owner = {
# add_dread = 2
# }
# }
# }
# triggered_effect = {
# trigger = {
# var:pacification > 10
# var:pacification > var:resistance
# }
# effect = {
# story_owner = {
# add_dread = 1
# }
# }
# }
# }
# }
#
# # Add discontent to targeting factions every 2 months
# effect_group = {
# months = 2
#
# first_valid = {
# triggered_effect = {
# trigger = {
# var:resistance > 16
# var:resistance > var:pacification
# }
# effect = {
# story_owner = {
# if = {
# limit = {
# has_targeting_faction = yes
# }
# add_targeting_factions_discontent = 5
# }
# }
# }
# }
# triggered_effect = {
# trigger = {
# var:resistance > 13
# var:resistance > var:pacification
# }
# effect = {
# story_owner = {
# if = {
# limit = {
# has_targeting_faction = yes
# }
# add_targeting_factions_discontent = 3
# }
# }
# }
# }
# triggered_effect = {
# trigger = {
# var:resistance > 10
# var:resistance > var:pacification
# }
# effect = {
# story_owner = {
# if = {
# limit = {
# has_targeting_faction = yes
# }
# add_targeting_factions_discontent = 1
# }
# }
# }
# }
# }
# }
#
# # Erode Norman County Control every 3 months
# effect_group = {
# months = 3
#
# first_valid = {
# triggered_effect = {
# trigger = {
# var:resistance > 16
# var:resistance > var:pacification
# }
# effect = {
# story_owner = {
# every_sub_realm_county = {
# limit = {
# holder = {
# NOT = {
# culture = culture:anglo_saxon
# }
# }
# }
# change_county_control = medium_discontent_loss
# }
# }
# }
# }
# triggered_effect = {
# trigger = {
# var:resistance > 13
# var:resistance > var:pacification
# }
# effect = {
# story_owner = {
# every_sub_realm_county = {
# limit = {
# holder = {
# NOT = {
# culture = culture:anglo_saxon
# }
# }
# }
# change_county_control = minor_discontent_loss
# }
# }
# }
# }
# }
# }
#
# # Add Norman County Control every 3 months
# effect_group = {
# months = 3
#
# first_valid = {
# triggered_effect = {
# trigger = {
# var:pacification > 14
# var:pacification > var:resistance
# }
# effect = {
# story_owner = {
# every_sub_realm_county = {
# limit = {
# holder = {
# NOT = {
# culture = culture:anglo_saxon
# }
# }
# }
# change_county_control = medium_discontent_gain
# }
# }
# }
# }
# triggered_effect = {
# trigger = {
# var:pacification > 11
# var:pacification > var:resistance
# }
# effect = {
# story_owner = {
# every_sub_realm_county = {
# limit = {
# holder = {
# NOT = {
# culture = culture:anglo_saxon
# }
# }
# }
# change_county_control = minor_discontent_gain
# }
# }
# }
# }
# }
# }
#
# #Maintenance group
# effect_group = {
# days = 1
# #Give the story cycle to any Norman ruler of England if the original one sods off
# triggered_effect = {
# trigger = {
# story_owner = {
# NOT = {
# has_title = title:k_england
# }
# }
# }
# effect = {
# title:k_england.holder = {
# save_scope_as = new_ruler
# }
# make_story_owner = scope:new_ruler
# set_variable = {
# name = ruler_england
# value = story_owner
# }
# set_global_variable = {
# name = ruler_england
# value = story_owner
# }
# }
# }
# }
#}
#

View file

@ -0,0 +1,156 @@
story_hasan = {
# by James Beaumont
visible = yes
icon = {
trigger = {
always = yes
}
reference = "gfx/interface/icons/regimenttypes/mubarizun.dds"
}
visualization = {
decisions = {
hasan_evangelize_the_faith
hasan_agitate_the_populace
hasan_ignite_the_flames
hasan_found_the_assassins
hasan_expand_the_assassins
zealous_missionary_prep_decision
}
basic_counter = {
variable_name = "radical_points"
min = 0
max = 15
label = "PROGRESS_TOWARDS_ASSASSIN_PATH"
}
character = {
variable_name = "ultimate_foe"
label = "ULTIMATE_FOE"
}
}
on_setup = {
}
#
on_end = {
debug_log = "Hasan i Sabbah story ended on:"
debug_log_date = yes
}
#
on_owner_death = {
end_story = yes
}
# Progress on Assassing path Events
effect_group = {
months = 6
first_valid = {
triggered_effect = {
trigger = {
exists = var:radical_points
var:radical_points >= 5
story_owner = {
OR = {
faith = faith:ismaili
faith = faith:nizari
}
NOR = {
has_character_flag = arrived_in_egypt
has_character_flag = had_hasan_sabah_20
}
}
}
effect = {
story_owner = {
trigger_event = hasan_sabbah.1020
}
}
}
triggered_effect = {
trigger = {
exists = var:radical_points
var:radical_points >= 15
NOT = { exists = var:ultimate_foe }
}
effect = {
story_owner = {
trigger_event = hasan_sabbah.1031
}
}
}
triggered_effect = {
trigger = {
exists = var:story_phase
var:story_phase >= 2
NOT = { exists = var:ultimate_foe }
story_owner.domicile.domicile_location.county.holder ?= {
save_temporary_scope_as = county_holder
}
faith:ismaili = {
religious_head = {
save_temporary_scope_as = ismaili_hof
NOR = {
this = scope:county_holder
scope:county_holder = {
any_liege_or_above = {
this = scope:ismaili_hof
}
}
}
}
}
faith:nizari = {
religious_head = {
save_temporary_scope_as = nizari_hof
NOR = {
this = scope:county_holder
scope:county_holder = {
any_liege_or_above = {
this = scope:nizari_hof
}
}
}
}
}
}
effect = {
story_owner = {
domicile.domicile_location = {
save_scope_as = location
}
trigger_event = hasan_sabbah.1031
}
}
}
}
}
# Hasan dies or stops being muslim, end the story
effect_group = {
days = { 40 60 }
first_valid = {
triggered_effect = {
trigger = {
OR = {
# Standard checks
NOT = { exists = story_owner }
story_owner = {
is_alive = no
}
# Must be Muslim
NOT = { story_owner = { religion = religion:islam_religion } }
# Must be landless
NOT = { story_owner = { has_government = landless_adventurer_government } }
# Must not be Sunni
story_owner = { faith = { has_doctrine = muhammad_succession_sunni_doctrine } }
}
}
effect = {
end_story = yes
}
}
}
}
}

View file

@ -0,0 +1,81 @@

### Byzantine-focused Restore Rome Story Cycle
### by Chad Uhl
ep3_story_cycle_restoring_rome = {
on_setup = {
story_owner = {
trigger_event = {
id = ep3_roman_restoration.0001
days = 2
}
}
}
# We only pass on the story if the title heir is the Player
on_owner_death = {
if = {
limit = {
story_owner = { has_title = title:h_roman_empire }
title:h_roman_empire.current_heir = { is_ai = no }
}
make_story_owner = title:h_roman_empire.current_heir
}
else_if = {
limit = {
story_owner = { has_title = title:h_eastern_roman_empire }
title:h_eastern_roman_empire.current_heir = { is_ai = no }
}
make_story_owner = title:h_eastern_roman_empire.current_heir
}
else_if = {
limit = {
story_owner = { has_title = title:e_byzantium }
title:e_byzantium.current_heir = { is_ai = no }
}
make_story_owner = title:e_byzantium.current_heir
}
}
# Rome = New Game +
# aka ramp up difficulty
effect_group = {
days = 120
trigger = {
story_owner = {
is_ai = no
is_roman_emperor_excluding_byzantium_trigger = yes
}
has_variable = roman_empire_hard_mode
}
triggered_effect = {
trigger = { always = yes }
effect = {
story_owner = {
trigger_event = { on_action = ep3_restored_rome_on_action }
}
}
}
}
#Maintenance group
effect_group = {
days = 1
trigger = {
story_owner = { is_landed = no }
}
triggered_effect = {
trigger = { always = yes }
effect = {
#You became a landless adventurer with different lifestyles! Ending story prematurely.
story_owner = { save_scope_as = story_owner }
debug_log = "Roman Restoration invalidated"
debug_log_scopes = yes
end_story = yes
}
}
}
}

View file

@ -0,0 +1,78 @@
story_cycle_violet_poet = {
# by Nick Meredith
visible = yes
icon = {
trigger = {
always = yes
}
reference = "gfx/interface/icons/artifact/artifact_chronicle.dds"
}
visualization = {
traits = {
violet_poet
}
artifact = { variable_name = "artifact" label = "POETRY_BOOK_LABEL" }
}
on_setup = {
set_variable = {
name = violet_poet
value = story_owner
}
}
on_end = {
debug_log = "Violet Poet story cycle ended on:"
debug_log_date = yes
}
on_owner_death = {
if = { #Pass on to Wallada's heir but NOT past her heir
limit = {
exists = story_owner.player_heir
story_owner = {
this = character:andalusian_0003
}
}
make_story_owner = story_owner.player_heir
set_variable = {
name = violet_poet
value = story_owner
}
}
# Or destroy
else = {
end_story = yes
remove_variable = violet_poet
}
}
# Events for the Violet Poet
effect_group = {
days = { 100 200 }
trigger = {
story_owner = {
is_available = yes
is_alive = yes
is_adult = yes
}
}
first_valid = {
triggered_effect = {
trigger = { always = yes }
effect = {
save_scope_as = story_scope
story_owner = {
trigger_event = {
on_action = ongoing_violet_poet_owner_events
}
}
}
}
}
}
}

View file

@ -0,0 +1,132 @@
turkic_tribe_story = {
on_setup = {
### Scopes
save_scope_as = turkic_tribe_story
story_owner = {
add_character_flag = had_turkic_tribe_story
}
### Tracking variables
set_variable = {
name = turkic_leader
value = story_owner.var:turkic_leader
}
set_variable = {
name = upset_vassal
value = story_owner.var:upset_vassal
}
set_variable = {
name = nomads_county
value = story_owner.var:nomads_county
}
set_variable = {
name = nomads_new_county
value = story_owner.var:nomads_new_county
}
story_owner = {
remove_variable = turkic_leader
remove_variable = upset_vassal
remove_variable = nomads_county
remove_variable = nomads_new_county
}
}
on_owner_death = {
scope:story = { end_story = yes }
}
# nomad leader is dead
effect_group = {
days = 200
trigger = {
trigger_if = {
limit = { exists = var:turkic_leader }
var:turkic_leader = {
OR = {
is_alive = no
NOR = {
is_courtier_of = scope:story.story_owner
is_vassal_of = scope:story.story_owner
}
}
}
}
trigger_else = { always = yes }
}
first_valid = {
triggered_effect = {
trigger = { always = yes }
effect = { end_story = yes }
}
}
}
# Something happens - random events
effect_group = {
days = { 200 350 } #lower these values to test the story cycle
chance = 50
triggered_effect = {
trigger = { always = yes }
effect = {
story_owner = {
trigger_event = {
on_action = ongoing_turkic_tribe_events
}
}
}
}
}
effect_group = { #the nomad chain's end
years = { 5 10 } #lower these values to test the story cycle
chance = 100
trigger = {
story_owner = {
is_available = yes
}
}
triggered_effect = {
trigger = { always = yes }
effect = {
story_owner = {
add_character_flag = {
flag = turkic_tribe_story_end
days = 200
}
trigger_event = {
on_action = turkic_tribe_story_end
}
}
}
}
}
#Maintenance group
effect_group = {
days = 1
trigger = {
story_owner = { is_landed = no }
}
triggered_effect = {
trigger = { always = yes }
effect = {
#You became a landless adventurer/administrative! Ending story prematurely.
story_owner = { save_scope_as = story_owner }
debug_log = "Nomads invalidated"
debug_log_scopes = yes
end_story = yes
}
}
}
}

View file

@ -0,0 +1,34 @@
### Exists so we can track Ali or any subsequent Zanj Leaders.
story_zanj_rebellion = {
on_setup = {
story_owner = {
set_variable = {
name = zanj_rebellion_strength_score
value = 7
}
}
}
on_owner_death = {
inherit_zanj_rebellion_effect = yes
}
on_end = {}
#Maintenance group
effect_group = {
days = 1
trigger = {
story_owner = { is_landed = no }
}
triggered_effect = {
trigger = { always = yes }
effect = {
#You became a landless adventurer/administrative! Ending story prematurely.
story_owner = { save_scope_as = story_owner }
debug_log = "Zanj invalidated"
debug_log_scopes = yes
end_story = yes
}
}
}
}

View file

@ -0,0 +1,265 @@
story_greatest_of_khans = {
visible = yes
icon = {
trigger = {
always = yes
}
reference = "gfx/interface/icons/story_cycles/bow_steppe.dds"
}
background = {
reference = "gfx/interface/illustrations/event_scenes/mpo_steppe_evening.dds"
}
visualization = {
custom_string_key = "GREATEST_OF_KHANS_INFORMATION_STRING"
decisions = { mpo_gok_world_conquest_decision }
}
on_setup = {
if = {
limit = {
NOT = {
has_mpo_dlc_trigger = yes
}
}
end_story = yes
}
else = {
set_global_variable = {
name = gok_empire_crumble_date
value = {
value = current_year
add = 75
}
}
set_variable = {
name = gok_final_date
value = {
value = current_year
add = 75
}
}
set_global_variable = {
name = first_gok
value = story_owner
}
set_global_variable = {
name = greatest_of_khans_title
value = story_owner.primary_title
}
global_var:greatest_of_khans_title = {
set_variable = {
name = chaotic_succession_protection
value = yes
}
}
}
}
on_end = {
if = {
limit = {
exists = global_var:active_conquerors
}
change_global_variable = {
name = active_conquerors
add = -1
}
}
global_var:greatest_of_khans_title = {
remove_variable = chaotic_succession_protection
}
remove_global_variable = first_gok
remove_global_variable = gok_empire_crumble_date
}
on_owner_death = {
# Handle story succession
story_owner = {
save_scope_as = old_khan # for news events
if = {
limit = {
any_child = { # if the Khan has a reasonable heir...
is_primary_heir_of = scope:story.story_owner
}
}
random_child = {
limit = {
is_primary_heir_of = scope:story.story_owner
}
save_scope_as = new_khan # for news events
save_scope_as = new_story_owner # pass chain to appropriate target
add_character_flag = {
flag = gain_mongol_succession_dread
days = 2
}
add_character_modifier = {
modifier = the_great_khan_modifier
}
}
every_player = {
trigger_event = {
id = mongol_invasion.1001
days = 1
}
}
}
else_if = {
limit = {
dynasty = {
any_dynasty_member = { # if the Khan has some other heir not family?)
is_primary_heir_of = scope:story.story_owner
}
}
}
dynasty = {
random_dynasty_member = {
limit = {
is_primary_heir_of = scope:story.story_owner
}
save_scope_as = new_khan # for news events
save_scope_as = new_story_owner # pass chain toappropriate target
add_character_flag = {
flag = gain_mongol_succession_dread
days = 2
}
add_character_modifier = {
modifier = the_great_khan_modifier
}
}
}
every_player = {
trigger_event = {
id = mongol_invasion.1001
days = 1
}
}
}
else_if = {
limit = {
primary_heir = {
is_grandchild_of = scope:story.story_owner
}
}
primary_heir = {
save_scope_as = new_khan # for news events
save_scope_as = new_story_owner # pass chain to appropriate target
add_character_flag = {
flag = gain_mongol_succession_dread
days = 2
}
add_character_modifier = {
modifier = the_great_khan_modifier
}
}
every_player = {
trigger_event = {
id = mongol_invasion.1001
days = 1
}
}
}
else_if = { # If the empire passes out of the original dynasty, the story will automatically end
limit = {
NOT = {
dynasty = {
any_dynasty_member = { # if the Khan has some otherheir (not family?)
is_primary_heir_of = scope:story.story_owner
}
}
}
}
scope:story.story_owner.primary_heir = {
save_scope_as = new_khan
}
every_player = {
trigger_event = {
id = mongol_invasion.1001
days = 1
}
}
}
}
if = {
limit = { exists = scope:new_story_owner }
make_story_owner = scope:new_story_owner
}
#Story end event
else = {
if = {
limit = {
exists = story_owner.player_heir
exists = story_owner.dynasty
story_owner.player_heir = {
dynasty ?= root.story_owner.dynasty
}
}
story_owner.player_heir ?= {
trigger_event = {
id = mpo_greatest_of_khans.0040
days = 1
}
}
}
else = {
end_story = yes
}
}
}
#Invalidation end!
effect_group = {
years = 75
triggered_effect = {
trigger = {
exists = story_owner
}
effect = {
story_owner = {
save_scope_as = timed_out
trigger_event = {
id = mpo_greatest_of_khans.0040
days = 1
}
}
}
}
}
#Start a new war if none is ongoing
effect_group = {
days = { 30 60 }
trigger = {
story_owner = {
is_at_war = no
gold > 0
exists = global_var:greatest_of_khans_title
any_held_title = {
this = global_var:greatest_of_khans_title
}
}
}
triggered_effect = {
trigger = {
story_owner = {
is_ai = yes
}
}
effect = {
story_owner = {
gok_war_target_evaluation_and_declaration_effect = yes
}
debug_log = "The story started a new war for the Greatest of Khans"
debug_log_date = yes
story_owner = {
save_scope_as = owner
}
debug_log_scopes = yes
}
}
}
}

View file

@ -0,0 +1,22 @@
story_temujin_flavor = {
on_owner_death = {
end_story = yes
}
effect_group = {
days = { 180 360 }
chance = 50
triggered_effect = {
trigger = { always = yes }
effect = {
story_owner = {
trigger_event = {
on_action = ongoing_temujin_flavor_events
}
}
}
}
}
}

View file

@ -0,0 +1,168 @@

# Story for the rise of the Almohads
# by Petter Vilberg
story_almohad_invasion = {
on_setup = {
set_global_variable = {
name = spawned_almohads
value = yes
}
}
on_end = {
debug_log = "Almohad story ended on:"
debug_log_date = yes
}
on_owner_death = {
if = {
limit = { NOT = { exists = var:had_ibn_tumart_succession } }
set_variable = {
name = had_ibn_tumart_succession
value = yes
}
if = {
limit = { exists = var:ibn_tumart_triggered_death }
if = {
limit = {
var:al_mumin = {
is_alive = yes
faith = faith:masmudi
}
}
if = {
limit = { var:al_mumin = { is_imprisoned = yes } }
var:al_mumin = { release_from_prison = yes }
}
if = {
limit = {
NOT = { var:ibn_tumart.primary_heir = var:al_mumin }
}
create_title_and_vassal_change = {
type = granted
save_scope_as = change
add_claim_on_loss = no
}
var:ibn_tumart = {
save_scope_as = ibn_tumart
every_held_title = {
limit = { is_capital_barony = no }
change_title_holder = {
holder = scope:story.var:al_mumin
change = scope:change
}
}
}
resolve_title_and_vassal_change = scope:change
make_story_owner = var:al_mumin
var:almohad_county = {
save_scope_as = almohad_county
}
story_owner = {
if = { # Make sure they get back to warfare
limit = { is_at_war = no }
almohads_find_target_titles_effect = yes
almohads_declare_war_for_target_title_effect = yes
}
spawn_second_almohad_troops_effect = yes
save_scope_as = al_mumin
every_war_enemy = {
trigger_event = almohad.1003
}
}
}
}
}
}
else = {
end_story = yes
}
}
#Kill ibn Tumert if he suffers a defeat
effect_group = {
days = { 20 80 }
trigger = {
story_owner = var:ibn_tumart
story_owner = { is_alive = yes }
exists = global_var:almohads_were_defeated
}
triggered_effect = {
trigger = {
always = yes
}
effect = {
debug_log = "Trying to kill Ibn Tumert!"
set_variable = {
name = ibn_tumart_triggered_death
value = yes
}
story_owner = {
death = natural
}
}
}
}
#Rebuild Marrakesh
effect_group = {
days = 180
trigger = {
NOT = { exists = var:fired_marrakesh_event }
story_owner = {
any_sub_realm_county = {
this = title:c_marrakesh
OR = {
holder = scope:story.story_owner
holder = { is_ai = no }
}
}
}
}
triggered_effect = {
trigger = {
always = yes
}
effect = {
set_variable = {
name = fired_marrakesh_event
value = yes
}
story_owner = {
trigger_event = almohad.1004
}
}
}
}
#Maintenance group
effect_group = {
days = 1
trigger = {
story_owner = { is_landed = no }
}
triggered_effect = {
trigger = { always = yes }
effect = {
#You became a landless adventurer/administrative! Ending story prematurely.
story_owner = { save_scope_as = story_owner }
debug_log = "Almohads invalidated"
debug_log_scopes = yes
end_story = yes
}
}
}
}

View file

@ -0,0 +1,89 @@
#
###################################################
## Wandering Lyonese Monk
## by Ewan Cowhig Croft
###################################################
#
## We really just use this to contain our variables & variable lists.
#
#story_lyonese_monk = {
#
# on_setup = {
# # Start tracking how many events we've tried to fire from within our current_phase.
# set_variable = {
# name = lm_phase_tally
# value = 0
# }
# # Set our school score variables.
# set_variable = {
# name = school_elipandic
# value = 0
# }
# ## Slight edge for the Felicitous school, as scope:acolyte is an explicit Felix of Urgell fan.
# set_variable = {
# name = school_felicitous
# value = 1
# }
# set_variable = {
# name = school_radical
# value = 0
# }
# }
#
# on_owner_death = {
# if = {
# limit = { exists = story_owner.player_heir }
# story_owner = {
# # Transfer flags.
# if = {
# limit = { has_character_flag = fp2_lyonese_monk_entered_controversy_flag }
# player_heir = { add_character_flag = fp2_lyonese_monk_entered_controversy_flag }
# }
# if = {
# limit = { has_character_flag = fp2_lyonese_monk_entered_schism_flag }
# player_heir = { add_character_flag = fp2_lyonese_monk_entered_schism_flag }
# }
# save_scope_as = dead_owner
# # Transfer over scopes & prepare to optionally send the story itself.
# player_heir = {
# save_scope_as = acolyte_host
# trigger_event = {
# id = fp2_lyonese_monk.0011
# days = 7
# }
# }
# }
# }
# else = {
# var:acolyte = { silent_disappearance_effect = yes }
# end_story = yes
# }
# }
#
# on_end = {
# story_owner = {
# # Wipe them tracking flags.
# remove_character_flag ?= fp2_lyonese_monk_entered_controversy_flag
# remove_character_flag ?= fp2_lyonese_monk_entered_schism_flag
# }
# }
#
# #Maintenance group
# effect_group = {
# days = 1
# trigger = {
# story_owner = { is_landed = no }
# }
# triggered_effect = {
# trigger = { always = yes }
# effect = {
# #You became a landless adventurer/administrative! Ending story prematurely.
# story_owner = { save_scope_as = story_owner }
# debug_log = "Reformer invalidated"
# debug_log_scopes = yes
# end_story = yes
# }
# }
# }
#}
#

View file

@ -0,0 +1,537 @@
story_mongol_invasion = {
# by Petter Vilberg
on_setup = {
story_owner = { # Start conquest of all of Mongolia
start_wars_for_mongolia_effect = yes
}
set_variable = {
name = succession_counter
value = 0
}
}
#
on_end = {
debug_log = "Mongol story ended on:"
debug_log_date = yes
set_global_variable = {
name = mongol_story_has_ended
value = yes
}
}
#
on_owner_death = {
story_owner = {
set_variable = {
name = special_mongol_empire_conquest_region_prio_1_alpha_var
value = 0
}
set_variable = {
name = special_mongol_empire_conquest_region_prio_1_var
value = 0
}
set_variable = {
name = special_mongol_empire_conquest_region_prio_2_var
value = 0
}
set_variable = {
name = special_mongol_empire_conquest_region_prio_3_var
value = 0
}
set_variable = {
name = special_mongol_empire_conquest_region_prio_4_var
value = 0
}
set_variable = {
name = special_mongol_empire_conquest_region_prio_5_var
value = 0
}
set_variable = {
name = outside_conquest_region_var
value = 0
}
every_realm_county = {
if = {
limit = {
title_province = {
geographical_region = special_mongol_empire_conquest_region_prio_5
}
}
root.story_owner = {
change_variable = {
name = special_mongol_empire_conquest_region_prio_5_var
add = 1
}
}
}
else_if = {
limit = {
title_province = {
geographical_region = special_mongol_empire_conquest_region_prio_4
}
}
root.story_owner = {
change_variable = {
name = special_mongol_empire_conquest_region_prio_4_var
add = 1
}
}
}
else_if = {
limit = {
title_province = {
geographical_region = special_mongol_empire_conquest_region_prio_3
}
}
root.story_owner = {
change_variable = {
name = special_mongol_empire_conquest_region_prio_3_var
add = 1
}
}
}
else_if = {
limit = {
title_province = {
geographical_region = special_mongol_empire_conquest_region_prio_2
}
}
root.story_owner = {
change_variable = {
name = special_mongol_empire_conquest_region_prio_2_var
add = 1
}
}
}
else_if = {
limit = {
title_province = {
geographical_region = special_mongol_empire_conquest_region_prio_1
}
}
root.story_owner = {
change_variable = {
name = special_mongol_empire_conquest_region_prio_1_var
add = 1
}
}
}
else_if = {
limit = {
title_province = {
geographical_region = special_mongol_empire_conquest_region_prio_1_alpha
}
}
root.story_owner = {
change_variable = {
name = special_mongol_empire_conquest_region_prio_1_alpha_var
add = 1
}
}
}
else = {
root.story_owner = {
change_variable = {
name = outside_conquest_region_var
add = 1
}
}
}
}
}
# Weighted random chance to end the story/break up the Empire
random = {
chance = 0
#Pure realm size - Mongol empire is historical breakup size
modifier = {
add = 20
story_owner = {
realm_size >= 1087
}
}
#Pure realm size - Mongol empire is max extent size
modifier = {
add = 20
story_owner = {
realm_size >= 1474
}
}
#Pure realm size - Mongol empire is at total bonus size
modifier = {
add = 30
story_owner = {
realm_size >= 1725
}
}
modifier = { # If the empire is very successful, increase the chance
add = 10
story_owner = {
#Half of total county count
var:special_mongol_empire_conquest_region_prio_1_alpha_var >= 80
var:special_mongol_empire_conquest_region_prio_1_var >= 60
var:special_mongol_empire_conquest_region_prio_2_var >= 100
#Just a third
var:special_mongol_empire_conquest_region_prio_3_var >= 30
var:special_mongol_empire_conquest_region_prio_4_var >= 100
var:special_mongol_empire_conquest_region_prio_5_var >= 120
}
}
modifier = { # If the empire is EXTREMELY successful, increase the chance
add = 20
story_owner = {
#Three quarters of total county count
var:special_mongol_empire_conquest_region_prio_1_alpha_var >= 120
var:special_mongol_empire_conquest_region_prio_1_var >= 75
var:special_mongol_empire_conquest_region_prio_2_var >= 200
#Just half
var:special_mongol_empire_conquest_region_prio_3_var >= 45
var:special_mongol_empire_conquest_region_prio_4_var >= 150
var:special_mongol_empire_conquest_region_prio_5_var >= 180
var:outside_conquest_region_var >= 100
}
}
modifier = {
add = 20
var:succession_counter > 1
}
modifier = {
add = 30
var:succession_counter > 2
}
modifier = { # Historical point
add = 30
var:succession_counter > 3
}
modifier = { # Guaranteed if there have been five successions
add = 20
var:succession_counter > 4
}
set_variable = {
name = end_of_story
value = yes
}
}
if = {
limit = {
exists = var:end_of_story
}
# Do the breakup of the empire if possible
story_owner = {
if = {
limit = {
realm_size >= 50
}
debug_log = "Trying to break up the Mongol Empire"
break_up_mongol_empire_effect = yes
}
else = {
save_scope_as = old_khan
player_heir = {
save_scope_as = new_khan
}
every_player = {
trigger_event = mongol_invasion.1005 # Small end to story
}
}
}
end_story = yes
}
else = {
change_variable = {
name = succession_counter
add = 1
}
# Handle story succession
story_owner = {
save_scope_as = old_khan # for news events
if = {
limit = {
any_child = { # if the Khan has a reasonable heir...
is_primary_heir_of = scope:story.story_owner
}
}
random_child = {
limit = {
is_primary_heir_of = scope:story.story_owner
}
save_scope_as = new_khan # for news events
save_scope_as = new_story_owner # pass chain to appropriate target
add_character_flag = {
flag = gain_mongol_succession_dread
days = 2
}
add_character_modifier = {
modifier = the_great_khan_modifier
}
}
every_player = {
trigger_event = {
id = mongol_invasion.1001
days = 1
}
}
}
else_if = {
limit = {
dynasty = {
any_dynasty_member = { # if the Khan has some other heir (not family?)
is_primary_heir_of = scope:story.story_owner
}
}
}
dynasty = {
random_dynasty_member = {
limit = {
is_primary_heir_of = scope:story.story_owner
}
save_scope_as = new_khan # for news events
save_scope_as = new_story_owner # pass chain to appropriate target
add_character_flag = {
flag = gain_mongol_succession_dread
days = 2
}
add_character_modifier = {
modifier = the_great_khan_modifier
}
}
}
every_player = {
trigger_event = {
id = mongol_invasion.1001
days = 1
}
}
}
else_if = { # If the empire passes out of the original dynasty, the story will automatically end
limit = {
NOT = {
dynasty = {
any_dynasty_member = { # if the Khan has some other heir (not family?)
is_primary_heir_of = scope:story.story_owner
}
}
}
}
scope:story.story_owner.primary_heir = {
save_scope_as = new_khan
}
every_player = {
trigger_event = {
id = mongol_invasion.1001
days = 1
}
}
}
}
if = {
limit = { exists = scope:new_story_owner }
make_story_owner = scope:new_story_owner
scope:new_story_owner = {
# Delayed firing of spawning new event troops
trigger_event = {
id = mongol_invasion.0100
days = 1
}
}
debug_log = "Successfully replaced the Mongol Khan"
debug_log_date = yes
debug_log_scopes = yes
}
else = {
# Make sure the empire breaks up as best as possible
story_owner = {
if = {
limit = {
realm_size >= 50
}
}
debug_log = "Due to failing to replace the Khan with a Temujin successor, now trying to break up the empire"
break_up_mongol_empire_effect = yes
}
end_story = yes
debug_log = "Failed to replace the Mongol Khan"
debug_log_date = yes
debug_log_scopes = yes
}
}
story_owner = {
clear_variable_list = special_mongol_empire_conquest_region_prio_1_alpha_var
clear_variable_list = special_mongol_empire_conquest_region_prio_1_var
clear_variable_list = special_mongol_empire_conquest_region_prio_2_var
clear_variable_list = special_mongol_empire_conquest_region_prio_3_var
clear_variable_list = special_mongol_empire_conquest_region_prio_4_var
clear_variable_list = special_mongol_empire_conquest_region_prio_5_var
clear_variable_list = outside_conquest_region_var
}
}
#Start a new war if none is ongoing
effect_group = {
days = { 30 50 }
trigger = {
story_owner = {
is_at_war = no
gold > 0
any_held_title = {
this = title:e_mongol_empire
}
}
}
triggered_effect = {
trigger = {
story_owner = {
is_ai = yes
}
}
effect = {
if = {
limit = {
has_mpo_dlc_trigger = yes
}
story_owner = {
gok_war_target_evaluation_and_declaration_effect = yes
}
}
else = {
story_owner = {
mongol_war_target_evaluation_and_declaration_effect = yes
}
}
debug_log = "The story started a new war for the Mongols"
debug_log_date = yes
story_owner = {
save_scope_as = owner
}
debug_log_scopes = yes
}
}
}
# Story handling in case of succession weirdness
effect_group = {
days = 180
trigger = {
story_owner = {
NOT = {
any_held_title = {
this = title:e_mongol_empire
}
}
}
}
triggered_effect = {
trigger = { exists = title:e_mongol_empire }
effect = {
if = {
limit = {
title:e_mongol_empire.holder = {
culture = culture:mongol
}
}
make_story_owner = title:e_mongol_empire.holder
}
else = {
end_story = yes
}
}
}
triggered_effect = {
trigger = { NOT = { exists = title:e_mongol_empire } }
effect = {
end_story = yes
}
}
}
# Set up Mongol Empire de jure stuff
effect_group = {
days = 180
trigger = {
NOT = { exists = var:has_updated_mongolia_de_jure }
trigger_if = {
limit = {
title:e_mongolia = {
any_de_jure_county = {
count >= 3
}
}
}
title:e_mongolia = {
any_in_de_jure_hierarchy = {
continue = { tier > tier_county }
tier = tier_county
holder.top_liege = scope:story.story_owner
count > 3
}
}
}
story_owner.capital_county.empire = {
any_in_de_jure_hierarchy = {
continue = { tier > tier_county }
tier = tier_county
holder.top_liege = scope:story.story_owner
count > 5
}
}
}
triggered_effect = {
trigger = {
always = yes
}
effect = {
title:e_mongolia = {
every_in_de_jure_hierarchy = {
limit = {
tier = tier_kingdom
}
set_de_jure_liege_title = title:e_mongol_empire
}
}
if = {
limit = {
exists = title:e_mongolia.holder
}
title:e_mongolia.holder = {
destroy_title = title:e_mongolia
}
}
if = {
limit = {
story_owner.capital_county.empire = {
NOT = {
this = title:e_mongol_empire
}
}
}
story_owner.capital_county.empire = {
save_scope_as = new_de_jure
}
scope:new_de_jure = {
every_in_de_jure_hierarchy = {
limit = {
tier = tier_kingdom
}
set_de_jure_liege_title = title:e_mongol_empire
}
}
}
set_variable = {
name = has_updated_mongolia_de_jure
value = yes
}
}
}
}
}

View file

@ -0,0 +1,52 @@
restoring_roman_provinces_story = {
on_setup = {
}
on_end = {
}
on_owner_death = {
}
effect_group = {
days = 36 #Checked every 365 days
triggered_effect = {
trigger = {
story_owner = {
roman_restoration_is_valid_roman_empire_trigger = yes
OR = {
has_title = title:h_roman_empire #Not for Byzantium.
has_title = title:h_eastern_roman_empire #Not for Byzantium.
}
}
}
effect = {
story_owner = {
trigger_event = {
on_action = on_action_roman_restoration_pulse
}
}
}
}
}
#Maintenance group
effect_group = {
days = 1
trigger = {
story_owner = { is_landed = no }
}
triggered_effect = {
trigger = { always = yes }
effect = {
#You became a landless adventurer with different lifestyles! Ending story prematurely.
story_owner = { save_scope_as = story_owner }
debug_log = "Roman Restoration invalidated"
debug_log_scopes = yes
end_story = yes
}
}
}
}

View file

@ -0,0 +1,177 @@
story_seljuk_invasion = {
on_setup = {
story_owner = { # Find a place for the Seljuks to settle
set_variable = {
name = seljuk_invasion_nomad_strength_score
value = 10
}
try_to_settle_the_seljuk_effect = yes
}
set_variable = {
name = succession_counter
value = 0
}
}
on_end = {}
on_owner_death = {
# Breakup of the empire should not happen until at least one succession has passed
random_list = { # Weighted chance to end the story
10 = {
trigger = { var:succession_counter < 2 }
modifier = {
add = 10
var:succession_counter > 1
}
modifier = { # Historical point
add = 10
var:succession_counter > 2
}
modifier = {
add = 20
var:succession_counter > 3
}
end_story = yes
}
90 = {
if = {
limit = {
exists = story_owner.primary_heir
}
make_story_owner = story_owner.primary_heir
change_variable = {
name = seljuk_invasion_nomad_strength_score
add = -5
}
}
else = {
end_story = yes
}
}
}
}
# Start a new war if one is not ongoing
effect_group = {
days = { 30 60 }
trigger = {
story_owner = {
is_at_war = no
gold > 0
OR = {
NOT = { has_character_flag = settled_seljuk }
top_liege = this
}
}
}
triggered_effect = {
trigger = {
story_owner = {
is_ai = yes
}
}
effect = {
story_owner = {
seljuk_war_target_evaluation_and_declaration_effect = yes
save_scope_as = owner
}
}
}
}
# Ask for independence if vassals
effect_group = {
years = { 1 2 }
trigger = {
story_owner = {
has_character_flag = settled_seljuk
top_liege != this
}
}
triggered_effect = {
trigger = {
story_owner = {
is_ai = yes
}
}
effect = {
story_owner = {
seljuk_request_independence_from_liege_effect = yes
save_scope_as = owner
}
}
}
}
# Create the empire and close the story
effect_group = {
days = { 30 60 }
trigger = {
story_owner = {
save_temporary_scope_as = temp_seljuk
OR = {
any_county_in_region = {
region = world_persian_empire
percent >= 0.51
holder.top_liege = scope:temp_seljuk
}
any_held_title = {
count = 2
title_tier = kingdom
any_this_title_or_de_jure_above = {
this = title:e_persia
}
}
any_held_title = {
title_tier = empire
any_this_title_or_de_jure_above = {
this = title:e_persia
}
}
}
}
}
triggered_effect = {
trigger = {
story_owner = {
is_ai = yes
}
}
effect = {
story_owner = {
save_scope_as = owner
create_title_and_vassal_change = {
type = created
save_scope_as = title_change
add_claim_on_loss = no
}
title:e_persia = {
change_title_holder = {
holder = scope:owner
change = scope:title_change
}
save_scope_as = title_e_persia
}
resolve_title_and_vassal_change = scope:title_change
set_primary_title_to = scope:title_e_persia
}
end_story = yes
}
}
}
}

View file

@ -0,0 +1,189 @@
story_take_mandate_of_heaven = {
on_setup = {
}
on_end = {
}
on_owner_death = {
story_owner = {
if = {
limit = {
primary_heir ?= {
is_ai = yes
is_physically_able_adult = yes
}
}
primary_heir ?= {
create_story = story_take_mandate_of_heaven
}
}
else = {
every_heir = {
limit = {
is_ai = yes
is_physically_able_adult = yes
}
create_story = story_take_mandate_of_heaven
}
}
}
end_story = yes
}
effect_group = { # Handles the AI behavior
days = { 30 60 }
triggered_effect = {
trigger = {
story_owner = {
is_ai = yes
NOT = { can_execute_decision = situation_dynastic_cycle_claim_mandate_decision }
}
}
effect = {
story_owner = {
save_scope_as = root_scope
###### BUDGETING
if = {
limit = {
is_at_war = no
primary_title = { title_held_years >= 3 } # Do not go into buildup mode if there's a brother you need to destroy immediately!
OR = {
any_neighboring_and_across_water_top_liege_realm_owner = {
count = all
current_military_strength >= scope:root_scope.max_military_strength
NOR = {
is_allied_to = scope:root_scope
has_relation_friend = scope:root_scope
has_relation_lover = scope:root_scope
}
}
any_neighboring_and_across_water_top_liege_realm_owner = {
count >= 2
current_military_strength >= scope:root_scope.max_military_strength
NOR = {
is_allied_to = scope:root_scope
has_relation_friend = scope:root_scope
has_relation_lover = scope:root_scope
}
}
any_vassal = {
exists = joined_faction
joined_faction = {
faction_power >= faction_power_halfway_threshold
}
}
AND = {
NOT = { ai_should_get_conqueror_bonuses = yes } # They have a 75% discount
monthly_character_income_minus_expenses > half_monthly_character_income # Try to spend at least 50% of income on MaA!
}
}
}
move_budget_gold = { gold = long_term_gold from = budget_long_term to = budget_war_chest }
move_budget_gold = { gold = short_term_gold from = budget_short_term to = budget_war_chest }
move_budget_gold = { gold = long_term_gold from = budget_long_term to = budget_short_term }
if = {
limit = {
has_treasury = yes
}
move_budget_treasury = { treasury = long_term_treasury from = budget_long_term to = budget_war_chest }
move_budget_treasury = { treasury = short_term_treasury from = budget_short_term to = budget_war_chest }
move_budget_treasury = { treasury = long_term_treasury from = budget_long_term to = budget_short_term }
}
}
if = {
limit = {
is_at_war = no
OR = {
AND = {
has_treasury = yes
war_chest_treasury >= war_chest_treasury_maximum
}
AND = {
has_treasury = no
war_chest_gold >= war_chest_gold_maximum
}
}
}
ai_start_best_war = {
cb = {
chinese_consolidation_cb
}
is_valid = {
scope:target_character = {
current_military_strength < root.current_military_strength
OR = {
AND = {
root = { has_treasury = yes }
has_treasury = yes
treasury < root.treasury
}
AND = {
root = { has_treasury = yes }
has_treasury = no
gold < root.treasury
}
AND = {
root = { has_treasury = no }
has_treasury = yes
treasury < root.gold
}
AND = {
root = { has_treasury = no }
has_treasury = no
gold < root.gold
}
current_military_strength <= root.fifty_percent_of_current_military_strength
}
}
}
}
}
}
}
}
}
effect_group = { # Take the decision
days = { 60 120 }
triggered_effect = {
trigger = {
story_owner = {
is_ai = yes
can_execute_decision = situation_dynastic_cycle_claim_mandate_decision
}
}
effect = {
story_owner = {
execute_decision = situation_dynastic_cycle_claim_mandate_decision
}
}
}
}
effect_group = { # Various ways to end the cycle
days = { 900 1800 }
triggered_effect = {
trigger = {
story_owner = {
OR = {
is_independent_ruler = no
is_landed = no
has_trait = incapable
highest_held_title_tier <= tier_county
}
}
}
effect = {
end_story = yes
}
}
}
}

View file

@ -0,0 +1,147 @@
story_tai_migrations = {
on_setup = {
}
on_end = {
every_in_global_list = { # give all saved migration county holders the story if they don't have it already
variable = tai_migration_target_counties
holder = {
if = {
limit = {
NOT = {
any_owned_story = {
type = story_tai_migrations
}
}
any_realm_province = {
culture = {
NOT = {
has_cultural_pillar = heritage_tai
}
}
}
}
create_story = story_tai_migrations
}
}
}
}
on_owner_death = { # pass on the story
story_owner = {
primary_heir ?= {
if = {
limit = {
is_physically_able_adult = yes
is_ai = yes
}
create_story = story_tai_migrations
}
}
}
end_story = yes
}
effect_group = { # Yearly validations
days = 360
triggered_effect = { # end the story if I have no relevant provinces for migration
trigger = {
story_owner = {
NOT = {
any_realm_province = {
geographical_region = custom_tai_migration_target
culture = {
NOT = {
has_cultural_pillar = heritage_tai
}
}
}
}
}
}
effect = {
end_story = yes
}
}
triggered_effect = { # end the story if it has been 100 years from game start
trigger = {
years_from_game_start >= 100
}
effect = {
end_story = yes
}
}
triggered_effect = { # end the story if X provinces in the Tai region have already been migrated
trigger = {
any_county_in_region = {
region = custom_tai_migration_target
count >= 14
any_county_province = {
culture = { has_cultural_pillar = heritage_tai }
}
}
}
effect = {
end_story = yes
}
}
triggered_effect = { # end the story if all provinces in the migration origin are non-tai
trigger = {
any_county_in_region = {
region = custom_tai_migration_origin
count = 0
any_county_province = {
culture = { has_cultural_pillar = heritage_tai }
}
}
}
effect = {
end_story = yes
}
}
}
effect_group = { # if all validations are checked, trigger event pulses
days = 365
chance = 13
triggered_effect = {
trigger = {
}
effect = {
random_list = {
3 = {
story_owner = {
trigger_event = tgp_tai_migration_event.1000
}
}
4 = {
story_owner = {
trigger_event = tgp_tai_migration_event.2000
}
}
1 = {
story_owner = {
trigger_event = tgp_tai_migration_event.3000
}
}
4 = {
story_owner = {
trigger_event = tgp_tai_migration_event.4000
}
}
4 = {
story_owner = {
trigger_event = tgp_tai_migration_event.5000
}
}
}
}
}
}
}